summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjk7744.park <jk7744.park@samsung.com>2015-10-24 15:47:11 +0900
committerjk7744.park <jk7744.park@samsung.com>2015-10-24 15:47:11 +0900
commitdcb0b06d03925dc893b1411dc431f3526f9fc238 (patch)
treedf6bc1a35366b1bc2e54f2f10fd376cb4fb76739
parentef53b460c081a88e257c5b93d8383207fefc4671 (diff)
downloadvideo-player-accepted/tizen_2.4_mobile.tar.gz
video-player-accepted/tizen_2.4_mobile.tar.bz2
video-player-accepted/tizen_2.4_mobile.zip
-rwxr-xr-xCMakeLists.txt363
-rw-r--r--LICENSE204
-rw-r--r--LICENSE.Flora206
-rw-r--r--[-rwxr-xr-x]NOTICE5
-rwxr-xr-xcommon/CMakeLists.txt64
-rw-r--r--common/include/vp-chapter-db.h55
-rw-r--r--common/include/vp-debug.h121
-rw-r--r--common/include/vp-file-util.h45
-rw-r--r--common/include/vp-macro.h140
-rw-r--r--common/include/vp-media-content-util.h23
-rw-r--r--common/include/vp-pinch-zoom.h117
-rw-r--r--common/include/vp-preview-db.h50
-rw-r--r--common/include/vp-thumb-db.h57
-rw-r--r--common/include/vp-util.h31
-rw-r--r--common/src/include/vp-db-common.h27
-rw-r--r--common/src/include/vp-db-util.h28
-rw-r--r--common/src/vp-chapter-db.c461
-rw-r--r--common/src/vp-db-util.c138
-rw-r--r--common/src/vp-file-util.c307
-rw-r--r--common/src/vp-media-content-util.c252
-rw-r--r--common/src/vp-pinch-zoom.c482
-rw-r--r--common/src/vp-preview-db.c488
-rw-r--r--common/src/vp-thumb-db.c463
-rw-r--r--common/src/vp-util.c407
-rwxr-xr-xcore/CMakeLists.txt58
-rw-r--r--core/include/vp-drm.h70
-rw-r--r--core/src/include/vp-core-common.h25
-rw-r--r--core/src/vp-drm.c578
-rwxr-xr-xfeature/CMakeLists.txt59
-rw-r--r--feature/include/vp-thumb-gen.h66
-rw-r--r--feature/src/include/vp-feature-common.h25
-rw-r--r--feature/src/vp-feature-util.c73
-rw-r--r--feature/src/vp-feature-util.h23
-rw-r--r--feature/src/vp-thumb-gen.c893
-rw-r--r--include/common/mp-drm-ctrl.h84
-rw-r--r--include/common/mp-rotate-ctrl.h43
-rw-r--r--include/common/mp-util-config.h34
-rw-r--r--include/common/mp-util-media-service.h187
-rw-r--r--include/common/mp-util-preference.h39
-rw-r--r--include/common/mp-util.h183
-rw-r--r--include/common/mp-video-info-ctrl.h27
-rw-r--r--include/common/mp-video-sound-manager.h39
-rw-r--r--include/common/mp-video-streaming-ctrl.h69
-rw-r--r--include/common/mp-video-util-db-controller.h55
-rw-r--r--include/feature/mp-launching-video-displayer.h34
-rw-r--r--include/feature/mp-util-move.h47
-rw-r--r--include/feature/mp-video-url-downloader-ctrl.h27
-rw-r--r--include/mp-drm-ctrl.h72
-rwxr-xr-xinclude/mp-external-ug.h47
-rw-r--r--include/mp-util-media-service.h123
-rwxr-xr-xinclude/mp-util.h99
-rwxr-xr-xinclude/mp-video-animation-ctrl.h33
-rw-r--r--include/mp-video-app-ctrl.h35
-rw-r--r--include/mp-video-ctrl-mgr.h54
-rwxr-xr-xinclude/mp-video-display-view.h55
-rwxr-xr-xinclude/mp-video-info-ctrl.h23
-rwxr-xr-xinclude/mp-video-info-view.h27
-rw-r--r--include/mp-video-log.h68
-rw-r--r--include/mp-video-player-mgr.h125
-rwxr-xr-xinclude/mp-video-progressbar.h32
-rw-r--r--include/mp-video-service-ctrl.h48
-rwxr-xr-xinclude/mp-video-sound-path-ctrl.h27
-rwxr-xr-xinclude/mp-video-streaming-ctrl.h39
-rwxr-xr-xinclude/mp-video-streaming-view.h53
-rw-r--r--include/mp-video-string-define.h458
-rwxr-xr-xinclude/mp-video-subtitle-ctrl.h39
-rw-r--r--include/mp-video-type-define.h189
-rw-r--r--[-rwxr-xr-x]include/mp-video-value-define.h643
-rwxr-xr-xinclude/mp-video-view-mgr.h48
-rw-r--r--include/mp-video-volume-ctrl.h31
-rw-r--r--[-rwxr-xr-x]include/video-player.h127
-rw-r--r--include/view/mp-library-view-mgr.h43
-rw-r--r--include/view/mp-video-detail-view.h45
-rw-r--r--include/view/mp-video-list-folder-share-via-view.h31
-rw-r--r--include/view/mp-video-list-personal-ctrl.h30
-rw-r--r--include/view/mp-video-list-personal-view.h36
-rw-r--r--include/view/mp-video-list-remove-ctrl.h30
-rw-r--r--include/view/mp-video-list-remove-view.h35
-rw-r--r--include/view/mp-video-list-share-via-view.h33
-rw-r--r--include/view/mp-video-list-view-common.h87
-rw-r--r--include/view/mp-video-list-view-folder.h28
-rw-r--r--include/view/mp-video-list-view-item-of-folder.h31
-rw-r--r--include/view/mp-video-list-view-main.h40
-rw-r--r--include/view/mp-video-list-view-normal.h36
-rw-r--r--include/view/mp-video-list-view-select.h39
-rw-r--r--include/view/mp-video-list-view-thumbnail.h42
-rw-r--r--include/view/mp-video-search-view.h36
-rw-r--r--include/viewMgr/videos-view-mgr.h56
-rw-r--r--include/widget/mp-external-ug.h25
-rw-r--r--include/widget/mp-footer-toolbar.h59
-rw-r--r--include/widget/mp-util-widget-ctrl.h53
-rw-r--r--include/widget/mp-video-list-option-ctrl.h61
-rw-r--r--include/widget/mp-video-list-sort-ctrl.h45
-rw-r--r--include/widget/mp-video-list-view-as-ctrl.h46
-rw-r--r--include/widget/mp-video-nocontent-layout.h40
-rw-r--r--include/widget/mp-video-rename-ctrl.h31
-rw-r--r--include/widget/mp-video-view-popup-ctrl.h41
-rwxr-xr-xorg.tizen.video-player.manifest2
-rwxr-xr-xorg.tizen.video-player.rule70
-rwxr-xr-xorg.tizen.video-player.xml63
-rwxr-xr-xorg.tizen.videos.efl71
-rwxr-xr-xorg.tizen.videos.manifest16
-rwxr-xr-xorg.tizen.videos.xml52
-rwxr-xr-xpackaging/load_pkgs.sh149
-rwxr-xr-xpackaging/org.tizen.video-player.spec96
-rw-r--r--packaging/org.tizen.videos.spec274
-rwxr-xr-xplayview/CMakeLists.txt238
-rw-r--r--playview/include/vp-play-log.h56
-rw-r--r--playview/include/vp-play-type-define.h185
-rw-r--r--playview/include/vp-play-view.h73
-rwxr-xr-xplayview/res/edc/playview/custom/Tizen_Touch.wavbin0 -> 7668 bytes
-rwxr-xr-xplayview/res/edc/playview/custom/button-pressed.wavbin0 -> 7668 bytes
-rw-r--r--playview/res/edc/playview/custom/pv-custom-button.edc4467
-rw-r--r--playview/res/edc/playview/custom/pv-custom-colorselector.edc87
-rw-r--r--playview/res/edc/playview/custom/pv-custom-define.edc24
-rw-r--r--playview/res/edc/playview/custom/pv-custom-gengrid-item.edc515
-rw-r--r--playview/res/edc/playview/custom/pv-custom-genlist-item.edc2076
-rw-r--r--playview/res/edc/playview/custom/pv-custom-image.edc55
-rw-r--r--playview/res/edc/playview/custom/pv-custom-layout.edc77
-rw-r--r--playview/res/edc/playview/custom/pv-custom-naviframe.edc2840
-rwxr-xr-xplayview/res/edc/playview/images/00_color_picker_palette_bg.pngbin0 -> 3247 bytes
-rw-r--r--playview/res/edc/playview/images/T01_2_video_thumbnail_default.pngbin0 -> 8171 bytes
-rw-r--r--playview/res/edc/playview/images/T01_no_video.pngbin0 -> 7755 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_AC_Wall.pngbin0 -> 3238 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_BD.pngbin0 -> 3923 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_Camcorder.pngbin0 -> 4423 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_Camera.pngbin0 -> 4360 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_Dongle.pngbin0 -> 3725 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_LFD.pngbin0 -> 3216 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_Mobile.pngbin0 -> 3278 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_None_DNS.pngbin0 -> 3758 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_PC.pngbin0 -> 3452 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_REF.pngbin0 -> 3278 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_ROBOT_VC.pngbin0 -> 4902 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_STB.pngbin0 -> 3749 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_TV.pngbin0 -> 3336 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_Tablet.pngbin0 -> 3304 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/120x120/U04_device_WM.pngbin0 -> 4439 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_AC_Wall.pngbin0 -> 3087 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_BD.pngbin0 -> 3547 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_Camcorder.pngbin0 -> 3824 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_Camera.pngbin0 -> 3773 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_Dongle.pngbin0 -> 3387 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_LFD.pngbin0 -> 3112 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_Mobile.pngbin0 -> 3115 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_None_DNS.pngbin0 -> 3441 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_PC.pngbin0 -> 3242 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_REF.pngbin0 -> 3134 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_ROBOT_VC.pngbin0 -> 4090 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_STB.pngbin0 -> 3350 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_TV.pngbin0 -> 3089 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_Tablet.pngbin0 -> 3130 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/device/81x81/U04_device_WM.pngbin0 -> 3817 bytes
-rwxr-xr-xplayview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_bg.pngbin0 -> 1216 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus.pngbin0 -> 3552 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_dim.pngbin0 -> 3506 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_press.pngbin0 -> 3541 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute.pngbin0 -> 3751 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_dim.pngbin0 -> 4018 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_press.pngbin0 -> 4152 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus.pngbin0 -> 3700 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_dim.pngbin0 -> 3652 bytes
-rw-r--r--playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_press.pngbin0 -> 3699 bytes
-rwxr-xr-xplayview/res/edc/playview/images/bookmark/T01_2_button_remove.pngbin0 -> 4507 bytes
-rw-r--r--playview/res/edc/playview/images/bookmark/T01_2_button_remove_press.pngbin0 -> 5652 bytes
-rw-r--r--playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add.pngbin0 -> 2080 bytes
-rw-r--r--playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add_press.pngbin0 -> 1625 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_00.pngbin0 -> 1849 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_01.pngbin0 -> 1875 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_02.pngbin0 -> 1852 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_03.pngbin0 -> 1836 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_04.pngbin0 -> 1825 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_05.pngbin0 -> 1815 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_06.pngbin0 -> 1808 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_07.pngbin0 -> 1765 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_08.pngbin0 -> 1783 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_09.pngbin0 -> 1764 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_10.pngbin0 -> 1722 bytes
-rwxr-xr-xplayview/res/edc/playview/images/brightness/quick_icon_brightness_11.pngbin0 -> 1704 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01-2_control_circle_button_01.pngbin0 -> 2486 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_control_circle_button_01_focus.pngbin0 -> 7510 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01-2_control_circle_button_01_press.pngbin0 -> 2158 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01-2_control_circle_button_02.pngbin0 -> 2402 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_control_circle_button_02_focus.pngbin0 -> 6002 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01-2_control_circle_button_02_press.pngbin0 -> 1984 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_control_circle_button_03.pngbin0 -> 5992 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_control_circle_button_03_focus.pngbin0 -> 5833 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_control_circle_button_03_press.pngbin0 -> 6270 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus.pngbin0 -> 1066 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus_press.pngbin0 -> 1116 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus.pngbin0 -> 1117 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus_press.pngbin0 -> 1201 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_Near_by_device.pngbin0 -> 2029 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_dim.pngbin0 -> 2018 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_press.pngbin0 -> 2527 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_back.pngbin0 -> 3486 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset.pngbin0 -> 4512 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset_press.pngbin0 -> 4670 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_check.pngbin0 -> 1897 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01_2_icon_check_dim.pngbin0 -> 4364 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01_2_icon_check_press.pngbin0 -> 2455 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_close.pngbin0 -> 2069 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_close_dim.pngbin0 -> 3837 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_close_press.pngbin0 -> 2070 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_lock.pngbin0 -> 3163 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01_2_icon_lock_dim.pngbin0 -> 1507 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_lock_press.pngbin0 -> 3163 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01_2_icon_more.pngbin0 -> 3381 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01_2_icon_more_dim_web.pngbin0 -> 3561 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_more_press_web.pngbin0 -> 3425 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_more_web.pngbin0 -> 3526 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_rotate.pngbin0 -> 1984 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T01_2_icon_rotate_dim.pngbin0 -> 2062 bytes
-rw-r--r--playview/res/edc/playview/images/button/T01_2_icon_rotate_press.pngbin0 -> 2525 bytes
-rw-r--r--playview/res/edc/playview/images/button/T02_icon_soundPath.pngbin0 -> 4066 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T02_icon_speaker.pngbin0 -> 1571 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T02_icon_speaker_dim.pngbin0 -> 3477 bytes
-rwxr-xr-xplayview/res/edc/playview/images/button/T02_icon_speaker_press.pngbin0 -> 1622 bytes
-rw-r--r--playview/res/edc/playview/images/button/core_icon_back.pngbin0 -> 1214 bytes
-rwxr-xr-xplayview/res/edc/playview/images/capture/T01-2_icon_left.pngbin0 -> 3661 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01-2_icon_left_dim.pngbin0 -> 3738 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01-2_icon_left_press.pngbin0 -> 3811 bytes
-rwxr-xr-xplayview/res/edc/playview/images/capture/T01-2_icon_right.pngbin0 -> 3660 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01-2_icon_right_dim.pngbin0 -> 3742 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01-2_icon_right_press.pngbin0 -> 3819 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01_2_icon_capture.pngbin0 -> 4005 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01_2_icon_capture_dim.pngbin0 -> 3965 bytes
-rw-r--r--playview/res/edc/playview/images/capture/T01_2_icon_capture_press.pngbin0 -> 4065 bytes
-rwxr-xr-xplayview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow.pngbin0 -> 1380 bytes
-rwxr-xr-xplayview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow_h.pngbin0 -> 3220 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01-2_control_bg.pngbin0 -> 2531 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01-2_control_bg_h.pngbin0 -> 2653 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01-2_control_circle_icon_next.pngbin0 -> 1308 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01-2_control_circle_icon_pause.pngbin0 -> 1128 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01-2_control_circle_icon_play.pngbin0 -> 1406 bytes
-rw-r--r--playview/res/edc/playview/images/control/T01-2_control_circle_icon_reverse.pngbin0 -> 1641 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01-2_control_circle_icon_rewind.pngbin0 -> 1306 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01_2_control_circle_icon_forward.pngbin0 -> 3769 bytes
-rwxr-xr-xplayview/res/edc/playview/images/control/T01_2_control_circle_icon_reverse.pngbin0 -> 3691 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_01.pngbin0 -> 2904 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_02.pngbin0 -> 2904 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_03.pngbin0 -> 2904 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_04.pngbin0 -> 2905 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T01_2_image_mydevice.pngbin0 -> 6013 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T01_2_image_tv.pngbin0 -> 4534 bytes
-rw-r--r--playview/res/edc/playview/images/dmc/T02_player_all_share.pngbin0 -> 7852 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01-2_control_icon_mute.pngbin0 -> 1537 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01-2_control_icon_mute_dim.pngbin0 -> 1690 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01-2_control_icon_mute_press.pngbin0 -> 1661 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_bookmark.pngbin0 -> 2336 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_bookmark_dim.pngbin0 -> 2373 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_bookmark_press.pngbin0 -> 2218 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_detail.pngbin0 -> 1862 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_detail_dim.pngbin0 -> 1816 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_detail_press.pngbin0 -> 1882 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_multi_window.pngbin0 -> 2112 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_multi_window_dim.pngbin0 -> 2055 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_multi_window_press.pngbin0 -> 2096 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all.pngbin0 -> 1999 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_dim.pngbin0 -> 2702 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_press.pngbin0 -> 2490 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode.pngbin0 -> 2522 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_dim.pngbin0 -> 2577 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_press.pngbin0 -> 2661 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_repeat_once.pngbin0 -> 2443 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_dim.pngbin0 -> 2440 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_press.pngbin0 -> 2584 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode.pngbin0 -> 1332 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode02.pngbin0 -> 1358 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_dim.pngbin0 -> 1334 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_press.pngbin0 -> 1380 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode03.pngbin0 -> 2332 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_dim.pngbin0 -> 2340 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_press.pngbin0 -> 2412 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode04.pngbin0 -> 3151 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_dim.pngbin0 -> 3145 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_press.pngbin0 -> 3154 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode_dim.pngbin0 -> 1327 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_screenmode_press.pngbin0 -> 1374 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_share.pngbin0 -> 1749 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_share_dim.pngbin0 -> 1694 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_share_press.pngbin0 -> 1741 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_soundalive.pngbin0 -> 2048 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_dim.pngbin0 -> 2033 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_press.pngbin0 -> 2492 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_trim.pngbin0 -> 1998 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_trim_dim.pngbin0 -> 1974 bytes
-rw-r--r--playview/res/edc/playview/images/function/T01_2_control_icon_trim_press.pngbin0 -> 2382 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_volume.pngbin0 -> 1646 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_volume_dim.pngbin0 -> 1917 bytes
-rwxr-xr-xplayview/res/edc/playview/images/function/T01_2_control_icon_volume_press.pngbin0 -> 1919 bytes
-rw-r--r--playview/res/edc/playview/images/function/player_popup_view_icon_nomal.pngbin0 -> 1211 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_focus.pngbin0 -> 2991 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_focus_dark.pngbin0 -> 3004 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_list_group_bg.pngbin0 -> 3127 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_list_group_bg_dark.pngbin0 -> 3256 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_list_group_bg_press.pngbin0 -> 3179 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_list_group_bg_press_dark.pngbin0 -> 3167 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_popup_list_press.pngbin0 -> 2948 bytes
-rwxr-xr-xplayview/res/edc/playview/images/genlist/00_popup_list_press_dark.pngbin0 -> 2953 bytes
-rw-r--r--playview/res/edc/playview/images/genlist/preview_settings_bg.pngbin0 -> 198159 bytes
-rwxr-xr-xplayview/res/edc/playview/images/jump/T01_2_jump_L_01.pngbin0 -> 3880 bytes
-rwxr-xr-xplayview/res/edc/playview/images/jump/T01_2_jump_L_02.pngbin0 -> 3944 bytes
-rwxr-xr-xplayview/res/edc/playview/images/jump/T01_2_jump_L_03.pngbin0 -> 3951 bytes
-rwxr-xr-xplayview/res/edc/playview/images/jump/T01_2_jump_R_01.pngbin0 -> 3947 bytes
-rwxr-xr-xplayview/res/edc/playview/images/jump/T01_2_jump_R_02.pngbin0 -> 3858 bytes
-rwxr-xr-xplayview/res/edc/playview/images/jump/T01_2_jump_R_03.pngbin0 -> 3874 bytes
-rwxr-xr-xplayview/res/edc/playview/images/micro_control/T01-2_Control_detail_text_bg.pngbin0 -> 2885 bytes
-rwxr-xr-xplayview/res/edc/playview/images/micro_control/T01_2_micro_control_up_01.pngbin0 -> 1219 bytes
-rwxr-xr-xplayview/res/edc/playview/images/micro_control/T01_2_micro_control_up_02.pngbin0 -> 1216 bytes
-rwxr-xr-xplayview/res/edc/playview/images/micro_control/T01_2_micro_control_up_03.pngbin0 -> 1221 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/A01_15_popup_No_device.pngbin0 -> 5941 bytes
-rwxr-xr-xplayview/res/edc/playview/images/mini_controller/btn_close_dim.pngbin0 -> 1420 bytes
-rwxr-xr-xplayview/res/edc/playview/images/mini_controller/btn_close_nor.pngbin0 -> 3328 bytes
-rwxr-xr-xplayview/res/edc/playview/images/mini_controller/btn_close_press.pngbin0 -> 1554 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_close_nor.pngbin0 -> 5429 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_close_press.pngbin0 -> 5112 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_next_nor.pngbin0 -> 5730 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_next_press.pngbin0 -> 6119 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_pause_nor.pngbin0 -> 7622 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_pause_press.pngbin0 -> 7980 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_play_nor.pngbin0 -> 8007 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_play_press.pngbin0 -> 8072 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_prev_nor.pngbin0 -> 5717 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/btn_video_prev_press.pngbin0 -> 6101 bytes
-rwxr-xr-xplayview/res/edc/playview/images/mini_controller/video_progress.pngbin0 -> 1071 bytes
-rw-r--r--playview/res/edc/playview/images/mini_controller/video_progress_bg.pngbin0 -> 1054 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_add_to_home.pngbin0 -> 1722 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_chapter_preview.pngbin0 -> 1528 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_detail.pngbin0 -> 1408 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_download.pngbin0 -> 1367 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_nearbydevices.pngbin0 -> 1693 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_setting.pngbin0 -> 1804 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_share_via.pngbin0 -> 1517 bytes
-rwxr-xr-xplayview/res/edc/playview/images/more/icon_trim.pngbin0 -> 1834 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/Mw_title_icon_press_bg.pngbin0 -> 2881 bytes
-rw-r--r--playview/res/edc/playview/images/multi/T01-2_multiscreen_player_bg.pngbin0 -> 1009 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_bg_center.pngbin0 -> 3029 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_bg_center_press.pngbin0 -> 2929 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_bg_left.pngbin0 -> 4185 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_bg_left_press.pngbin0 -> 4643 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_bg_right.pngbin0 -> 4374 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_bg_right_press.pngbin0 -> 4692 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff.pngbin0 -> 1561 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff_press.pngbin0 -> 1337 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause.pngbin0 -> 1109 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause_press.pngbin0 -> 1023 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_play.pngbin0 -> 1570 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_play_press.pngbin0 -> 1269 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew.pngbin0 -> 1542 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew_press.pngbin0 -> 1335 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_frame.pngbin0 -> 3091 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_frame_handler.pngbin0 -> 3893 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_frame_handler_press.pngbin0 -> 3757 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_bg.#.pngbin0 -> 2851 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_bg_ef.#.pngbin0 -> 1020 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_bg_focus.#.pngbin0 -> 2851 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_bg_focus_ef.#.pngbin0 -> 1014 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_bg_press.pngbin0 -> 2819 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_divider.pngbin0 -> 2804 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_focus.#.pngbin0 -> 2862 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/mw_title_focus_bg_press.#.pngbin0 -> 2851 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_delete.pngbin0 -> 3663 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_delete_ef_press.pngbin0 -> 3283 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_delete_press.pngbin0 -> 3187 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_maximize.pngbin0 -> 3582 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_maximize_ef_press.pngbin0 -> 3250 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_maximize_press.pngbin0 -> 3161 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_mimimize.pngbin0 -> 2991 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_mimimize_ef_press.pngbin0 -> 2943 bytes
-rwxr-xr-xplayview/res/edc/playview/images/multi/my_title_icon_mimimize_press.pngbin0 -> 2920 bytes
-rw-r--r--playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_01.pngbin0 -> 1318 bytes
-rw-r--r--playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_02.pngbin0 -> 1475 bytes
-rw-r--r--playview/res/edc/playview/images/nearby_device/U04_connecting_ani_01.pngbin0 -> 3146 bytes
-rw-r--r--playview/res/edc/playview/images/nearby_device/U04_connecting_ani_02.pngbin0 -> 3146 bytes
-rw-r--r--playview/res/edc/playview/images/nearby_device/U04_connecting_ani_03.pngbin0 -> 3146 bytes
-rw-r--r--playview/res/edc/playview/images/nearby_device/U04_connecting_ani_04.pngbin0 -> 3146 bytes
-rwxr-xr-xplayview/res/edc/playview/images/player_error_screen.pngbin0 -> 3536 bytes
-rwxr-xr-xplayview/res/edc/playview/images/popup/T01-2_volume_popup_icon_brightness.pngbin0 -> 1825 bytes
-rwxr-xr-xplayview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume01.pngbin0 -> 1692 bytes
-rwxr-xr-xplayview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume02.pngbin0 -> 1674 bytes
-rwxr-xr-xplayview/res/edc/playview/images/popup/U05_help_popup_sbeam.pngbin0 -> 25962 bytes
-rwxr-xr-xplayview/res/edc/playview/images/progressbar/T01_2_control_progress_handle.pngbin0 -> 2985 bytes
-rwxr-xr-xplayview/res/edc/playview/images/progressbar/T01_2_control_progress_handle_press.pngbin0 -> 3322 bytes
-rwxr-xr-xplayview/res/edc/playview/images/progressbar/core_progress_bar.#.pngbin0 -> 1049 bytes
-rw-r--r--playview/res/edc/playview/images/sensor/B15_turn_over_01.pngbin0 -> 12698 bytes
-rw-r--r--playview/res/edc/playview/images/sensor/B15_turn_over_02.pngbin0 -> 23305 bytes
-rw-r--r--playview/res/edc/playview/images/sensor/B15_turn_over_03.pngbin0 -> 12645 bytes
-rwxr-xr-xplayview/res/edc/playview/images/sound_only.pngbin0 -> 16042 bytes
-rw-r--r--playview/res/edc/playview/images/tag/T01-1_Tag_buddy_settings_bg.pngbin0 -> 184234 bytes
-rw-r--r--playview/res/edc/playview/images/tag/T01-1_logo_accuweather.pngbin0 -> 8084 bytes
-rwxr-xr-xplayview/res/edc/playview/images/tag/T01_2_icon_tag_buddy_cplogo.PNGbin0 -> 8142 bytes
-rwxr-xr-xplayview/res/edc/playview/images/tag/U07_weather_logo.pngbin0 -> 5903 bytes
-rwxr-xr-xplayview/res/edc/playview/images/trim/T01_2_trim_left.pngbin0 -> 2739 bytes
-rwxr-xr-xplayview/res/edc/playview/images/trim/T01_2_trim_picker.pngbin0 -> 3324 bytes
-rwxr-xr-xplayview/res/edc/playview/images/trim/T01_2_trim_right.pngbin0 -> 2706 bytes
-rwxr-xr-xplayview/res/edc/playview/images/volume/T01_2_volume_popup_bg.pngbin0 -> 2926 bytes
-rwxr-xr-xplayview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bar.pngbin0 -> 1538 bytes
-rwxr-xr-xplayview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bg.pngbin0 -> 1187 bytes
-rwxr-xr-xplayview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle.pngbin0 -> 4596 bytes
-rwxr-xr-xplayview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle_press.pngbin0 -> 3892 bytes
-rw-r--r--playview/res/edc/playview/pv-bookmark-item.edc277
-rw-r--r--playview/res/edc/playview/pv-bookmark.edc137
-rw-r--r--playview/res/edc/playview/pv-brightness-popup.edc338
-rw-r--r--playview/res/edc/playview/pv-chapter-main-new.edc1922
-rw-r--r--playview/res/edc/playview/pv-colorselector.edc204
-rw-r--r--playview/res/edc/playview/pv-custom-winset.edc38
-rw-r--r--playview/res/edc/playview/pv-gesture.edc36
-rw-r--r--playview/res/edc/playview/pv-image.edc139
-rw-r--r--playview/res/edc/playview/pv-macro.edc19
-rw-r--r--playview/res/edc/playview/pv-minicontroller.edc982
-rw-r--r--playview/res/edc/playview/pv-multi-main.edc1037
-rw-r--r--playview/res/edc/playview/pv-normal-control.edc560
-rw-r--r--playview/res/edc/playview/pv-normal-function.edc219
-rw-r--r--playview/res/edc/playview/pv-normal-main.edc1738
-rw-r--r--playview/res/edc/playview/pv-normal-top-control.edc136
-rw-r--r--playview/res/edc/playview/pv-popup.edc391
-rw-r--r--playview/res/edc/playview/pv-progressbar.edc496
-rw-r--r--playview/res/edc/playview/pv-resource.edc448
-rw-r--r--playview/res/edc/playview/pv-sensor-popup.edc191
-rw-r--r--playview/res/edc/playview/pv-speed-popup.edc205
-rw-r--r--playview/res/edc/playview/pv-subtitle-color-popup.edc306
-rw-r--r--playview/res/edc/playview/pv-subtitle.edc297
-rw-r--r--playview/res/edc/playview/pv-tag-buddy.edc60
-rw-r--r--playview/res/edc/playview/pv-tag-preview.edc218
-rw-r--r--playview/res/edc/playview/pv-trim-control.edc748
-rw-r--r--playview/res/edc/playview/pv-trim-item.edc59
-rw-r--r--playview/res/edc/playview/pv-trim-main.edc153
-rw-r--r--playview/res/edc/playview/pv-trim-top-control.edc70
-rw-r--r--playview/res/edc/playview/pv-volume-popup.edc310
-rw-r--r--playview/res/edc/playview/pv-volume.edc322
-rw-r--r--playview/res/edc/playview/pv-zoom-guide.edc326
-rw-r--r--playview/src/common/include/vp-play-config.h103
-rw-r--r--playview/src/common/include/vp-play-preference.h82
-rw-r--r--playview/src/common/include/vp-play-ug.h25
-rw-r--r--playview/src/common/include/vp-play-util.h73
-rw-r--r--playview/src/common/vp-play-config.c351
-rw-r--r--playview/src/common/vp-play-preference.c1348
-rw-r--r--playview/src/common/vp-play-ug.c203
-rw-r--r--playview/src/common/vp-play-util.c1419
-rw-r--r--playview/src/core/include/vp-avrcp.h29
-rw-r--r--playview/src/core/include/vp-device-language.h26
-rw-r--r--playview/src/core/include/vp-device.h37
-rw-r--r--playview/src/core/include/vp-hollic.h28
-rw-r--r--playview/src/core/include/vp-image-util.h28
-rw-r--r--playview/src/core/include/vp-media-contents.h81
-rw-r--r--playview/src/core/include/vp-media-key.h46
-rw-r--r--playview/src/core/include/vp-mm-player.h344
-rw-r--r--playview/src/core/include/vp-multi-path.h33
-rw-r--r--playview/src/core/include/vp-sensor.h45
-rw-r--r--playview/src/core/include/vp-sound.h49
-rw-r--r--playview/src/core/vp-avrcp.c171
-rw-r--r--playview/src/core/vp-device-language.c197
-rw-r--r--playview/src/core/vp-device.c133
-rw-r--r--playview/src/core/vp-hollic.c48
-rw-r--r--playview/src/core/vp-image-util.c118
-rw-r--r--playview/src/core/vp-media-contents.c2747
-rw-r--r--playview/src/core/vp-media-key.c204
-rw-r--r--playview/src/core/vp-mm-player.c3102
-rw-r--r--playview/src/core/vp-multi-path.c379
-rw-r--r--playview/src/core/vp-sensor.c292
-rw-r--r--playview/src/core/vp-sound.c450
-rw-r--r--playview/src/feature/include/vp-audio-track.h34
-rw-r--r--playview/src/feature/include/vp-capture.h31
-rw-r--r--playview/src/feature/include/vp-detail.h48
-rw-r--r--playview/src/feature/include/vp-play-speed.h34
-rw-r--r--playview/src/feature/include/vp-repeat.h32
-rw-r--r--playview/src/feature/include/vp-setting.h56
-rw-r--r--playview/src/feature/include/vp-share.h45
-rw-r--r--playview/src/feature/include/vp-sound-alive.h31
-rw-r--r--playview/src/feature/include/vp-sound-path.h32
-rw-r--r--playview/src/feature/include/vp-subtitle-alignment.h33
-rw-r--r--playview/src/feature/include/vp-subtitle-bg-color.h32
-rw-r--r--playview/src/feature/include/vp-subtitle-color.h43
-rw-r--r--playview/src/feature/include/vp-subtitle-edge.h33
-rw-r--r--playview/src/feature/include/vp-subtitle-font.h33
-rw-r--r--playview/src/feature/include/vp-subtitle-select.h34
-rw-r--r--playview/src/feature/include/vp-subtitle-size.h32
-rw-r--r--playview/src/feature/include/vp-subtitle-sync.h35
-rw-r--r--playview/src/feature/include/vp-subtitle-track.h47
-rw-r--r--playview/src/feature/include/vp-subtitle.h89
-rw-r--r--playview/src/feature/include/vp-zoom-guide.h36
-rw-r--r--playview/src/feature/vp-audio-track.c649
-rw-r--r--playview/src/feature/vp-capture.c455
-rw-r--r--playview/src/feature/vp-detail.c538
-rw-r--r--playview/src/feature/vp-play-speed.c597
-rw-r--r--playview/src/feature/vp-repeat.c485
-rw-r--r--playview/src/feature/vp-setting.c567
-rw-r--r--playview/src/feature/vp-share.c446
-rw-r--r--playview/src/feature/vp-sound-alive.c512
-rw-r--r--playview/src/feature/vp-sound-path.c553
-rw-r--r--playview/src/feature/vp-subtitle-alignment.c513
-rw-r--r--playview/src/feature/vp-subtitle-bg-color.c509
-rw-r--r--playview/src/feature/vp-subtitle-color.c1224
-rw-r--r--playview/src/feature/vp-subtitle-edge.c492
-rw-r--r--playview/src/feature/vp-subtitle-font.c709
-rw-r--r--playview/src/feature/vp-subtitle-select.c536
-rw-r--r--playview/src/feature/vp-subtitle-size.c490
-rw-r--r--playview/src/feature/vp-subtitle-sync.c616
-rw-r--r--playview/src/feature/vp-subtitle-track.c852
-rw-r--r--playview/src/feature/vp-subtitle.c1361
-rw-r--r--playview/src/feature/vp-zoom-guide.c495
-rw-r--r--playview/src/include/vp-play-macro-define.h191
-rw-r--r--playview/src/include/vp-play-string-define.h852
-rw-r--r--playview/src/include/vp-play-value-define.h127
-rw-r--r--playview/src/view/include/vp-play-multi-view.h69
-rw-r--r--playview/src/view/include/vp-play-normal-view.h112
-rw-r--r--playview/src/view/include/vp-play-view-priv.h147
-rw-r--r--playview/src/view/vp-play-multi-view.c4840
-rwxr-xr-xplayview/src/view/vp-play-normal-view.c13381
-rw-r--r--playview/src/vp-play-view.c2599
-rw-r--r--playview/src/widget/include/vp-play-bookmark.h44
-rw-r--r--playview/src/widget/include/vp-play-brightness-popup.h35
-rw-r--r--playview/src/widget/include/vp-play-button.h26
-rw-r--r--playview/src/widget/include/vp-play-loading-ani.h31
-rw-r--r--playview/src/widget/include/vp-play-more.h17
-rw-r--r--playview/src/widget/include/vp-play-popup.h55
-rw-r--r--playview/src/widget/include/vp-play-progressbar.h41
-rw-r--r--playview/src/widget/include/vp-play-subtitle.h118
-rw-r--r--playview/src/widget/include/vp-play-volume-popup.h36
-rw-r--r--playview/src/widget/include/vp-play-volume.h44
-rw-r--r--playview/src/widget/vp-play-bookmark.c1224
-rw-r--r--playview/src/widget/vp-play-brightness-popup.c710
-rw-r--r--playview/src/widget/vp-play-button.c138
-rw-r--r--playview/src/widget/vp-play-loading-ani.c62
-rw-r--r--playview/src/widget/vp-play-more.c17
-rw-r--r--playview/src/widget/vp-play-popup.c251
-rw-r--r--playview/src/widget/vp-play-progressbar.c498
-rw-r--r--playview/src/widget/vp-play-subtitle.c874
-rw-r--r--playview/src/widget/vp-play-volume-popup.c642
-rw-r--r--playview/src/widget/vp-play-volume.c960
-rwxr-xr-xres/edc/add_tag.edc346
-rwxr-xr-xres/edc/animation.edc299
-rwxr-xr-xres/edc/button-pressed.wavbin0 -> 24740 bytes
-rwxr-xr-xres/edc/control.edc1167
-rwxr-xr-xres/edc/custom/vp-naviframe-custom.edc901
-rwxr-xr-xres/edc/detail.edc34
-rw-r--r--res/edc/edc_image_macro.edc47
-rwxr-xr-xres/edc/hidden_button_panel.edc187
-rw-r--r--[-rwxr-xr-x]res/edc/image_res.edc192
-rw-r--r--res/edc/landscape_thumbnail.edc223
-rwxr-xr-xres/edc/main.edc557
-rwxr-xr-xres/edc/multi_win.edc69
-rw-r--r--res/edc/option_button.edc326
-rw-r--r--[-rwxr-xr-x]res/edc/panel.edc16
-rw-r--r--[-rwxr-xr-x]res/edc/popup_progressbar.edc1299
-rwxr-xr-xres/edc/progress.edc459
-rwxr-xr-xres/edc/progress_trim.edc291
-rwxr-xr-xres/edc/setting.edc33
-rwxr-xr-xres/edc/subtitle.edc419
-rwxr-xr-xres/edc/subtitle_sync.edc415
-rw-r--r--[-rwxr-xr-x]res/edc/vp-button-white.edc895
-rwxr-xr-xres/edc/vp-button.edc1069
-rwxr-xr-xres/edc/vp-chapter-view.edc757
-rw-r--r--[-rwxr-xr-x]res/edc/vp-check.edc22
-rw-r--r--[-rwxr-xr-x]res/edc/vp-controlbar.edc16
-rw-r--r--res/edc/vp-ctxpopup-option.edc69
-rw-r--r--[-rwxr-xr-x]res/edc/vp-ctxpopup.edc1001
-rw-r--r--res/edc/vp-custom-genlist-miltiline.edc1447
-rw-r--r--[-rwxr-xr-x]res/edc/vp-custom-winset-style.edc43
-rw-r--r--res/edc/vp-detail-popup.edc76
-rw-r--r--res/edc/vp-device-list-internal.edc115
-rw-r--r--res/edc/vp-entry-popup.edc94
-rw-r--r--res/edc/vp-gengrid-custom.edc1037
-rw-r--r--res/edc/vp-gengrid.edc831
-rw-r--r--res/edc/vp-genlist-custom.edc2850
-rw-r--r--res/edc/vp-genlist-no-item.edc324
-rw-r--r--res/edc/vp-images.edc76
-rw-r--r--[-rwxr-xr-x]res/edc/vp-layout.edc16
-rw-r--r--res/edc/vp-main-layout.edc57
-rw-r--r--res/edc/vp-main-listview-internal.edc172
-rw-r--r--res/edc/vp-main-listview-preview.edc566
-rw-r--r--res/edc/vp-motion-popup.edc222
-rw-r--r--[-rwxr-xr-x]res/edc/vp-naviframe.edc5221
-rwxr-xr-xres/edc/vp-naviframe_white.edc853
-rw-r--r--[-rwxr-xr-x]res/edc/vp-nocontents.edc479
-rw-r--r--res/edc/vp-numberinfo.edc689
-rw-r--r--[-rwxr-xr-x]res/edc/vp-progressbar-list.edc40
-rw-r--r--res/edc/vp-remove-list-internal.edc103
-rw-r--r--res/edc/vp-scroller-custom.edc575
-rw-r--r--res/edc/vp-search-view-internal.edc107
-rw-r--r--res/edc/vp-speedbox-popup.edc44
-rw-r--r--res/edc/vp-thumbnail-view.edc1883
-rw-r--r--[-rwxr-xr-x]res/edc/vp-toolbar.edc1744
-rw-r--r--res/edc/vp-volume-popup.edc318
-rw-r--r--[-rwxr-xr-x]res/edc/vp_font.edc29
-rwxr-xr-xres/images/00_Option_header_bt.pngbin3040 -> 0 bytes
-rwxr-xr-xres/images/00_Option_header_bt_dim.pngbin3014 -> 0 bytes
-rwxr-xr-xres/images/00_Option_header_bt_press.pngbin2993 -> 0 bytes
-rwxr-xr-xres/images/00_button_01_normal.pngbin3068 -> 0 bytes
-rwxr-xr-xres/images/00_button_01_normal_dim.pngbin3060 -> 0 bytes
-rwxr-xr-xres/images/00_button_01_normal_press.pngbin3089 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/00_check_bg_dim.pngbin2890 -> 2869 bytes
-rw-r--r--res/images/00_focus.pngbin0 -> 2991 bytes
-rw-r--r--[-rwxr-xr-x]res/images/00_grid_select_check.pngbin4247 -> 4195 bytes
-rw-r--r--res/images/00_list_group_bg.pngbin0 -> 3127 bytes
-rw-r--r--res/images/00_list_group_bg_press.pngbin0 -> 3179 bytes
-rw-r--r--res/images/00_popup_list_press.pngbin0 -> 2948 bytes
-rwxr-xr-xres/images/00_scroll_bar.pngbin0 -> 3148 bytes
-rwxr-xr-xres/images/00_scroll_bar_h.pngbin0 -> 3187 bytes
-rwxr-xr-xres/images/00_scroll_bar_v.pngbin0 -> 3215 bytes
-rw-r--r--res/images/00_thumbs_bg_focus.pngbin0 -> 2832 bytes
-rw-r--r--res/images/00_thumbs_line_bg.pngbin0 -> 2832 bytes
-rw-r--r--res/images/00_thumbs_loading_bg.pngbin0 -> 2800 bytes
-rwxr-xr-xres/images/00_winset_btn_prev.pngbin3258 -> 0 bytes
-rwxr-xr-xres/images/00_winset_btn_prev_press.pngbin349 -> 0 bytes
-rwxr-xr-xres/images/00_winset_control_top_arrow.pngbin3163 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/00_winset_thumbs_bg.pngbin3233 -> 3067 bytes
-rw-r--r--[-rwxr-xr-x]res/images/00_winset_thumbs_focus_bg.pngbin3114 -> 2855 bytes
-rwxr-xr-xres/images/00_winset_thumbs_loading_bg.pngbin3208 -> 0 bytes
-rwxr-xr-xres/images/01_controlbar_icon_delete.pngbin3072 -> 0 bytes
-rwxr-xr-xres/images/01_controlbar_icon_set_as.pngbin3215 -> 0 bytes
-rwxr-xr-xres/images/01_controlbar_icon_share.pngbin3220 -> 0 bytes
-rwxr-xr-xres/images/01_header_icon_add.pngbin2999 -> 0 bytes
-rwxr-xr-xres/images/01_header_icon_cancel.pngbin2980 -> 0 bytes
-rwxr-xr-xres/images/01_header_icon_others.pngbin2934 -> 0 bytes
-rwxr-xr-xres/images/12_music_player_sound_path.pngbin313 -> 0 bytes
-rwxr-xr-xres/images/DM_Gallery_Increase.pngbin2839 -> 0 bytes
-rw-r--r--res/images/T01-2_control_circle_icon_play.pngbin0 -> 5495 bytes
-rw-r--r--[-rwxr-xr-x]res/images/T01-2_hold_icon_lock.pngbin1395 -> 1206 bytes
-rw-r--r--[-rwxr-xr-x]res/images/T01-2_icon_toolbar_cancel.pngbin3231 -> 3021 bytes
-rwxr-xr-xres/images/T01-2_progress_bar.pngbin0 -> 2889 bytes
-rwxr-xr-xres/images/T01-2_progress_bg.pngbin0 -> 2884 bytes
-rw-r--r--res/images/T01-2_progress_bg_02.pngbin0 -> 2981 bytes
-rwxr-xr-xres/images/T01-2_video_noitem.pngbin0 -> 35888 bytes
-rwxr-xr-xres/images/T01-2_video_thumbnail_view_bg.pngbin0 -> 2890 bytes
-rwxr-xr-xres/images/T01_Image_Look.pngbin4334 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/T01_Nocontents_multimedia.pngbin9146 -> 6570 bytes
-rwxr-xr-xres/images/T01_Option_header_bt.pngbin2984 -> 0 bytes
-rwxr-xr-xres/images/T01_Option_header_bt_press.pngbin2939 -> 0 bytes
-rwxr-xr-xres/images/T01_Trim_handle_beginning.pngbin3525 -> 0 bytes
-rwxr-xr-xres/images/T01_Trim_handle_ending.pngbin3279 -> 0 bytes
-rwxr-xr-xres/images/T01_back.pngbin3928 -> 0 bytes
-rwxr-xr-xres/images/T01_btn_prev.pngbin3228 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/T01_check.pngbin3035 -> 2979 bytes
-rw-r--r--[-rwxr-xr-x]res/images/T01_checkbox.pngbin2944 -> 2902 bytes
-rwxr-xr-xres/images/T01_control_icon_detail.pngbin4684 -> 0 bytes
-rwxr-xr-xres/images/T01_control_icon_fullscreen.pngbin4813 -> 0 bytes
-rwxr-xr-xres/images/T01_control_icon_reduce.pngbin4817 -> 0 bytes
-rwxr-xr-xres/images/T01_control_top_arrow.pngbin3055 -> 0 bytes
-rwxr-xr-xres/images/T01_control_top_bg.pngbin2812 -> 0 bytes
-rwxr-xr-xres/images/T01_controlbar_icon_cancel.pngbin3231 -> 0 bytes
-rwxr-xr-xres/images/T01_controlbar_icon_done.pngbin3322 -> 0 bytes
-rwxr-xr-xres/images/T01_controller_btn.pngbin2994 -> 0 bytes
-rwxr-xr-xres/images/T01_controller_btn_press.pngbin3008 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/T01_grid_select_check.pngbin4247 -> 4195 bytes
-rwxr-xr-xres/images/T01_icon_expand.pngbin3156 -> 0 bytes
-rwxr-xr-xres/images/T01_icon_reduce.pngbin3141 -> 0 bytes
-rw-r--r--res/images/T01_icon_soft_back.pngbin0 -> 2128 bytes
-rw-r--r--res/images/T01_icon_soft_back_blabk.pngbin0 -> 1625 bytes
-rwxr-xr-xres/images/T01_icon_soundPath.pngbin4527 -> 0 bytes
-rwxr-xr-xres/images/T01_icon_soundPath_h.pngbin4241 -> 0 bytes
-rwxr-xr-xres/images/T01_icon_soundPath_press.pngbin3681 -> 0 bytes
-rwxr-xr-xres/images/T01_player_progress_bar.pngbin2802 -> 0 bytes
-rwxr-xr-xres/images/T01_player_progress_bg.pngbin2839 -> 0 bytes
-rwxr-xr-xres/images/T01_player_progress_point.pngbin2825 -> 0 bytes
-rwxr-xr-xres/images/T01_sound_path.pngbin3081 -> 0 bytes
-rwxr-xr-xres/images/T01_title_bg.pngbin40405 -> 0 bytes
-rwxr-xr-xres/images/T01_title_bg_h.pngbin36828 -> 0 bytes
-rwxr-xr-xres/images/T01_title_btn.pngbin3129 -> 0 bytes
-rwxr-xr-xres/images/T01_title_btn_press.pngbin3126 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_controller_progress_handle.pngbin2938 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_controller_progress_handle_press.pngbin2962 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_bg.pngbin22261 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_bg_ef.pngbin3674 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_progress_bar.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_progress_bg.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/adjustment/T01-2_fine_adjustment_progress_handle.pngbin3037 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_bookmark_thumbnail.pngbin3761 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_bookmark.pngbin4161 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_bookmark_press.pngbin3992 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_remove_bookmark.pngbin5028 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_btn_remove_bookmark_press.pngbin5070 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_function_tray.pngbin1409 -> 0 bytes
-rwxr-xr-xres/images/bookmark/T01-2_icon_thumbnail_bg.pngbin2835 -> 0 bytes
-rw-r--r--res/images/com.samsung.video-player.pngbin14891 -> 0 bytes
-rwxr-xr-xres/images/com.samsung.video-player.png_oldbin22981 -> 0 bytes
-rw-r--r--res/images/core_theme_bg_01.pngbin0 -> 57845 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_01.pngbin3364 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_02.pngbin3437 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_03.pngbin4056 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_ff.pngbin3783 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_ff_press.pngbin4070 -> 0 bytes
-rw-r--r--res/images/desktop/controlbar/DM_Key screen_icon_pause.pngbin3016 -> 0 bytes
-rw-r--r--res/images/desktop/controlbar/DM_Key screen_icon_pause_press.pngbin3205 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_play.pngbin3476 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_play_press.pngbin3792 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_rew.pngbin3761 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_rew_press.pngbin3988 -> 0 bytes
-rwxr-xr-xres/images/desktop/controlbar/DM_Key screen_icon_volume.pngbin3709 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_bar.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_bg.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_handle.pngbin2938 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_controller_progress_handle_press.pngbin2962 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_bg.pngbin22261 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_bg_ef.pngbin3674 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_progress_bar.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_progress_bg.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/desktop/winset/T01-2_fine_adjustment_progress_handle.pngbin3037 -> 0 bytes
-rwxr-xr-xres/images/download/T01-2_video_thumbnail_view_default.pngbin0 -> 6823 bytes
-rwxr-xr-xres/images/download/T01-2_video_thumbnail_view_default_h.pngbin0 -> 5364 bytes
-rwxr-xr-xres/images/download/T01-2_video_thumbnail_view_hd.pngbin0 -> 3195 bytes
-rwxr-xr-xres/images/download/T01-2_video_thumbnail_view_hd_press.pngbin0 -> 3161 bytes
-rwxr-xr-xres/images/download/T01-2_video_thumbnail_view_sd.pngbin0 -> 3300 bytes
-rwxr-xr-xres/images/download/T01-2_video_thumbnail_view_sd_press.pngbin0 -> 3256 bytes
-rwxr-xr-xres/images/gallery_loading_ani_01.pngbin5221 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_02.pngbin5234 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_03.pngbin5203 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_04.pngbin5350 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_05.pngbin5285 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_06.pngbin5333 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_07.pngbin5297 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_08.pngbin5426 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_09.pngbin5452 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_10.pngbin5389 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_11.pngbin5265 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_12.pngbin5348 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_13.pngbin5435 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_14.pngbin5482 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_15.pngbin5536 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_16.pngbin5330 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_17.pngbin5335 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_18.pngbin5247 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_19.pngbin5422 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_20.pngbin5375 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_21.pngbin5343 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_22.pngbin5374 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_23.pngbin5527 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_24.pngbin5481 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_25.pngbin5409 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_26.pngbin5311 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_27.pngbin5359 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_28.pngbin5442 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_29.pngbin5489 -> 0 bytes
-rwxr-xr-xres/images/gallery_loading_ani_30.pngbin5600 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_add_btn.pngbin3444 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_add_btn_press.pngbin3493 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_ff.pngbin3168 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_2.pngbin3056 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_3.pngbin3157 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_4.pngbin3157 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_ff_5.pngbin3185 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_frame_back.pngbin3143 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_frame_forword.pngbin3154 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_next.pngbin3168 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_pause.pngbin2932 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_play.pngbin3084 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_prev.pngbin3175 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_rew.pngbin3175 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_2.pngbin477 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_3.pngbin585 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_4.pngbin619 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_control_rew_5.pngbin647 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_delete_btn.pngbin3458 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_delete_btn_press.pngbin3411 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_1x.pngbin3228 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_2x.pngbin3314 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_3x.pngbin3414 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_fastforward_4x.pngbin3469 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_icon_btn.pngbin3306 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_icon_btn_press.pngbin3239 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_icon_mute.pngbin3154 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_icon_volume.pngbin3222 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_player_bg.pngbin3468 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_popup_mute.pngbin4136 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_rewind_1x.pngbin3269 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_rewind_2x.pngbin3288 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_rewind_3x.pngbin3396 -> 0 bytes
-rwxr-xr-xres/images/gallery_video_rewind_4x.pngbin3464 -> 0 bytes
-rw-r--r--res/images/genlist/00_focus.pngbin0 -> 2991 bytes
-rw-r--r--res/images/genlist/00_list_group_bg.pngbin0 -> 3127 bytes
-rw-r--r--res/images/genlist/00_list_group_bg_press.pngbin0 -> 3179 bytes
-rw-r--r--res/images/genlist/00_popup_list_press.pngbin0 -> 2948 bytes
-rw-r--r--res/images/icon/06_myfiles_list_folder.pngbin3799 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_function_bg.pngbin2840 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_allive.pngbin5592 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_audio_track.pngbin4786 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_repeat_mode.pngbin4590 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_sound_settings.pngbin5195 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_subtitle.pngbin3798 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_popup_trim.pngbin5335 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_title_allshare.pngbin3202 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_icon_title_soundpath.pngbin3355 -> 0 bytes
-rwxr-xr-xres/images/icon/T01-2_video_noitem.pngbin0 -> 35958 bytes
-rw-r--r--res/images/icon/T01-2_video_thumbnail_default.pngbin0 -> 7430 bytes
-rw-r--r--res/images/icon/T01_2_button_expand_cancel.pngbin0 -> 3759 bytes
-rwxr-xr-xres/images/icon/T01_2_button_expand_cancel_press.pngbin0 -> 3422 bytes
-rw-r--r--res/images/icon/T01_2_button_expand_download.pngbin0 -> 3228 bytes
-rw-r--r--res/images/icon/T01_2_button_expand_download_press.pngbin0 -> 3026 bytes
-rw-r--r--res/images/icon/T01_2_button_expand_play.pngbin0 -> 6204 bytes
-rw-r--r--res/images/icon/T01_2_button_expand_stop.pngbin0 -> 5927 bytes
-rwxr-xr-xres/images/icon/T01_2_icon_search.pngbin0 -> 3882 bytes
-rw-r--r--res/images/icon/T01_2_icon_video.pngbin0 -> 9547 bytes
-rwxr-xr-xres/images/icon/T01_2_list_icon_inner_usb.pngbin0 -> 3735 bytes
-rwxr-xr-xres/images/icon/T01_2_list_icon_sd_card.pngbin0 -> 3238 bytes
-rw-r--r--res/images/icon/T01_2_thumbnail_icon_drop_box.pngbin0 -> 1682 bytes
-rwxr-xr-xres/images/icon/T01_2_video_lock_45x45.pngbin0 -> 4049 bytes
-rwxr-xr-xres/images/icon/T01_Device_icon_index_refresh_bg.pngbin0 -> 3492 bytes
-rwxr-xr-xres/images/icon/T01_Device_icon_index_refresh_focus_ef.pngbin0 -> 3925 bytes
-rwxr-xr-xres/images/icon/T01_controlbar_icon_add_to_home.pngbin3485 -> 0 bytes
-rwxr-xr-xres/images/icon/T02_icon_edit.pngbin0 -> 3394 bytes
-rw-r--r--res/images/icon/U04_device_Camcorder.pngbin0 -> 1870 bytes
-rw-r--r--res/images/icon/U04_device_Camera.pngbin0 -> 1717 bytes
-rw-r--r--res/images/icon/U04_device_Mobile.pngbin0 -> 1208 bytes
-rw-r--r--res/images/icon/U04_device_None_DNS.pngbin0 -> 1560 bytes
-rw-r--r--res/images/icon/U04_device_PC.pngbin0 -> 1430 bytes
-rw-r--r--res/images/icon/U04_device_STB.pngbin0 -> 1518 bytes
-rw-r--r--res/images/icon/U04_device_TV.pngbin0 -> 1347 bytes
-rw-r--r--res/images/icon/_06_myfiles_list_folder.pngbin1729 -> 0 bytes
-rw-r--r--res/images/icon/player_folder_list_icon_dropbox.pngbin0 -> 1633 bytes
-rw-r--r--res/images/icon/player_folder_list_icon_dropbox_ef.pngbin0 -> 2200 bytes
-rw-r--r--res/images/icon/player_folder_list_icon_folder.pngbin0 -> 1092 bytes
-rw-r--r--res/images/icon/player_folder_list_icon_folder_ef.pngbin0 -> 1206 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_close.pngbin2139 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_full_size.pngbin2116 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_hide_panel.pngbin1724 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_icon_open_panel.pngbin1738 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_multiscreen_bg.pngbin1617 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_multiscreen_bg_press.pngbin2997 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_multiscreen_player_bg.pngbin1020 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_FF.pngbin1330 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_FF_press.pngbin1362 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Pause.pngbin1092 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Pause_press.pngbin1087 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Play.pngbin1324 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_Play_press.pngbin1323 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_REW.pngbin1310 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_player_icon_REW_press.pngbin1346 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_resize_controller.pngbin1558 -> 0 bytes
-rwxr-xr-xres/images/mw/T01-2_resize_controller_press.pngbin1831 -> 0 bytes
-rwxr-xr-xres/images/navibar_item_separator_shadow.pngbin160 -> 0 bytes
-rwxr-xr-xres/images/naviframe_optionheader.pngbin2788 -> 0 bytes
-rwxr-xr-xres/images/naviframe_optionheader_arrow.pngbin3152 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_connection_info.pngbin3308 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_more.pngbin3071 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_multiwin.pngbin3137 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_repeat_off.pngbin3498 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_repeat_on.pngbin3480 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_sa.pngbin3685 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_controller_trim.pngbin3403 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_bg.pngbin2840 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_bookmark.pngbin3223 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_screenmode.pngbin3039 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_screenmode02.pngbin3052 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_screenmode03.pngbin3449 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_select_bg.pngbin2990 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_share.pngbin3270 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_subtitle.pngbin3104 -> 0 bytes
-rwxr-xr-xres/images/option/T01-2_icon_function_trim.pngbin3429 -> 0 bytes
-rwxr-xr-xres/images/org.tizen.video-player.pngbin16946 -> 4284 bytes
-rwxr-xr-xres/images/org.tizen.videos.pngbin0 -> 4284 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_back.pngbin3493 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_back_press.pngbin3972 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_volum.pngbin4129 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_volum_press.pngbin4101 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_btn_toolbar_volume.pngbin3601 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_controller_progress_bar.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_controller_progress_bg.pngbin2797 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_repeat.pngbin3328 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_repeat_1.pngbin3335 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_repeat_all.pngbin3510 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_controller_sa.pngbin3869 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_toolbar_cancel.pngbin3231 -> 0 bytes
-rwxr-xr-xres/images/panel/T01-2_icon_toolbar_done.pngbin3322 -> 0 bytes
-rwxr-xr-xres/images/panel/T02_volume_icon_Mute.pngbin3367 -> 0 bytes
-rw-r--r--res/images/player_library_list_thumbnail_default.pngbin0 -> 2080 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_btn_bg.pngbin3650 -> 0 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_faster.pngbin4114 -> 0 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_list_press.pngbin2805 -> 0 bytes
-rwxr-xr-xres/images/subtitle/T01-2_sync_slowly.pngbin3313 -> 0 bytes
-rwxr-xr-xres/images/title_line_top_video.pngbin0 -> 2799 bytes
-rw-r--r--[-rwxr-xr-x]res/images/toolbar/T01-2_btn_toolbar_back.pngbin3493 -> 3350 bytes
-rwxr-xr-xres/images/toolbar/T01-2_btn_toolbar_volum.pngbin4129 -> 0 bytes
-rwxr-xr-xres/images/toolbar/T01-2_btn_toolbar_volume.pngbin3601 -> 0 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_folder.pngbin3040 -> 0 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_near_device.pngbin3252 -> 0 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_recorded.pngbin3722 -> 3579 bytes
-rw-r--r--res/images/toolbar/T01-2_controlbar_icon_video.pngbin3961 -> 3720 bytes
-rw-r--r--[-rwxr-xr-x]res/images/toolbar/T01-2_icon_toolbar_cancel.pngbin3231 -> 3021 bytes
-rwxr-xr-xres/images/toolbar/T01-2_icon_toolbar_delete.pngbin3201 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/toolbar/T01-2_icon_toolbar_done.pngbin3322 -> 3132 bytes
-rw-r--r--res/images/toolbar/T01-2_icon_toolbar_setting.pngbin3419 -> 0 bytes
-rw-r--r--res/images/toolbar/T01-2_icon_toolbar_sort_by.pngbin3700 -> 0 bytes
-rwxr-xr-xres/images/toolbar/T02_controlbar_icon_search.pngbin3515 -> 0 bytes
-rwxr-xr-xres/images/toolbar/T02_volume_icon_Mute.pngbin3367 -> 0 bytes
-rwxr-xr-xres/images/toolbar/icon_delete.pngbin0 -> 1493 bytes
-rwxr-xr-xres/images/toolbar/icon_download.pngbin0 -> 1367 bytes
-rwxr-xr-xres/images/toolbar/icon_nearbydevices.pngbin0 -> 1693 bytes
-rwxr-xr-xres/images/toolbar/icon_refresh.pngbin0 -> 3643 bytes
-rwxr-xr-xres/images/toolbar/icon_share_via.pngbin0 -> 1517 bytes
-rw-r--r--res/images/toolbar/icon_signin.pngbin0 -> 1464 bytes
-rwxr-xr-xres/images/toolbar/icon_sort_by.pngbin0 -> 1139 bytes
-rwxr-xr-xres/images/toolbar/icon_view_as.pngbin0 -> 1333 bytes
-rwxr-xr-xres/images/toolbar/more_button_icon_add_to_your_personal_storage.pngbin0 -> 3307 bytes
-rwxr-xr-xres/images/toolbar/more_button_icon_remove_from_your_personal_storage.pngbin0 -> 3550 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_track_ball.pngbin3162 -> 0 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_beginning.pngbin3962 -> 0 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_beginning_press.pngbin4063 -> 0 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_ending.pngbin3344 -> 0 bytes
-rwxr-xr-xres/images/trim/T01-2_controller_trimming_handle_ending_press.pngbin3587 -> 0 bytes
-rwxr-xr-xres/images/trim/T01-2_icon_toolbar_forward.pngbin3343 -> 0 bytes
-rwxr-xr-xres/images/trim/T01-2_icon_toolbar_reverse.pngbin3326 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_1x.pngbin3228 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_2x.pngbin3314 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_3x.pngbin3414 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_fastforward_4x.pngbin3469 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_1x.pngbin3269 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_2x.pngbin3288 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_3x.pngbin3396 -> 0 bytes
-rwxr-xr-xres/images/trim/gallery_video_rewind_4x.pngbin3464 -> 0 bytes
-rw-r--r--res/images/turn_over/B15_turn_over_01.pngbin0 -> 12698 bytes
-rw-r--r--res/images/turn_over/B15_turn_over_02.pngbin0 -> 23305 bytes
-rw-r--r--res/images/turn_over/B15_turn_over_03.pngbin0 -> 12645 bytes
-rw-r--r--res/images/video_preview.pngbin0 -> 132527 bytes
-rw-r--r--res/images/video_preview_l.pngbin0 -> 89253 bytes
-rwxr-xr-xres/images/video_sound_path_dim.pngbin527 -> 0 bytes
-rwxr-xr-xres/images/volume/T01-2_player_progress_bar.pngbin2799 -> 0 bytes
-rwxr-xr-xres/images/volume/T01-2_player_progress_bg.pngbin2799 -> 0 bytes
-rwxr-xr-xres/images/volume/T01-2_player_volume_handle.pngbin3127 -> 0 bytes
-rwxr-xr-xres/images/volume/T01-2_player_volume_handle_press.pngbin3168 -> 0 bytes
-rwxr-xr-xres/images/volume/T01-2_volume_icon_01.pngbin3714 -> 0 bytes
-rwxr-xr-xres/images/volume/T01-2_volume_icon_02.pngbin5351 -> 0 bytes
-rwxr-xr-xres/images/white/common/00_button_01.pngbin0 -> 3454 bytes
-rwxr-xr-xres/images/white/common/00_button_01_press.pngbin0 -> 3694 bytes
-rw-r--r--[-rwxr-xr-x]res/images/white/common/00_popup_bubble_bg.pngbin539 -> 4083 bytes
-rwxr-xr-xres/images/white/common/00_popup_scroll.9.pngbin0 -> 2934 bytes
-rwxr-xr-xres/images/white/common/00_winset_control_top_arrow.pngbin3200 -> 0 bytes
-rwxr-xr-xres/images/white/common/00_winset_control_top_bg.pngbin2817 -> 0 bytes
-rwxr-xr-xres/images/white/common/00_winset_title_line.pngbin2813 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]res/images/white/common/T01-2_popup_bg.pngbin2858 -> 2842 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_bg.pngbin3623 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_bg2.9.pngbin3164 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_normal.pngbin3110 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_press_bottom.pngbin3144 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_press_middle.pngbin3006 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_btn_press_top.pngbin3159 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_popup_divider.pngbin2814 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_title_btn_bg.pngbin2987 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_title_btn_bg_press_01.pngbin3145 -> 0 bytes
-rwxr-xr-xres/images/white/common/T01-2_title_btn_bg_press_02.pngbin3034 -> 0 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_next.pngbin3403 -> 0 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_pause.pngbin3022 -> 0 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_play.pngbin3181 -> 0 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_previous.pngbin3386 -> 0 bytes
-rwxr-xr-xres/images/white/control/T01-2_icon_toolbar_stop.pngbin3027 -> 0 bytes
-rwxr-xr-xres/images/white/panel/T01-2_btn_toolbar_back.pngbin3493 -> 0 bytes
-rwxr-xr-xres/images/white/panel/T01-2_btn_toolbar_volume.pngbin3601 -> 0 bytes
-rwxr-xr-xres/images/white/panel/T02_volume_icon_Mute.pngbin3367 -> 0 bytes
-rwxr-xr-xres/po/CMakeLists.txt6
-rwxr-xr-xres/po/POTFILES.in2
-rwxr-xr-xres/po/ar.po390
-rwxr-xr-xres/po/az.po390
-rwxr-xr-xres/po/bg.po390
-rwxr-xr-xres/po/ca.po390
-rwxr-xr-xres/po/cs.po390
-rwxr-xr-xres/po/da.po390
-rwxr-xr-xres/po/de.po390
-rwxr-xr-xres/po/de_DE.po198
-rwxr-xr-xres/po/el_GR.po450
-rwxr-xr-xres/po/en.po450
-rwxr-xr-xres/po/en_PH.po390
-rwxr-xr-xres/po/en_US.po390
-rwxr-xr-xres/po/es_ES.po450
-rwxr-xr-xres/po/es_US.po390
-rwxr-xr-xres/po/et.po390
-rwxr-xr-xres/po/eu.po390
-rwxr-xr-xres/po/fi.po390
-rwxr-xr-xres/po/fr.po390
-rwxr-xr-xres/po/fr_CA.po390
-rwxr-xr-xres/po/fr_FR.po198
-rwxr-xr-xres/po/ga.po390
-rwxr-xr-xres/po/gl.po390
-rwxr-xr-xres/po/hi.po390
-rwxr-xr-xres/po/hr.po390
-rwxr-xr-xres/po/hu.po390
-rwxr-xr-xres/po/hy.po390
-rwxr-xr-xres/po/is.po390
-rwxr-xr-xres/po/it_IT.po450
-rwxr-xr-xres/po/ja_JP.po452
-rwxr-xr-xres/po/ka.po390
-rwxr-xr-xres/po/kk.po390
-rwxr-xr-xres/po/ko_KR.po452
-rwxr-xr-xres/po/lt.po390
-rwxr-xr-xres/po/lv.po390
-rwxr-xr-xres/po/mk.po390
-rwxr-xr-xres/po/nb.po390
-rwxr-xr-xres/po/nl.po390
-rwxr-xr-xres/po/nl_NL.po198
-rwxr-xr-xres/po/pl.po390
-rwxr-xr-xres/po/pt_BR.po390
-rwxr-xr-xres/po/pt_PT.po450
-rwxr-xr-xres/po/ro.po390
-rwxr-xr-xres/po/ru_RU.po450
-rwxr-xr-xres/po/sk.po390
-rwxr-xr-xres/po/sl.po390
-rwxr-xr-xres/po/sr.po390
-rwxr-xr-xres/po/sv.po390
-rwxr-xr-xres/po/tr_TR.po448
-rwxr-xr-xres/po/uk.po390
-rwxr-xr-xres/po/uz.po390
-rwxr-xr-xres/po/zh_CN.po450
-rwxr-xr-xres/po/zh_HK.po452
-rwxr-xr-xres/po/zh_TW.po452
-rwxr-xr-xres/shared/res/video.edc30
-rw-r--r--src/common/mp-drm-ctrl.c779
-rw-r--r--src/common/mp-rotate-ctrl.c158
-rw-r--r--src/common/mp-util-config.c138
-rw-r--r--src/common/mp-util-media-service.c3772
-rw-r--r--src/common/mp-util-preference.c147
-rw-r--r--src/common/mp-util.c2676
-rw-r--r--src/common/mp-video-info-ctrl.c458
-rw-r--r--src/common/mp-video-sound-manager.c126
-rw-r--r--src/common/mp-video-streaming-ctrl.c337
-rw-r--r--src/common/mp-video-util-db-controller.c217
-rwxr-xr-xsrc/feature/mp-launching-video-displayer.c224
-rw-r--r--src/feature/mp-util-move.c838
-rw-r--r--src/feature/mp-video-url-downloader-ctrl.c201
-rw-r--r--src/mp-drm-ctrl.c411
-rwxr-xr-xsrc/mp-external-ug.c628
-rwxr-xr-xsrc/mp-util-media-service.c2497
-rwxr-xr-xsrc/mp-util.c1649
-rwxr-xr-xsrc/mp-video-animation-ctrl.c149
-rwxr-xr-xsrc/mp-video-app-ctrl.c1383
-rwxr-xr-xsrc/mp-video-ctrl-mgr.c571
-rwxr-xr-xsrc/mp-video-display-view.c1341
-rw-r--r--src/mp-video-player-mgr.c856
-rw-r--r--src/mp-video-progressbar.c752
-rwxr-xr-xsrc/mp-video-service-ctrl.c629
-rwxr-xr-xsrc/mp-video-sound-path-ctrl.c605
-rw-r--r--src/mp-video-streaming-ctrl.c818
-rwxr-xr-xsrc/mp-video-streaming-view.c743
-rwxr-xr-xsrc/mp-video-subtitle-ctrl.c352
-rwxr-xr-xsrc/mp-video-view-mgr.c1390
-rw-r--r--src/mp-video-volume-ctrl.c450
-rw-r--r--[-rwxr-xr-x]src/video-player.c640
-rw-r--r--src/view/mp-library-view-mgr.c202
-rw-r--r--src/view/mp-video-detail-view.c683
-rw-r--r--src/view/mp-video-list-folder-share-via-view.c636
-rw-r--r--src/view/mp-video-list-personal-ctrl.c757
-rw-r--r--src/view/mp-video-list-personal-view.c1933
-rw-r--r--src/view/mp-video-list-remove-ctrl.c353
-rw-r--r--src/view/mp-video-list-remove-view.c2238
-rw-r--r--src/view/mp-video-list-share-via-view.c1987
-rw-r--r--src/view/mp-video-list-view-common.c48
-rw-r--r--src/view/mp-video-list-view-folder.c1200
-rw-r--r--src/view/mp-video-list-view-item-of-folder.c2024
-rw-r--r--src/view/mp-video-list-view-main.c1366
-rw-r--r--src/view/mp-video-list-view-normal.c1204
-rw-r--r--src/view/mp-video-list-view-select.c1183
-rw-r--r--src/view/mp-video-list-view-thumbnail.c1560
-rw-r--r--src/view/mp-video-search-view.c1700
-rw-r--r--src/viewMgr/videos-view-mgr.c380
-rw-r--r--src/widget/mp-external-ug.c78
-rw-r--r--src/widget/mp-footer-toolbar.c654
-rw-r--r--src/widget/mp-util-widget-ctrl.c280
-rw-r--r--src/widget/mp-video-list-option-ctrl.c393
-rw-r--r--src/widget/mp-video-list-sort-ctrl.c414
-rw-r--r--src/widget/mp-video-list-view-as-ctrl.c421
-rw-r--r--src/widget/mp-video-nocontent-layout.c83
-rw-r--r--src/widget/mp-video-rename-ctrl.c676
-rw-r--r--src/widget/mp-video-view-popup-ctrl.c146
-rwxr-xr-xvideo-downloader/CMakeLists.txt39
-rw-r--r--video-downloader/include/VppDownload.h131
-rw-r--r--video-downloader/src/VppDownload.c1592
-rwxr-xr-xvp-main/CMakeLists.txt81
-rw-r--r--vp-main/include/serviceParser/vp-service-parser.h132
-rw-r--r--vp-main/include/vp-main.h54
-rwxr-xr-xvp-main/org.tizen.video-player.efl104
-rwxr-xr-xvp-main/org.tizen.video-player.xml129
-rwxr-xr-xvp-main/res/po/CMakeLists.txt27
-rwxr-xr-xvp-main/res/po/ar.po489
-rwxr-xr-xvp-main/res/po/az.po489
-rwxr-xr-xvp-main/res/po/bg.po489
-rwxr-xr-xvp-main/res/po/ca.po489
-rwxr-xr-xvp-main/res/po/cs.po489
-rwxr-xr-xvp-main/res/po/da.po489
-rwxr-xr-xvp-main/res/po/de.po489
-rwxr-xr-xvp-main/res/po/el_GR.po489
-rwxr-xr-xvp-main/res/po/en.po489
-rwxr-xr-xvp-main/res/po/en_PH.po489
-rwxr-xr-xvp-main/res/po/en_US.po489
-rwxr-xr-xvp-main/res/po/es_ES.po489
-rwxr-xr-xvp-main/res/po/es_US.po489
-rwxr-xr-xvp-main/res/po/et.po489
-rwxr-xr-xvp-main/res/po/eu.po489
-rwxr-xr-xvp-main/res/po/fi.po489
-rwxr-xr-xvp-main/res/po/fr.po489
-rwxr-xr-xvp-main/res/po/fr_CA.po489
-rwxr-xr-xvp-main/res/po/ga.po489
-rwxr-xr-xvp-main/res/po/gl.po489
-rwxr-xr-xvp-main/res/po/hi.po489
-rwxr-xr-xvp-main/res/po/hr.po489
-rwxr-xr-xvp-main/res/po/hu.po489
-rwxr-xr-xvp-main/res/po/hy.po489
-rwxr-xr-xvp-main/res/po/is.po489
-rwxr-xr-xvp-main/res/po/it_IT.po489
-rwxr-xr-xvp-main/res/po/ja_JP.po489
-rwxr-xr-xvp-main/res/po/ka.po489
-rwxr-xr-xvp-main/res/po/kk.po489
-rwxr-xr-xvp-main/res/po/ko_KR.po489
-rwxr-xr-xvp-main/res/po/lt.po489
-rwxr-xr-xvp-main/res/po/lv.po489
-rwxr-xr-xvp-main/res/po/mk.po489
-rwxr-xr-xvp-main/res/po/nb.po489
-rwxr-xr-xvp-main/res/po/nl.po489
-rwxr-xr-xvp-main/res/po/pl.po489
-rwxr-xr-xvp-main/res/po/pt_BR.po489
-rwxr-xr-xvp-main/res/po/pt_PT.po489
-rwxr-xr-xvp-main/res/po/ro.po489
-rwxr-xr-xvp-main/res/po/ru_RU.po489
-rwxr-xr-xvp-main/res/po/sk.po489
-rwxr-xr-xvp-main/res/po/sl.po489
-rwxr-xr-xvp-main/res/po/sr.po489
-rwxr-xr-xvp-main/res/po/sv.po489
-rwxr-xr-xvp-main/res/po/tr_TR.po489
-rwxr-xr-xvp-main/res/po/uk.po489
-rwxr-xr-xvp-main/res/po/uz.po489
-rwxr-xr-xvp-main/res/po/zh_CN.po489
-rwxr-xr-xvp-main/res/po/zh_HK.po489
-rwxr-xr-xvp-main/res/po/zh_TW.po489
-rw-r--r--vp-main/src/serviceParser/vp-service-parser.c1077
-rw-r--r--vp-main/src/vp-main.c694
1122 files changed, 180673 insertions, 36784 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b56e8f7..6cc4f6d 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,104 +1,186 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(video-player C CXX)
-
-SET(PKG_NAME org.tizen.video-player)
+PROJECT(videos C CXX)
EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION)
SET(SRCS
src/video-player.c
-src/mp-util.c
-src/mp-video-app-ctrl.c
-src/mp-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
+
+src/common/mp-util-media-service.c
+src/common/mp-video-info-ctrl.c
+src/common/mp-util.c
+src/common/mp-drm-ctrl.c
+src/common/mp-util-config.c
+src/common/mp-util-preference.c
+src/common/mp-video-util-db-controller.c
+src/common/mp-rotate-ctrl.c
+src/common/mp-video-sound-manager.c
+
+src/feature/mp-launching-video-displayer.c
+src/feature/mp-util-move.c
+
+src/widget/mp-external-ug.c
+src/widget/mp-video-list-option-ctrl.c
+src/widget/mp-video-view-popup-ctrl.c
+src/widget/mp-video-list-sort-ctrl.c
+src/widget/mp-util-widget-ctrl.c
+src/widget/mp-video-rename-ctrl.c
+src/widget/mp-video-list-view-as-ctrl.c
+src/widget/mp-footer-toolbar.c
+src/widget/mp-video-nocontent-layout.c
+
+src/view/mp-library-view-mgr.c
+src/view/mp-video-list-view-main.c
+src/view/mp-video-list-view-common.c
+src/view/mp-video-list-view-normal.c
+src/view/mp-video-list-view-select.c
+src/view/mp-video-list-view-folder.c
+src/view/mp-video-list-view-item-of-folder.c
+src/view/mp-video-list-view-thumbnail.c
+src/view/mp-video-list-share-via-view.c
+src/view/mp-video-list-folder-share-via-view.c
+src/view/mp-video-list-remove-ctrl.c
+src/view/mp-video-search-view.c
+src/view/mp-video-detail-view.c
+src/view/mp-video-list-remove-view.c
+src/view/mp-video-list-personal-view.c
+src/view/mp-video-list-personal-ctrl.c
+src/viewMgr/videos-view-mgr.c
)
INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_SOURCE_DIR}/include/common
+ ${CMAKE_SOURCE_DIR}/include/feature
+ ${CMAKE_SOURCE_DIR}/include/viewMgr
+ ${CMAKE_SOURCE_DIR}/include/widget
+ ${CMAKE_SOURCE_DIR}/include/view
+ ${CMAKE_SOURCE_DIR}/core/include
+ ${CMAKE_SOURCE_DIR}/videocam/include
+ ${CMAKE_SOURCE_DIR}/videocam/include
+
+ ${CMAKE_SOURCE_DIR}/video-downloader/include
+
+## [ MEDIA SERVICE] ###############################
+ ${CMAKE_SOURCE_DIR}/common/include
+ ${CMAKE_SOURCE_DIR}/feature/include
+ ${CMAKE_SOURCE_DIR}/core/include
+## [ Play View] ###############################
+ ${CMAKE_SOURCE_DIR}/playview/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
+ capi-appfw-application
+ capi-system-system-settings
+ libxml-2.0
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-appfw-preference
capi-media-image-util
- pmapi
capi-media-metadata-extractor
+ capi-network-wifi-direct
capi-content-media-content
+ capi-web-url-download
capi-content-mime-type
- ui-gadget-1
+ capi-system-media-key
+ shortcut
+ capi-system-sensor
+ notification
+ capi-system-runtime-info
+ capi-network-connection
+ appcore-efl
+ tapi
+ libcore-context-manager
+ capi-base-utils-i18n
+ efl-extension
+ capi-telephony
+ capi-appfw-preference
)
-
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE} -fPIC")
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE}")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Werror -fPIC -fvisibility=hidden")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -ffunction-sections -Wl,--gc-sections")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -Wall -g -fpie")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -Wall -g -fpie")
+SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Xassembler -W -fPIC")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
-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")
+
+#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+#SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -fvisibility=hidden")
+#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")
+#ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=\"\"64")
+
+IF(ENABLE_HW_BACK_KEY)
+ADD_DEFINITIONS("-D_ENABLE_HW_BACK_KEY")
+ENDIF(ENABLE_HW_BACK_KEY)
+
+
+#MMS for DOCOMO.
+IF(CMAKE_DISABLE_FEATURE_MMS)
+message("##### Disable MMS for DOCOMO #####")
+ADD_DEFINITIONS("-DMP_DISABLE_MMS")
+ENDIF(CMAKE_DISABLE_FEATURE_MMS)
+IF(CMAKE_ENABLE_MULTI_WINDOW)
+#ADD_DEFINITIONS("-D_MULTI_WINDOW")
+ENDIF(CMAKE_ENABLE_MULTI_WINDOW)
SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(BINDIR "${PREFIX}/bin")
SET(RESDIR "${PREFIX}/res")
-SET(THUMBDIR "/opt/usr/media/.video_thumb")
+SET(DATADIR "/opt/usr/apps/org.tizen.videos/data")
SET(LOCALEDIR "${RESDIR}/locale")
SET(ICONDIR "${RESDIR}/icons/default/small")
SET(EDJDIR "${RESDIR}/edje")
+SET(SHAREDRESDIR "${PREFIX}/shared/res")
SET(SLP_LD_PATH_FLAGS -L${CMAKE_CURRENT_SOURCE_DIR}/src/ext)
ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
ADD_DEFINITIONS("-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")
+#ADD_DEFINITIONS("-DUSE_DOWNLOAD_CODEC")
+ADD_DEFINITIONS("-DENABLE_LANDSCAPE")
+ADD_DEFINITIONS("-DENABLE_PERSONAL")
+ADD_DEFINITIONS("-DENABLE_SUBTITLE")
+ADD_DEFINITIONS("-DENABLE_NOTICE_POPUP")
+ADD_DEFINITIONS("-D_USE_OPENGL_BACKEND")
+ADD_DEFINITIONS("-DENABLE_EMBEDED_PROGRESS")
+ADD_DEFINITIONS("-DENABLE_S_BEAM")
+
+### Define Features ###
+
+## Videos ##
+
+# Video list view #
+#ADD_DEFINITIONS("-DVS_FEATURE_LIST_VIEW")
+ADD_DEFINITIONS("-DVS_FEATURE_THUMBNAIL_VIEW")
+ADD_DEFINITIONS("-DVS_FEATURE_FOLDER_VIEW")
+# DRM FEATURE #
+#ADD_DEFINITIONS("-DENABLE_DRM_FEATURE");
IF("${ARCH}" STREQUAL "arm")
ADD_DEFINITIONS("-DTARGET")
@@ -108,113 +190,176 @@ 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)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${gles_pkg_LDFLAGS} feature common playview core video-downloader -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
+ADD_CUSTOM_TARGET(vp_font.edj COMMAND edje_cc -no-save -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
+ADD_CUSTOM_TARGET(image_res.edj COMMAND edje_cc -no-save -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
+ADD_CUSTOM_TARGET(panel.edj COMMAND edje_cc -no-save -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
+ADD_CUSTOM_TARGET(vp-custom-winset-style.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images -sd ${CMAKE_SOURCE_DIR}/res/edc
${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
+ADD_CUSTOM_TARGET(popup_progressbar.edj COMMAND edje_cc -no-save -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
+ADD_CUSTOM_TARGET(landscape_thumbnail.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/landscape_thumbnail.edc
+${CMAKE_BINARY_DIR}/res/edc/landscape_thumbnail.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/landscape_thumbnail.edc)
+
+ADD_CUSTOM_TARGET(vp-speedbox-popup.edj COMMAND edje_cc -no-save -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_CUSTOM_TARGET(vp-remove-list-internal.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-remove-list-internal.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-remove-list-internal.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-remove-list-internal.edc)
+
+ADD_CUSTOM_TARGET(vp-main-listview-internal.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-main-listview-internal.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-main-listview-internal.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-main-listview-internal.edc)
+
+ADD_CUSTOM_TARGET(vp-genlist-no-item.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-genlist-no-item.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-genlist-no-item.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-genlist-no-item.edc)
+
+ADD_CUSTOM_TARGET(vp-device-list-internal.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-device-list-internal.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-device-list-internal.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-device-list-internal.edc)
+
+ADD_CUSTOM_TARGET(vp-main-listview-preview.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images -sd ${CMAKE_SOURCE_DIR}/res/edc
+${CMAKE_SOURCE_DIR}/res/edc/vp-main-listview-preview.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-main-listview-preview.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-main-listview-preview.edc)
+
+ADD_CUSTOM_TARGET(vp-search-view-internal.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-search-view-internal.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-search-view-internal.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-search-view-internal.edc)
+
+ADD_CUSTOM_TARGET(vp-images.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-images.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-images.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-images.edc)
+
+ADD_CUSTOM_TARGET(vp-motion-popup.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-motion-popup.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-motion-popup.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-motion-popup.edc)
+
+ADD_CUSTOM_TARGET(vp-ctxpopup-option.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-ctxpopup-option.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-ctxpopup-option.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-ctxpopup-option.edc)
+
+ADD_CUSTOM_TARGET(vp-thumbnail-view.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images -sd ${CMAKE_SOURCE_DIR}/res/edc
+${CMAKE_SOURCE_DIR}/res/edc/vp-thumbnail-view.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-thumbnail-view.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-thumbnail-view.edc)
+
+ADD_CUSTOM_TARGET(vp-main-layout.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-main-layout.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-main-layout.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-main-layout.edc)
+
+ADD_CUSTOM_TARGET(vp-naviframe.edj COMMAND edje_cc -no-save -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-naviframe.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-naviframe.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-naviframe.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} landscape_thumbnail.edj)
ADD_DEPENDENCIES(${PROJECT_NAME} vp-speedbox-popup.edj)
-ADD_DEPENDENCIES(${PROJECT_NAME} vp-volume-popup.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-remove-list-internal.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-main-listview-internal.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-genlist-no-item.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-device-list-internal.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-main-listview-preview.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-search-view-internal.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-images.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-motion-popup.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-ctxpopup-option.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-thumbnail-view.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-main-layout.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-naviframe.edj)
######################################
# install desktop file & icon, edje #
######################################
-INSTALL(DIRECTORY DESTINATION ${THUMBDIR})
+#INSTALL(DIRECTORY DESTINATION ${DATADIR})
+#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/landscape_thumbnail.edj DESTINATION ${EDJDIR})
INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DESTINATION ${EDJDIR})
-INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DESTINATION ${EDJDIR})
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.xml DESTINATION /usr/share/packages)
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /usr/share/icons/default/small/)
-INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/icon/ DESTINATION ${RESDIR}/images/icon)
-INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/toolbar/ DESTINATION ${RESDIR}/images/toolbar)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-remove-list-internal.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-main-listview-internal.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-genlist-no-item.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-device-list-internal.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-main-listview-preview.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-search-view-internal.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-images.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-motion-popup.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-ctxpopup-option.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-thumbnail-view.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-main-layout.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-naviframe.edj DESTINATION ${EDJDIR})
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.rule DESTINATION /opt/etc/smack/accesses.d)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.videos.xml DESTINATION /usr/share/packages)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/shared/res/video.edc DESTINATION ${SHAREDRESDIR})
-INSTALL(FILES LICENSE.Flora DESTINATION /usr/share/license RENAME ${PKG_NAME})
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.videos.png DESTINATION /usr/share/icons/default/small/)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/core_theme_bg_01.png DESTINATION ${RESDIR}/images)
+
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/ DESTINATION ${RESDIR}/images)
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/icon/ DESTINATION ${RESDIR}/images/icon)
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/toolbar/ DESTINATION ${RESDIR}/images/toolbar)
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.videos.efl DESTINATION /etc/smack/accesses.d)
+
+#INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/video_fake_image.jpg DESTINATION /usr/apps/org.tizen.videos/res/images/)
+
+#video-downloader
+ADD_SUBDIRECTORY(video-downloader)
ADD_SUBDIRECTORY(res/po)
+ADD_SUBDIRECTORY(common)
+ADD_SUBDIRECTORY(core)
+ADD_SUBDIRECTORY(feature)
+ADD_SUBDIRECTORY(playview)
+
+#chapter-svc
+#ADD_SUBDIRECTORY(chapter-svc)
+
+#video-player
+ADD_SUBDIRECTORY(vp-main)
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..54b213e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ 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.
+
+ 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,
+ 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 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 in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) 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
+
+ (d) 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 Apache License to your work.
+
+ To apply the Apache 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 Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ 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/LICENSE.Flora b/LICENSE.Flora
deleted file mode 100644
index 571fe79..0000000
--- a/LICENSE.Flora
+++ /dev/null
@@ -1,206 +0,0 @@
-Flora License
-
-Version 1.1, April, 2013
-
-http://floralicense.org/license/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction,
-and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by
-the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and
-all other entities that control, are controlled by, or are
-under common control with that entity. For the purposes of
-this definition, "control" means (i) the power, direct or indirect,
-to cause the direction or management of such entity,
-whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
-or more of the outstanding shares, or (iii) beneficial ownership of
-such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity
-exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications,
-including but not limited to software source code, documentation source,
-and configuration files.
-
-"Object" form shall mean any form resulting from mechanical
-transformation or translation of a Source form, including but
-not limited to compiled object code, generated documentation,
-and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form,
-made available under the License, as indicated by a copyright notice
-that is included in or attached to the work (an example is provided
-in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form,
-that is based on (or derived from) the Work and for which the editorial
-revisions, annotations, elaborations, or other modifications represent,
-as a whole, an original work of authorship. For the purposes of this License,
-Derivative Works shall not include works that remain separable from,
-or merely link (or bind by name) to the interfaces of, the Work and
-Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original
-version of the Work and any modifications or additions to that Work or
-Derivative Works thereof, that is intentionally submitted to Licensor
-for inclusion in the Work by the copyright owner or by an individual or
-Legal Entity authorized to submit on behalf of the copyright owner.
-For the purposes of this definition, "submitted" means any form of
-electronic, verbal, or written communication sent to the Licensor or
-its representatives, including but not limited to communication on
-electronic mailing lists, source code control systems, and issue
-tracking systems that are managed by, or on behalf of, the Licensor
-for the purpose of discussing and improving the Work, but excluding
-communication that is conspicuously marked or otherwise designated
-in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity
-on behalf of whom a Contribution has been received by Licensor and
-subsequently incorporated within the Work.
-
-"Tizen Certified Platform" shall mean a software platform that complies
-with the standards set forth in the Tizen Compliance Specification
-and passes the Tizen Compliance Tests as defined from time to time
-by the Tizen Technical Steering Group and certified by the Tizen
-Association or its designated agent.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-copyright license to reproduce, prepare Derivative Works of,
-publicly display, publicly perform, sublicense, and distribute the
-Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-(except as stated in this section) patent license to make, have made,
-use, offer to sell, sell, import, and otherwise transfer the Work
-solely as incorporated into a Tizen Certified Platform, where such
-license applies only to those patent claims licensable by such
-Contributor that are necessarily infringed by their Contribution(s)
-alone or by combination of their Contribution(s) with the Work solely
-as incorporated into a Tizen Certified Platform to which such
-Contribution(s) was submitted. If You institute patent litigation
-against any entity (including a cross-claim or counterclaim
-in a lawsuit) alleging that the Work or a Contribution incorporated
-within the Work constitutes direct or contributory patent infringement,
-then any patent licenses granted to You under this License for that
-Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-Work or Derivative Works thereof pursuant to the copyright license
-above, in any medium, with or without modifications, and in Source or
-Object form, provided that You meet the following conditions:
-
- 1. You must give any other recipients of the Work or Derivative Works
- a copy of this License; and
- 2. You must cause any modified files to carry prominent notices stating
- that You changed the files; and
- 3. You must retain, in the Source form of any Derivative Works that
- You distribute, all copyright, patent, trademark, and attribution
- notices from the Source form of the Work, excluding those notices
- that do not pertain to any part of the Derivative Works; and
- 4. If the Work includes a "NOTICE" text file as part of its distribution,
- then any Derivative Works that You distribute must include a readable
- copy of the attribution notices contained within such NOTICE file,
- excluding those notices that do not pertain to any part of
- the Derivative Works, in at least one of the following places:
- within a NOTICE text file distributed as part of the Derivative Works;
- within the Source form or documentation, if provided along with the
- Derivative Works; or, within a display generated by the Derivative Works,
- if and wherever such third-party notices normally appear.
- The contents of the NOTICE file are for informational purposes only
- and do not modify the License. You may add Your own attribution notices
- within Derivative Works that You distribute, alongside or as an addendum
- to the NOTICE text from the Work, provided that such additional attribution
- notices cannot be construed as modifying the License. You may add Your own
- copyright statement to Your modifications and may provide additional or
- different license terms and conditions for use, reproduction, or
- distribution of Your modifications, or for any such Derivative Works
- as a whole, provided Your use, reproduction, and distribution of
- the Work otherwise complies with the conditions stated in this License
- and your own copyright statement or terms and conditions do not conflict
- the conditions stated in the License including section 3.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-any Contribution intentionally submitted for inclusion in the Work
-by You to the Licensor shall be under the terms and conditions of
-this License, without any additional terms or conditions.
-Notwithstanding the above, nothing herein shall supersede or modify
-the terms of any separate license agreement you may have executed
-with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-names, trademarks, service marks, or product names of the Licensor,
-except as required for reasonable and customary use in describing the
-origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-agreed to in writing, Licensor provides the Work (and each
-Contributor provides its Contributions) on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-implied, including, without limitation, any warranties or conditions
-of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-PARTICULAR PURPOSE. You are solely responsible for determining the
-appropriateness of using or redistributing the Work and assume any
-risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-whether in tort (including negligence), contract, or otherwise,
-unless required by applicable law (such as deliberate and grossly
-negligent acts) or agreed to in writing, shall any Contributor be
-liable to You for damages, including any direct, indirect, special,
-incidental, or consequential damages of any character arising as a
-result of this License or out of the use or inability to use the
-Work (including but not limited to damages for loss of goodwill,
-work stoppage, computer failure or malfunction, or any and all
-other commercial damages or losses), even if such Contributor
-has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-the Work or Derivative Works thereof, You may choose to offer,
-and charge a fee for, acceptance of support, warranty, indemnity,
-or other liability obligations and/or rights consistent with this
-License. However, in accepting such obligations, You may act only
-on Your own behalf and on Your sole responsibility, not on behalf
-of any other Contributor, and only if You agree to indemnify,
-defend, and hold each Contributor harmless for any liability
-incurred by, or claims asserted against, such Contributor by reason
-of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Flora License to your work
-
-To apply the Flora License to your work, attach the following
-boilerplate notice, with the fields enclosed by brackets "[]"
-replaced with your own identifying information. (Don't include
-the brackets!) The text should be enclosed in the appropriate
-comment syntax for the file format. We also recommend that a
-file or class name and description of purpose be included on the
-same "printed page" as the copyright notice for easier
-identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Flora License, Version 1.1 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://floralicense.org/license/
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/NOTICE b/NOTICE
index 334eb43..851c000 100755..100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,3 +1,2 @@
-Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Flora License, Version 1.1
-Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions. \ No newline at end of file
+Copyright (c) 2000-2015 Samsung Electronics Co., Ltd. All rights reserved.
+
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
new file mode 100755
index 0000000..ba6b2e4
--- /dev/null
+++ b/common/CMakeLists.txt
@@ -0,0 +1,64 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(common C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(VERSION 0.1.0)
+
+SET(SRCS
+ src/vp-db-util.c
+ src/vp-preview-db.c
+ src/vp-thumb-db.c
+ src/vp-chapter-db.c
+ src/vp-media-content-util.c
+ src/vp-util.c
+ src/vp-file-util.c
+ src/vp-pinch-zoom.c
+)
+
+INCLUDE_DIRECTORIES(
+ include
+ src
+ src/include
+ src/uuid
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED
+ elementary
+ ecore
+ ecore-evas
+ edje
+ eina
+ evas
+ dlog
+ sqlite3
+ capi-content-media-content
+)
+
+FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS})
+ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -Wall")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS})
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} )
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS})
+
+
+#install resouce files.
+# Lack of a trailing slash means install this directory, trailing slash means
+# install everything in this directory.
+
+# Install image files.
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
+
+
+
diff --git a/common/include/vp-chapter-db.h b/common/include/vp-chapter-db.h
new file mode 100644
index 0000000..02e168f
--- /dev/null
+++ b/common/include/vp-chapter-db.h
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+#pragma once
+
+
+#include <stdbool.h>
+#include <glib.h>
+
+typedef void *vp_chapter_db_h;
+
+
+typedef struct _ChapterDBItem {
+ int nIdx;
+ char *szChapterPath;
+ int nFileSize;
+}ChapterDBItem;
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+vp_chapter_db_h vp_chapter_db_create();
+void vp_chapter_db_destroy(vp_chapter_db_h hChapterDB);
+bool vp_chapter_db_set_media_id(vp_chapter_db_h hChapterDB, const char *szMediaID);
+bool vp_chapter_db_set_media_url(vp_chapter_db_h hChapterDB, const char *szMediaURL);
+bool vp_chapter_db_get_items(vp_chapter_db_h hChapterDB, GList **pChapterList);
+bool vp_chapter_db_get_all_items_media_id(vp_chapter_db_h hChapterDB, GList **pChapterList);
+bool vp_chapter_db_insert(vp_chapter_db_h hChapterDB, const char *szChapterPath, int nIdx);
+bool vp_chapter_db_delete(vp_chapter_db_h hChapterDB);
+bool vp_chapter_db_item_count(vp_chapter_db_h hChapterDB, int *nCount);
+bool vp_chapter_db_item_free(ChapterDBItem *pItem);
+
+
+#ifdef _cplusplus
+}
+#endif
+
diff --git a/common/include/vp-debug.h b/common/include/vp-debug.h
new file mode 100644
index 0000000..eed7db9
--- /dev/null
+++ b/common/include/vp-debug.h
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+#pragma once
+
+#include <dlog.h>
+#include <assert.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+#include <stdbool.h>
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+
+#define LOG_TAG "VIDEO_PLAYER"
+
+#ifndef _USE_DLOG_
+#define _USE_DLOG_
+#endif
+
+/* anci c color type */
+#define FONT_COLOR_RESET "\033[0m"
+#define FONT_COLOR_RED "\033[31m"
+#define FONT_COLOR_GREEN "\033[32m"
+#define FONT_COLOR_YELLOW "\033[33m"
+#define FONT_COLOR_BLUE "\033[34m"
+#define FONT_COLOR_PURPLE "\033[35m"
+#define FONT_COLOR_CYAN "\033[36m"
+#define FONT_COLOR_GRAY "\033[37m"
+
+#ifdef _USE_LOG_FILE_
+FILE *g_log_fp;
+#endif // _USE_LOG_FILE_
+
+#ifdef _USE_LOG_FILE_
+
+
+#elif defined _USE_DLOG_
+
+#define vp_dbg_tid(fmt,arg...) LOGI_IF(true, FONT_COLOR_YELLOW"[TID:%d]" fmt FONT_COLOR_RESET"\n", syscall(__NR_gettid), ##arg)
+#define vp_dbg(fmt, arg...) LOGD_IF(true, "" fmt "\n", ##arg)
+#define vp_dbgW(fmt, arg...) LOGW_IF(true, FONT_COLOR_GREEN" " fmt FONT_COLOR_RESET"\n", ##arg)
+#define vp_dbgE(fmt, arg...) LOGE_IF(true, FONT_COLOR_RED" " fmt FONT_COLOR_RESET"\n", ##arg)
+
+#define vp_sdbg(fmt,arg...) SECURE_LOGD( " " fmt "\n", ##arg)
+#define vp_sdbg_tid(fmt,arg...) SECURE_LOGI( fmt "\n", ##arg)
+#define vp_sdbgE( fmt,arg...) SECURE_LOGE( "\033[0;31m [ERR] " fmt FONT_COLOR_RESET"\n", ##arg)
+
+
+#elif defined _USE_LOG_CONSOLE_
+
+
+#else
+
+#define vp_dbg(fmt,arg...)
+#define vp_dbgW(fmt, arg...)
+#define vp_dbgE(fmt, arg...)
+#endif
+
+
+#define vp_retm_if(expr, fmt, arg...) do { \
+ if(expr) { \
+ vp_dbgE(fmt, ##arg); \
+ vp_dbgE("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+
+#define vp_retvm_if(expr, val, fmt, arg...) do { \
+ if(expr) { \
+ vp_dbgE(fmt, ##arg); \
+ vp_dbgE("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+} while (0)
+
+#define CHECK_EXCEP(expr) do { \
+ if(!(expr)) { \
+ vp_dbgE("Critical ERROR ########################################## Check below item.");\
+ goto EXCEPTION;\
+ } \
+} while (0)
+
+#define VP_CHECK_VAL(expr, val) vp_retvm_if(!(expr), val, "Invalid parameter, return ERROR code!")
+#define VP_CHECK_NULL(expr) vp_retvm_if(!(expr), NULL, "Invalid parameter, return NULL!")
+#define VP_CHECK_FALSE(expr) vp_retvm_if(!(expr), false, "Invalid parameter, return FALSE!")
+#define VP_CHECK_CANCEL(expr) vp_retvm_if(!(expr), ECORE_CALLBACK_CANCEL, "Invalid parameter, return ECORE_CALLBACK_CANCEL!")
+#define VP_CHECK(expr) vp_retm_if(!(expr), "Invalid parameter, return!")
+
+#define VP_START_FUNC() LOGD_IF(true, "*********************** [Func: %s] enter!! ********************* \n", __func__)
+#define VP_END_FUNC() LOGD_IF(true, "*********************** [Func: %s] leave!! ********************* \n", __func__)
+
+#ifdef _cplusplus
+}
+#endif
+
+
diff --git a/common/include/vp-file-util.h b/common/include/vp-file-util.h
new file mode 100644
index 0000000..a892765
--- /dev/null
+++ b/common/include/vp-file-util.h
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 __VP_FILE_UTIL_H__
+#define __VP_FILE_UTIL_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <Elementary.h>
+
+const char* vp_file_get(const char path[]);
+char* vp_dir_get(const char path[]);
+int vp_file_exists(const char *path);
+Eina_Bool vp_is_dir(const char *path);
+int vp_is_dir_empty(const char *path);
+int vp_mkdir(const char *dir);
+int vp_mkpath(const char *path);
+char *vp_strip_ext(const char *path);
+int vp_file_unlink (const char *filename);
+int vp_file_size(const char *filename);
+int vp_file_rmdir(const char *filename);
+Eina_List *vp_file_ls(const char *dir);
+int vp_file_recursive_rm(const char *dir);
+int vp_file_cp(const char *src,const char *dst);
+int vp_file_mv(const char *src, const char *dst);
+
+#endif //__VP_FILE_UTIL_H__
+
diff --git a/common/include/vp-macro.h b/common/include/vp-macro.h
new file mode 100644
index 0000000..e0704a9
--- /dev/null
+++ b/common/include/vp-macro.h
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <limits.h>
+#include <errno.h>
+#include <assert.h>
+
+#define _EDJ(o) elm_layout_edje_get(o)
+#define VP_SCALE elm_config_scale_get()
+
+#define VP_MAX_HEAP_SIZE 5*1024*1024 /*Malloc more than this will not be allowd*/
+
+#define VP_ASSERT(scalar_exp) \
+ assert(scalar_exp); \
+
+
+#define VP_CALLOC(ptr, no_elements, type) \
+ do { \
+ if((int)(no_elements) <= 0) \
+ { \
+ ptr = NULL; \
+ } \
+ else if(VP_MAX_HEAP_SIZE < no_elements* sizeof (type)) \
+ { \
+ assert(0); \
+ } \
+ else \
+ { \
+ ptr = (type *) calloc (no_elements , sizeof (type)); \
+ VP_ASSERT(ptr); \
+ }\
+ }while(0);
+
+#define VP_SNPRINTF(dest,size,format,arg...) \
+ do { \
+ if(dest != NULL && format != NULL) \
+ { \
+ snprintf(dest,size,format,##arg); \
+ } \
+ }while(0);
+
+ /* If the same pointer is passed to free twice, known as a double free.
+ To avoid this, set pointers to NULL after passing them to free:
+ free(NULL) is safe (it does nothing). */
+
+#define VP_FREE(ptr) \
+ do { \
+ if(ptr != NULL) \
+ { \
+ free(ptr); \
+ ptr = NULL; \
+ } \
+ }while(0);
+
+#define VP_STRNCPY(dest,src,size) \
+ do { \
+ if(src != NULL && dest != NULL && size > 0) \
+ { \
+ strncpy(dest,src,size); \
+ } \
+ }while(0);
+ /*
+ * string wrappers
+ */
+#define VP_STRDUP(destptr,sourceptr)\
+ do{\
+ if(sourceptr == NULL)\
+ destptr = NULL; \
+ else \
+ destptr = strdup(sourceptr); \
+ }while(0);
+
+
+
+#define VP_EVAS_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ evas_object_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+#define VP_EVAS_TIMER_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_timer_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+#define VP_EVAS_IDLER_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_idler_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+
+#define VP_EVAS_EVENT_HANDLER_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_event_handler_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+#ifdef __cplusplus
+ }
+#endif /* __cplusplus */
+
+
diff --git a/common/include/vp-media-content-util.h b/common/include/vp-media-content-util.h
new file mode 100644
index 0000000..0efa554
--- /dev/null
+++ b/common/include/vp-media-content-util.h
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+
+bool vp_media_content_util_get_video_id(const char *szFilePath, char **szVideoID);
+bool vp_media_content_util_get_first_video(char **szFilePath);
diff --git a/common/include/vp-pinch-zoom.h b/common/include/vp-pinch-zoom.h
new file mode 100644
index 0000000..c91cb16
--- /dev/null
+++ b/common/include/vp-pinch-zoom.h
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <unistd.h>
+#include <Ecore_X.h>
+#include <stdbool.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util-media-service.h"
+#include "mp-video-log.h"
+#include "mp-util.h"
+#include "mp-video-list-view-thumbnail.h"
+
+typedef struct _vp_gesture_t vp_gesture_s;
+typedef struct _vp_pinch_event_t vp_pinch_event_s;
+typedef enum _vp_pinch_plan_t vp_pinch_plan_e;
+typedef Eina_Bool (*vp_gesture_cb) (Evas_Object *gesture, void *data);
+
+struct _vp_gesture_t {
+ st_VideoListViewMainViewWidget *ad;
+ Evas_Object *parent;
+ Evas_Object *gesture;
+ vp_gesture_cb zoom_in_cb;
+ vp_gesture_cb zoom_out_cb;
+ void *zoom_in_data;
+ void *zoom_out_data;
+
+ int dis_old;
+ int pinch_dis_old;
+ Eina_List *s_event_elist;
+ Ecore_Job *pinch_job;
+ int next_plan;
+};
+
+struct _vp_pinch_event_t {
+ int device;
+
+ struct vp_prev {
+ Evas_Coord x;
+ Evas_Coord y;
+ } prev;
+
+ Evas_Coord x;
+ Evas_Coord y;
+ Evas_Coord w;
+ Evas_Coord h;
+ Evas_Object *object;
+ Ecore_Timer *hold_timer;
+ int ts; /* Time stamp to calculate whether scrolling or moving */
+ int v; /* Velocity */
+ int pinch_dis;
+ Evas_Object *pinch_obj; /* Object between thumb and index */
+ Evas_Object *test; /* To see dis center */
+};
+
+enum _vp_pinch_plan_t {
+ VP_PINCH_PLAN_NONE,
+ VP_PINCH_PLAN_OUT,
+ VP_PINCH_PLAN_IN,
+ VP_PINCH_PLAN_MAX
+};
+
+typedef enum _vp_zoom_mode {
+ VP_ZOOM_NONE,
+ VP_ZOOM_IN_DEFAULT,
+ VP_ZOOM_IN_MAX,
+} vp_zoom_mode;
+
+#define VP_IF_DEL_TIMER(timer) \
+ do { \
+ if(timer != NULL) { \
+ ecore_timer_del(timer); \
+ timer = NULL; \
+ } \
+ } while (0)
+
+#define VP_FREE(ptr) \
+ do { \
+ free(ptr); \
+ ptr = NULL; \
+ } while (0)
+
+#define VP_IF_DEL_JOB(job) \
+ do { \
+ if(job != NULL) { \
+ ecore_job_del(job); \
+ job = NULL; \
+ } \
+ } while (0)
+
+#define VP_PINCH_TOUCH_HOLD_RANGE 80
+#define VP_PINCH_TOUCH_FACTOR 4
+#define VP_PINCH_HOLD_TIME_DELAY 0.35f
+#define VP_GESTURE_KEY_DATA "gesture_data"
+
+int _vp_gesture_set_zoom_in_cb(Evas_Object *gesture, vp_gesture_cb cb, void *data);
+int _vp_gesture_set_zoom_out_cb(Evas_Object *gesture, vp_gesture_cb cb, void *data);
+int _vp_pinch_add_event(void *data, Evas_Object *layout);
+Eina_Bool __vp_pinch_zoom_out_cb(Evas_Object *gesture, void *data);
+Eina_Bool __vp_pinch_zoom_in_cb(Evas_Object *gesture, void *data);
diff --git a/common/include/vp-preview-db.h b/common/include/vp-preview-db.h
new file mode 100644
index 0000000..602a972
--- /dev/null
+++ b/common/include/vp-preview-db.h
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+#pragma once
+
+
+#include <stdbool.h>
+#include <glib.h>
+
+typedef void *vp_preview_db_h;
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+vp_preview_db_h vp_preview_db_create();
+void vp_preview_db_destroy(vp_preview_db_h hPreviewDB);
+bool vp_preview_db_set_media_id(vp_preview_db_h hPreviewDB, const char *szMediaURL);
+bool vp_preview_db_set_media_url(vp_preview_db_h hPreviewDB, const char *szMediaURL);
+bool vp_preview_db_get_file_path(vp_preview_db_h hPreviewDB, char **szFilePath);
+bool vp_preview_db_get_file_size(vp_preview_db_h hPreviewDB, int *nFileSize);
+bool vp_preview_db_item_count(vp_preview_db_h hPreviewDB, int *nCount);
+bool vp_preview_db_get_all_items_media_id(vp_preview_db_h hPreviewDB, GList **pPreviewList);
+bool vp_preview_db_insert(vp_preview_db_h hPreviewDB, const char *szPreviewPath);
+bool vp_preview_db_delete(vp_preview_db_h hPreviewDB);
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
+
diff --git a/common/include/vp-thumb-db.h b/common/include/vp-thumb-db.h
new file mode 100644
index 0000000..ccbb742
--- /dev/null
+++ b/common/include/vp-thumb-db.h
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+#pragma once
+
+
+#include <stdbool.h>
+#include <glib.h>
+
+typedef void *vp_thumb_db_h;
+
+
+typedef struct _ThumbDBItem {
+ int nIdx;
+ char *szThumbPath;
+ int nFileSize;
+}ThumbDBItem;
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+vp_thumb_db_h vp_thumb_db_create();
+void vp_thumb_db_destroy(vp_thumb_db_h hThumbDB);
+bool vp_thumb_db_set_media_id(vp_thumb_db_h hThumbDB, const char *szMediaID);
+bool vp_thumb_db_set_media_url(vp_thumb_db_h hThumbDB, const char *szMediaURL);
+bool vp_thumb_db_get_items(vp_thumb_db_h hThumbDB, GList **pThumbList);
+bool vp_thumb_db_get_all_items_media_id(vp_thumb_db_h hThumbDB, GList **pThumbList);
+bool vp_thumb_db_insert(vp_thumb_db_h hThumbDB, const char *szThumbPath, int nIdx);
+bool vp_thumb_db_delete(vp_thumb_db_h hThumbDB);
+bool vp_thumb_db_item_count(vp_thumb_db_h hThumbDB, int *nCount);
+bool vp_thumb_db_item_free(ThumbDBItem *pItem);
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
+
diff --git a/common/include/vp-util.h b/common/include/vp-util.h
new file mode 100644
index 0000000..e884128
--- /dev/null
+++ b/common/include/vp-util.h
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+#include <image_util_type.h>
+
+char* vp_util_convert_file_location(const char *szFileLocation);
+int vp_util_image_rotate(unsigned char *dest, int *dest_width, int *dest_height, const image_util_rotation_e dest_rotation,
+ const unsigned char *src, const int src_w, const int src_h, const image_util_colorspace_e colorspace);
+int vp_util_image_resize(unsigned char *dest, const int *dest_width , const int *dest_height, const unsigned char *src,
+ const int src_w, const int src_h, const image_util_colorspace_e colorspace);
+void vp_util_lock_cpu();
+void vp_util_release_cpu();
+
diff --git a/common/src/include/vp-db-common.h b/common/src/include/vp-db-common.h
new file mode 100644
index 0000000..353978b
--- /dev/null
+++ b/common/src/include/vp-db-common.h
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <Ecore.h>
+#include <Elementary.h>
+#include <media_content.h>
+
+
+#include "vp-debug.h"
+#include "vp-macro.h"
+
+
diff --git a/common/src/include/vp-db-util.h b/common/src/include/vp-db-util.h
new file mode 100644
index 0000000..968e228
--- /dev/null
+++ b/common/src/include/vp-db-util.h
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <sqlite3.h>
+#include <stdbool.h>
+
+bool vp_db_util_connect();
+void vp_db_util_disconnect();
+bool vp_db_util_is_connect();
+bool vp_db_util_query_prepare(char *szQuery, sqlite3_stmt **stmt);
+
+
diff --git a/common/src/vp-chapter-db.c b/common/src/vp-chapter-db.c
new file mode 100644
index 0000000..5c5918d
--- /dev/null
+++ b/common/src/vp-chapter-db.c
@@ -0,0 +1,461 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-db-common.h"
+#include "vp-db-util.h"
+
+#include "vp-media-content-util.h"
+
+#include "vp-chapter-db.h"
+#include "vp-file-util.h"
+
+#define CHAPTER_DB_INSERT_QUERY "INSERT INTO video_chapter (chapter_idx, file_path, file_size, media_id) VALUES ( %d, '%q', %d, '%q')"
+#define CHAPTER_DB_DELETE_QUERY "DELETE FROM video_chapter where media_id = '%q'"
+#define CHAPTER_DB_SELECT_QUERY "select chapter_uuid, chapter_idx, file_path, file_size, media_id from video_chapter where media_id = '%q'"
+#define CHAPTER_DB_COUNT_QUERY "select count(*) from video_chapter where media_id = '%q'"
+#define CHAPTER_DB_ALL_ITEM_QUERY "select DISTINCT(media_id) from video_chapter"
+
+typedef struct _ChapterDB {
+ char *szMediaURL;
+ char *szMediaID;
+ char *szFilePath;
+ int nFileSize;
+ int nTotalCount;
+} ChapterDB;
+
+
+static void _vp_chapter_db_destory_handle(ChapterDB *pChapterDB);
+
+
+/* callback functions */
+
+/* internal functions */
+static void _vp_chapter_db_destory_handle(ChapterDB *pChapterDB)
+{
+ if (pChapterDB == NULL) {
+ vp_dbgE("pChapterDB is NULL");
+ return;
+ }
+
+ VP_FREE(pChapterDB->szMediaURL);
+ VP_FREE(pChapterDB->szMediaID);
+ VP_FREE(pChapterDB->szFilePath);
+
+ VP_FREE(pChapterDB);
+}
+
+static bool _vp_chapter_db_get_count(char *szMediaID, int *nCount)
+{
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+ char *szSql = sqlite3_mprintf(CHAPTER_DB_COUNT_QUERY, szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ if (nRet == SQLITE_ROW) {
+ *nCount = (int) sqlite3_column_int(stmt, 0);
+ vp_dbgW("Get Chapter Count : %d", *nCount);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+static bool _vp_chapter_db_delete_items(char *szMediaID)
+{
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(CHAPTER_DB_SELECT_QUERY, szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ char *szFileName = (char *) sqlite3_column_text(stmt, 2);
+
+ if (vp_file_exists(szFileName)) {
+ vp_file_unlink(szFileName);
+ }
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+
+
+/* external functions */
+vp_chapter_db_h vp_chapter_db_create()
+{
+ ChapterDB *pChapterDB = calloc(1, sizeof(ChapterDB));
+
+ if (pChapterDB == NULL) {
+ vp_dbgE("pChapterDB alloc is fail");
+ return NULL;
+ }
+
+ if (!vp_db_util_connect()) {
+ vp_dbgE("Database connect is fail");
+ _vp_chapter_db_destory_handle(pChapterDB);
+ return NULL;
+ }
+
+ return (vp_chapter_db_h) pChapterDB;
+}
+
+void vp_chapter_db_destroy(vp_chapter_db_h hChapterDB)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return;
+ }
+
+ vp_db_util_disconnect();
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ _vp_chapter_db_destory_handle(pChapterDB);
+}
+
+bool vp_chapter_db_set_media_id(vp_chapter_db_h hChapterDB,
+ const char *szMediaID)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ VP_FREE(pChapterDB->szMediaID);
+
+ VP_STRDUP(pChapterDB->szMediaID, szMediaID);
+
+ return TRUE;
+}
+
+bool vp_chapter_db_set_media_url(vp_chapter_db_h hChapterDB,
+ const char *szMediaURL)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ if (szMediaURL == NULL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ VP_FREE(pChapterDB->szMediaURL);
+ VP_FREE(pChapterDB->szMediaID);
+
+ VP_STRDUP(pChapterDB->szMediaURL, szMediaURL);
+
+ if (!vp_media_content_util_get_video_id
+ (szMediaURL, &(pChapterDB->szMediaID))) {
+ vp_dbgE("vp_media_content_util_get_video_id is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_chapter_db_get_items(vp_chapter_db_h hChapterDB,
+ GList **pChapterList)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ if (pChapterDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql =
+ sqlite3_mprintf(CHAPTER_DB_SELECT_QUERY, pChapterDB->szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ /* chapter_uuid, chapter_idx, file_path, file_size, media_id */
+ ChapterDBItem *pItem = calloc(1, sizeof(ChapterDBItem));
+ if (!pItem) {
+ vp_dbgE("allocation failed");
+ return FALSE;
+ }
+ vp_sdbg("UUID : %d", (int) sqlite3_column_int(stmt, 0));
+ vp_sdbg("CHAPTER_IDX : %d", (int) sqlite3_column_int(stmt, 1));
+ vp_sdbg("FILE_PATH : %s", (char *) sqlite3_column_text(stmt, 2));
+ vp_sdbg("FILE_SIZE : %d", (int) sqlite3_column_int(stmt, 3));
+ vp_sdbg("MEDIA_ID : %s", (char *) sqlite3_column_text(stmt, 4));
+
+ pItem->nIdx = (int) sqlite3_column_int(stmt, 1);
+ VP_STRDUP(pItem->szChapterPath,
+ (char *) sqlite3_column_text(stmt, 2));
+ pItem->nFileSize = (int) sqlite3_column_int(stmt, 3);
+
+ *pChapterList = g_list_append(*pChapterList, pItem);
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_chapter_db_get_all_items_media_id(vp_chapter_db_h hChapterDB,
+ GList **pChapterList)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(CHAPTER_DB_ALL_ITEM_QUERY);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ char *szMediaID = NULL;
+
+ VP_STRDUP(szMediaID, (char *) sqlite3_column_text(stmt, 0));
+
+ *pChapterList = g_list_append(*pChapterList, szMediaID);
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_chapter_db_insert(vp_chapter_db_h hChapterDB,
+ const char *szChapterPath, int nIdx)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ if (szChapterPath == NULL) {
+ vp_dbgE("szChapterPath is NULL");
+ return FALSE;
+ }
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ if (pChapterDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+
+ long long nSize = vp_file_size(szChapterPath);
+
+ char *szSql =
+ sqlite3_mprintf(CHAPTER_DB_INSERT_QUERY, nIdx, szChapterPath,
+ (int) nSize, pChapterDB->szMediaID);
+ vp_sdbg("%s", szSql);
+
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ sqlite3_step(stmt);
+
+ if (stmt) {
+ sqlite3_reset(stmt);
+ sqlite3_clear_bindings(stmt);
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_chapter_db_delete(vp_chapter_db_h hChapterDB)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ if (pChapterDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ _vp_chapter_db_delete_items(pChapterDB->szMediaID);
+
+ char *szSql =
+ sqlite3_mprintf(CHAPTER_DB_DELETE_QUERY, pChapterDB->szMediaID);
+ vp_sdbg("%s", szSql);
+
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ sqlite3_step(stmt);
+
+ if (stmt) {
+ sqlite3_reset(stmt);
+ sqlite3_clear_bindings(stmt);
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_chapter_db_item_count(vp_chapter_db_h hChapterDB, int *nCount)
+{
+ if (hChapterDB == NULL) {
+ vp_dbgE("hChapterDB is NULL");
+ return FALSE;
+ }
+
+ ChapterDB *pChapterDB = (ChapterDB *) hChapterDB;
+
+ return _vp_chapter_db_get_count(pChapterDB->szMediaID, nCount);
+}
+
+bool vp_chapter_db_item_free(ChapterDBItem *pItem)
+{
+ if (pItem == NULL) {
+ vp_dbgE("ChapterDBItem is NULL");
+ return FALSE;
+ }
+
+ VP_FREE(pItem->szChapterPath);
+ VP_FREE(pItem);
+
+ return TRUE;
+}
diff --git a/common/src/vp-db-util.c b/common/src/vp-db-util.c
new file mode 100644
index 0000000..5622517
--- /dev/null
+++ b/common/src/vp-db-util.c
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-db-common.h"
+#include "vp-db-util.h"
+
+#define VIDEO_THUMB_DB_NAME "/opt/usr/apps/org.tizen.videos/data/.video-thumb.db"
+
+static sqlite3 *g_sqlite3_handle = NULL;
+static int g_nRefCount = 0;
+
+/* callback functions */
+static int __vp_db_util_busy_handler(void *pData, int count)
+{
+ usleep(50000);
+
+ vp_dbgW("__vp_db_util_busy_handler called : %d", count);
+
+ return 100 - count;
+}
+
+/* internal functions */
+static sqlite3 *_vp_db_util_connect_db()
+{
+ sqlite3 *pSqlite = NULL;
+ int ret = SQLITE_OK;
+
+ /*Connect DB */
+ ret = sqlite3_open(VIDEO_THUMB_DB_NAME, &pSqlite);
+ if (SQLITE_OK != ret) {
+ vp_dbgE("sqlite3_open fail [0x%x] : %s", ret,
+ sqlite3_errmsg(pSqlite));
+ return NULL;
+ }
+
+ ret = sqlite3_busy_handler(pSqlite, __vp_db_util_busy_handler, NULL);
+ if (SQLITE_OK != ret) {
+ vp_dbgE("sqlite3_busy_handler fail [0x%x]", ret);
+ sqlite3_close(pSqlite);
+ return NULL;
+ }
+
+ return pSqlite;
+}
+
+static void _vp_db_util_disconnect_db(sqlite3 *db_handle)
+{
+ if (db_handle == NULL) {
+ vp_dbgE("db_handle is NULL");
+ return;
+ }
+ int ret = SQLITE_OK;
+ ret = sqlite3_close(db_handle);
+ if (SQLITE_OK != ret) {
+ vp_dbgE("sqlite3_close fail [0x%x]", ret);
+ db_handle = NULL;
+ }
+}
+
+
+/* external functions */
+bool vp_db_util_connect()
+{
+ if (g_sqlite3_handle) {
+ vp_dbgW("database is already connect");
+ g_nRefCount++;
+ return TRUE;
+ }
+
+ g_sqlite3_handle = _vp_db_util_connect_db();
+ if (g_sqlite3_handle == NULL) {
+ vp_dbgE("database connect is fail");
+ return FALSE;
+ }
+
+ g_nRefCount++;
+
+ return TRUE;
+}
+
+void vp_db_util_disconnect()
+{
+ g_nRefCount--;
+
+ if (g_nRefCount < 0) {
+ g_nRefCount = 0;
+ }
+
+ if (g_nRefCount == 0) {
+ if (g_sqlite3_handle == NULL) {
+ vp_dbgW("database is already disconnect");
+ return;
+ }
+ _vp_db_util_disconnect_db(g_sqlite3_handle);
+
+ g_sqlite3_handle = NULL;
+ }
+
+ return;
+
+}
+
+bool vp_db_util_query_prepare(char *szQuery, sqlite3_stmt **stmt)
+{
+ if (g_sqlite3_handle == NULL) {
+ vp_dbgE("database is not connect");
+ return FALSE;
+ }
+
+ int err = -1;
+
+ sqlite3 *handle = g_sqlite3_handle;
+ vp_dbg("SQL = %s\n", szQuery);
+
+ err = sqlite3_prepare_v2(handle, szQuery, -1, stmt, NULL);
+ if (SQLITE_OK != err) {
+ vp_dbgE("Query fails [0x%x]: query_string[%s] ", err, szQuery);
+ return FALSE;
+ }
+
+ vp_dbg("query success\n");
+
+ return TRUE;
+}
diff --git a/common/src/vp-file-util.c b/common/src/vp-file-util.c
new file mode 100644
index 0000000..2d13d15
--- /dev/null
+++ b/common/src/vp-file-util.c
@@ -0,0 +1,307 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-file-util.h"
+
+#define PATH_MAX_SIZE 256
+#define BUF_MAX 16384
+static mode_t default_mode =
+ S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
+
+const char *vp_file_get(const char path[])
+{
+ char *file = NULL;
+ struct stat info = { 0, };
+ if (stat(path, &info) == 0) {
+ if ((file = strrchr(path, '/')))
+ file++;
+ } else {
+ file = (char *) path;
+ }
+ return file;
+}
+
+char *vp_dir_get(const char path[])
+{
+ char *p = NULL;
+ char buf[PATH_MAX] = { 0, };
+ struct stat info = { 0, };
+
+ if (stat(path, &info) == 0) {
+ strncpy(buf, path, PATH_MAX);
+ buf[PATH_MAX - 1] = 0;
+ p = dirname(buf);
+ return strdup(p);
+ } else {
+ return "";
+ }
+}
+
+int vp_file_exists(const char *path)
+{
+ struct stat info = { 0, };
+
+ if (stat(path, &info) == 0)
+ return 1;
+ else
+ return 0;
+}
+
+Eina_Bool vp_is_dir(const char *path)
+{
+ struct stat info = { 0, };
+
+ if (stat(path, &info) == 0) {
+ if (S_ISDIR(info.st_mode)) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+int vp_is_dir_empty(const char *path)
+{
+ struct stat info = { 0, };
+ struct dirent *dp = NULL;
+ DIR *dirp = NULL;
+ struct dirent ent_struct;
+
+ dirp = opendir(path);
+ if (!dirp)
+ return -1;
+
+ while ((readdir_r(dirp, &ent_struct, &dp) == 0) && dp) {
+ if (stat(dp->d_name, &info) == 0 && (strcmp(dp->d_name, "."))
+ && (strcmp(dp->d_name, ".."))) {
+ closedir(dirp);
+ return 0;
+ }
+ }
+ closedir(dirp);
+ return 1;
+}
+
+int vp_mkdir(const char *dir)
+{
+ if (mkdir(dir, default_mode) < 0)
+ return 0;
+ else
+ return 1;
+}
+
+static int vp_mkpath_if_not_exists(const char *path)
+{
+ struct stat st = { 0, };
+ if (stat(path, &st) < 0)
+ return vp_mkdir(path);
+ else if (!S_ISDIR(st.st_mode))
+ return 0;
+ else
+ return 1;
+}
+
+int vp_mkpath(const char *path)
+{
+ char ss[PATH_MAX] = { 0, };
+ unsigned int i = 0;
+
+ if (vp_is_dir(path))
+ return 1;
+
+ for (i = 0; path[i] != '\0'; ss[i] = path[i], i++) {
+ if (i == sizeof(ss) - 1)
+ return 0;
+
+ if ((path[i] == '/') && (i > 0)) {
+ ss[i] = '\0';
+ if (!vp_mkpath_if_not_exists(ss))
+ return 0;
+ }
+ }
+ ss[i] = '\0';
+
+ return vp_mkpath_if_not_exists(ss);
+}
+
+char *vp_strip_ext(const char *path)
+{
+ char *p = NULL;
+ char *file = NULL;
+
+ p = strrchr(path, '.');
+ if (!p) {
+ file = strdup(path);
+ } else if (p != path) {
+ file = malloc(((p - path) + 1) * sizeof(char));
+ if (file) {
+ memcpy(file, path, (p - path));
+ file[p - path] = 0;
+ }
+ }
+
+ return file;
+}
+
+int vp_file_unlink(const char *filename)
+{
+ int status = unlink(filename);
+ if (status < 0)
+ return 0;
+ else
+ return 1;
+}
+
+int vp_file_size(const char *filename)
+{
+ struct stat info = { 0, };
+ if (stat(filename, &info) == 0) {
+ if (!S_ISDIR(info.st_mode))
+ return info.st_size;
+ }
+
+ return 0;
+}
+
+int vp_file_rmdir(const char *filename)
+{
+ int status = rmdir(filename);
+ if (status < 0)
+ return 0;
+ else
+ return 1;
+}
+
+Eina_List *vp_file_ls(const char *dir)
+{
+ char *f;
+ DIR *dirp = NULL;
+ struct dirent *dp = NULL;
+ Eina_List *list = NULL;
+ struct dirent ent_struct;
+
+ dirp = opendir(dir);
+ if (!dirp)
+ return NULL;
+
+ while ((readdir_r(dirp, &ent_struct, &dp) == 0) && dp) {
+ if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, ".."))) {
+ f = strdup(dp->d_name);
+ list = eina_list_append(list, f);
+ }
+ }
+ closedir(dirp);
+
+ list =
+ eina_list_sort(list, eina_list_count(list),
+ EINA_COMPARE_CB(strcoll));
+
+ return list;
+}
+
+int vp_file_recursive_rm(const char *dir)
+{
+ char buf[PATH_MAX_SIZE] = { 0, };
+ struct dirent *dp = NULL;
+ DIR *dirp = NULL;
+ struct dirent ent_struct;
+
+ if (readlink(dir, buf, sizeof(buf)) > 0) {
+ return vp_file_unlink(dir);
+ }
+
+ int ret = vp_is_dir(dir);
+ if (ret) {
+ ret = 1;
+ dirp = opendir(dir);
+ if (dirp) {
+ while ((readdir_r(dirp, &ent_struct, &dp) == 0) && dp) {
+ if ((strcmp(dp->d_name, "."))
+ && (strcmp(dp->d_name, ".."))) {
+ if (!vp_file_recursive_rm(dp->d_name))
+ ret = 0;
+ }
+ }
+ closedir(dirp);
+ }
+
+ if (!vp_file_rmdir(dir))
+ ret = 0;
+
+ return ret;
+ } else {
+ return vp_file_unlink(dir);
+ }
+}
+
+int vp_file_cp(const char *src, const char *dst)
+{
+ FILE *f1 = NULL;
+ FILE *f2 = NULL;
+ char buf[BUF_MAX] = { 0, }; //TODO: How about moving buf to heap instead of stack
+ char realpath1[PATH_MAX_SIZE] = { 0, };
+ char realpath2[PATH_MAX_SIZE] = { 0, };
+ size_t num;
+ int ret = 1;
+
+ if (!realpath(src, realpath1))
+ return 0;
+
+ if (realpath(dst, realpath2) && !strcmp(realpath1, realpath2))
+ return 0;
+
+ f1 = fopen(src, "rb");
+ if (!f1)
+ return 0;
+
+ f2 = fopen(dst, "wb");
+ if (!f2) {
+ fclose(f1);
+ return 0;
+ }
+
+ while ((num = fread(buf, 1, sizeof(buf), f1)) > 0) {
+ if (fwrite(buf, 1, num, f2) != num)
+ ret = 0;
+ }
+
+ fclose(f1);
+ fclose(f2);
+
+ return ret;
+}
+
+int vp_file_mv(const char *src, const char *dst)
+{
+ struct stat info = { 0, };
+ if (stat(dst, &info) == 0)
+ return 0;
+
+ if (rename(src, dst)) {
+ memset(&info, 0x00, sizeof(struct stat));
+ if (stat(src, &info) == 0) {
+ if (S_ISREG(info.st_mode)) {
+ vp_file_cp(src, dst);
+ chmod(dst, info.st_mode);
+ unlink(src);
+ return 1;
+ }
+ }
+ return 0;
+ }
+ return 1;
+}
diff --git a/common/src/vp-media-content-util.c b/common/src/vp-media-content-util.c
new file mode 100644
index 0000000..610727e
--- /dev/null
+++ b/common/src/vp-media-content-util.c
@@ -0,0 +1,252 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-db-common.h"
+
+#include "vp-media-content-util.h"
+
+
+
+/* callback functions */
+static bool __vp_media_content_info_cb(media_info_h pMediaHandle,
+ void *pUserData)
+{
+ media_info_h *pAssignItem = (media_info_h *) pUserData;
+
+ if (pMediaHandle != NULL) {
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ nRet = media_info_clone(pAssignItem, pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_clone is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ char *szTmpStr = NULL;
+ nRet = media_info_get_display_name(*pAssignItem, &szTmpStr);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_get_display_name is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ vp_dbg("Display name : %s", szTmpStr);
+ VP_FREE(szTmpStr);
+ } else {
+ vp_dbgE("pMeidaHandle is NULL");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* internal functions */
+
+
+/* external functions */
+bool vp_media_content_util_get_video_id(const char *szFilePath,
+ char **szVideoID)
+{
+ if (szFilePath == NULL) {
+ vp_dbgE("szFilePath is NULL");
+ return FALSE;
+ }
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+ char *szMediaID = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096, "MEDIA_PATH = \"%s\"", szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_create is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ if (pFilterHandle == NULL) {
+ vp_dbgE("Filter handle is NULL");
+ goto Execption;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_content_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ if (pMediaHandle == NULL) {
+ vp_dbgE("media info handle is NULL");
+ goto Execption;
+ }
+
+ nRet = media_info_get_media_id(pMediaHandle, &szMediaID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_get_media_id is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ VP_STRDUP(*szVideoID, szMediaID);
+ VP_FREE(szMediaID);
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_destroy is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_destroy is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ return TRUE;
+
+Execption:
+ VP_FREE(szMediaID);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_content_util_get_first_video(char **szFilePath)
+{
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+ char *szMediaID = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ nRet = media_content_connect();
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_content_connect is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096, "MEDIA_TYPE = 1");
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_create is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ if (pFilterHandle == NULL) {
+ vp_dbgE("Filter handle is NULL");
+ goto Execption;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ nRet =
+ media_filter_set_order(pFilterHandle, MEDIA_CONTENT_ORDER_DESC,
+ MEDIA_MODIFIED_TIME,
+ MEDIA_CONTENT_COLLATE_NOCASE);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_set_order is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ nRet = media_filter_set_offset(pFilterHandle, 0, 1);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_set_offset is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_content_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ if (pMediaHandle == NULL) {
+ vp_dbgE("media info handle is NULL");
+ goto Execption;
+ }
+
+ nRet = media_info_get_file_path(pMediaHandle, szFilePath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_get_media_id is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_filter_destroy is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_info_destroy is fail : 0x%x", nRet);
+ goto Execption;
+ }
+ nRet = media_content_disconnect();
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ vp_dbgE("media_content_connect is fail : 0x%x", nRet);
+ goto Execption;
+ }
+
+ return TRUE;
+
+Execption:
+ VP_FREE(szMediaID);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
diff --git a/common/src/vp-pinch-zoom.c b/common/src/vp-pinch-zoom.c
new file mode 100644
index 0000000..5de2660
--- /dev/null
+++ b/common/src/vp-pinch-zoom.c
@@ -0,0 +1,482 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-pinch-zoom.h"
+
+static vp_pinch_event_s *__vp_gesture_create_event_obj(void *data,
+ Evas_Object *
+ object, int device)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ vp_pinch_event_s *ev = NULL;
+ ev = calloc(1, sizeof(vp_pinch_event_s));
+ if (ev == NULL) {
+ VideoLogDebug("Cannot allocate event_t");
+ return NULL;
+ }
+
+ ev->object = object;
+ ev->device = device;
+ evas_object_geometry_get(object, &ev->x, &ev->y, &ev->w, &ev->h);
+
+ gesture_d->s_event_elist =
+ eina_list_append(gesture_d->s_event_elist, ev);
+ return ev;
+}
+
+static int __vp_gesture_destroy_event_obj(void *data,
+ vp_pinch_event_s *ev)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ ev->pinch_obj = NULL;
+ ev->pinch_dis = 0;
+ gesture_d->s_event_elist =
+ eina_list_remove(gesture_d->s_event_elist, ev);
+ VP_IF_DEL_TIMER(ev->hold_timer);
+
+ VP_FREE(ev);
+ return 0;
+}
+
+static vp_pinch_event_s *__vp_gesture_get_event_obj(void *data,
+ int device)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ Eina_List *l = NULL;
+ vp_pinch_event_s *ev = NULL;
+
+ EINA_LIST_FOREACH(gesture_d->s_event_elist, l, ev) {
+ if (ev && ev->device == device)
+ break;
+ ev = NULL;
+ }
+
+ return ev;
+}
+
+static int __vp_gesture_get_distance(Evas_Coord x1, Evas_Coord y1,
+ Evas_Coord x2, Evas_Coord y2)
+{
+ int dis, dx, dy;
+
+ dx = x1 - x2;
+ dy = y1 - y2;
+
+ dis = (int)sqrt(dx * dx + dy * dy);
+ return dis;
+}
+
+static Eina_Bool __vp_gesture_hold_timer_cb(void *data)
+{
+ vp_pinch_event_s *ev0 = (vp_pinch_event_s *)data;
+ VP_IF_DEL_TIMER(ev0->hold_timer);
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static int __vp_gesture_get_multi_device(void *data)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ Eina_List *l = NULL;
+ vp_pinch_event_s *ev = NULL;
+
+ EINA_LIST_FOREACH(gesture_d->s_event_elist, l, ev) {
+ if (ev && ev->device != 0)
+ return ev->device;
+ }
+ return 0;
+}
+
+static void __vp_gesture_mouse_down_event(void *data, Evas *e,
+ Evas_Object *evas_obj,
+ void *ei)
+{
+ Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)ei;
+ vp_pinch_event_s *ev0;
+ ev0 = __vp_gesture_get_event_obj(data, 0);
+ if (ev0)
+ return;
+
+ ev0 = __vp_gesture_create_event_obj(data, evas_obj, 0);
+ if (!ev0)
+ return;
+
+ ev0->hold_timer = NULL;
+ ev0->prev.x = ev->output.x;
+ ev0->prev.y = ev->output.y;
+}
+
+static void __vp_gesture_multi_down_event(void *data, Evas *evas,
+ Evas_Object *obj, void *ei)
+{
+ vp_pinch_event_s *ev;
+ Evas_Event_Multi_Down *down = (Evas_Event_Multi_Down *)ei;
+ ev = __vp_gesture_get_event_obj(data, down->device);
+ if (ev)
+ return;
+
+ ev = __vp_gesture_create_event_obj(data, obj, down->device);
+ if (!ev)
+ return;
+
+ ev->hold_timer = NULL;
+ ev->prev.x = down->output.x;
+ ev->prev.y = down->output.y;
+}
+
+static void __vp_gesture_mouse_up_event(void *data, Evas *e,
+ Evas_Object *obj, void *ei)
+{
+ int mdevice;
+ vp_pinch_event_s *ev0;
+ vp_pinch_event_s *ev = NULL;
+
+ ev0 = __vp_gesture_get_event_obj(data, 0);
+ if (ev0 == NULL) {
+ VideoLogDebug("Cannot get event0");
+ return;
+ }
+
+ mdevice = __vp_gesture_get_multi_device(data);
+ if (mdevice == 0) {
+ } else {
+ ev = __vp_gesture_get_event_obj(data, mdevice);
+ if (ev == NULL) {
+ return;
+ }
+
+ VP_IF_DEL_TIMER(ev->hold_timer);
+ ev->hold_timer =
+ ecore_timer_add(VP_PINCH_HOLD_TIME_DELAY,
+ __vp_gesture_hold_timer_cb, ev);
+ }
+
+ __vp_gesture_destroy_event_obj(data, ev0);
+}
+
+static void __vp_gesture_multi_up_event(void *data, Evas *evas,
+ Evas_Object *obj, void *ei)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ Evas_Event_Multi_Up *up = (Evas_Event_Multi_Up *)ei;
+ vp_pinch_event_s *ev0 = NULL;
+ vp_pinch_event_s *ev = NULL;
+ ev = __vp_gesture_get_event_obj(data, up->device);
+ if (ev == NULL) {
+ return;
+ }
+
+ gesture_d->dis_old = 0;
+ gesture_d->pinch_dis_old = 0;
+ ev0 = __vp_gesture_get_event_obj(data, 0);
+ if (ev0) {
+ VP_IF_DEL_TIMER(ev0->hold_timer);
+ ev0->hold_timer =
+ ecore_timer_add(VP_PINCH_HOLD_TIME_DELAY,
+ __vp_gesture_hold_timer_cb, ev0);
+ } else {
+ /* up when device 0 is off */
+ }
+ __vp_gesture_destroy_event_obj(data, ev);
+}
+
+static void __vp_gesture_mouse_move_event(void *data, Evas *e,
+ Evas_Object *obj, void *ei)
+{
+ Evas_Event_Mouse_Move *ev = (Evas_Event_Mouse_Move *)ei;
+ vp_pinch_event_s *ev0;
+ ev0 = __vp_gesture_get_event_obj(data, 0);
+ if (ev0 == NULL) {
+ return;
+ }
+ ev0->prev.x = ev->cur.output.x;
+ ev0->prev.y = ev->cur.output.y;
+
+ __vp_gesture_get_multi_device(data);
+}
+
+static void __vp_gesture_zoom_out_job_cb(void *data)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ if (gesture_d->next_plan != VP_PINCH_PLAN_OUT) {
+ VideoLogWarning("State is wrong[plan:%d]!", gesture_d->next_plan);
+ VP_IF_DEL_JOB(gesture_d->pinch_job);
+ return;
+ }
+
+ if (gesture_d->zoom_out_cb)
+ gesture_d->zoom_out_cb(gesture_d->gesture,
+ gesture_d->zoom_out_data);
+
+ VP_IF_DEL_JOB(gesture_d->pinch_job);
+}
+
+static void __vp_gesture_zoom_in_job_cb(void *data)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ if (gesture_d->next_plan != VP_PINCH_PLAN_IN) {
+ VideoLogWarning("State is wrong[plan:%d]!", gesture_d->next_plan);
+ VP_IF_DEL_JOB(gesture_d->pinch_job);
+ return;
+ }
+
+ if (gesture_d->zoom_in_cb)
+ gesture_d->zoom_in_cb(gesture_d->gesture,
+ gesture_d->zoom_in_data);
+
+
+ VP_IF_DEL_JOB(gesture_d->pinch_job);
+}
+
+static void __vp_gesture_multi_move_event(void *data, Evas *evas,
+ Evas_Object *obj, void *ei)
+{
+ vp_gesture_s *gesture_d = (vp_gesture_s *) data;
+ Evas_Event_Multi_Move *move = (Evas_Event_Multi_Move *)ei;
+ int dis_new;
+ vp_pinch_event_s *ev0;
+ vp_pinch_event_s *ev;
+ ev = __vp_gesture_get_event_obj(data, move->device);
+ if (ev == NULL) {
+ return;
+ }
+ ev->prev.x = move->cur.output.x;
+ ev->prev.y = move->cur.output.y;
+
+ ev0 = __vp_gesture_get_event_obj(data, 0);
+ if (ev0 == NULL) {
+ return;
+ }
+
+ dis_new = __vp_gesture_get_distance(ev0->prev.x, ev0->prev.y,
+ ev->prev.x, ev->prev.y);
+
+ int dis_old = gesture_d->dis_old;
+ if (dis_old != 0) {
+ if (dis_old - dis_new > 0
+ && ev->pinch_dis > VP_PINCH_TOUCH_HOLD_RANGE) {
+ if (gesture_d->pinch_dis_old
+ && ev->pinch_dis <
+ (gesture_d->pinch_dis_old * VP_PINCH_TOUCH_FACTOR)) {
+ ev->pinch_dis += (dis_old - dis_new);
+ gesture_d->dis_old = dis_new;
+ return;
+ }
+
+ gesture_d->next_plan = VP_PINCH_PLAN_OUT; /* plan to zoom-out */
+ if (!gesture_d->pinch_job) {
+ gesture_d->pinch_job =
+ ecore_job_add(__vp_gesture_zoom_out_job_cb, data);
+ } else {
+ VideoLogInfo("Added job pinch zoom out");
+ }
+
+ gesture_d->pinch_dis_old = ev->pinch_dis;
+ ev->pinch_dis = 0;
+ } else if (dis_old - dis_new < 0
+ && ev->pinch_dis < -VP_PINCH_TOUCH_HOLD_RANGE) {
+ if (gesture_d->pinch_dis_old
+ && ev->pinch_dis >
+ (gesture_d->pinch_dis_old * VP_PINCH_TOUCH_FACTOR)) {
+ ev->pinch_dis += (dis_old - dis_new);
+ gesture_d->dis_old = dis_new;
+ return;
+ }
+
+ gesture_d->next_plan = VP_PINCH_PLAN_IN; /* plan to zoom-in */
+ if (!gesture_d->pinch_job) {
+ VideoLogInfo("Add job pinch zoom in");
+ gesture_d->pinch_job =
+ ecore_job_add(__vp_gesture_zoom_in_job_cb, data);
+ } else {
+ VideoLogWarning("Added job pinch zoom in");
+ }
+
+ gesture_d->pinch_dis_old = ev->pinch_dis;
+ ev->pinch_dis = 0;
+ }
+ ev->pinch_dis += (dis_old - dis_new);
+ }
+ VideoLogInfo("dis_new: %d, dis_old: %d, pinch_dis %d", dis_new,
+ dis_old, ev->pinch_dis);
+
+ /* Reset dis_old value */
+ gesture_d->dis_old = dis_new;
+}
+
+static void __vp_gesture_del_cb(void *data, Evas *e, Evas_Object *obj,
+ void *ei)
+{
+ VideoLogWarning("Delete gesture ---");
+ if (data) {
+ vp_gesture_s *gesture_d = (vp_gesture_s *)data;
+ VP_IF_DEL_JOB(gesture_d->pinch_job);
+ evas_object_data_del(gesture_d->gesture, VP_GESTURE_KEY_DATA);
+ VP_FREE(gesture_d);
+ }
+ VideoLogWarning("Delete gesture +++");
+}
+
+Evas_Object *_vp_gesture_add(void *data, Evas_Object *parent)
+{
+ if (data == NULL || parent == NULL) {
+ VideoLogInfo("Error input parameters");
+ return NULL;
+ }
+
+ Evas_Object *gesture = NULL;
+
+ gesture = evas_object_rectangle_add(evas_object_evas_get(parent));
+ evas_object_color_set(gesture, 0, 0, 0, 0);
+
+ vp_gesture_s *gesture_d =
+ (vp_gesture_s *)calloc(1, sizeof(vp_gesture_s));
+ if (gesture_d == NULL) {
+ evas_object_del(gesture);
+ return NULL;
+ }
+
+ gesture_d->ad = data;
+ gesture_d->parent = parent;
+ gesture_d->gesture = gesture;
+
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_gesture_mouse_down_event,
+ gesture_d);
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_MOUSE_UP,
+ __vp_gesture_mouse_up_event,
+ gesture_d);
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_gesture_mouse_move_event,
+ gesture_d);
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_MULTI_DOWN,
+ __vp_gesture_multi_down_event,
+ gesture_d);
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_MULTI_UP,
+ __vp_gesture_multi_up_event,
+ gesture_d);
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_MULTI_MOVE,
+ __vp_gesture_multi_move_event,
+ gesture_d);
+
+ evas_object_data_set(gesture, VP_GESTURE_KEY_DATA,
+ (void *)gesture_d);
+ evas_object_event_callback_add(gesture, EVAS_CALLBACK_DEL,
+ __vp_gesture_del_cb, gesture_d);
+ return gesture;
+}
+
+int _vp_gesture_set_zoom_in_cb(Evas_Object *gesture, vp_gesture_cb cb,
+ void *data)
+{
+ if (gesture == NULL || data == NULL) {
+ VideoLogInfo("Event Object is NULL");
+ return 0;
+ }
+
+ vp_gesture_s *gesture_d = NULL;
+
+ gesture_d =
+ (vp_gesture_s *)evas_object_data_get(gesture,
+ VP_GESTURE_KEY_DATA);
+ if (gesture_d) {
+ gesture_d->zoom_in_cb = cb;
+ gesture_d->zoom_in_data = data;
+ }
+ return 0;
+}
+
+int _vp_gesture_set_zoom_out_cb(Evas_Object *gesture, vp_gesture_cb cb,
+ void *data)
+{
+ if (gesture == NULL || data == NULL) {
+ VideoLogInfo("Event Object is NULL");
+ return 0;
+ }
+
+ vp_gesture_s *gesture_d = NULL;
+
+ gesture_d =
+ (vp_gesture_s *)evas_object_data_get(gesture,
+ VP_GESTURE_KEY_DATA);
+
+ if (gesture_d != NULL) {
+ gesture_d->zoom_out_cb = cb;
+ gesture_d->zoom_out_data = data;
+ }
+
+ return 0;
+}
+
+Eina_Bool __vp_pinch_zoom_out_cb(Evas_Object *gesture, void *data)
+{
+ if (gesture == NULL || data == NULL) {
+ VideoLogInfo("Event Object is NULL");
+ return EINA_FALSE;
+ }
+
+ st_VideoListViewMainViewWidget *ad =
+ (st_VideoListViewMainViewWidget *)data;
+ VideoLogInfo("%d", ad->zoom_level);
+ if (ad->zoom_level > VP_ZOOM_IN_DEFAULT) {
+ ad->zoom_level--;
+ if (_grid_view_zoom_out(data, NULL) == 0)
+ ad->zoom_level = VP_ZOOM_IN_DEFAULT;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+Eina_Bool __vp_pinch_zoom_in_cb(Evas_Object *gesture, void *data)
+{
+ if (gesture == NULL || data == NULL) {
+ VideoLogInfo("Event Object is NULL");
+ return EINA_FALSE;
+ }
+
+ st_VideoListViewMainViewWidget *ad =
+ (st_VideoListViewMainViewWidget *) data;
+
+ if ((ad->zoom_level >= VP_ZOOM_IN_DEFAULT) &&
+ (ad->zoom_level < VP_ZOOM_IN_MAX)) {
+ ad->zoom_level++;
+ if (_grid_view_zoom_in(data, NULL) == 0)
+ ad->zoom_level = VP_ZOOM_IN_MAX;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+int _vp_pinch_add_event(void *data, Evas_Object *layout)
+{
+ if (data == NULL || layout == NULL) {
+ VideoLogError("Error input parameters");
+ return 0;
+ }
+
+ st_VideoListViewMainViewWidget *ad =
+ (st_VideoListViewMainViewWidget *)data;
+
+ /* Set initialize level */
+ ad->zoom_level = VP_ZOOM_IN_DEFAULT;
+
+ Evas_Object *gesture = _vp_gesture_add(data, layout);
+ _vp_gesture_set_zoom_in_cb(gesture, __vp_pinch_zoom_in_cb, data);
+ _vp_gesture_set_zoom_out_cb(gesture, __vp_pinch_zoom_out_cb, data);
+ elm_object_part_content_set(layout, "gesture", gesture);
+ ad->gesture = gesture;
+ return 0;
+}
diff --git a/common/src/vp-preview-db.c b/common/src/vp-preview-db.c
new file mode 100644
index 0000000..a03277c
--- /dev/null
+++ b/common/src/vp-preview-db.c
@@ -0,0 +1,488 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-db-common.h"
+#include "vp-db-util.h"
+
+#include "vp-preview-db.h"
+#include "vp-media-content-util.h"
+#include "vp-file-util.h"
+
+#define PREVIEW_DB_INSERT_QUERY "INSERT INTO video_preview (file_path, file_size, media_id) VALUES ( '%q', %d, '%q')"
+#define PREVIEW_DB_DELETE_QUERY "DELETE FROM video_preview where media_id = '%q'"
+#define PREVIEW_DB_SELECT_QUERY "select preview_uuid, file_path, file_size, last_hit_date, media_id from video_preview where media_id = '%q'"
+#define PREVIEW_DB_LAST_HIT_QUERY "select preview_uuid, file_path, file_size, last_hit_date, media_id from video_preview order by last_hit_date DESC"
+#define PREVIEW_DB_COUNT_QUERY "select count(*) from video_preview where media_id = '%q'"
+#define PREVIEW_DB_ALL_ITEM_QUERY "select DISTINCT(media_id) from video_preview"
+
+typedef struct _PreviewDB {
+ char *szMediaURL;
+ char *szMediaID;
+ char *szFilePath;
+ int nFileSize;
+} PreviewDB;
+
+
+static void _vp_preview_db_destory_handle(PreviewDB *pPreviewDB);
+
+
+/* callback functions */
+
+/* internal functions */
+static void _vp_preview_db_destory_handle(PreviewDB *pPreviewDB)
+{
+ if (pPreviewDB == NULL) {
+ vp_dbgE("pPreviewDB is NULL");
+ return;
+ }
+
+ VP_FREE(pPreviewDB->szMediaURL);
+ VP_FREE(pPreviewDB->szMediaID);
+ VP_FREE(pPreviewDB->szFilePath);
+
+ VP_FREE(pPreviewDB);
+}
+
+static bool _vp_preview_db_get_count(char *szMediaID, int *nCount)
+{
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(PREVIEW_DB_COUNT_QUERY, szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ if (nRet == SQLITE_ROW) {
+ *nCount = (int) sqlite3_column_int(stmt, 0);
+ vp_dbgW("Get Chapter Count : %d", *nCount);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+static bool _vp_preview_db_delete_item(char *szMeidaID)
+{
+ if (szMeidaID == NULL) {
+ vp_dbgE("szMeidaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(PREVIEW_DB_SELECT_QUERY, szMeidaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ if (nRet == SQLITE_ROW) {
+
+ char *szFileName = (char *) sqlite3_column_text(stmt, 1);
+ if (vp_file_exists(szFileName)) {
+ vp_file_unlink(szFileName);
+ }
+
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+
+
+/* external functions */
+vp_preview_db_h vp_preview_db_create()
+{
+ PreviewDB *pPreviewDB = calloc(1, sizeof(PreviewDB));
+
+ if (pPreviewDB == NULL) {
+ vp_dbgE("pPreviewDB alloc is fail");
+ return NULL;
+ }
+
+ if (!vp_db_util_connect()) {
+ vp_dbgE("Database connect is fail");
+ _vp_preview_db_destory_handle(pPreviewDB);
+ return NULL;
+ }
+
+ return (vp_preview_db_h) pPreviewDB;
+}
+
+void vp_preview_db_destroy(vp_preview_db_h hPreviewDB)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return;
+ }
+
+ vp_db_util_disconnect();
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ _vp_preview_db_destory_handle(pPreviewDB);
+}
+
+bool vp_preview_db_set_media_id(vp_preview_db_h hPreviewDB,
+ const char *szMediaID)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ VP_FREE(pPreviewDB->szMediaID);
+
+ VP_STRDUP(pPreviewDB->szMediaID, szMediaID);
+
+ return TRUE;
+}
+
+bool vp_preview_db_set_media_url(vp_preview_db_h hPreviewDB,
+ const char *szMediaURL)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ if (szMediaURL == NULL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ VP_FREE(pPreviewDB->szMediaURL);
+ VP_FREE(pPreviewDB->szMediaID);
+
+ VP_STRDUP(pPreviewDB->szMediaURL, szMediaURL);
+
+ if (!vp_media_content_util_get_video_id
+ (szMediaURL, &(pPreviewDB->szMediaID))) {
+ vp_dbgE("vp_media_content_util_get_video_id is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_preview_db_get_file_path(vp_preview_db_h hPreviewDB,
+ char **szFilePath)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ if (pPreviewDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql =
+ sqlite3_mprintf(PREVIEW_DB_SELECT_QUERY, pPreviewDB->szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ if (nRet == SQLITE_ROW) {
+ /* preview_uuid, file_path, file_size, media_id */
+ vp_sdbg("UUID : %d", (int) sqlite3_column_int(stmt, 0));
+ vp_sdbg("FILE_PATH : %s", (char *) sqlite3_column_text(stmt, 1));
+ vp_sdbg("FILE_SIZE : %d", (int) sqlite3_column_int(stmt, 2));
+ vp_sdbg("LAST_DATE : %d", (int) sqlite3_column_int(stmt, 3));
+ vp_sdbg("MEDIA_ID : %s", (char *) sqlite3_column_text(stmt, 4));
+
+ VP_STRDUP(*szFilePath, (char *) sqlite3_column_text(stmt, 1));
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_preview_db_get_file_size(vp_preview_db_h hPreviewDB,
+ int *nFileSize)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ if (pPreviewDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql =
+ sqlite3_mprintf(PREVIEW_DB_SELECT_QUERY, pPreviewDB->szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ if (nRet == SQLITE_ROW) {
+ /* preview_uuid, file_path, file_size, media_id */
+ vp_sdbg("UUID : %d", (int) sqlite3_column_int(stmt, 0));
+ vp_sdbg("FILE_PATH : %s", (char *) sqlite3_column_text(stmt, 1));
+ vp_sdbg("FILE_SIZE : %d", (int) sqlite3_column_int(stmt, 2));
+ vp_sdbg("LAST_DATE : %d", (int) sqlite3_column_int(stmt, 3));
+ vp_sdbg("MEDIA_ID : %s", (char *) sqlite3_column_text(stmt, 4));
+
+
+ *nFileSize = (int) sqlite3_column_int(stmt, 2);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_preview_db_item_count(vp_preview_db_h hPreviewDB, int *nCount)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ return _vp_preview_db_get_count(pPreviewDB->szMediaID, nCount);
+}
+
+bool vp_preview_db_get_all_items_media_id(vp_preview_db_h hPreviewDB,
+ GList **pPreviewList)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(PREVIEW_DB_ALL_ITEM_QUERY);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ char *szMediaID = NULL;
+
+ VP_STRDUP(szMediaID, (char *) sqlite3_column_text(stmt, 0));
+
+ *pPreviewList = g_list_append(*pPreviewList, szMediaID);
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_preview_db_insert(vp_preview_db_h hPreviewDB,
+ const char *szPreviewPath)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ if (szPreviewPath == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return NULL;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ if (pPreviewDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ long long nSize = vp_file_size(szPreviewPath);
+
+ char *szSql =
+ sqlite3_mprintf(PREVIEW_DB_INSERT_QUERY, szPreviewPath,
+ (int) nSize, pPreviewDB->szMediaID);
+ vp_sdbg("%s", szSql);
+
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ sqlite3_step(stmt);
+
+ if (stmt) {
+ sqlite3_reset(stmt);
+ sqlite3_clear_bindings(stmt);
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_preview_db_delete(vp_preview_db_h hPreviewDB)
+{
+ if (hPreviewDB == NULL) {
+ vp_dbgE("hPreviewDB is NULL");
+ return FALSE;
+ }
+
+ PreviewDB *pPreviewDB = (PreviewDB *) hPreviewDB;
+
+ if (pPreviewDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ _vp_preview_db_delete_item(pPreviewDB->szMediaID);
+
+ char *szSql =
+ sqlite3_mprintf(PREVIEW_DB_DELETE_QUERY, pPreviewDB->szMediaID);
+ vp_sdbg("%s", szSql);
+
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ sqlite3_step(stmt);
+
+ if (stmt) {
+ sqlite3_reset(stmt);
+ sqlite3_clear_bindings(stmt);
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
diff --git a/common/src/vp-thumb-db.c b/common/src/vp-thumb-db.c
new file mode 100644
index 0000000..02068d9
--- /dev/null
+++ b/common/src/vp-thumb-db.c
@@ -0,0 +1,463 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-db-common.h"
+#include "vp-db-util.h"
+#include "vp-file-util.h"
+
+#include "vp-media-content-util.h"
+
+#include "vp-thumb-db.h"
+
+
+#define THUMB_DB_INSERT_QUERY "INSERT INTO video_thumb (thumb_idx, file_path, file_size, media_id) VALUES ( %d, '%q', %d, '%q')"
+#define THUMB_DB_DELETE_QUERY "DELETE FROM video_thumb where media_id = '%q'"
+#define THUMB_DB_SELECT_QUERY "select thumb_uuid, thumb_idx, file_path, file_size, media_id from video_thumb where media_id = '%q'"
+#define THUMB_DB_COUNT_QUERY "select count(*) from video_thumb where media_id = '%q'"
+#define THUMB_DB_ALL_ITEM_QUERY "select DISTINCT(media_id) from video_thumb"
+
+
+
+typedef struct _ThumbDB {
+ char *szMediaURL;
+ char *szMediaID;
+ char *szFilePath;
+ int nFileSize;
+ int nTotalCount;
+} ThumbDB;
+
+
+static void _vp_thumb_db_destory_handle(ThumbDB *pThumbDB);
+
+
+/* callback functions */
+
+/* internal functions */
+static void _vp_thumb_db_destory_handle(ThumbDB *pThumbDB)
+{
+ if (pThumbDB == NULL) {
+ vp_dbgE("pThumbDB is NULL");
+ return;
+ }
+
+ VP_FREE(pThumbDB->szMediaURL);
+ VP_FREE(pThumbDB->szMediaID);
+ VP_FREE(pThumbDB->szFilePath);
+
+ VP_FREE(pThumbDB);
+}
+
+static bool _vp_thumb_db_get_count(char *szMediaID, int *nCount)
+{
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+ char *szSql = sqlite3_mprintf(THUMB_DB_COUNT_QUERY, szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ if (nRet == SQLITE_ROW) {
+ *nCount = (int) sqlite3_column_int(stmt, 0);
+ vp_dbgW("Get Thumb Count : %d", *nCount);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+static bool _vp_thumb_db_delete_items(char *szMediaID)
+{
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(THUMB_DB_SELECT_QUERY, szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ char *szFileName = (char *) sqlite3_column_text(stmt, 2);
+
+ if (vp_file_exists(szFileName)) {
+ vp_file_unlink(szFileName);
+ }
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+
+
+/* external functions */
+vp_thumb_db_h vp_thumb_db_create()
+{
+ ThumbDB *pThumbDB = calloc(1, sizeof(ThumbDB));
+
+ if (pThumbDB == NULL) {
+ vp_dbgE("pThumbDB alloc is fail");
+ return NULL;
+ }
+ if (!vp_db_util_connect()) {
+ vp_dbgE("Database connect is fail");
+ _vp_thumb_db_destory_handle(pThumbDB);
+ return NULL;
+ }
+
+ return (vp_thumb_db_h) pThumbDB;
+}
+
+void vp_thumb_db_destroy(vp_thumb_db_h hThumbDB)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return;
+ }
+
+ vp_db_util_disconnect();
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ _vp_thumb_db_destory_handle(pThumbDB);
+}
+
+bool vp_thumb_db_set_media_id(vp_thumb_db_h hThumbDB,
+ const char *szMediaID)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ if (szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ VP_FREE(pThumbDB->szMediaID);
+
+ VP_STRDUP(pThumbDB->szMediaID, szMediaID);
+
+ return TRUE;
+}
+
+bool vp_thumb_db_set_media_url(vp_thumb_db_h hThumbDB,
+ const char *szMediaURL)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ if (szMediaURL == NULL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ VP_FREE(pThumbDB->szMediaURL);
+ VP_FREE(pThumbDB->szMediaID);
+
+ VP_STRDUP(pThumbDB->szMediaURL, szMediaURL);
+
+ if (!vp_media_content_util_get_video_id
+ (szMediaURL, &(pThumbDB->szMediaID))) {
+ vp_dbgE("vp_media_content_util_get_video_id is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_thumb_db_get_items(vp_thumb_db_h hThumbDB, GList **pThumbList)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ if (pThumbDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ char *szSql =
+ sqlite3_mprintf(THUMB_DB_SELECT_QUERY, pThumbDB->szMediaID);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ /* thumb_uuid, thumb_idx, file_path, file_size, media_id */
+ ThumbDBItem *pItem = calloc(1, sizeof(ThumbDBItem));
+ if (!pItem) {
+ vp_dbgE("allocation failed");
+ return FALSE;
+ }
+ vp_sdbg("UUID : %d", (int) sqlite3_column_int(stmt, 0));
+ vp_sdbg("THUMB_IDX : %d", (int) sqlite3_column_int(stmt, 1));
+ vp_sdbg("FILE_PATH : %s", (char *) sqlite3_column_text(stmt, 2));
+ vp_sdbg("FILE_SIZE : %d", (int) sqlite3_column_int(stmt, 3));
+ vp_sdbg("MEDIA_ID : %s", (char *) sqlite3_column_text(stmt, 4));
+
+ pItem->nIdx = (int) sqlite3_column_int(stmt, 1);
+ VP_STRDUP(pItem->szThumbPath,
+ (char *) sqlite3_column_text(stmt, 2));
+ pItem->nFileSize = (int) sqlite3_column_int(stmt, 3);
+
+ *pThumbList = g_list_append(*pThumbList, pItem);
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_thumb_db_get_all_items_media_id(vp_thumb_db_h hThumbDB,
+ GList **pThumbList)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ char *szSql = sqlite3_mprintf(THUMB_DB_ALL_ITEM_QUERY);
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ int nRet = 0;
+ nRet = sqlite3_step(stmt);
+ while (nRet == SQLITE_ROW) {
+ char *szMediaID = NULL;
+ VP_STRDUP(szMediaID, (char *) sqlite3_column_text(stmt, 0));
+ *pThumbList = g_list_append(*pThumbList, szMediaID);
+
+ nRet = sqlite3_step(stmt);
+ }
+
+ if (stmt) {
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+
+ return TRUE;
+}
+
+
+bool vp_thumb_db_insert(vp_thumb_db_h hThumbDB, const char *szThumbPath,
+ int nIdx)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ if (szThumbPath == NULL) {
+ vp_dbgE("szThumbPath is NULL");
+ return NULL;
+ }
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ if (pThumbDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ long long nSize = vp_file_size(szThumbPath);
+
+ char *szSql =
+ sqlite3_mprintf(THUMB_DB_INSERT_QUERY, nIdx, szThumbPath,
+ (int) nSize, pThumbDB->szMediaID);
+ vp_sdbg("%s", szSql);
+
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ sqlite3_step(stmt);
+
+ if (stmt) {
+ sqlite3_reset(stmt);
+ sqlite3_clear_bindings(stmt);
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_thumb_db_delete(vp_thumb_db_h hThumbDB)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ if (pThumbDB->szMediaID == NULL) {
+ vp_dbgE("szMediaID is NULL");
+ return FALSE;
+ }
+
+ _vp_thumb_db_delete_items(pThumbDB->szMediaID);
+
+ char *szSql =
+ sqlite3_mprintf(THUMB_DB_DELETE_QUERY, pThumbDB->szMediaID);
+ vp_sdbg("%s", szSql);
+
+ sqlite3_stmt *stmt = NULL;
+
+ if (!vp_db_util_query_prepare(szSql, &stmt)) {
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+ return FALSE;
+ }
+
+ sqlite3_step(stmt);
+
+ if (stmt) {
+ sqlite3_reset(stmt);
+ sqlite3_clear_bindings(stmt);
+ sqlite3_finalize(stmt);
+ stmt = NULL;
+ }
+
+ if (szSql) {
+ sqlite3_free(szSql);
+ szSql = NULL;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_thumb_db_item_count(vp_thumb_db_h hThumbDB, int *nCount)
+{
+ if (hThumbDB == NULL) {
+ vp_dbgE("hThumbDB is NULL");
+ return FALSE;
+ }
+
+ ThumbDB *pThumbDB = (ThumbDB *) hThumbDB;
+
+ return _vp_thumb_db_get_count(pThumbDB->szMediaID, nCount);
+}
+
+bool vp_thumb_db_item_free(ThumbDBItem *pItem)
+{
+ if (pItem == NULL) {
+ vp_dbgE("ThumbDBItem is NULL");
+ return FALSE;
+ }
+
+ VP_FREE(pItem->szThumbPath);
+ VP_FREE(pItem);
+
+ return TRUE;
+}
diff --git a/common/src/vp-util.c b/common/src/vp-util.c
new file mode 100644
index 0000000..0e9d7e0
--- /dev/null
+++ b/common/src/vp-util.c
@@ -0,0 +1,407 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+#include <string.h>
+#include <libintl.h>
+#include <device/power.h>
+
+
+#include "vp-util.h"
+
+#define PHONE_FOLDER "/opt/usr/media"
+#define CLOUD_FOLDER "/opt/usr/media/.cloud"
+
+#define MEMORY_FOLDER "/opt/storage/sdcard"
+#define OTG_FOLDER "/opt/storage/usb"
+#define PERSONAL_PAGE_FOLDER "/opt/storage/PersonalStorage"
+#define PKGNAME "videos"
+
+#define VP_UTIL_LABEL_DEVICE_MEMORY __vp_util_get_string("IDS_VIDEO_SBODY_DEVICE_STORAGE")
+#define VP_UTIL_LABEL_SD_CARD __vp_util_get_string("IDS_ST_BODY_SD_CARD")
+#define VP_UTIL_LABEL_OTG __vp_util_get_string("IDS_VPL_TAB_EXTERNAL_STORAGE")
+#define VP_UTIL_LABEL_PERSONAL_PAGE __vp_util_get_string("IDS_GALLERY_BODY_PERSONAL_STORAGE")
+#define VP_UTIL_LABEL_UNKNOWN __vp_util_get_string("VIDEOS_VIEW_DROPBOX_NAME")
+#define VP_UTIL_LABEL_CLOUD __vp_util_get_string("IDS_CLOUD_BODY_DROPBOX_ABB")
+
+
+#define DIR_PATH_LEN_MAX 4096
+
+typedef enum __Vp_Storage Vp_Storage;
+enum __Vp_Storage {
+ VP_STORAGE_NONE,
+ VP_STORAGE_PHONE,
+ VP_STORAGE_CLOUD,
+ VP_STORAGE_MMC,
+ VP_STORAGE_OTG,
+ VP_STORAGE_PERSONAL_PAGE,
+ VP_STORAGE_MAX
+};
+
+static const int RGB_BPP = 3;
+static const int RGBA_BPP = 4;
+typedef unsigned char uchar;
+typedef struct _rgb888 {
+ uchar r;
+ uchar g;
+ uchar b;
+} rgb888;
+
+typedef struct _rgba8888 {
+ uchar r;
+ uchar g;
+ uchar b;
+ uchar a;
+} rgba8888;
+
+typedef struct _transform {
+ int index;
+ float coef;
+} transform;
+
+static char *__vp_util_get_string(const char *ID)
+{
+ char *str;
+ if (strstr(ID, "IDS_COM") || strstr(ID, "IDS_IDLE")) {
+ str = dgettext("sys_string", ID);
+ }
+ else {
+ str = dgettext("video-player", ID);
+ }
+ return str;
+}
+
+static Vp_Storage __vp_util_get_storage_type(const char *filepath)
+{
+ if (!filepath)
+ return VP_STORAGE_NONE;
+
+ if (g_str_has_prefix(filepath, CLOUD_FOLDER)) {
+ return VP_STORAGE_CLOUD;/*store in cloud server*/
+ }else if (g_str_has_prefix(filepath, PHONE_FOLDER)) {
+ return VP_STORAGE_PHONE;/*store in phone*/
+ } else if (g_str_has_prefix(filepath, MEMORY_FOLDER)) {
+ return VP_STORAGE_MMC; /*store in MMC*/
+ } else if (g_str_has_prefix(filepath, OTG_FOLDER)) {
+ return VP_STORAGE_OTG; /*store in OTG*/
+ } else if (g_str_has_prefix(filepath, PERSONAL_PAGE_FOLDER)) {
+ return VP_STORAGE_PERSONAL_PAGE; /*store in persona page*/
+ } else {
+ return VP_STORAGE_NONE;
+ }
+}
+
+static char *__vp_util_get_logic_path(const char *full_path)
+{
+ if (!full_path)
+ return NULL;
+
+ Vp_Storage store_type = VP_STORAGE_NONE;
+ int root_len = 0;
+
+ store_type = __vp_util_get_storage_type(full_path);
+
+ switch (store_type) {
+ case VP_STORAGE_PHONE:
+ root_len = strlen(PHONE_FOLDER);
+ break;
+ case VP_STORAGE_MMC:
+ root_len = strlen(MEMORY_FOLDER);
+ break;
+ case VP_STORAGE_OTG:
+ root_len = strlen(OTG_FOLDER);
+ break;
+ case VP_STORAGE_PERSONAL_PAGE:
+ root_len = strlen(PERSONAL_PAGE_FOLDER);
+ break;
+ default:
+ return NULL;
+ }
+ /*size of path is DIR_PATH_LEN_MAX+1*/
+ char *logic_path = NULL;
+ logic_path = (char *)malloc(DIR_PATH_LEN_MAX + 1);
+ if (logic_path == NULL)
+ return NULL;
+
+ memset(logic_path, 0, DIR_PATH_LEN_MAX + 1);
+
+ g_strlcpy(logic_path, full_path + root_len, DIR_PATH_LEN_MAX);
+
+ if (strlen(logic_path) == 0)
+ g_strlcpy(logic_path, "/", DIR_PATH_LEN_MAX);
+
+ return logic_path;
+}
+
+
+char *vp_util_convert_file_location(const char *szFileLocation)
+{
+ if (!szFileLocation) {
+ return NULL;
+ }
+
+ Vp_Storage store_type = VP_STORAGE_NONE;
+ char *logic_path = NULL;
+ char *file_location = NULL;
+
+ store_type = __vp_util_get_storage_type(szFileLocation);
+
+ if (store_type == VP_STORAGE_CLOUD) {
+ file_location = g_strdup(VP_UTIL_LABEL_CLOUD);
+ return file_location;
+ }
+
+
+ logic_path = __vp_util_get_logic_path(szFileLocation);
+
+ if (!logic_path) {
+ return NULL;
+ }
+
+ if (store_type == VP_STORAGE_MMC) {
+ file_location = g_strconcat(VP_UTIL_LABEL_SD_CARD, logic_path, NULL);
+ } else if (store_type == VP_STORAGE_PHONE) {
+ file_location = g_strconcat(VP_UTIL_LABEL_DEVICE_MEMORY, logic_path, NULL);
+ } else if (store_type == VP_STORAGE_OTG) {
+ file_location = g_strconcat(VP_UTIL_LABEL_OTG, logic_path, NULL);
+ } else if (store_type == VP_STORAGE_PERSONAL_PAGE) {
+ file_location = g_strconcat(VP_UTIL_LABEL_PERSONAL_PAGE, logic_path, NULL);
+ } else {
+ file_location = g_strdup(VP_UTIL_LABEL_UNKNOWN);
+ }
+
+ g_free(logic_path);
+ logic_path = NULL;
+
+ return file_location;
+}
+
+int vp_util_image_rotate(unsigned char *dest, int *dest_width, int *dest_height, const image_util_rotation_e dest_rotation,
+ const unsigned char *src, const int src_w, const int src_h, const image_util_colorspace_e colorspace)
+{
+ if (!dest || !dest_width || !dest_height || !src) {
+ return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
+ }
+
+ if (IMAGE_UTIL_COLORSPACE_RGB888 != colorspace || src_w <= 0 || src_h <= 0
+ || dest_rotation <= IMAGE_UTIL_ROTATION_NONE || dest_rotation > IMAGE_UTIL_ROTATION_FLIP_VERT) {
+ return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
+ }
+
+ const int dest_w = (IMAGE_UTIL_ROTATION_180 == dest_rotation ? src_w : src_h);
+ const int dest_h = (IMAGE_UTIL_ROTATION_180 == dest_rotation ? src_h : src_w);
+ const unsigned int src_stride = src_w * sizeof(rgb888);
+ const unsigned int dest_stride = dest_w * sizeof(rgb888);
+ int x = 0, y = 0;
+
+ switch (dest_rotation) {
+ case IMAGE_UTIL_ROTATION_90:
+ {
+ const rgb888 * const src_col_0 = (rgb888*) (src + (src_h - 1) * src_stride);
+ for (y = 0; y < dest_h; y++) {
+ rgb888 * const dest_row = (rgb888*) (dest + y * dest_stride);
+ const rgb888 * const src_col = (src_col_0 + y);
+ for (x = 0; x < dest_w; x++) {
+ dest_row[x] = *(rgb888*)((uchar*)src_col - x * src_stride);
+ }
+ }
+ } break;
+
+ case IMAGE_UTIL_ROTATION_180:
+ {
+ const rgb888 * const src_row_rev_0 = (rgb888*) (src + (src_h - 1) * src_stride
+ + (src_w - 1) * sizeof(rgb888));
+ for (y = 0; y < dest_h; y++) {
+ rgb888 * const dest_row = (rgb888*) (dest + y * dest_stride);
+ const rgb888 * const src_row_rev = (rgb888*) ((uchar*)src_row_rev_0 - y * src_stride);
+ for (x = 0; x < dest_w; x++) {
+ dest_row[x] = *(src_row_rev - x);
+ }
+ }
+ } break;
+
+ case IMAGE_UTIL_ROTATION_270:
+ {
+ const rgb888 * const src_col_rev_0 = (rgb888*) (src + (src_w - 1) * sizeof(rgb888));
+ for (y = 0; y < dest_h; y++) {
+ rgb888 * const dest_row = (rgb888*) (dest + y * dest_stride);
+ const rgb888 * const src_col_rev = (src_col_rev_0 - y);
+ for (x = 0; x < dest_w; x++) {
+ dest_row[x] = *(rgb888*)((uchar*)src_col_rev + x * src_stride);
+ }
+ }
+ } break;
+
+ default:
+ return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
+ }
+
+ *dest_width = dest_w;
+ *dest_height = dest_h;
+ return IMAGE_UTIL_ERROR_NONE;
+}
+
+void vp_util_lock_cpu()
+{
+ int ret = device_power_request_lock(POWER_LOCK_CPU, 0);
+ if (ret) {
+ return;
+ }
+}
+
+void vp_util_release_cpu()
+{
+ int ret = device_power_release_lock(POWER_LOCK_CPU);
+ if (ret) {
+ return;
+ }
+}
+
+int vp_util_image_resize(unsigned char *dest, const int *dest_width , const int *dest_height, const unsigned char *src,
+ const int src_w, const int src_h, const image_util_colorspace_e colorspace)
+{
+ if (!dest || !dest_width || !dest_height || !src) {
+ return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
+ }
+
+ int dest_w = *dest_width;
+ int dest_h = *dest_height;
+
+ if ((IMAGE_UTIL_COLORSPACE_RGB888 != colorspace && IMAGE_UTIL_COLORSPACE_RGBA8888 != colorspace)
+ || src_w <= 0 || src_h <= 0 || dest_w <= 0 || dest_h <= 0) {
+ return IMAGE_UTIL_ERROR_INVALID_PARAMETER;
+ }
+
+ const unsigned int bpp = (IMAGE_UTIL_COLORSPACE_RGBA8888 == colorspace ? RGBA_BPP : RGB_BPP);
+ const unsigned int src_stride = bpp * src_w;
+ const unsigned int dest_stride = bpp * dest_w;
+ float coef = 0.0f;
+ float c1, c2, c3, c4;
+ c1 = c2 = c3 = c4 = 0.0f;
+ u_int32_t red, green, blue, alpha;
+ red = green = blue = alpha = 0;
+ int x = 0, y = 0;
+ const float coef_x = (float) (src_w) / (float) (dest_w);
+ const float coef_y = (float) (src_h) / (float) (dest_h);
+ const float add_x = 0.5f * coef_x - 0.5f;
+ const float add_y = 0.5f * coef_y - 0.5f;
+ transform *transform_x = NULL, *transform_y = NULL;
+ transform_x = calloc(dest_w, sizeof(transform));
+ if (!transform_x) {
+ return IMAGE_UTIL_ERROR_OUT_OF_MEMORY;
+ }
+ transform_y = calloc(dest_h, sizeof(transform));
+ if (!transform_y) {
+ free(transform_x);
+ return IMAGE_UTIL_ERROR_OUT_OF_MEMORY;
+ }
+
+ for (x = 0; x < dest_w; ++x) {
+ coef = x * coef_x + add_x;
+ transform_x[x].index = (int)coef;
+ transform_x[x].coef = 1 - coef + transform_x[x].index;
+ }
+ if (transform_x[0].index < 0) {
+ transform_x[0].index = 0;
+ transform_x[0].coef = 1.0f;
+ }
+ if (transform_x[dest_w - 1].index >= src_w - 2) {
+ transform_x[dest_w - 1].index = src_w - 2;
+ transform_x[dest_w - 1].coef = 0.0f;
+ }
+
+ for (y = 0; y < dest_h; ++y) {
+ coef = y * coef_y + add_y;
+ transform_y[y].index = (int)coef;
+ transform_y[y].coef = 1 - coef + transform_y[y].index;
+ }
+ if (transform_y[0].index < 0) {
+ transform_y[0].index = 0;
+ transform_y[0].coef = 1.0f;
+ }
+ if (transform_y[dest_h - 1].index >= src_h - 2) {
+ transform_y[dest_h - 1].index = src_h - 2;
+ transform_y[dest_h - 1].coef = 0.0f;
+ }
+
+ if (colorspace == IMAGE_UTIL_COLORSPACE_RGBA8888) {
+ for (y = 0; y < dest_h; ++y) {
+ const transform t_y = transform_y[y];
+ rgba8888 * const dest_row = (rgba8888*)(dest + y * dest_stride);
+ const rgba8888 * const src_row_1 = (rgba8888*)(src + t_y.index * src_stride);
+ const rgba8888 * const src_row_2 = (rgba8888*)(src + (t_y.index + 1) * src_stride);
+
+ for (x = 0; x < dest_w; ++x) {
+ const transform t_x = transform_x[x];
+ const rgba8888 pixel1 = src_row_1[t_x.index];
+ const rgba8888 pixel2 = src_row_1[t_x.index + 1];
+ const rgba8888 pixel3 = src_row_2[t_x.index];
+ const rgba8888 pixel4 = src_row_2[t_x.index + 1];
+ c1 = t_x.coef * t_y.coef;
+ c2 = (1 - t_x.coef) * t_y.coef;
+ c3 = t_x.coef * (1 - t_y.coef);
+ c4 = (1 - t_x.coef) * (1 - t_y.coef);
+ red = pixel1.r * c1 + pixel2.r * c2 + pixel3.r * c3
+ + pixel4.r * c4;
+ green = pixel1.g * c1 + pixel2.g * c2 + pixel3.g * c3
+ + pixel4.g * c4;
+ blue = pixel1.b * c1 + pixel2.b * c2 + pixel3.b * c3
+ + pixel4.b * c4;
+ alpha = pixel1.a * c1 + pixel2.a * c2 + pixel3.a * c3
+ + pixel4.a * c4;
+ dest_row[x].r = red;
+ dest_row[x].g = green;
+ dest_row[x].b = blue;
+ dest_row[x].a = alpha;
+ }
+ }
+ } else {
+ for (y = 0; y < dest_h; ++y) {
+ const transform t_y = transform_y[y];
+ rgb888 * const dest_row = (rgb888*)(dest + y * dest_stride);
+ const rgb888 * const src_row_1 = (rgb888*)(src + t_y.index * src_stride);
+ const rgb888 * const src_row_2 = (rgb888*)(src + (t_y.index + 1) * src_stride);
+
+ for (x = 0; x < dest_w; ++x) {
+ const transform t_x = transform_x[x];
+ const rgb888 pixel1 = src_row_1[t_x.index];
+ const rgb888 pixel2 = src_row_1[t_x.index + 1];
+ const rgb888 pixel3 = src_row_2[t_x.index];
+ const rgb888 pixel4 = src_row_2[t_x.index + 1];
+ c1 = t_x.coef * t_y.coef;
+ c2 = (1 - t_x.coef) * t_y.coef;
+ c3 = t_x.coef * (1 - t_y.coef);
+ c4 = (1 - t_x.coef) * (1 - t_y.coef);
+ red = pixel1.r * c1 + pixel2.r * c2 + pixel3.r * c3
+ + pixel4.r * c4;
+ green = pixel1.g * c1 + pixel2.g * c2 + pixel3.g * c3
+ + pixel4.g * c4;
+ blue = pixel1.b * c1 + pixel2.b * c2 + pixel3.b * c3
+ + pixel4.b * c4;
+
+ dest_row[x].r = red;
+ dest_row[x].g = green;
+ dest_row[x].b = blue;
+ }
+ }
+ }
+
+ free (transform_x);
+ free (transform_y);
+
+ return IMAGE_UTIL_ERROR_NONE;
+}
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
new file mode 100755
index 0000000..c3b79f0
--- /dev/null
+++ b/core/CMakeLists.txt
@@ -0,0 +1,58 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(core C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(VERSION 0.1.0)
+
+SET(SRCS
+ src/vp-drm.c
+)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/common/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/include
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED
+ elementary
+ ecore
+ ecore-evas
+ edje
+ eina
+ evas
+ dlog
+ vconf
+ capi-appfw-application
+ capi-system-system-settings
+)
+
+FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS})
+ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -Wall")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS})
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} )
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS})
+
+
+#install resouce files.
+# Lack of a trailing slash means install this directory, trailing slash means
+# install everything in this directory.
+
+# Install image files.
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
+
+
+
+
diff --git a/core/include/vp-drm.h b/core/include/vp-drm.h
new file mode 100644
index 0000000..4bbe717
--- /dev/null
+++ b/core/include/vp-drm.h
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#ifdef ENABLE_DRM_FEATURE
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+
+typedef enum {
+ VP_DRM_CONSTRAINT_TYPE_RENTAL = 0,
+ VP_DRM_CONSTRAINT_TYPE_RENTAL_UNLIMITED,
+ VP_DRM_CONSTRAINT_TYPE_PURCHASE,
+ VP_DRM_CONSTRAINT_TYPE_BASE,
+ VP_DRM_CONSTRAINT_TYPE_EXPIRED,
+ VP_DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED,
+ VP_DRM_CONSTRAINT_TYPE_INVALID_DRM_VERSION,
+ VP_DRM_CONSTRAINT_TYPE_UNKNOWN_TYPE,
+ VP_DRM_CONSTRAINT_TYPE_GENERAL_ERROR
+}vp_drm_constraint_status_t;
+
+
+typedef struct _vp_drm_constraint_info
+{
+ vp_drm_constraint_status_t status;
+ int constraints;
+
+ int original_count;
+ int remaining_count;
+ bool date_time_expired;
+ int remaining_interval_sec;
+ int remaining_timed_count;
+ int remaining_acc_sec;
+}vp_drm_constraint_info;
+
+typedef enum {
+ VP_DRM_CONSTRAINT_UNLIMITED = 0x0,
+ VP_DRM_CONSTRAINT_COUNT = 0x01,
+ VP_DRM_CONSTRAINT_DATE_TIME = 0x02,
+ VP_DRM_CONSTRAINT_INTERVAL = 0x04,
+ VP_DRM_CONSTRAINT_TIMED_COUNT = 0x08,
+ VP_DRM_CONSTRAINT_ACCUMLATED_TIME = 0x10,
+}vp_drm_constraint_type_t;
+
+
+bool vp_drm_is_drm_file(const char *szMediaURL, bool *bIsDRM);
+bool vp_drm_is_divx_drm_file(const char *szMediaURL, bool *bIsDivXDRM);
+bool vp_drm_is_playready_drm_file(const char *szMediaURL, bool *bIsPlayReadyDRM);
+bool vp_drm_is_check_license(const char *szMediaURL, bool *bCheckLicense);
+bool vp_drm_is_check_forward_lock(const char *szMediaURL, bool *bIsFowardLock);
+bool vp_drm_get_constarint_info(const char *szMediaURL, vp_drm_constraint_info *pConstraintInfo);
+bool vp_drm_get_file_mime_type(const char *szMediaURL, char **szMime);
+bool vp_drm_get_store_item_license( char *pPath, char *pStoreAppId, char *pUserId, char *pImei, char *pOrderId, char *pMvId, char *pServerId );
+
+#endif //ENABLE_DRM_FEATURE
diff --git a/core/src/include/vp-core-common.h b/core/src/include/vp-core-common.h
new file mode 100644
index 0000000..9c09918
--- /dev/null
+++ b/core/src/include/vp-core-common.h
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <Ecore.h>
+#include <Elementary.h>
+
+#include "vp-debug.h"
+#include "vp-macro.h"
+
diff --git a/core/src/vp-drm.c b/core/src/vp-drm.c
new file mode 100644
index 0000000..2b0298b
--- /dev/null
+++ b/core/src/vp-drm.c
@@ -0,0 +1,578 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#ifdef ENABLE_DRM_FEATURE
+
+#include <drm_client.h>
+#include <drm_client_types.h>
+
+#include "vp-debug.h"
+#include "vp-macro.h"
+
+
+#include "vp-drm.h"
+
+/* callback functions */
+
+
+/* internal functions */
+static void _vp_drm_print_error_code(drm_result_e nErr)
+{
+ switch (nErr) {
+ case DRM_RETURN_INVALID_ARG:
+ vp_dbgE("DRM_RETURN_INVALID_ARG Error");
+ break;
+ case DRM_RETURN_INSUFFICIENT_MEMORY:
+ vp_dbgE("DRM_RETURN_INSUFFICIENT_MEMORY Error");
+ break;
+ case DRM_RETURN_PARSING_ERROR:
+ vp_dbgE("DRM_RETURN_PARSING_ERROR Error");
+ break;
+ case DRM_RETURN_DB_ERROR:
+ vp_dbgE("DRM_RETURN_DB_ERROR Error");
+ break;
+ case DRM_RETURN_FILE_ERROR:
+ vp_dbgE("DRM_RETURN_FILE_ERROR Error");
+ break;
+ case DRM_RETURN_COMMUNICATION_ERROR:
+ vp_dbgE("DRM_RETURN_COMMUNICATION_ERROR Error");
+ break;
+ case DRM_RETURN_OPL_ERROR:
+ vp_dbgE("DRM_RETURN_OPL_ERROR Error");
+ break;
+ case DRM_RETURN_NO_LICENSE_ERROR:
+ vp_dbgE("DRM_RETURN_NO_LICENSE_ERROR Error");
+ break;
+ case DRM_RETURN_LICENSE_EXPIRED_ERROR:
+ vp_dbgE("DRM_RETURN_LICENSE_EXPIRED_ERROR Error");
+ break;
+ case DRM_RETURN_LICENCE_FUTURE_USE_ERROR:
+ vp_dbgE("DRM_RETURN_LICENCE_FUTURE_USE_ERROR Error");
+ break;
+ case DRM_RETURN_LICENSE_SUSPEND_ERROR:
+ vp_dbgE("DRM_RETURN_LICENSE_SUSPEND_ERROR Error");
+ break;
+ case DRM_RETURN_SERVER_CRASHED:
+ vp_dbgE("DRM_RETURN_SERVER_CRASHED Error");
+ break;
+ case DRM_RETURN_NO_SECURE_CLOCK_ERROR:
+ vp_dbgE("DRM_RETURN_NO_SECURE_CLOCK_ERROR Error");
+ break;
+ case DRM_RETURN_INTERNAL_ERROR:
+ vp_dbgE("DRM_RETURN_INTERNAL_ERROR Error");
+ break;
+ default:
+ vp_dbgE("Unknown Error");
+ break;
+ }
+
+}
+
+/* external functions */
+bool vp_drm_is_drm_file(const char *szMediaURL, bool *bIsDRM)
+{
+ if (!szMediaURL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ int nRet = DRM_RETURN_SUCCESS;
+ drm_bool_type_e is_drm = DRM_FALSE;
+
+ *bIsDRM = FALSE;
+
+ nRet = drm_is_drm_file(szMediaURL, &is_drm);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_is_drm_file is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (is_drm == DRM_TRUE) {
+ *bIsDRM = TRUE;
+ }
+
+ return TRUE;
+}
+
+bool vp_drm_is_divx_drm_file(const char *szMediaURL, bool *bIsDivXDRM)
+{
+ if (!szMediaURL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
+ drm_bool_type_e is_drm = DRM_FALSE;
+ int nRet = DRM_RETURN_SUCCESS;
+
+ nRet = drm_is_drm_file(szMediaURL, &is_drm);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_is_drm_file is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (is_drm != DRM_TRUE) {
+ *bIsDivXDRM = FALSE;
+ return TRUE;
+ }
+
+ nRet = drm_get_file_type(szMediaURL, &drm_type);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_file_type is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (drm_type == DRM_TYPE_DIVX) {
+ *bIsDivXDRM = TRUE;
+ vp_dbgW("%s file is DIVX", szMediaURL);
+ } else {
+ *bIsDivXDRM = FALSE;
+ vp_dbgW("%s file is %d type", szMediaURL, drm_type);
+ }
+
+ return TRUE;
+}
+
+bool vp_drm_is_playready_drm_file(const char *szMediaURL,
+ bool *bIsPlayReadyDRM)
+{
+ if (!szMediaURL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
+ drm_bool_type_e is_drm = DRM_FALSE;
+ int nRet = DRM_RETURN_SUCCESS;
+
+ nRet = drm_is_drm_file(szMediaURL, &is_drm);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_is_drm_file is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (is_drm != DRM_TRUE) {
+ *bIsPlayReadyDRM = FALSE;
+ return TRUE;
+ }
+
+ nRet = drm_get_file_type(szMediaURL, &drm_type);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_file_type is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (drm_type == DRM_TYPE_PLAYREADY
+ || drm_type == DRM_TYPE_PLAYREADY_ENVELOPE) {
+ *bIsPlayReadyDRM = TRUE;
+ vp_dbgW("%s file is PlayReady", szMediaURL);
+ } else {
+ *bIsPlayReadyDRM = FALSE;
+ vp_dbgW("%s file is %d type", szMediaURL, drm_type);
+ }
+
+ return TRUE;
+}
+
+
+bool vp_drm_is_check_license(const char *szMediaURL, bool *bCheckLicense)
+{
+ if (!szMediaURL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ *bCheckLicense = TRUE;
+
+ drm_license_status_e nLicenseStatus = DRM_LICENSE_STATUS_UNDEFINED;
+ int nRet =
+ drm_get_license_status(szMediaURL, DRM_PERMISSION_TYPE_PLAY,
+ &nLicenseStatus);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_license_status is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (nLicenseStatus != DRM_LICENSE_STATUS_VALID) {
+ vp_dbgE("Invalid license status : %d", nLicenseStatus);
+ *bCheckLicense = FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_drm_is_check_forward_lock(const char *szMediaURL,
+ bool *bIsFowardLock)
+{
+ if (!szMediaURL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ *bIsFowardLock = FALSE;
+
+ drm_bool_type_e is_drm = DRM_FALSE;
+ int nRet = DRM_RETURN_SUCCESS;
+ drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
+
+ nRet = drm_is_drm_file(szMediaURL, &is_drm);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgW("drm_is_drm_file is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ nRet = drm_get_file_type(szMediaURL, &drm_type);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_file_type is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (drm_type != DRM_TYPE_OMA_V1 && drm_type != DRM_TYPE_OMA_V2) {
+ return FALSE;
+ }
+
+ drm_file_info_s st_DrmFileInfo;
+ memset(&st_DrmFileInfo, 0x0, sizeof(drm_file_info_s));
+
+ nRet = drm_get_file_info(szMediaURL, &st_DrmFileInfo);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_file_info is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (st_DrmFileInfo.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK) {
+ vp_dbgW
+ ("st_DrmFileInfo.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK");
+ *bIsFowardLock = TRUE;
+ }
+
+ return TRUE;
+}
+
+bool vp_drm_get_constarint_info(const char *szMediaURL,
+ vp_drm_constraint_info *pConstraintInfo)
+{
+ if (!szMediaURL) {
+ vp_dbgE("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ drm_constraint_info_s sDrmConstraintInfo;
+
+ memset(&sDrmConstraintInfo, 0, sizeof(drm_constraint_info_s));
+
+ int nRet =
+ drm_get_constraint_info(szMediaURL, DRM_PERMISSION_TYPE_PLAY,
+ &sDrmConstraintInfo);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_constraint_info is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+ switch (sDrmConstraintInfo.const_type.constraint_type) {
+ case DRM_CONSTRAINT_TYPE_RENTAL:
+ vp_dbgW("VP_DRM_CONSTRAINT_TYPE_RENTAL");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_RENTAL;
+ break;
+ case DRM_CONSTRAINT_TYPE_RENTAL_UNLIMITED:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_RENTAL_UNLIMITED");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_RENTAL_UNLIMITED;
+ break;
+ case DRM_CONSTRAINT_TYPE_PURCHASE:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_PURCHASE");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_PURCHASE;
+ break;
+ case DRM_CONSTRAINT_TYPE_BASE:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_BASE");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_BASE;
+ break;
+ case DRM_CONSTRAINT_TYPE_EXPIRED:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_EXPIRED");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_EXPIRED;
+ break;
+ case DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED;
+ break;
+ case DRM_CONSTRAINT_TYPE_INVALID_DRM_VERSION:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_INVALID_DRM_VERSION");
+ pConstraintInfo->status =
+ VP_DRM_CONSTRAINT_TYPE_INVALID_DRM_VERSION;
+ break;
+ case DRM_CONSTRAINT_TYPE_UNKNOWN_TYPE:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_UNKNOWN_TYPE");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_UNKNOWN_TYPE;
+ break;
+ case DRM_CONSTRAINT_TYPE_GENERAL_ERROR:
+ vp_dbgW("DRM_CONSTRAINT_TYPE_GENERAL_ERROR");
+ pConstraintInfo->status = VP_DRM_CONSTRAINT_TYPE_GENERAL_ERROR;
+ break;
+ }
+
+ if (sDrmConstraintInfo.const_type.is_unlimited) {
+ vp_dbgW("UNLIMITED");
+ pConstraintInfo->constraints = VP_DRM_CONSTRAINT_UNLIMITED;
+ return TRUE;
+ }
+
+ if (sDrmConstraintInfo.const_type.is_count) {
+ vp_dbgW("DRM_COUNT [%d]", sDrmConstraintInfo.remaining_count);
+ pConstraintInfo->constraints |= VP_DRM_CONSTRAINT_COUNT;
+ pConstraintInfo->original_count =
+ sDrmConstraintInfo.original_count;
+ pConstraintInfo->remaining_count =
+ sDrmConstraintInfo.remaining_count;
+ }
+
+ if (sDrmConstraintInfo.const_type.is_datetime) {
+ vp_dbgW("DRM_DATETIME");
+ pConstraintInfo->constraints |= VP_DRM_CONSTRAINT_DATE_TIME;
+ vp_dbgW("%d.%d.%d %d:%d~%d.%d.%d %d:%d",
+ sDrmConstraintInfo.start_time.tm_mday,
+ sDrmConstraintInfo.start_time.tm_mon,
+ sDrmConstraintInfo.start_time.tm_year,
+ sDrmConstraintInfo.start_time.tm_hour,
+ sDrmConstraintInfo.start_time.tm_min,
+ sDrmConstraintInfo.end_time.tm_mday,
+ sDrmConstraintInfo.end_time.tm_mon,
+ sDrmConstraintInfo.end_time.tm_year,
+ sDrmConstraintInfo.end_time.tm_hour,
+ sDrmConstraintInfo.end_time.tm_min);
+
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ struct tm *ptm = NULL;
+ ptm = localtime(&tv.tv_sec);
+ ptm->tm_mon += 1;
+ ptm->tm_year += 1900;
+
+ time_t local_t = mktime(ptm);
+ time_t start_t = mktime(&(sDrmConstraintInfo.start_time));
+ time_t end_t = mktime(&(sDrmConstraintInfo.end_time));
+
+
+ vp_dbgW("%d.%d.%d %d:%d",
+ ptm->tm_mday, ptm->tm_mon, ptm->tm_year,
+ ptm->tm_hour, ptm->tm_min);
+
+ if (local_t >= start_t &&local_t <= end_t) {
+ pConstraintInfo->date_time_expired = FALSE;
+ } else {
+ pConstraintInfo->date_time_expired = TRUE;
+ }
+
+ }
+
+ if (sDrmConstraintInfo.const_type.is_interval) {
+ vp_dbgW("DRM_INTERVAL");
+ pConstraintInfo->constraints |= VP_DRM_CONSTRAINT_INTERVAL;
+ vp_dbgW("Remain... %d.%d.%d %d:%d",
+ sDrmConstraintInfo.interval_time.tm_mon,
+ sDrmConstraintInfo.interval_time.tm_mday,
+ sDrmConstraintInfo.interval_time.tm_year,
+ sDrmConstraintInfo.interval_time.tm_hour,
+ sDrmConstraintInfo.interval_time.tm_min);
+
+ pConstraintInfo->remaining_interval_sec =
+ sDrmConstraintInfo.interval_time.tm_sec +
+ sDrmConstraintInfo.interval_time.tm_min * 60 +
+ sDrmConstraintInfo.interval_time.tm_hour * 3600;
+ pConstraintInfo->remaining_interval_sec +=
+ (sDrmConstraintInfo.interval_time.tm_mday +
+ sDrmConstraintInfo.interval_time.tm_mon * 30 +
+ sDrmConstraintInfo.interval_time.tm_year * 365) * (3600 *
+ 24);
+ }
+
+ if (sDrmConstraintInfo.const_type.is_timedcount) {
+ vp_dbgW("DRM_TIMED_COUNT");
+ vp_dbgW("%d left (%d sec)",
+ sDrmConstraintInfo.timed_remaining_count,
+ sDrmConstraintInfo.timed_count_timer);
+ pConstraintInfo->constraints |= VP_DRM_CONSTRAINT_TIMED_COUNT;
+ pConstraintInfo->remaining_timed_count =
+ sDrmConstraintInfo.timed_remaining_count;
+ }
+
+ if (sDrmConstraintInfo.const_type.is_accumulated) {
+ vp_dbgW("DRM_ACCUMULATED [%d]",
+ sDrmConstraintInfo.accumulated_remaining_seconds);
+ pConstraintInfo->constraints |= VP_DRM_CONSTRAINT_ACCUMLATED_TIME;
+ pConstraintInfo->remaining_acc_sec =
+ sDrmConstraintInfo.accumulated_remaining_seconds;
+ }
+
+ if (sDrmConstraintInfo.const_type.is_individual) {
+ vp_sdbg("DRM_INDIVISUAL_ID [%s]",
+ sDrmConstraintInfo.individual_id);
+ }
+
+ if (sDrmConstraintInfo.const_type.is_system) {
+ vp_sdbg("DRM_SYSTEM [ID:%s, type:%d]",
+ sDrmConstraintInfo.system_id,
+ sDrmConstraintInfo.system_identity_type);
+ }
+
+ return TRUE;
+}
+
+bool vp_drm_get_file_mime_type(const char *szMediaURL, char **szMime)
+{
+ if (!szMediaURL) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+
+ drm_bool_type_e is_drm = DRM_FALSE;
+ int nRet = DRM_RETURN_SUCCESS;
+ drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
+
+ nRet = drm_is_drm_file(szMediaURL, &is_drm);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgW("drm_is_drm_file is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ nRet = drm_get_file_type(szMediaURL, &drm_type);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_file_type is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ if (drm_type == DRM_TYPE_PLAYREADY
+ || drm_type == DRM_TYPE_PLAYREADY_ENVELOPE) {
+ vp_sdbg("contentType: video/vnd.ms-playready.media.pyv");
+ return FALSE;
+ } else if (drm_type == DRM_TYPE_OMA_V1 || drm_type == DRM_TYPE_OMA_V2) {
+ 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(szMediaURL, &content_info);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ vp_dbgE("drm_get_constraint_info is fail");
+ _vp_drm_print_error_code(nRet);
+ return FALSE;
+ }
+
+ vp_sdbg("contentType: %s", content_info.mime_type);
+ VP_STRDUP(*szMime, content_info.mime_type);
+ } else {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool
+vp_drm_get_store_item_license(char *pPath, char *pStoreAppId,
+ char *pUserId, char *pImei, char *pOrderId,
+ char *pMvId, char *pServerId)
+{
+ int nRet = -1;
+
+ // for domain hardening, license aquisition
+ drm_initiator_info_s initiator_info = { "", 0, };
+ drm_web_server_resp_data_s ws_resp_data = { "", 0, };
+
+ if (!pPath) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ if (!pStoreAppId) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ if (!pUserId) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ if (!pImei) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ if (!pOrderId) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ if (!pMvId) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ if (!pServerId) {
+ vp_dbgE("[ERR]");
+ return FALSE;
+ }
+
+ vp_sdbg
+ ("pPath: [%s], pStoreAppId: [%s], pUserId: [%s], pImei: [%s], pOrderId: [%s], pMvId: [%s], pServerId: [%s]",
+ pPath, pStoreAppId, pUserId, pImei, pOrderId, pMvId, pServerId);
+
+ initiator_info.init_type = DRM_INITIATOR_TYPE_LICENSE_ACQ;
+ initiator_info.initiator_url_len = strlen(pPath);
+ snprintf(initiator_info.initiator_url, DRM_MAX_LEN_INITIATOR_URL,
+ "%s", pPath);
+ snprintf(initiator_info.custom_data.app_id, DRM_MAX_LEN_APP_ID + 1,
+ "%s", pStoreAppId);
+ snprintf(initiator_info.custom_data.user_guid,
+ DRM_MAX_LEN_USER_GUID + 1, "%s", pUserId);
+ snprintf(initiator_info.custom_data.device_id,
+ DRM_MAX_LEN_DEVICE_ID + 1, "%s", pImei);
+ snprintf(initiator_info.custom_data.order_id,
+ DRM_MAX_LEN_ORDER_ID + 1, "%s", pOrderId);
+ snprintf(initiator_info.custom_data.mv_id, DRM_MAX_LEN_MV_ID + 1,
+ "%s", pMvId);
+ snprintf(initiator_info.custom_data.svr_id, DRM_MAX_LEN_SVR_ID + 1,
+ "%s", pServerId);
+
+ nRet =
+ drm_process_request(DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL,
+ (void *)(&initiator_info),
+ (void *)(&ws_resp_data));
+
+ if (nRet == DRM_RETURN_SUCCESS) {
+ vp_dbg("Server Error Code = %d", ws_resp_data.result_code);
+ vp_sdbg("Content URL = %s", ws_resp_data.content_url);
+ } else {
+ vp_dbgE("drm_process_request failed!!!");
+ _vp_drm_print_error_code((drm_result_e) nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+#endif
diff --git a/feature/CMakeLists.txt b/feature/CMakeLists.txt
new file mode 100755
index 0000000..aecb258
--- /dev/null
+++ b/feature/CMakeLists.txt
@@ -0,0 +1,59 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(feature C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(VERSION 0.1.0)
+
+SET(SRCS
+ src/vp-feature-util.c
+ src/vp-thumb-gen.c
+)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/common/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/include
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED
+ elementary
+ ecore
+ ecore-evas
+ edje
+ eina
+ evas
+ dlog
+ #capi-media-video-util
+ capi-media-image-util
+ capi-media-metadata-extractor
+)
+
+FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS})
+ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -Wall")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS})
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} )
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS})
+
+
+#install resouce files.
+# Lack of a trailing slash means install this directory, trailing slash means
+# install everything in this directory.
+
+# Install image files.
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
+
+
+
+
diff --git a/feature/include/vp-thumb-gen.h b/feature/include/vp-thumb-gen.h
new file mode 100644
index 0000000..b8f292a
--- /dev/null
+++ b/feature/include/vp-thumb-gen.h
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+
+typedef void *vp_thumb_gen_h;
+
+typedef void(* vp_thumb_gen_progress_cb)(bool bSucess, int nIdx, char *szFileName, int nPosition, void *pUserData);
+typedef void(* vp_thumb_gen_complete_cb)(int nItemCount, void *pUserData);
+typedef void(* vp_thumb_gen_cancle_cb)(void *pUserData);
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+vp_thumb_gen_h vp_thumb_gen_create(const char *szMediaURL);
+void vp_thumb_gen_destroy(vp_thumb_gen_h hThumbGen);
+
+bool vp_thumb_gen_realize(vp_thumb_gen_h hThumbGen);
+bool vp_thumb_gen_unrealize(vp_thumb_gen_h hThumbGen);
+
+bool vp_thumb_gen_is_realize(vp_thumb_gen_h hThumbGen, bool *bIsRealize);
+
+bool vp_thumb_gen_set_dest_size(vp_thumb_gen_h hThumbGen, int nWidth, int nHeight);
+bool vp_thumb_gen_set_save_directory(vp_thumb_gen_h hThumbGen, char *szSaveDir);
+bool vp_thumb_gen_set_start_position(vp_thumb_gen_h hThumbGen, int nPosition);
+bool vp_thumb_gen_set_end_position(vp_thumb_gen_h hThumbGen, int nPosition);
+bool vp_thumb_gen_set_start_index(vp_thumb_gen_h hThumbGen, int nIdx);
+bool vp_thumb_gen_set_count(vp_thumb_gen_h hThumbGen, int nCount);
+bool vp_thumb_gen_set_acuurate(vp_thumb_gen_h hThumbGen, bool bAcuurate);
+bool vp_thumb_gen_set_scale(vp_thumb_gen_h hThumbGen, bool bSacle);
+
+
+bool vp_thumb_gen_start(vp_thumb_gen_h hThumbGen);
+bool vp_thumb_gen_cancle(vp_thumb_gen_h hThumbGen);
+
+
+bool vp_thumb_gen_set_user_data(vp_thumb_gen_h hThumbGen, void *pUserData);
+bool vp_thumb_gen_set_progress_cb(vp_thumb_gen_h hThumbGen, vp_thumb_gen_progress_cb progress_cb);
+bool vp_thumb_gen_set_complete_cb(vp_thumb_gen_h hThumbGen, vp_thumb_gen_complete_cb complete_cb);
+bool vp_thumb_gen_set_cancle_cb(vp_thumb_gen_h hThumbGen, vp_thumb_gen_cancle_cb cancle_cb);
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
diff --git a/feature/src/include/vp-feature-common.h b/feature/src/include/vp-feature-common.h
new file mode 100644
index 0000000..612b8d0
--- /dev/null
+++ b/feature/src/include/vp-feature-common.h
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <Ecore.h>
+#include <Elementary.h>
+
+#include "vp-debug.h"
+#include "vp-macro.h"
+
+
diff --git a/feature/src/vp-feature-util.c b/feature/src/vp-feature-util.c
new file mode 100644
index 0000000..dcdbac9
--- /dev/null
+++ b/feature/src/vp-feature-util.c
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-feature-common.h"
+#include "vp-feature-util.h"
+
+
+bool vp_feature_util_calc_aspect_size(int nSrcW, int nSrcH, int nDestW,
+ int nDestH, int nMinW, int nMinH,
+ int *nResultW, int *nResultH)
+{
+ if (nSrcH == 0 || nSrcW == 0 || nDestW == 0 || nDestW == 0) {
+ vp_dbgE("invalid param : (src %d x %d) , (dest %d x %d)", nSrcW,
+ nSrcH, nDestW, nDestH);
+ return FALSE;
+ }
+
+ double src_ratio = 0;
+ double dst_ratio = 0;
+
+ int nReturnW = 0;
+ int nReturnH = 0;
+
+ src_ratio = (double) nSrcW / nSrcH;
+ dst_ratio = (double) nDestW / nDestH;
+
+ if (src_ratio > dst_ratio) {
+ nReturnW = nDestW;
+ nReturnH = nDestW / src_ratio;
+ } else if (src_ratio < dst_ratio) {
+ nReturnW = nDestH * src_ratio;
+ nReturnH = nDestH;
+ } else {
+ nReturnW = nDestW;
+ nReturnH = nDestH;
+ }
+
+ if (nReturnH < nMinH) {
+ int tmpHeight = nReturnH;
+
+ src_ratio = (double) nMinH / tmpHeight;
+
+ nReturnW = src_ratio * nReturnW;
+ nReturnH = nMinH;
+ }
+
+ if (nReturnW < nMinW) {
+ int tmpWidth = nReturnW;
+
+ src_ratio = (double) nMinW / tmpWidth;
+
+ nReturnW = nMinW;
+ nReturnH = src_ratio * nReturnH;
+ }
+
+ *nResultW = nReturnW;
+ *nResultH = nReturnH;
+
+ return TRUE;
+}
diff --git a/feature/src/vp-feature-util.h b/feature/src/vp-feature-util.h
new file mode 100644
index 0000000..f67197f
--- /dev/null
+++ b/feature/src/vp-feature-util.h
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+
+bool vp_feature_util_calc_aspect_size(int nSrcW, int nSrcH, int nDestW, int nDestH, int nMinW, int nMinH, int *nResultW, int *nResultH);
+
diff --git a/feature/src/vp-thumb-gen.c b/feature/src/vp-thumb-gen.c
new file mode 100644
index 0000000..5c66d50
--- /dev/null
+++ b/feature/src/vp-thumb-gen.c
@@ -0,0 +1,893 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <pthread.h>
+#include <metadata_extractor.h>
+#include <image_util.h>
+#include <image_util_internal.h>
+
+#include "vp-feature-common.h"
+
+#include "vp-feature-util.h"
+#include "vp-file-util.h"
+#include "vp-thumb-gen.h"
+#include "vp-util.h"
+
+
+static pthread_t g_thread_id;
+static pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+
+#define THUMB_GEN_FILE_NAME_PREFIX "%s/thumb_%02d.jpg"
+#define THUMB_GEN_FILE_NAME_PREFIX_LEN 14
+
+
+typedef struct _ThumbGen {
+ metadata_extractor_h meta_h;
+
+ char *szMediaURL;
+ bool bIsRealize;
+
+ int nSrcWidth;
+ int nSrcHeight;
+ int nDuration;
+ bool bResize;
+
+ int nRotate;
+
+ int nStartPosition;
+ int nEndPosition;
+ int nStartIdx;
+ int nDestWidth;
+ int nDestHeight;
+ int nGenCount;
+ int nInterval;
+ char *szSaveDir;
+ bool bAcuurate;
+ bool bScale;
+ bool bIsStart;
+ bool bIsCancle;
+ void *pUserData;
+
+ int nGenIdx;
+
+ vp_thumb_gen_progress_cb progress_cb;
+ vp_thumb_gen_complete_cb complete_cb;
+ vp_thumb_gen_cancle_cb cancle_cb;
+
+ Ecore_Pipe *pProgressPipe;
+ Ecore_Pipe *pCompletePipe;
+ Ecore_Pipe *pCanclePipe;
+} ThumbGen;
+
+
+static void _vp_thumb_gen_destroy_handle(ThumbGen *pThumbGen);
+
+
+/* callback functions */
+
+
+/* internal functions */
+static void _vp_thumb_gen_lock()
+{
+ pthread_mutex_lock(&g_mutex);
+}
+
+static void _vp_thumb_gen_unlock()
+{
+ pthread_mutex_unlock(&g_mutex);
+}
+
+static void *_vp_thumb_gen_thread_loop(void *pUserData)
+{
+ if (pUserData == NULL) {
+ return NULL;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) pUserData;
+
+ while (1) {
+ _vp_thumb_gen_lock();
+ if (pThumbGen->bIsRealize == FALSE) {
+ vp_dbgW(" == pThumbGen->bIsRealize is Fail ==");
+ _vp_thumb_gen_unlock();
+ break;
+ }
+
+ bool bRunStatus = FALSE;
+ if (pThumbGen->bIsStart && pThumbGen->nGenCount > 0) {
+ bRunStatus = TRUE;
+ }
+ _vp_thumb_gen_unlock();
+
+ if (bRunStatus) {
+ bool bSuccess = TRUE;
+ char *szURL = NULL;
+ void *pFrame = NULL;
+ int nFrameSize = 0;
+ unsigned long nPosition = 0;
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+ unsigned char *pSaveBuf = NULL;
+ unsigned char *pRotBuf = NULL;
+ _vp_thumb_gen_lock();
+
+ vp_dbgW("idx : %d", pThumbGen->nGenIdx);
+ int nSrcWidth = pThumbGen->nSrcWidth;
+ int nSrcHeight = pThumbGen->nSrcHeight;
+ int nSaveWidth = pThumbGen->nDestWidth;
+ int nSaveHeight = pThumbGen->nDestHeight;
+ int nFileNameSize =
+ strlen(pThumbGen->szSaveDir) +
+ THUMB_GEN_FILE_NAME_PREFIX_LEN;
+ bool bResize = pThumbGen->bResize;
+
+ szURL = calloc(1, sizeof(char) * nFileNameSize);
+
+ if (szURL != NULL) {
+ snprintf(szURL, nFileNameSize,
+ THUMB_GEN_FILE_NAME_PREFIX,
+ pThumbGen->szSaveDir,
+ pThumbGen->nGenIdx + pThumbGen->nStartIdx);
+ }
+
+ nPosition =
+ pThumbGen->nStartPosition +
+ (pThumbGen->nGenIdx * pThumbGen->nInterval);
+
+ nRet =
+ metadata_extractor_get_frame_at_time(pThumbGen->meta_h,
+ nPosition,
+ pThumbGen->bAcuurate,
+ &pFrame,
+ &nFrameSize);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ vp_dbgE
+ ("metadata_extractor_get_frame_at_time is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+ _vp_thumb_gen_unlock();
+
+ if (pFrame == NULL) {
+ vp_dbgE("pFrame is NULL");
+ bSuccess = FALSE;
+ }
+
+ if (bSuccess) {
+ if (bResize) {
+ unsigned int nResizBufSize = 0;
+
+ nRet = image_util_calculate_buffer_size(nSaveWidth,
+ nSaveHeight,
+ IMAGE_UTIL_COLORSPACE_RGB888,
+ &nResizBufSize);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ vp_dbgE
+ ("image_util_calculate_buffer_size is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+ vp_dbgW("ResizeBuf Size : %d", nResizBufSize);
+
+ pSaveBuf =
+ calloc(1, sizeof(unsigned char) * nResizBufSize);
+ if (pSaveBuf == NULL) {
+ vp_dbgE("pSaveBuf alloc fail");
+ bSuccess = FALSE;
+ } else {
+ nRet = vp_util_image_resize(pSaveBuf,
+ &nSaveWidth,
+ &nSaveHeight,
+ (unsigned char *)
+ pFrame, nSrcWidth,
+ nSrcHeight,
+ IMAGE_UTIL_COLORSPACE_RGB888);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ vp_dbgE
+ ("vp_util_image_resize is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+ }
+ } else {
+ pSaveBuf = (unsigned char *) pFrame;
+ }
+ }
+
+ if (pThumbGen->nRotate != 0) {
+ image_util_rotation_e nRot = IMAGE_UTIL_ROTATION_NONE;
+ if (pThumbGen->nRotate == 90) {
+ nRot = IMAGE_UTIL_ROTATION_90;
+ } else if (pThumbGen->nRotate == 180) {
+ nRot = IMAGE_UTIL_ROTATION_180;
+ } else if (pThumbGen->nRotate == 270) {
+ nRot = IMAGE_UTIL_ROTATION_270;
+ }
+
+ if (nRot != IMAGE_UTIL_ROTATION_NONE) {
+ unsigned int nResizBufSize = 0;
+ int nSrcW = nSaveWidth;
+ int nSrcH = nSaveHeight;
+ nRet = image_util_calculate_buffer_size(nSaveWidth,
+ nSaveHeight,
+ IMAGE_UTIL_COLORSPACE_RGB888,
+ &nResizBufSize);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ vp_dbgE
+ ("image_util_calculate_buffer_size is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+
+ pRotBuf =
+ calloc(1, sizeof(unsigned char) * nResizBufSize);
+ if (pRotBuf == NULL) {
+ vp_dbgE("pRotBuf alloc fail");
+ bSuccess = FALSE;
+ } else {
+ vp_dbgW("ResizeBuf Size : %d", nResizBufSize);
+ nRet = vp_util_image_rotate(pRotBuf,
+ &nSaveWidth,
+ &nSaveHeight,
+ nRot, pSaveBuf,
+ nSrcW, nSrcH,
+ IMAGE_UTIL_COLORSPACE_RGB888);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ vp_dbgE
+ ("vp_util_image_rotate is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+ }
+ }
+ }
+
+ if (bSuccess) {
+ vp_sdbg("w:%d, h:%d, URL : %s", nSaveWidth, nSaveHeight,
+ szURL);
+ if (pRotBuf) {
+ nRet = image_util_encode_jpeg(pRotBuf,
+ nSaveWidth,
+ nSaveHeight,
+ IMAGE_UTIL_COLORSPACE_RGB888,
+ 100, szURL);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ vp_dbgE("image_util_encode_jpeg is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+ } else {
+ nRet = image_util_encode_jpeg(pSaveBuf,
+ nSaveWidth,
+ nSaveHeight,
+ IMAGE_UTIL_COLORSPACE_RGB888,
+ 100, szURL);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ vp_dbgE("image_util_encode_jpeg is fail : [0x%x]",
+ nRet);
+ bSuccess = FALSE;
+ }
+ }
+ }
+
+ if (bResize) {
+ VP_FREE(pSaveBuf);
+ }
+ VP_FREE(pRotBuf);
+ VP_FREE(pFrame);
+
+ _vp_thumb_gen_lock();
+ if (pThumbGen->progress_cb) {
+ vp_dbgW(" ==> %p, %p", pThumbGen, pThumbGen->progress_cb);
+ pThumbGen->progress_cb(bSuccess, pThumbGen->nGenIdx,
+ szURL, nPosition,
+ pThumbGen->pUserData);
+ }
+
+ pThumbGen->nGenIdx++;
+ VP_FREE(szURL);
+ _vp_thumb_gen_unlock();
+
+ if (pThumbGen->nGenIdx == pThumbGen->nGenCount) {
+ /* call complete callback */
+ pThumbGen->bIsStart = FALSE;
+
+ vp_thumb_gen_complete_cb func = pThumbGen->complete_cb;
+
+ if (func) {
+ func(pThumbGen->nGenCount, pThumbGen->pUserData);
+ }
+ pthread_exit(0);
+ }
+
+ }
+
+ _vp_thumb_gen_lock();
+ if (pThumbGen->bIsCancle) {
+ if (pThumbGen->cancle_cb) {
+ vp_dbgW(" ==> %p, %p", pThumbGen, pThumbGen->cancle_cb);
+ pThumbGen->cancle_cb(pThumbGen->pUserData);
+ }
+
+ pThumbGen->bIsStart = FALSE;
+ }
+ _vp_thumb_gen_unlock();
+
+ usleep(1000);
+ }
+ vp_dbgW(" == Thread End ==");
+
+ return NULL;
+}
+
+
+static void _vp_thumb_gen_destroy_handle(ThumbGen *pThumbGen)
+{
+ if (pThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return;
+ }
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+ _vp_thumb_gen_lock();
+
+ pThumbGen->progress_cb = NULL;
+ pThumbGen->complete_cb = NULL;
+ pThumbGen->cancle_cb = NULL;
+
+ nRet = metadata_extractor_destroy(pThumbGen->meta_h);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ vp_dbgE("metadata_extractor_destroy is fail : [0x%x]", nRet);
+ }
+
+ VP_FREE(pThumbGen->szMediaURL);
+ VP_FREE(pThumbGen->szSaveDir);
+
+ VP_FREE(pThumbGen);
+
+ _vp_thumb_gen_unlock();
+
+}
+
+
+/* external functions */
+vp_thumb_gen_h vp_thumb_gen_create(const char *szMediaURL)
+{
+ if (szMediaURL == NULL) {
+ vp_dbgE("szMediaURL is NULL");
+ return NULL;
+ }
+
+ ThumbGen *pThumbGen = calloc(1, sizeof(ThumbGen));
+ if (pThumbGen == NULL) {
+ vp_dbgE("ThumbGen alloc is fail");
+ return NULL;
+ }
+
+
+ VP_STRDUP(pThumbGen->szMediaURL, szMediaURL);
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+ nRet = metadata_extractor_create(&(pThumbGen->meta_h));
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+ vp_dbgE("metadata_extractor_create is fail : [0x%x]", nRet);
+ return NULL;
+ }
+
+ nRet = metadata_extractor_set_path(pThumbGen->meta_h, szMediaURL);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+ vp_dbgE("metadata_extractor_set_path is fail : [0x%x]", nRet);
+ return NULL;
+ }
+
+ char *szVal = NULL;
+
+ nRet =
+ metadata_extractor_get_metadata(pThumbGen->meta_h,
+ METADATA_DURATION, &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+ vp_dbgE("metadata_extractor_get_metadata is fail : [0x%x]", nRet);
+ return NULL;
+ }
+ pThumbGen->nDuration = atoi(szVal);
+ VP_FREE(szVal);
+
+ nRet =
+ metadata_extractor_get_metadata(pThumbGen->meta_h,
+ METADATA_ROTATE, &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+ vp_dbgE("metadata_extractor_get_metadata is fail : [0x%x]", nRet);
+ return NULL;
+ }
+
+ if (szVal == NULL) {
+
+ pThumbGen->nRotate = 0;
+ } else {
+ pThumbGen->nRotate = atoi(szVal);
+ VP_FREE(szVal);
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pThumbGen->meta_h,
+ METADATA_VIDEO_WIDTH, &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+ vp_dbgE("metadata_extractor_get_metadata is fail : [0x%x]", nRet);
+ return NULL;
+ }
+ pThumbGen->nSrcWidth = atoi(szVal);
+ VP_FREE(szVal);
+
+ nRet =
+ metadata_extractor_get_metadata(pThumbGen->meta_h,
+ METADATA_VIDEO_HEIGHT, &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+ vp_dbgE("metadata_extractor_get_metadata is fail : [0x%x]", nRet);
+ return NULL;
+ }
+ pThumbGen->nSrcHeight = atoi(szVal);
+ VP_FREE(szVal);
+
+ pthread_mutex_init(&g_mutex, NULL);
+
+ return (vp_thumb_gen_h) pThumbGen;
+}
+
+void vp_thumb_gen_destroy(vp_thumb_gen_h hThumbGen)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return;
+ }
+ vp_dbgW("");
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ vp_thumb_gen_unrealize((vp_thumb_gen_h) pThumbGen);
+ _vp_thumb_gen_destroy_handle(pThumbGen);
+
+ pthread_mutex_destroy(&g_mutex);
+
+}
+
+bool vp_thumb_gen_realize(vp_thumb_gen_h hThumbGen)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ pThumbGen->bIsRealize = TRUE;
+
+ if (pThumbGen->bScale) {
+ int nResultW = 0;
+ int nResultH = 0;
+ if (!vp_feature_util_calc_aspect_size(pThumbGen->nSrcWidth,
+ pThumbGen->nSrcHeight,
+ pThumbGen->nDestWidth,
+ pThumbGen->nDestHeight,
+ 0, 0,
+ &nResultW, &nResultH)) {
+ vp_dbgE("vp_feature_util_calc_aspect_size is fail");
+
+ } else {
+ pThumbGen->nDestWidth = nResultW;
+ pThumbGen->nDestHeight = nResultH;
+ }
+ if (pThumbGen->nDestWidth % 2 != 0) {
+ pThumbGen->nDestWidth += 1;
+ }
+ if (pThumbGen->nDestHeight % 2 != 0) {
+ pThumbGen->nDestHeight += 1;
+ }
+
+ }
+#if 1
+ if (pthread_create
+ (&g_thread_id, NULL, _vp_thumb_gen_thread_loop,
+ (void *) pThumbGen) != 0) {
+ vp_dbgE("pthread_create fail");
+ pThumbGen->bIsRealize = FALSE;
+ return FALSE;
+ }
+#else
+ int status = 0;
+ pthread_attr_t thread_attr;
+
+ status = pthread_attr_init(&thread_attr);
+ if (0 == status) {
+ status = pthread_attr_setdetachstate(&thread_attr,
+ PTHREAD_CREATE_DETACHED);
+ if (0 == status) {
+ if (pthread_create
+ (&g_thread_id, &thread_attr, _vp_thumb_gen_thread_loop,
+ (void *) pThumbGen) != 0) {
+ vp_dbgE("pthread_create fail");
+ pThumbGen->bIsRealize = FALSE;
+ return FALSE;
+ }
+ } else {
+ vp_dbgE("pthread_attr_setdetachstate fail");
+ pThumbGen->bIsRealize = FALSE;
+ return FALSE;
+ }
+ } else {
+ vp_dbgE("pthread_attr_init fail");
+ pThumbGen->bIsRealize = FALSE;
+ return FALSE;
+ }
+
+ if (pthread_attr_destroy(&thread_attr) != 0) {
+ vp_dbgE("Cannot destroy the attribute object");
+ pThumbGen->bIsRealize = FALSE;
+ return FALSE;
+ }
+#endif
+ return TRUE;
+}
+
+bool vp_thumb_gen_unrealize(vp_thumb_gen_h hThumbGen)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+ pThumbGen->bIsStart = FALSE;
+ _vp_thumb_gen_unlock();
+
+ if (pThumbGen->bIsRealize == TRUE) {
+ _vp_thumb_gen_lock();
+ pThumbGen->bIsRealize = FALSE;
+ _vp_thumb_gen_unlock();
+
+ int status = 0;
+ pthread_join(g_thread_id, (void **) &status);
+
+ //pthread_detach(g_thread_id);
+ }
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_is_realize(vp_thumb_gen_h hThumbGen, bool *bIsRealize)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ *bIsRealize = pThumbGen->bIsRealize;
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_dest_size(vp_thumb_gen_h hThumbGen, int nWidth,
+ int nHeight)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->nDestWidth = nWidth;
+ pThumbGen->nDestHeight = nHeight;
+
+ if (nWidth != pThumbGen->nSrcWidth
+ || nHeight != pThumbGen->nSrcHeight) {
+ pThumbGen->bResize = TRUE;
+ }
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_save_directory(vp_thumb_gen_h hThumbGen,
+ char *szSaveDir)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ if (!vp_file_exists(szSaveDir)) {
+ if (!vp_mkdir(szSaveDir)) {
+ vp_dbgE("Make directory Fail : %s", szSaveDir);
+ }
+ }
+
+ VP_STRDUP(pThumbGen->szSaveDir, szSaveDir);
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_start_position(vp_thumb_gen_h hThumbGen,
+ int nPosition)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->nStartPosition = nPosition;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_end_position(vp_thumb_gen_h hThumbGen,
+ int nPosition)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->nEndPosition = nPosition;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_start_index(vp_thumb_gen_h hThumbGen, int nIdx)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->nStartIdx = nIdx;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_count(vp_thumb_gen_h hThumbGen, int nCount)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ if (nCount <= 0) {
+ vp_dbgE("Invalid nCount ");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->nGenCount = nCount;
+ if (pThumbGen->nEndPosition <= 0) {
+ vp_dbgW("It doesn't set value of end position.");
+ pThumbGen->nEndPosition = pThumbGen->nDuration;
+ }
+ pThumbGen->nInterval =
+ (pThumbGen->nEndPosition - pThumbGen->nStartPosition) / nCount;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+
+bool vp_thumb_gen_set_acuurate(vp_thumb_gen_h hThumbGen, bool bAcuurate)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->bAcuurate = bAcuurate;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_scale(vp_thumb_gen_h hThumbGen, bool bSacle)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->bScale = bSacle;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_start(vp_thumb_gen_h hThumbGen)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ if (pThumbGen->bIsRealize == FALSE) {
+ vp_dbgE("Not yet realize state");
+ return FALSE;
+ }
+
+ if (pThumbGen->bIsStart == TRUE) {
+ vp_dbgE("Already thumb gen start");
+ return FALSE;
+ }
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->bIsStart = TRUE;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_cancle(vp_thumb_gen_h hThumbGen)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ if (pThumbGen->bIsRealize == FALSE) {
+ vp_dbgE("Not yet realize state");
+ return FALSE;
+ }
+
+ if (pThumbGen->bIsCancle == TRUE) {
+ vp_dbgE("Already thumb gen cancles");
+ return FALSE;
+ }
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->bIsCancle = TRUE;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_user_data(vp_thumb_gen_h hThumbGen, void *pUserData)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->pUserData = pUserData;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_progress_cb(vp_thumb_gen_h hThumbGen,
+ vp_thumb_gen_progress_cb progress_cb)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->progress_cb = progress_cb;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_complete_cb(vp_thumb_gen_h hThumbGen,
+ vp_thumb_gen_complete_cb complete_cb)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->complete_cb = complete_cb;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
+
+bool vp_thumb_gen_set_cancle_cb(vp_thumb_gen_h hThumbGen,
+ vp_thumb_gen_cancle_cb cancle_cb)
+{
+ if (hThumbGen == NULL) {
+ vp_dbgE("hThumbGen is NULL");
+ return FALSE;
+ }
+
+ ThumbGen *pThumbGen = (ThumbGen *) hThumbGen;
+
+ _vp_thumb_gen_lock();
+
+ pThumbGen->cancle_cb = cancle_cb;
+
+ _vp_thumb_gen_unlock();
+
+ return TRUE;
+}
diff --git a/include/common/mp-drm-ctrl.h b/include/common/mp-drm-ctrl.h
new file mode 100644
index 0000000..f84bfb2
--- /dev/null
+++ b/include/common/mp-drm-ctrl.h
@@ -0,0 +1,84 @@
+#ifdef ENABLE_DRM_FEATURE
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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
+#define DIVX_DRM_UNLIMIT_VALUE -999
+
+#define DIVX_DRM_AUTHORIZATION_ERROR_MSG "This phone is not authorized to play this DivX protected video."
+#define DIVX_DRM_RENTAL_EXPIRED_MSG "This DivX rental has used %d of %d views.<br>This DivX rental has expired."
+#define DIVX_DRM_RENTAL_CONTINUE_MSG "This DivX rental has used %d of %d views.<br>Continue?"
+
+
+typedef enum {
+ DRM_CONTENT_INFO_NULL = -1,
+ DRM_CONTENT_INFO_AUTHOR,
+ DRM_CONTENT_INFO_RIGHTS_URL,
+ DRM_CONTENT_INFO_DESCRIPTION,
+} MpVideoDrmContentInfoType;
+
+
+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 constraints;
+
+ int remaining_count;
+ bool date_time_expired;
+ int remaining_interval_sec;
+ int remaining_timed_count;
+ int remaining_acc_sec;
+}st_MpConstraintsInfo;
+
+typedef enum {
+ MP_DRM_CONSTRAINT_UNLIMITED = 0x0,
+ MP_DRM_CONSTRAINT_COUNT = 0x01,
+ MP_DRM_CONSTRAINT_DATE_TIME = 0x02,
+ MP_DRM_CONSTRAINT_INTERVAL = 0x04,
+ MP_DRM_CONSTRAINT_TIMED_COUNT = 0x08,
+ MP_DRM_CONSTRAINT_ACCUMLATED_TIME = 0x10,
+}MpDrmConstraintInfoType;
+
+bool mp_drm_is_drm_file(char* szPath);
+bool mp_drm_check_foward_lock(char *szPath);
+
+bool mp_drm_is_divx(char *szPath);
+bool mp_drm_check_divx_rental_expired(char *szPath,int *use_count, int *total_count);
+void mp_drm_get_file_extension(char *szPath, char *szContentType, int nContentTypeStrSize);
+
+#endif //_MP_DRM_CTRL_H_
+#endif
diff --git a/include/common/mp-rotate-ctrl.h b/include/common/mp-rotate-ctrl.h
new file mode 100644
index 0000000..5b37fed
--- /dev/null
+++ b/include/common/mp-rotate-ctrl.h
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_ROTATE_CTRL_
+#define _VIDEO_ROTATE_CTRL_
+
+#include <app.h>
+#include <Ecore_X.h>
+#include <stdbool.h>
+#include <Ecore_Evas.h>
+
+typedef enum
+{
+ VIDEOS_ROTATE_NONE = 0x00,
+ VIDEOS_ROTATE_90,
+ VIDEOS_ROTATE_180,
+ VIDEOS_ROTATE_270
+}VideosRotateStatus_t;
+
+
+void mp_rotate_ctrl_init(void);
+void mp_rotate_ctrl_destroy(void);
+VideosRotateStatus_t mp_rotate_ctrl_get_current_state(void);
+void mp_rotate_ctrl_set_state(int nAngle);
+bool mp_rotate_ctrl_check_landspace();
+bool mp_rotate_ctrl_check_landspace_by_win(Evas_Object *pWin);
+
+#endif
diff --git a/include/common/mp-util-config.h b/include/common/mp-util-config.h
new file mode 100644
index 0000000..6d929a2
--- /dev/null
+++ b/include/common/mp-util-config.h
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_MP_UTIL_CONFIG__
+#define __VIDEO_MP_UTIL_CONFIG__
+
+#include <stdbool.h>
+#include <Elementary.h>
+#include <vconf.h>
+#include <app_preference.h>
+
+bool mp_util_config_set_multi_play_status(bool bMultiPlay);
+bool mp_util_config_get_multi_play_status(bool *bMultiPlay);
+
+bool mp_util_config_set_preview(char* szPreviewUrl);
+char* mp_util_config_get_preview(void);
+bool mp_util_config_preview_key_changed_cb(preference_changed_cb callback, void *pUserData);
+bool mp_util_config_ignore_preview_key_changed_cb();
+
+#endif
+
diff --git a/include/common/mp-util-media-service.h b/include/common/mp-util-media-service.h
new file mode 100644
index 0000000..c509176
--- /dev/null
+++ b/include/common/mp-util-media-service.h
@@ -0,0 +1,187 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_
+
+#define RECENTLY_PLAYED_VIDEO_ITEM_MAX 20
+
+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_RECENTLY_VIEWED,
+ MP_MEDIA_SORT_BY_RECENTLY_ADDED,
+ MP_MEDIA_SORT_BY_NAME,
+ MP_MEDIA_SORT_BY_SIZE,
+ MP_MEDIA_SORT_BY_TYPE,
+ 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_MAX,
+}MpMediaSvcListType;
+
+typedef enum
+{
+ MP_MEDIA_TYPE_STORAGE_UNKNOWN = 0,
+ MP_MEDIA_TYPE_STORAGE_INTERNAL,
+ MP_MEDIA_TYPE_STORAGE_EXTERNAL,
+ MP_MEDIA_TYPE_STORAGE_DROPBOX,
+ MP_MEDIA_TYPE_STORAGE_MAX,
+}MpMediaStorageType;
+
+
+typedef void (*UpdateDatabaseCbFunc)(void *pUserData, float fTimer, int UpdateStyle);
+
+void mp_util_svc_init_session(void);
+void mp_util_svc_finish_session(void);
+
+////////////////////////////////////////////////////////
+// Manage video item list
+
+// For gallery list
+bool mp_util_svc_extract_video_list_from_folder(char *szFolderPath, int nSortType, int nItemType); // For myfiles.
+bool mp_util_svc_extract_video_list_by_item_type(int nSortType, int nItemType); // For video list by item type. (All/Phone/Cloud)
+bool mp_util_svc_extract_video_list_from_favorite(int nSortType); // For favorite naming of gallery.
+bool mp_util_svc_extract_video_list_for_search_view(const char *keyword, int nItemType); // For only video type files of video search view
+bool mp_util_svc_index_list_for_search_view(const char *keyword, void **index_list); // For only video type files of video search view
+bool mp_util_svc_index_list_for_cloud_view(void **index_list, int *nListSize); // get cloud data from media list
+
+void mp_util_svc_destory_video_list(void);
+bool mp_util_svc_destory_video_item_list(void);
+bool mp_util_svc_remove_item_by_url_with_list(char *szFilePath);
+bool mp_util_svc_remove_item_by_list_index(int nVideoItemIndex);
+
+bool mp_util_svc_get_video_id_by_video_url(const char *szPath, char **szVideoID);
+char* mp_util_svc_get_video_Thumbnail_by_video_url(const char *szMediaUri);
+int mp_util_svc_get_video_width_by_video_url(const char *szMediaUri);
+int mp_util_svc_get_video_height_by_video_url(const char *szMediaUri);
+unsigned int mp_util_svc_get_video_last_play_time_by_video_url(const char *szPath);
+unsigned int mp_util_svc_get_video_duration_by_video_url(const char *szPath);
+int mp_util_svc_get_video_file_size_by_video_url(const char *szPath);
+void mp_util_svc_set_video_last_played_time_by_url(char* szMediaUri, unsigned int nPosition);
+bool mp_util_svc_get_video_current_url_pre_next_item(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri,bool bLoop);
+
+// For video list
+char* mp_util_svc_get_video_url(const int nVideoItemIndex);
+char* mp_util_svc_get_video_thumbnail(const int nVideoItemIndex);
+char* mp_util_svc_get_video_title(const int nVideoItemIndex);
+int mp_util_svc_get_video_duration_time(const int nVideoItemIndex);
+int mp_util_svc_get_video_last_played_pos(const int nVideoItemIndex);
+unsigned long long mp_util_svc_get_video_item_size(const int nVideoItemIndex);
+
+int mp_util_svc_get_video_item_width(const int nVideoItemIndex);
+int mp_util_svc_get_video_item_height(const int nVideoItemIndex);
+time_t mp_util_svc_get_video_item_data_time(const int nVideoItemIndex);
+char *mp_util_svc_get_video_item_extension(const int nVideoItemIndex);
+double mp_util_svc_get_video_item_longitude(const int nVideoItemIndex);
+double mp_util_svc_get_video_item_latitude(const int nVideoItemIndex);
+char *mp_util_svc_get_video_item_modified_time(const int nVideoItemIndex);
+
+//void MpUtilMediaSvcUpdateVideoItem(const int nVideoItemIndex);
+int mp_util_svc_get_video_list_size_for_checking_index(void);
+int mp_util_svc_get_number_of_video_item_by_type(void);
+int mp_util_svc_get_total_video_type_files(void);
+void mp_util_svc_print_list_info(void);
+int mp_util_svc_find_video_item_index_by_url(const char *szPath);
+char *mp_util_svc_get_video_id_by_index(const int nVideoItemIndex);
+MpMediaStorageType mp_util_svc_get_video_storage(const int nVideoItemIndex);
+bool mp_util_svc_is_cloud_storage(const int nVideoItemIndex);
+int mp_util_svc_get_cloud_total_from_video_list(void);
+bool mp_util_svc_remove_item_from_db_by_list_index(int nVideoItemIndex);
+
+// For folder list
+bool mp_util_svc_extract_video_folder_list_by_type(int nSortType, int nItemType);
+
+bool mp_util_svc_destory_video_folder_list(void);
+int mp_util_svc_get_video_folder_size(void);
+char* mp_util_svc_get_video_folder_name(int nVideoFolderIndex);
+char* mp_util_svc_get_video_folder_url(int nVideoFolderIndex);
+MpMediaStorageType mp_util_svc_get_folder_storage(const int nVideoFolderIndex);
+char* mp_util_svc_get_video_folder_id(int nVideoFolderIndex);
+char* mp_util_get_folder_thumbnail(int nVideoFolderIndex, int nSortType);
+
+void mp_util_svc_register_thumbnail_update_func(int nVideoItemIndex, void* pUserCallbackFunc, void* pUserData);
+void mp_util_svc_cancel_thumbnail_update(int nVideoItemIndex);
+void mp_util_svc_update_thumbnail_info(const int nVideoItemIndex);
+bool mp_util_svc_remove_folder_list_item_from_list(int nVideoItemIndex);
+
+
+///////////////////////////////////////////////////////
+// For livebox list
+bool mp_util_svc_extract_last_played_item(void);
+bool mp_util_svc_destory_last_played_item_list(void);
+char* mp_util_svc_get_last_played_video_item_thumbnail(const int nVideoItemIndex);
+
+
+////////////////////////////////////////////////////////
+// Util
+bool mp_util_svc_insert_file_to_media_content_db(const char* szFilePath);
+bool mp_util_svc_set_update_db_cb_func(UpdateDatabaseCbFunc pUpdateDbCbFunc);
+
+void mp_util_svc_unset_update_db_cb_func(void);
+
+char* mp_util_svc_get_duration_str_time(int nVideoItemIndex);
+bool mp_util_svc_filter_drm_video_item_list(void);
+bool mp_util_svc_check_no_drm_video(void);
+bool mp_util_svc_scan_file(const char *szFilePath);
+
+/*need to free szTitle, output nWidth, nHeight, szTitle, nDuration, nPlayedTime*/
+bool mp_util_svc_get_video_detail_by_video_url(const char *szPath,
+ int *nWidth, int *nHeight, char **szTitle, unsigned int *nDuration, unsigned int *nPlayedTime);
+
+//personal
+bool mp_util_svc_extract_personal_video_folder_list(int nSortType, bool bPersonal);
+bool mp_util_svc_extract_video_list_by_personal(int nSortType, int nItemType, int nViewType);
+bool mp_util_svc_extract_video_list_from_folder_by_personal(char *szFolderPath, int nSortType, int nItemType, int nViewType);
+bool mp_util_svc_check_valid_personal(int nViewType);
+void* mp_util_svc_get_video_item(const int nVideoItemIndex);
+int mp_util_svc_move_from_db(const char *path);
+void mp_util_svc_move_to_db(const int nVideoItemIndex, const char *szVideoPath);
+bool mp_util_svc_remove_list_item_from_list(int nVideoItemIndex);
+bool mp_util_svc_is_device_storage(const int nVideoItemIndex);
+bool mp_util_svc_is_personal_data(const int nVideoItemIndex);
+
+//sort by
+void mp_util_svc_ctrl_sort_list(int SortType);
+bool mp_util_svc_get_frame_by_position(const char *szFilePath, const char *szDestImage, int nPosition, int nWidth, int nHeight);
+
+int mp_util_svc_get_wall_video_index(void *pInvalidList);
+
+//used for check videoid and folderid
+bool mp_util_svc_check_valid_media_id(char *pMediaId, int style, int *nMediaIndex);
+
+bool mp_util_folder_is_cloud_storage(const int nFolderIndex);
+
+#endif // _MP_UTIL_DATABASE_
+
diff --git a/include/common/mp-util-preference.h b/include/common/mp-util-preference.h
new file mode 100644
index 0000000..565e92e
--- /dev/null
+++ b/include/common/mp-util-preference.h
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_MP_UTIL_PREFERENCE__
+#define __VIDEO_MP_UTIL_PREFERENCE__
+
+#include <Elementary.h>
+#include <stdbool.h>
+#include <app_preference.h>
+
+/*Currently, for different process, we could not use preference. Only save and read key in the same process, we could use preference.*/
+
+
+bool mp_util_preference_set_multi_play_status(bool set);
+bool mp_util_preference_get_multi_play_status(bool *bMultiPlay);
+
+char* mp_util_preference_get_preview(void);
+bool mp_util_preference_set_preview(char* szPreview);
+bool mp_util_preference_set_preview_change(preference_changed_cb callback, void *pUserData);
+bool mp_util_preference_unset_preview_change(void);
+
+void mp_util_preference_init();
+
+
+#endif
+
diff --git a/include/common/mp-util.h b/include/common/mp-util.h
new file mode 100644
index 0000000..d2126fb
--- /dev/null
+++ b/include/common/mp-util.h
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <stdbool.h>
+#include <Ecore_Evas.h>
+
+#include "mp-video-list-view-as-ctrl.h"
+#include <efl_extension.h>
+
+typedef void (*MpUtilExitCbFunc)(void);
+typedef void (*mpColorThemeChangedCb)(void *pUserData);
+
+
+#define MP_FREE_STRING(str) do { if(str){free(str); str = NULL;} } while(0)
+#define MP_DEL_OBJ(obj) do { if(obj){evas_object_del(obj); obj = NULL;} } while(0)
+#define MP_DEL_TIMER(timer) do { if(timer){ecore_timer_del(timer); timer = NULL;} } while(0)
+#define MP_DEL_IDLER(idler) do { if(idler){ecore_idler_del(idler); idler = NULL;} } while(0)
+#define MP_DEL_PIPE(pipe) do { if(pipe){ecore_pipe_del(pipe); pipe = NULL;} } while(0)
+#define MP_DEL_ITC(Itc) do { if(Itc){elm_genlist_item_class_free(Itc); Itc = NULL;} } while(0)
+#define MP_DEL_GRID_ITC(Itc) do { if(Itc){elm_gengrid_item_class_free(Itc); Itc = NULL;} } while(0)
+
+#define MP_SCALE elm_config_scale_get()
+
+
+typedef enum
+{
+ NORMAL_POPUP_RETURN_TYPE_UNKNOW = 0,
+ NORMAL_POPUP_RETURN_TYPE_YES,
+ NORMAL_POPUP_RETURN_TYPE_NO,
+ NORMAL_POPUP_RETURN_TYPE_ERR,
+}NormalPopUpRetType;
+
+
+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
+{
+ POPUP_PROCESSING_NO_BUTTON = 0,
+ POPUP_PROCESSING_ONE_BUTTON,
+
+}MpLoadingPopUpType;
+
+
+/////////////////////////////////////////
+// tap type
+int mp_util_get_main_tab_type();
+void mp_util_set_main_tab_type( int nType );
+
+/////////////////////////////////////////
+// Windows utility
+void mp_util_reset_for_relauching(void);
+void mp_util_set_main_window_handle(void *pWindowHandle);
+unsigned int mp_util_get_main_window_xid(void);
+void* mp_util_get_main_window_handle(void);
+
+void mp_util_set_main_conformat(void *pConformant);
+void* mp_util_get_main_conformat(void);
+
+void mp_util_create_main_theme(void);
+void mp_util_set_color_theme_changed_cb(mpColorThemeChangedCb fChanged);
+void mp_util_free_main_theme(void);
+
+void mp_util_show_indicator(void);
+void mp_util_hide_indicator(void);
+
+/////////////////////////////////////////
+// Popup utility
+void mp_util_delete_popup_handle(void);
+bool mp_util_notify_popup(void *pUserData, char *szTitle, char *szContents, void *PopupButtonCallbackFunc);
+bool mp_util_yes_no_popup(void *pUserData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc);
+bool mp_util_remove_all_videos_question_popup(void *pUserData, MpListViewAsType viewType, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *PopupHWMouseBackUpCbFunc, void *PopupHWKeyBackCbFunc);
+bool mp_util_remove_question_popup(void *pUserData, MpListViewAsType viewType, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *PopupHWMouseBackUpCbFunc, void *PopupHWKeyBackCbFunc);
+bool mp_util_remove_folder_question_popup(void *pUserData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *PopupHWMouseBackUpCbFunc, void *PopupHWKeyBackCbFunc);
+bool mp_util_download_question_popup(void *pUserData, char *szTitle, char *szContents, void *PopupCancelBtnCallbackFunc, void *PopupDownloadBtnCallbackFunc);
+bool mp_util_progress_popup(char* szLabel);
+void mp_util_status_bar_noti_popup_show(const char *szStr);
+void* mp_util_create_button_icon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func);
+void* mp_util_create_style_button(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func);
+bool mp_util_ticker_toast_popup(const char *text, bool info_style, bool bottom);
+bool mp_util_ticker_toast_with_timeout_cb_popup(const char *text, Evas_Smart_Cb timeout_func);
+
+void* mp_util_create_title_icon_btn(void *pParent, const char*icon_path, Evas_Smart_Cb pFunc, void *pUserData);
+bool mp_util_loading_popup(MpLoadingPopUpType style ,char *szLabel, Evas_Smart_Cb response_cb, void *pUserData);
+bool mp_util_info_popup(char *szLabel, Evas_Smart_Cb response_cb, Evas_Event_Cb focus_cb, void *pUserData, const char *szDomain);
+bool mp_util_info_second_popup(Evas_Object *pParent, char *szLabel, Evas_Smart_Cb response_cb, Evas_Event_Cb focus_cb, void *pUserData, const char *szDomain);
+void* mp_util_get_current_popup_object();
+void mp_util_text_and_check_popup(Evas_Smart_Cb response_cb, void *cancel_cb, void *ok_cb, void *check_changed_cb, char *szLabel,void *pUserData);
+bool mp_util_loading_left_text_popup(MpLoadingPopUpType style ,char *szLabel, Evas_Smart_Cb response_cb, void *pUserData);
+bool mp_util_check_video_file(const char *szFullPath);
+bool mp_util_check_empty_dir(const char *szDir);
+
+bool mp_util_call_off(void);
+
+bool mp_util_check_local_file_exist(char *uri);
+char* mp_util_get_file_size(unsigned long long size);
+bool mp_util_get_file_title_from_file_path(char* szFilepath, char* szTitle, int nLengthTitle);
+char *mp_util_get_file_name_from_file_path(const char *szFilePath);
+bool mp_util_get_icon_path_from_thumbnail(const char *szMediaURL, char **szIconURL);
+char *mp_util_get_display_name_from_path_and_title(const char *szFilePath, const char *szTitle);
+char *mp_util_get_title_from_path(char *szFilePath);
+
+int mp_util_rename_the_same_file(const char *old_path, char **szNewestPath);
+
+void mp_util_convert_time(int nVideoTime, char* szRetTime, bool bIsHideHour);
+int mp_util_get_pid(void);
+
+const char* mp_util_str_str_same_case(const char* str, const char* subStr);
+bool mp_util_get_network_result();
+
+char *mp_util_get_dir_by_path(const char *file_path);
+char *mp_util_get_folder_icon_path(int nVideoFolderIndex);
+
+bool mp_util_get_subtitle_path(const char *szMediaURL, char **szSubtitle);
+bool mp_util_get_file_size_by_path(const char *szMediaURL, unsigned long long *nSize);
+
+bool mp_util_get_image_size(Evas_Object *pParent, const char *szMediaURL, int *nWidth, int *nHeight);
+
+//personal page
+bool mp_util_get_personal_status(void);
+bool mp_util_check_video_personal_status(const char* szPreviewUrl);
+int mp_util_rename_file(const char *old_path, const char *new_path, char **szNewestPath);
+int mp_util_set_dest_file(const char *pDestPath);
+
+
+//drm
+bool mp_util_check_drm_lock(const char *szMediaURL, bool *bLock);
+void mp_util_convert_sec_time(int nVideoTime, char* szRetTime, bool bIsHideHour);
+
+Evas_Object* mp_util_create_preload_image(Evas_Object *parent, const char *path, int nIconWidth);
+bool mp_util_save_preview_image(const char *szFilePath);
+
+char *mp_util_get_preview_image_path(const char *szFilePath);
+
+// progresss loading object
+Evas_Object* mp_util_create_embedded_progress();
+void mp_util_destroy_embedded_progress( Evas_Object *pProgress );
+
+Evas_Object* mp_util_create_wall_preload_image(Evas_Object *parent, int nIconWidth);
+
+bool mp_util_meta_get_width_and_height(const char *szFilePath, int *nWidth, int *nHeight);
+
+bool mp_util_delete_wall_file(char *szVideoId);
+
+Evas_Object* mp_util_create_gengrid(Evas_Object *parent, int nWidth, int nHeight, bool bHorizontal);
+
+Evas_Object *mp_util_create_folder_icon(void *pParent, const char*icon_path);
+bool mp_util_create_folder_sub_icon(void *pLayout, int nVideoFolderIndex);
+bool mp_util_create_video_sub_icon(void *pLayout, int nVideoItemIndex);
+unsigned long long mp_util_get_disk_available_space(const char *szFilePath);
+
+void mp_util_virtual_keypad_disabled_set(Eina_Bool bDisabled);
+
+int mp_util_set_translate_str(Evas_Object *obj, const char *str);
+
+#endif // _MP_UTIL_
+
diff --git a/include/common/mp-video-info-ctrl.h b/include/common/mp-video-info-ctrl.h
new file mode 100644
index 0000000..85e8c40
--- /dev/null
+++ b/include/common/mp-video-info-ctrl.h
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 mp_info_ctrl_get_gps(char *szUriPath, double *dLongitude, double *dLatitude);
+char* mp_info_ctrl_get_file_extension(char *szPath);
+bool mp_info_ctrl_get_resolution(char *szWidthResolution, char *szHeightResolution, void *pUserData);
+bool mp_info_ctrl_get_file_info(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize);
+char* mp_info_ctrl_get_data_of_file(time_t mtime);
+
+#endif
diff --git a/include/common/mp-video-sound-manager.h b/include/common/mp-video-sound-manager.h
new file mode 100644
index 0000000..e496c5b
--- /dev/null
+++ b/include/common/mp-video-sound-manager.h
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_SOUND_MANAGER_H_
+#define _VIDEO_SOUND_MANAGER_H_
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+void mp_sound_mgr_init();
+void mp_sound_mgr_deinit();
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
+#endif // _VIDEO_SOUND_MANAGER_H_
+
diff --git a/include/common/mp-video-streaming-ctrl.h b/include/common/mp-video-streaming-ctrl.h
new file mode 100644
index 0000000..442ed4a
--- /dev/null
+++ b/include/common/mp-video-streaming-ctrl.h
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_
+
+
+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_WIFI_DIRECT_DEACTIVATED = 0,
+ MP_WIFI_DIRECT_ACTIVATED,
+ MP_WIFI_DIRECT_DISCOVERING,
+ MP_WIFI_DIRECT_CONNECTED,
+ MP_WIFI_DIRECT_GROUP_OWNER,
+ MP_WIFI_DIRECT_MAX,
+}MpNetworkWifiDirectState;
+
+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;
+
+#endif /* _STREAMING_PLAYER_H_ */
diff --git a/include/common/mp-video-util-db-controller.h b/include/common/mp-video-util-db-controller.h
new file mode 100644
index 0000000..f71ef2a
--- /dev/null
+++ b/include/common/mp-video-util-db-controller.h
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_MP_UTIL_DB_CONTROLLER__
+#define __VIDEO_MP_UTIL_DB_CONTROLLER__
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef enum
+{
+ MP_DB_UPDATE_LEV_0 = 0,
+ MP_DB_UPDATE_LEV_1,
+ MP_DB_UPDATE_LEV_2,
+ MP_DB_UPDATE_LEV_3,
+ MP_DB_UPDATE_LEV_4,
+ MP_DB_UPDATE_LEV_MAX,
+}MpDbUpdateViewLev;
+
+
+typedef void (*MpDbUpdateCbFunc)(void *pUserData);
+
+
+bool mp_util_db_set_update_fun(MpDbUpdateViewLev nLev, MpDbUpdateCbFunc pUpdateFun);
+void mp_util_db_reset_update_fun_except_lev0(void);
+void mp_util_db_reset_all_update_fun(void);
+void mp_util_db_reset_update_fun_up_self(MpDbUpdateViewLev nLev);
+bool mp_util_db_run_update_fun(MpDbUpdateViewLev nLev, void *pUserData);
+bool mp_util_db_run_all_update_fun(void *pUserData0, void *pUserData1, void *pUserData2, void *pUserData3, void *pUserData4);
+bool mp_util_db_run_update_fun_except_lev0(void *pUserData1, void *pUserData2, void *pUserData3, void *pUserData4);
+
+void mp_util_db_reset_backup_fun_up_self(MpDbUpdateViewLev nLev);
+void mp_util_db_reset_backup_fun_except_lev0(void);
+void mp_util_db_reset_all_backup_fun(void);
+bool mp_util_db_set_backup_fun(MpDbUpdateViewLev nLev, MpDbUpdateCbFunc pUpdateFun);
+bool mp_util_db_run_backup_fun_except_lev0(void *pUserData1, void *pUserData2, void *pUserData3, void *pUserData4);
+bool mp_util_db_run_all_backup_fun(void *pUserData0, void *pUserData1, void *pUserData2, void *pUserData3, void *pUserData4);
+
+
+#endif
+
diff --git a/include/feature/mp-launching-video-displayer.h b/include/feature/mp-launching-video-displayer.h
new file mode 100644
index 0000000..879b505
--- /dev/null
+++ b/include/feature/mp-launching-video-displayer.h
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 __LAUNCHING_VIDEO_DISPLAYER__
+#define __LAUNCHING_VIDEO_DISPLAYER__
+
+
+typedef enum
+{
+ MP_PLAYER_TYPE_VIDEO = 0,
+ MP_PLAYER_TYPE_STREAMING,
+ MP_PLAYER_TYPE_MAX,
+}MpPlayerType;
+
+
+void mp_launch_video_play(char* szMediaUrl, MpPlayerType nPlayerType, char *szDeviceID);
+void mp_launch_video_stop(void);
+bool mp_launch_video_allow_check(void);
+
+#endif
diff --git a/include/feature/mp-util-move.h b/include/feature/mp-util-move.h
new file mode 100644
index 0000000..5e95bab
--- /dev/null
+++ b/include/feature/mp-util-move.h
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_COPY_CTRL__
+#define __MP_UTIL_COPY_CTRL__
+
+#include <Eina.h>
+#include <Ecore_X.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+
+typedef enum {
+ MP_VIDEO_UPDATE,
+ MP_VIDEO_UPDATE_CANCEL,
+ MP_VIDEO_UPDATE_FINISH,
+ MP_VIDEO_UPDATE_FAILED,
+ MP_VIDEO_UPDATE_ERROR,
+} euThreadFeedback;
+
+
+typedef void (*mp_util_copy_cb) (euThreadFeedback msg_type, unsigned long long size, int nErrorCode, void *userData);
+
+int mp_util_move_push(const char *szSrcPath, const char *szDstPath, mp_util_copy_cb cbFun, void *userData, unsigned long long nTotalSize);
+bool mp_util_move_cancel_check(void);
+
+void mp_util_move_set_cancel_state(bool bCancel);
+bool mp_util_move_get_total_dir_size(const char *szDir, unsigned long long *size);
+
+int mp_util_move_delete_video_folder(const char *szFolderPath, void *userData);
+
+#endif
+
diff --git a/include/feature/mp-video-url-downloader-ctrl.h b/include/feature/mp-video-url-downloader-ctrl.h
new file mode 100644
index 0000000..5290db4
--- /dev/null
+++ b/include/feature/mp-video-url-downloader-ctrl.h
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_URL_DOWNLOADER_CTRL_
+#define _MP_VIDEO_URL_DOWNLOADER_CTRL_
+
+typedef void (*CompleteDownloadCbFunc)(char* szDownloadedLocalPath);
+
+void mp_download_url_ctrl_start(void* pUserData, char* szUrl, char* szIconPath, CompleteDownloadCbFunc pCompletedCallbackFunc);
+void mp_download_url_ctrl_stop(void);
+
+#endif // _MP_VIDEO_URL_DOWNLOADER_CTRL_ \ No newline at end of file
diff --git a/include/mp-drm-ctrl.h b/include/mp-drm-ctrl.h
deleted file mode 100644
index 130ae19..0000000
--- a/include/mp-drm-ctrl.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_DRM_CTRL_H_
-#define _MP_DRM_CTRL_H_
-
-#define DRM_STR_LEN_MAX 2048
-
-typedef enum
-{
- MP_VIDEO_DRM_ERROR_NONE = 0,
- MP_VIDEO_DRM_ERROR_INTERNAL,
- MP_VIDEO_DRM_ERROR_TIME_BASED,
- MP_VIDEO_DRM_ERROR_INTERVAL,
- MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE,
- MP_VIDEO_DRM_ERROR_ACCUMULATED,
- MP_VIDEO_DRM_ERROR_COUNT,
- MP_VIDEO_DRM_ERROR_COUNT_SMALL,
- MP_VIDEO_DRM_ERROR_TIME_COUNT_BASED,
- MP_VIDEO_DRM_ERROR_TIME_INDIVIDULAL,
- MP_VIDEO_DRM_ERROR_TIME_SYSTEM,
- MP_VIDEO_DRM_ERROR_MAX,
-}MpVideoDrmErrorType;
-
-
-
-typedef struct
-{
- int nErrorCode;
- int nData;
-}MpVideoDrmInfo;
-
-
-typedef enum
-{
- VIDEO_DRM_CONSUMPTION_STATE_DISABLE = 0,
- VIDEO_DRM_CONSUMPTION_STATE_ENABLE,
-}MpVideoDrmConsumptionStateType;
-
-
-void MpVideoDrmInit(void);
-bool MpVideoDrmGetForwardLookState(void);
-void MpVideoDrmSetConsumptionState(int nState);
-int MpVideoDrmGetConsumption(void);
-void MpVideoDrmStartConsumption(char *szPath);
-void MpVideoDrmPauseConsumption(void);
-void MpVideoDrmResumeConsumption(void);
-void MpVideoDrmStopConsumption(void);
-bool MpVideoDrmIsDrmFile(char* szPath); //bool MpVideoDrmFileRight(char* szPath);
-bool MpVideoDrmHasValidRo(char* szPath);
-bool MpVideoDrmCheckForward(char* szPath);
-MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char* szVideoTitle, char* szPath);
-bool MpVideoDrmCheckExpiration(char* szPath);
-
-/* DivX DRM functions */
-void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize);
-
-#endif //_MP_DRM_CTRL_H_
diff --git a/include/mp-external-ug.h b/include/mp-external-ug.h
deleted file mode 100755
index 691203c..0000000
--- a/include/mp-external-ug.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_EXTERNAL_UG_
-#define _MP_EXTERNAL_UG_
-
-
-#include <ui-gadget.h>
-
-
-typedef enum
-{
- MP_EXTERNAL_UG_NONE = -1,
- MP_EXTERNAL_UG_MESSAGE = 0,
- MP_EXTERNAL_UG_EMAIL,
- MP_EXTERNAL_UG_MYFILE_DETAIL,
- MP_EXTERNAL_UG_YOUTUBE,
- MP_EXTERNAL_UG_BLUETOOTH,
- MP_EXTERNAL_UG_FTM,
- MP_EXTERNAL_UG_FACEBOOK,
- MP_EXTERNAL_UG_MAX,
-}MpExternalUGType;
-
-
-bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void* pUserData);
-void MpExternalUgUnload(void);
-void MpExternalUgDestroyAll(void);
-int MpExternalUgGetCurUgState(void);
-void MpExternalUgSetUgState(MpExternalUGType nExternalUGType);
-bool MpExternalUgShow(void *pUserData, void *pParent);
-void MpExternalUgHide();
-
-#endif // _MP_EXTERNAL_UG_
diff --git a/include/mp-util-media-service.h b/include/mp-util-media-service.h
deleted file mode 100644
index bd9628f..0000000
--- a/include/mp-util-media-service.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-#ifndef _MP_UTIL_DATABASE_
-#define _MP_UTIL_DATABASE_
-
-#include "video-player.h"
-#include <glib.h>
-
-typedef enum
-{
- MP_MEDIA_VIDEO_FILE_TYPE = 0,
- MP_MEDIA_CAMERA_FILE_TYPE,
- MP_MEDIA_ALL_FILE_TYPE,
- MP_MEDIA_FILE_TYPE_MAX,
-}MpMediaSvcVideoFileType;
-
-typedef enum
-{
- MP_MEDIA_SORT_BY_NONE = 0,
- MP_MEDIA_SORT_BY_NAME_ASC,
- MP_MEDIA_SORT_BY_NAME_DESC,
- MP_MEDIA_SORT_BY_DATE_MOST_RECENT,
- MP_MEDIA_SORT_BY_OLDEST,
- MP_MEDIA_SORT_BY_MAX,
-}MpMediaSvcSortType;
-
-typedef enum
-{
- MP_MEDIA_LIST_TYPE_FOLDER = 0,
- MP_MEDIA_LIST_TYPE_ALL_FOLDER_GALLERY,
- MP_MEDIA_LIST_TYPE_TAG_GALLERY,
- MP_MEDIA_LIST_TYPE_FAVORITE,
- MP_MEDIA_LIST_TYPE_ALLSHARE,
- MP_MEDIA_LIST_TYPE_MAX,
-}MpMediaSvcListType;
-
-
-void MpUtilMediaSvcInitSession(void);
-void MpUtilMediaSvcFinishSession(void);
-
-////////////////////////////////////////////////////////
-// Manage video item list
-
-// For gallery list
-bool MpUtilMediaSvcExtractVideoListFromFolder(char* szFolderPath, int nSortType); // For myfiles.
-bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType); // For 'All' folder of gallery.
-bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType); // For only video type files of video list view.
-bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType); // For only recorded type files of video list view.
-bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName); // For tag folder of gallery.
-bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType); // For favorite naming of gallery.
-bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword); // For only video type files of video search view*/
-
-
-void MpUtilMediaSvcDestoryVideoList(void);
-bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath);
-bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex);
-bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex);
-
-
-bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID);
-char* MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri);
-unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath);
-unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath);
-int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath);
-void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime);
-
-bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri,bool bLoop);
-
-// For video list
-char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex);
-char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex);
-char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex);
-int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex);
-int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex);
-int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex);
-int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex);
-int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex);
-time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex);
-char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex);
-double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex);
-double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex);
-
-int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void);
-int MpUtilMediaSvcGetNumberOfVideoItemByType(void);
-int MpUtilMediaSvcGetTotalVideoTypeFiles(void);
-void MpUtilMediaSvcPrintListInfo(void);
-int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath);
-
-// For folder list
-bool MpUtilMediaSvcExtractVideoFolderList(int nSortType);
-bool MpUtilMediaSvcDestoryVideoFolderList(void);
-int MpUtilMediaSvcGetVideoFolderListSize(void);
-char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex);
-char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex);
-
-////////////////////////////////////////////////////////
-// Manage bookmark
-
-bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list);
-void MpUtilMediaSvcBookmarkListClear(GList *list);
-int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path);
-int MpUtilMediaSvcBookmarkDelete(char *vid, int position);
-int MpUtilMediaSvcBookmarkDeleteAll(char *vid);
-char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle);
-int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle);
-
-#endif // _MP_UTIL_DATABASE_ \ No newline at end of file
diff --git a/include/mp-util.h b/include/mp-util.h
deleted file mode 100755
index f94ea6b..0000000
--- a/include/mp-util.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_UTIL_
-#define _MP_UTIL_
-
-
-#include "video-player.h"
-
-
-typedef enum
-{
- NORMAL_POPUP_RETURN_TYPE_UNKNOW = 0,
- NORMAL_POPUP_RETURN_TYPE_YES,
- NORMAL_POPUP_RETURN_TYPE_NO,
- NORMAL_POPUP_RETURN_TYPE_ERR,
-}NormalPopUpRetType;
-
-
-void MpUtilResetForRelaunching(void);
-void MpUtilSetAlphaOfMainWindow(bool bSetAlpha);
-void* MpUtilCreateMainWindow(const char *pStrName);
-
-int MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode);
-int MpUtilSetKeyUngrab(const char* szKeyName);
-bool MpUtilCheckRTSPType(char *szUriPath);
-int MpUtilCheckUriType(char *szUriPath);
-bool MpUtilCheckLocalFileExist(char *uri);
-bool MpUtilCheckBatteryStatus(void);
-int MpUtilBatteryStatusNoti(VideoAppData* pAppData);
-int MpUtilBatteryStatusNotiIgnore(void);
-int MpUtilMMCstatusNoti(VideoAppData* pAppData);
-int MpUtilMMCstatusNotiIgnore(void);
-int MpUtilCheckDlnaSortType(void* pSvcHandle, char* szBundleKey);
-int MpUtilCheckDlnaMediaID(void* pSvcHandle, char* szBundleKey);
-int MpUtilGetRotationStateFromAppcore(void);
-int MpUtilGetRotationState(void);
-void MpUtilSetRotationState(int nCurRotation);
-bool MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle, int nLengthTitle);
-void MpUtilInitSession(void);
-void MpUtilFinishSession(void);
-void MpUtilVolumeTypeSet(void);
-void MpUtilVolumeTypeUnset(void);
-bool MpUtilCheckMuteStatus();
-bool MpUtilSetVolumeChangeCbSet(void *pUserData);
-void MpUtilSetVolumeChangeCbUnset();
-void MpUtilDeletePopupHandle(void);
-bool MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc);
-bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc);
-bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc);
-bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData);
-bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel);
-void MpUtilStatusBarNotiPopupShow(const char *szStr);
-void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func);
-void* MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func);
-void* MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName);
-bool MpUtilIsCallOff(void);
-bool MpUtilIsCameraOff(void);
-bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData);
-bool MpUtilIsConnectEarjack(void);
-bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData);
-bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl);
-bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize);
-bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl);
-bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize);
-unsigned int MpUtilGetMainWindowXID(void);
-void MpUtilRotateWindow(int nRotateMode, void* pWindowHandle);
-void MpUtilGetUserAgent(VideoAppData* pAppData);
-double MpUtilGetSysTime(void);
-void MpUtilLcdNormalPowerLockForResume(void);
-void MpUtilLcdNormalPowerUnlockForPause(void);
-void MpUtilLcdOffForPowerButton(void);
-bool MpUtilTurnOverSensorInit(void *pUserData);
-bool MpUtilTurnOverSensorDestroy(void);
-void MpUtilMultimediaKeyGrab(void);
-void MpUtilMultimediaKeyUngrab(void);
-void MpUtilMultimediaVolumeKeyGrab(void);
-void MpUtilMultimediaVolumeKeyUngrab(void);
-
-char* MpUtilGetFileSize(unsigned int size);
-void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour);
-bool MpUtilAddToHome(const char *file_path);
-void MpUtilLayoutVisibleOff(void *pWindowHandle);
-
-#endif // _MP_UTIL_
diff --git a/include/mp-video-animation-ctrl.h b/include/mp-video-animation-ctrl.h
deleted file mode 100755
index 0614f9b..0000000
--- a/include/mp-video-animation-ctrl.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_LOADING_ANIMATION_CTRL_
-#define _VIDEO_LOADING_ANIMATION_CTRL_
-
-
-void* MpVideoAnimationCtrlInit(void* pUserData);
-void MpVideoAnimationCtrlDestroy(void);
-void MpVideoAnimationCtrlSetPercent(int nPercent);
-void MpVideoAnimationCtrlPlay(void);
-void MpVideoAnimationCtrlStop(void);
-void MpVideoAnimationCtrlShow(void);
-void MpVideoAnimationCtrlHide(void);
-bool MpVideoAnimationCtrlGetActiveState(void);
-
-
-#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */
-
diff --git a/include/mp-video-app-ctrl.h b/include/mp-video-app-ctrl.h
deleted file mode 100644
index 37ed298..0000000
--- a/include/mp-video-app-ctrl.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_APP_CTRL_
-#define _VIDEO_APP_CTRL_
-
-
-#include "video-player.h"
-
-
-bool MpVideoAppCtrlInit(VideoAppData* pAppData);
-bool MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData);
-bool MpVideoAppCtrlIsTopView(void* pUserData);
-bool MpVideoAppCtrlIsExistPlayerHandle(void);
-void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState);
-void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData);
-bool MpVideoAppCtrlGetFloatingStatus(void);
-bool MpVideoAppCtrlIsCheckCallStatus(void);
-void MpVideoAppCtrlInitCheckCallStatus(void);
-
-#endif /* _VIDEO_APP_CTRL_ */
diff --git a/include/mp-video-ctrl-mgr.h b/include/mp-video-ctrl-mgr.h
deleted file mode 100644
index ca2863b..0000000
--- a/include/mp-video-ctrl-mgr.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_VIDEO_CTRL_MGR_H_
-#define _MP_VIDEO_CTRL_MGR_H_
-
-
-bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData);
-bool MpVideoCtrlMgrMediaRealize(void);
-bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData);
-void MpVideoCtrlMgrMediaDestroy(void* pUserData);
-bool MpVideoCtrlMgrMediaPlay(void* pUserData);
-void MpVideoCtrlMgrMediaStop(void* pUserData);
-void MpVideoCtrlMgrMediaPause(void* pUserData);
-void MpVideoCtrlMgrMediaResume(void* pUserData);
-void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData);
-void MpVideoCtrlMgrSetOverlayXid(void* pXid);
-void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData);
-void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition);
-int MpVideoCtrlMgrGetPosition(void);
-int MpVideoCtrlMgrGetDuration(void);
-void MpVideoCtrlMgrResetPlaySpeed(void* pUserData);
-void MpVideoCtrlMgrSetPlaySpeedUp(void* pUserData);
-void MpVideoCtrlMgrSetPlaySpeedDown(void* pUserData);
-int MpVideoCtrlMgrGetVideoWidthResolution(void);
-int MpVideoCtrlMgrGetVideoHeightResolution(void);
-void MpVideoCtrlMgrSetRatioVideoScreen(void* pUserData, int nRatioScreenSize);
-void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue);
-void MpVideoCtrlMgrSetMute(bool bMuteEnable);
-bool MpVideoCtrlMgrGetMuteState(void);
-int MpVideoCtrlMgrGetBufferingPosition(void);
-bool MpVideoCtrlMgrIsExistPlayerHandle(void);
-bool MpVideoCtrlMgrIsOnlyAudio(void);
-bool MpVideoCtrlMgrSetScaling(bool bScale);
-int MpVideoCtrlMgrGetErrorType(int nErrorVal);
-void MpVideoCtrlMgrSetMute(bool bState);
-int MpVideoCtrlMgrGetClosedCaptionCount(void);
-
-
-#endif
diff --git a/include/mp-video-display-view.h b/include/mp-video-display-view.h
deleted file mode 100755
index 13c1cdc..0000000
--- a/include/mp-video-display-view.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-#ifndef _VIDEO_DISPLAY_VIEW_
-#define _VIDEO_DISPLAY_VIEW_
-
-
-typedef enum
-{
- MP_DISPLAY_VIEW_STATE_ACTIVATE = 0,
- MP_DISPLAY_VIEW_STATE_UNACTIVATE,
- MP_DISPLAY_VIEW_STATE_MAX,
-}VideoDisplayViewState;
-
-typedef void (*ChangeDisplayViewCbFunc)(int nChangePlayerView, void* pUserData);
-
-void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb);
-void MpVideoDisplayViewPop(void *pNaviFrame, void* pUserData);
-void MpVideoDisplayViewDestroy(void *pUserData);
-
-void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData);
-void MpVideoDisplayViewUpdatePauseKey(void);
-void MpVideoDisplayViewUpdateResumeKey(void);
-void MpVideoDisplayViewShowControlPanel(void *pUserData);
-void MpVideoDisplayViewHideControlPanel(void *pUserData);
-void MpVideoDisplayViewActivate(void);
-void MpVideoDisplayViewUnactivate(void);
-void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData);
-bool MpVideoDisplayViewIsTopView(void);
-void MpVideoDisplayViewShowNocontentImage(void *pUserData);
-void MpVideoDisplayViewHideNocontentImage(void);
-void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData);
-void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData);
-void MpVideoDisplayViewResetProgressBar(void *pUserData);
-bool MpVideoDisplayViewIsPauseByUser(void);
-void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser);
-void MpVideoDisplayViewUpdateProgressBar(void *pUserData);
-void MpVideoDisplayViewSetMuteStatus(bool bMute);
-
-#endif
diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h
deleted file mode 100755
index b87847d..0000000
--- a/include/mp-video-info-ctrl.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _VIDEO_INFO_CTRL_
-#define _VIDEO_INFO_CTRL_
-
-bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude);
-bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData);
-bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize);
-#endif
diff --git a/include/mp-video-info-view.h b/include/mp-video-info-view.h
deleted file mode 100755
index 468e638..0000000
--- a/include/mp-video-info-view.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_INFO_VIEW_
-#define _VIDEO_INFO_VIEW_
-
-
-void MpVideoInfoViewPush(void* pNaviFrame, void* pUserData);
-void MpVideoInfoViewPop(void* pNaviFrame, void* pUserData);
-void MpVideoInfoViewDestroy(void);
-
-
-#endif
diff --git a/include/mp-video-log.h b/include/mp-video-log.h
index 9a6caad..920b076 100644
--- a/include/mp-video-log.h
+++ b/include/mp-video-log.h
@@ -1,51 +1,57 @@
/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <stdbool.h>
#include <dlog.h>
#include <unistd.h>
#include <linux/unistd.h>
-
+#include <assert.h>
#ifdef LOG_TAG
#undef LOG_TAG
#endif
-#define LOG_TAG "video-player"
+#define LOG_TAG "VIDEOS"
+
+#define VideoLogInfoWithTid(fmt,arg...) LOGI_IF(true, "[VP][TID:%d]" fmt "\n", syscall(__NR_gettid), ##arg)
+#define VideoLogInfo(fmt,arg...) LOGI_IF(true, "[VP]" fmt "\n", ##arg)
+#define VideoLogDebug(fmt,arg...) LOGD_IF(true, " " fmt "\n", ##arg)
+#define VideoLogWarning(fmt,arg...) LOGW_IF(true, "\033[0;33m [WARN] " fmt "\033[0m\n", ##arg)
+#define VideoLogError( fmt,arg...) LOGE_IF(true, "\033[0;31m [ERR] " fmt "\033[0m\n", ##arg)
+
+#define VideoSecureLogInfoWithTid(fmt,arg...) SECURE_LOGI( "[VP][TID:%d]" fmt "\n", syscall(__NR_gettid), ##arg)
+#define VideoSecureLogDebug(fmt,arg...) SECURE_LOGD( " " fmt "\n",##arg)
+#define VideoSecureLogInfo(fmt,arg...) SECURE_LOGI( fmt "\n", ##arg)
+#define VideoSecureLogError( fmt,arg...) SECURE_LOGE( "\033[0;31m [ERR] " fmt "\033[0m\n", ##arg)
-//#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 PERF_CHECK_IN(fmt, arg...) LOGD_IF(true, "LAUNCH", "[video-player:Application:" fmt ":IN]", ##arg)
+#define PERF_CHECK_OUT(fmt, arg...) LOGD_IF(true, "LAUNCH", "[video-player:Application:" fmt ":OUT]", ##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 VideoLogAssert(expr) do { \
+ if(!(expr)) { \
+ VideoLogError("Critical ERROR ########################################## Check below item.");\
+ assert(0); \
+ } \
+} while (0)
//#define video_info(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
diff --git a/include/mp-video-player-mgr.h b/include/mp-video-player-mgr.h
deleted file mode 100644
index a85c80f..0000000
--- a/include/mp-video-player-mgr.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_VIDEO_PLAYER_MGR_H_
-#define _MP_VIDEO_PLAYER_MGR_H_
-
-
-#include <player.h>
-#include <sound_manager.h>
-#include <image_util.h>
-#include <mm_util_imgp.h>
-
-
-typedef enum
-{
- DISPLAY_METHOD_LETTER_BOX = 0,
- DISPLAY_METHOD_ORIGIN_SIZE,
- DISPLAY_METHOD_FULL_SCREEN,
- DISPLAY_METHOD_CROPPED_FULL,
- DISPLAY_METHOD_CUSTOM_ROI,
-}MpPlayerMgrDisplayMethod;
-
-
-typedef enum
-{
- VIDEO_SCREEN_UNKNOWN = 0,
- VIDEO_SCREEN_PORTRAIT,
- VIDEO_SCREEN_LANDSCAPE,
- VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN,
- VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN,
-}MpVideoRotation;
-
-
-typedef enum
-{
- SOUND_EFFECT_NORMAL = 0,
- SOUND_EFFECT_VOICE,
- SOUND_EFFECT_MOVIE,
- SOUND_EFFECT_51CH,
- SOUND_EFFECT_MAX,
-}MpSoundEffectType;
-
-
-typedef enum
-{
- FILE_STREAM_TYPE_NOTHING = 0,
- FILE_STREAM_TYPE_VIDEO_AUDIO,
- FILE_STREAM_TYPE_AUDIO,
- FILE_STREAM_TYPE_VIDEO,
- FILE_STREAM_TYPE_MAX,
-}MpFileStreamType;
-
-bool MpPlayerMgrIsActive(void);
-bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData);
-
-bool MpPlayerMgrCreate (const char* szPath);
-bool MpPlayerMgrDestroy (void);
-
-bool MpPlayerMgrRealize (void);
-bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData);
-
-bool MpPlayerMgrUnrealize(void);
-
-bool MpPlayerMgrPlay (void);
-bool MpPlayerMgrStop (void);
-bool MpPlayerMgrResume (void);
-bool MpPlayerMgrPause (void);
-
-int MpPlayerMgrGetPosition(void);
-void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData);
-void MpPlayerMgrSetSubtitlePosition(unsigned int nPos);
-
-void MpPlayerMgrSetMute(bool bMuteEnable);
-bool MpPlayerMgrGetMute(void);
-
-bool MpPlayerMgrSetSurroundFilters(int nSurround);
-
-
-int MpPlayerMgrGetDuration(void);
-bool MpPlayerMgrSetOverlayXid(void* pOverlayXid);
-bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID);
-
-bool MpPlayerMgrSetSoundPriority(void);
-int MpPlayerMgrSetPlaySpeed(float nSpeedValue);
-int MpPlayerMgrGetVideoWidthResolution(void);
-int MpPlayerMgrGetVideoHeightResolution(void);
-bool MpPlayerMgrSetSubtitle(char* szSubtitlePath);
-
-int MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight);
-bool MpPlayerMgrSetRotate(MpVideoRotation nRotation);
-bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode);
-
-bool MpPlayerMgrSetUseragentForStreaming(const char* szUserAgent);
-bool MpPlayerMgrSetProxyAddressForStreaming(const char* szProxyAddress);
-bool MpPlayerMgrSetCookieForStreaming(const char* szCookie);
-
-bool MpPlayerMgrStartCapture();
-bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData);
-
-int MpPlayerMgrGetBufferingPosition(void);
-bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData);
-int MpPlayerMgrGetFileStreamType(void);
-bool MpPlayerMgrSetScaling(bool bScale);
-void MpPlayerMgrSetVolume(float volume);
-float MpPlayerMgrGetVolume(void);
-
-player_state_e MpPlayerMgrGetPlayerState(void);
-
-int MpPlayerMgrGetClosedCaptionCount(void);
-
-#endif
diff --git a/include/mp-video-progressbar.h b/include/mp-video-progressbar.h
deleted file mode 100755
index a4bd205..0000000
--- a/include/mp-video-progressbar.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_PROGRESS_BAR_CTRL_
-#define _VIDEO_PROGRESS_BAR_CTRL_
-
-
-void* MpVideoProgressbarGetEdjHandle(void);
-void* MpVideoProgressbarInit(void* pUserData);
-void MpVideoProgressbarDestroy(void);
-void MpVideoProgressbarCreateTimer(void* pUserData);
-void MpVideoProgressbarDeleteTimer(void);
-void MpVideoProgressbarUpdateDurationTime(char* szDurationTime);
-void MpVideoProgressbarBeginOfStream(void *pUserData);
-void MpVideoProgressbarReset(void* pUserData);
-void MpVideoProgressbarSetSkipEvent(bool bSkip);
-
-#endif /* _VIDEO_PROGRESS_BAR_CTRL_ */
diff --git a/include/mp-video-service-ctrl.h b/include/mp-video-service-ctrl.h
deleted file mode 100644
index 9d8ddd5..0000000
--- a/include/mp-video-service-ctrl.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_SERVICE_CTRL_
-#define _VIDEO_SERVICE_CTRL_
-
-
-typedef enum
-{
- MP_ERROR_PLAYER_TYPE = 0,
- MP_NONE_VIEW_TYPE,
- MP_VIDEO_PLAYER,
- MP_VIDEO_PLAYER_SIMPLE,
- MP_VIDEO_PLAYER_EMAIL,
- MP_VIDEO_PLAYER_MMS,
- MP_VIDEO_PLAYER_GALLERY,
- MP_STREAMING_PLAYER,
- MP_MAX_PLAYER_TYPE,
-}MpPlayerViewType;
-
-
-void MpVideoServiceCtrlReset(void);
-int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri);
-
-
-int MpVideoServiceCtrlGetLatestTime(void);
-int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void);
-int MpVideoServiceCtrlGetPlayerType(void);
-void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType);
-int MpVideoServiceCtrlGetPrevPlayerType(void);
-void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType);
-char* MpVideoServiceCtrlGetCookieForStreaming(void);
-
-#endif //_VIDEO_SERVICE_CTRL_
diff --git a/include/mp-video-sound-path-ctrl.h b/include/mp-video-sound-path-ctrl.h
deleted file mode 100755
index 20c3f03..0000000
--- a/include/mp-video-sound-path-ctrl.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_VIDEO_SOUND_PATH_
-#define _MP_VIDEO_SOUND_PATH_
-
-
-bool MpVideoSoundpathShow(void* pUserData);
-void MpVideoSoundpathHide(void);
-
-bool MpVideoSoundpathIsConnectOtherSoundpath(void);
-
-#endif // _MP_VIDEO_SOUND_PATH_ \ No newline at end of file
diff --git a/include/mp-video-streaming-ctrl.h b/include/mp-video-streaming-ctrl.h
deleted file mode 100755
index 1d89bd1..0000000
--- a/include/mp-video-streaming-ctrl.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _STREAMING_PLAYER_H_
-#define _STREAMING_PLAYER_H_
-
-
-#ifdef USE_DNET
-int MpVideoStreamingCtrlConnection(void* pUserData);
-int MpVideoStreamingCtrlDisconnection(void* pUserData);
-int MpVideoStreamingCtrlIsConnected(void);
-#else
-bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress);
-bool MpVideoStreamingCtrlGetProxy(char* szRetProxy);
-bool MpVideoStreamingCtrlIsNetworkOn(void);
-int MpVideoStreamingCtrlGetNetworkStatus(void);
-int MpVideoStreamingCtrlGetWifiState();
-int MpVideoStreamingCtrlGetCellularState();
-bool MpVideoStreamingCtrlInit(void *pUserData);
-void MpVideoStreamingCtrlDestroy(void *pUserData);
-
-#endif
-
-
-#endif /* _STREAMING_PLAYER_H_ */
diff --git a/include/mp-video-streaming-view.h b/include/mp-video-streaming-view.h
deleted file mode 100755
index 490ddf1..0000000
--- a/include/mp-video-streaming-view.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_STREAMING_VIEW_
-#define _VIDEO_STREAMING_VIEW_
-
-
-typedef enum
-{
- MP_STREAMING_VIEW_STATE_ACTIVATE = 0,
- MP_STREAMING_VIEW_STATE_UNACTIVATE,
- MP_STREAMING_VIEW_STATE_MAX,
-}VideoStreamingViewState;
-
-typedef void (*ChangeStreamingViewCbFunc)(int nChangePlayerView, void* pUserData);
-
-void MpVideoStreamingViewPush(void* pNaviFrame, int nPlayerType, void* pUserData, ChangeStreamingViewCbFunc pChangeViewCb);
-void MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData);
-void MpVideoStreamingViewDestroy(void* pUserData);
-
-void MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData);
-void MpVideoStreamingViewUpdatePauseKey(void);
-void MpVideoStreamingViewUpdateResumeKey(void);
-void MpVideoStreamingViewShowControlPanel(void* pUserData);
-void MpVideoStreamingViewHideControlPanel(void* pUserData);
-void MpVideoStreamingViewActivate(void);
-void MpVideoStreamingViewUnactivate(void);
-void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide);
-void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate);
-bool MpVideoStreamingViewGetBufferingState(void);
-bool MpVideoStreamingViewIsTopView(void);
-void MpVideoStreamingViewShowNocontentImage(void *pUserData);
-void MpVideoStreamingViewHideNocontentImage(void);
-void MpVideoStreamingViewPortrate(void);
-void MpVideoStreamingViewLandscape(void);
-void MpVideoStreamingViewUpdateProgressBar(void *pUserData);
-void MpVideoStreamingViewSetMuteStatus(bool bMute);
-
-#endif
diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h
index b53cd2a..c73efaa 100644
--- a/include/mp-video-string-define.h
+++ b/include/mp-video-string-define.h
@@ -1,166 +1,292 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_STRING_DEFINE_
-#define _VIDEO_STRING_DEFINE_
-
-#include <app.h>
-
-#define MP_SYS_STRING "sys_string"
-#define MP_STREAMING_PLAYER_STR "Streaming player"
-#define MP_VPL_SOUND_ALIVE "Sound Alive"
-#define MP_VPL_ADD_TO_HOME _("IDS_AT_BUTTON_ADD_TO_HOME")
-#define MP_VIDEO_SOUND_PATH "Sound Path"
-
-
-
-
-/* SMTP Repeat mode string */
-#define MP_VPL_REPEAT_OFF "Stop after current "
-#define MP_VPL_REPEAT_ALL_OFF "Stop after playing all "
-#define MP_VPL_REPEAT_ONE "Repeat the current "
-#define MP_VPL_REPEAT_ALL "Repeat all "
-
-
-#define MP_SHARE_MESSAGE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MESSAGE"))
-#define MP_SHARE_EMAIL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_EMAIL"))
-#define MP_SHARE_BLUETOOTH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_BLUETOOTH"))
-#define MP_SHARE_FTM (dgettext(MP_SYS_STRING, "IDS_COM_BODY_WI_FI"))
-#define MP_SHARE_FACEBOOK (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FACEBOOK"))
-#define MP_SHARE_YOUTUBE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_YOU_TUBE"))
-#define MP_SHARE_ALLSHARE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_ALLSHARE"))
-
-
-// SMTP video player string
-#define MP_VPL_UNABLE_TO_PLAY_VIDEO "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-#define MP_VPL_HEADER_SHARE_VIDEO_ABB "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-#define MP_VPL_OPT_SET_AS "IDS_VPL_OPT_SET_AS"
-#define MP_VPL_POP_INVALID_STREAMING_DATA "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-#define MP_VPL_SOUND_ALIVE_NORMAL "IDS_VPL_OPT_NORMAL"
-#define MP_VPL_SOUND_ALIVE_VOICE "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-#define MP_VPL_SOUND_ALIVE_MOVIE "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-#define MP_VPL_SOUND_ALIVE_51CH "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-#define MP_VPL_51CH_ONLY_EARPHONE "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-#define MP_VPL_GPS_LATITUDE "IDS_VPL_BODY_LATITUDE"
-#define MP_VPL_GPS_LONGITUTD "IDS_VPL_BODY_LONGITUDE"
-#define MP_VPL_TRIM "IDS_VPL_SK3_TRIM"
-#define MP_VPL_SUBTITLES "IDS_VPL_OPT_SUBTITLES"
-#define MP_VPL_AUDIO_TRACK _("IDS_VPL_OPT_AUDIO_TRACK")
-#define MP_VPL_VIDEO_AUTO_OFF _("IDS_VPL_HEADER_VIDEO_AUTO_OFF_ABB")
-#define MP_VPL_BODY_NORMAL _("IDS_VPL_BODY_NORMAL")
-#define MP_VPL_BODY_WARM _("IDS_VPL_BODY_WARM")
-#define MP_VPL_BODY_COLD _("IDS_VPL_BODY_COLD_M_COLOURTONE")
-#define MP_VPL_BODY_COLOR_TONE _("IDS_VPL_BODY_COLOUR_TONE")
-#define MP_VPL_OUTDOOR_VISIBILITY _("IDS_VPL_OPT_OUTDOOR_VISIBILITY")
-#define MP_VPL_BODY_AFTER_PD_HOURS _("IDS_VPL_BODY_AFTER_PD_HOURS")
-#define MP_VPL_BODY_AFTER_PD_MINUTES _("IDS_VPL_BODY_AFTER_PD_MINUTES")
-#define MP_VPL_OPT_AFTER_1_HOUR_30_MIN _("IDS_VPL_OPT_AFTER_1_HOUR_30_MIN")
-#define MP_VPL_BODY_AFTER_1_HOUR _("IDS_VPL_BODY_AFTER_1_HOUR")
-
-
-/* SMTP Subtitle option string */
-#define MP_VPL_SUBTITLE_SIZE_LARGE _("IDS_VPL_BODY_LARGE")
-#define MP_VPL_SUBTITLE_SIZE_MEDIUM _("IDS_VPL_BODY_MEDIUM")
-#define MP_VPL_SUBTITLE_SIZE_SMALL _("IDS_VPL_BODY_SMALL")
-#define MP_VPL_SUBTITLE_SHOW _("IDS_VPL_BODY_SUBTITLES_ON")
-#define MP_VPL_SUBTITLE_HIDE _("IDS_VPL_BODY_SUBTITLES_OFF")
-#define MP_VPL_SUBTITLE_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE"))
-#define MP_VPL_SUBTITLE_LANGUAGE (dgettext(MP_SYS_STRING, "IDS_COM_SK_LANGUAGE"))
-#define MP_VPL_SUBTITLE_SYNC (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SYNCHRONIZE"))
-
-
-// SMTP others module string
-#define MP_BT_POP_FILEBROWSINGFAIL "IDS_BT_POP_FILEBROWSINGFAIL"
-#define MP_BLUETOOTH_HEADSET_DISCONNECTED "IDS_DVBH_POP_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-#define MP_WGT_POP_ALLOW_TO_DELETE_FILE_Q "IDS_WGT_POP_ALLOW_TO_DELETE_FILE_Q"
-#define MP_EBOOK_BODY_LOADING_ING "IDS_EBOOK_BODY_LOADING_ING"
-#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-
-// SORT
-#define MP_VPL_SORT_BY_TITLE _("IDS_VPL_OPT_SORT_BY")
-#define MP_VPL_OPT_NAME_HA_TO_Z _("IDS_VPL_OPT_NAME_HA_TO_Z")
-#define MP_VPL_OPT_NAME_HZ_TO_A _("IDS_VPL_OPT_NAME_HZ_TO_A")
-#define MP_VPL_OPT_DATE_HMOST_RECENT _("IDS_VPL_OPT_DATE_HMOST_RECENT")
-#define MP_VPL_OPT_DATE_HOLDEST _("IDS_VPL_OPT_DATE_HOLDEST")
-
-
-// Default system string
-#define MP_COM_POP_ERROR (dgettext(MP_SYS_STRING, "IDS_COM_POP_ERROR"))
-#define MP_COM_BODY_LOW_BATTERY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOW_BATTERY"))
-#define MP_COM_BODY_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DELETE"))
-#define MP_COM_BODY_DELETE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETE_Q"))
-#define MP_COM_BODY_SELECT_ALL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SELECT_ALL"))
-#define MP_COM_POP_SELECTED (dgettext(MP_SYS_STRING, "IDS_COM_POP_SELECTED"))
-#define MP_COM_POP_DELETED (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETED"))
-#define MP_COM_SK_BACK (dgettext(MP_SYS_STRING, "IDS_COM_SK_BACK"))
-
-#define MP_COM_SK_YES (dgettext(MP_SYS_STRING, "IDS_COM_SK_YES"))
-#define MP_COM_SK_NO (dgettext(MP_SYS_STRING, "IDS_COM_SK_NO"))
-#define MP_COM_BUTTON_CANCEL (dgettext(MP_SYS_STRING, "IDS_IDLE_BUTTON_CANCEL"))
-#define MP_COM_BUTTON_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_BUTTON_SHARE"))
-#define MP_COM_BODY_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE"))
-#define MP_COM_BODY_DETAILS_TITLE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS_TITLE"))
-#define MP_COM_BODY_FORMAT (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FORMAT"))
-#define MP_COM_POP_DATE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DATE" ))
-#define MP_COM_BODY_SOUNDS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS"))
-#define MP_IDLE_BODY_RESOLUTION (dgettext(MP_SYS_STRING, "IDS_IDLE_BODY_RESOLUTION"))
-#define MP_COM_BODY_DETAILS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS"))
-#define MP_VIDEO_POPUP_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_SK4_SHARE"))
-#define MP_COM_SEARCH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SEARCH"))
-#define MP_COM_CLOSE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_CLOSE"))
-
-#define MP_COM_SOUND_ALIVE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS"))
-#define MP_COM_SETTINGS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SETTINGS"))
-#define MP_COM_POP_FILE_NOT_FOUND (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_FOUND"))
-#define MP_COM_POP_INVALID_URL (dgettext(MP_SYS_STRING, "IDS_COM_POP_INVALID_URL"))
-#define MP_COM_POP_CONNECTION_FAILED (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_FAILED"))
-#define MP_COM_POP_FILE_NOT_EXIST (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_EXIST"))
-#define MP_COM_POP_NO_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_NO_VIDEOS"))
-#define MP_COM_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_VIDEOS"))
-#define MP_COM_FOLDER (dgettext(MP_SYS_STRING, "IDS_COM_POP_FOLDER"))
-#define MP_COM_CANCEL (dgettext(MP_SYS_STRING, "IDS_COM_SK_CANCEL"))
-#define MP_COM_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_OPT_DELETE"))
-#define MP_COM_CONNECTION_FAIL (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_ERROR"))
-#define MP_COM_REPEAT_MODE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_REPEAT"))
-#define MP_COM_OPT_ADDED (dgettext(MP_SYS_STRING, "IDS_COM_OPT_ADDED"))
-#define MP_COM_BODY_GENERAL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_GENERAL"))
-#define MP_COM_BODY_DISPLAY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DISPLAY"))
-#define MP_COM_BODY_OFF (dgettext(MP_SYS_STRING, "IDS_COM_BODY_OFF"))
-#define MP_COM_RECORDED _("IDS_VPL_BODY_RECORDED")
-
-#define MP_VIDEO_CHAPTER_VIEW _("IDS_VPL_HEADER_CHAPTER_PREVIEW_ABB")
-
-#define MP_VPL_SORT_BY "Sort by"
-#define MP_VPL_BOOKMARK_LIST_FULL _("IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS")
-
-/* DRM POPUP */
-#define MP_VPL_DRM_INTERVAL_BASED_DAYS _("You can use %s for %d days. Would you like to open it now?")
-#define MP_VPL_DRM_TIME_BASED_GET _("%s is about to be locked. Do you want to get more licenses?")
-#define MP_VPL_DRM_COUNT_BASED_OPEN_ONE _("You have one more use of %s. Do you want to open it now?")
-#define MP_VPL_DRM_COUNT_BASED_OPEN_MANY _("You have %d more uses of %s. Do you want to open it now?")
-#define MP_VPL_DRM_COUNT_BASED_ONE_MORE_GET _("You have one more use of %s. Do you want to get more licenses?")
-#define MP_VPL_DRM_COUNT_BASED_NO_MORE_GET _("You have no more use of %s. Do you want to get more licenses?")
-#define MP_VPL_DRM_UNLOCK _("%s is currently locked. Do you want to unlock it now?")
-
-/*DV*/
-#define DV_BTN_LABEL_SEARCH (dgettext("sys_string", "IDS_COM_SK_SEARCH"))
-#define DV_BTN_LABEL_CANCEL (dgettext("sys_string", "IDS_COM_SK_CANCEL"))
-
-#endif //_VIDEO_STRING_DEFINE_
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#ifndef _VIDEO_STRING_DEFINE_
+#define _VIDEO_STRING_DEFINE_
+
+
+#include <app.h>
+
+
+#define MP_SYS_STRING "sys_string"
+#define VIDEOS_STRING "videos"
+
+#define VIDEOS_GET_STR(x) dgettext(VIDEOS_STRING, x)
+#define VIDEOS_GET_STR_FMT(x) _(dgettext(VIDEOS_STRING, x))
+
+/*--------------------------------------------String Define---------------------------------------------------*/
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Title, System
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#define VIDEOS_TITLE_VIDEO VIDEOS_GET_STR("IDS_VIDEO_OPT_VIDEOS")
+#define VIDEOS_TITLE_VIDEO_PLAYER (dgettext(MP_SYS_STRING, "IDS_COM_BODY_VIDEO_PLAYER"))
+#define VIDEOS_ALERT_LOW_BATTERY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOW_BATTERY"))
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Popup
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Common //
+#define VIDEOS_COMMON_BUTTON_YES_IDS ("IDS_COM_SK_YES")
+#define VIDEOS_COMMON_BUTTON_NO_IDS ("IDS_COM_SK_NO")
+#define VIDEOS_COMMON_BUTTON_OK (dgettext(MP_SYS_STRING, "IDS_COM_SK_OK"))
+#define VIDEOS_COMMON_BUTTON_OK_IDS ("IDS_COM_SK_OK")
+#define VIDEOS_COMMON_BUTTON_CANCEL VIDEOS_GET_STR("IDS_VIDEO_SK_CANCEL_ABB")
+#define VIDEOS_COMMON_BUTTON_CANCEL_IDS ("IDS_CLOCK_BUTTON_CANCEL")
+#define VIDEOS_COMMON_BUTTON_CLOSE_IDS ("IDS_COM_BODY_CLOSE")
+#define VIDEOS_COMMON_HEADER_ERROR (dgettext(MP_SYS_STRING, "IDS_COM_POP_ERROR"))
+#define VIDEOS_COMMON_MSG_DONT_ASK_AGAIN_IDS ("IDS_MUSIC_BUTTON_DONT_ASK_AGAIN")
+#define VIDEOS_COMMON_BUTTON_RENAME_IDS ("IDS_VIDEO_OPT_RENAME")
+
+// Context popup //
+#define VIDEOS_CTXPOP_MENU_DOWNLOAD VIDEOS_GET_STR("IDS_VIDEO_BUTTON_DOWNLOAD")
+#define VIDEOS_CTXPOP_MENU_DOWNLOAD_IDS ("IDS_VIDEO_BUTTON_DOWNLOAD")
+#define VIDEOS_CTXPOP_MENU_SEARCH VIDEOS_GET_STR("IDS_VIDEO_OPT_SEARCH")
+#define VIDEOS_CTXPOP_MENU_SEARCH_IDS ("IDS_VIDEO_OPT_SEARCH")
+#define VIDEOS_CTXPOP_MENU_SHARE VIDEOS_GET_STR("IDS_VIDEO_OPT_SHARE")
+#define VIDEOS_CTXPOP_MENU_SHARE_IDS ("IDS_VIDEO_OPT_SHARE")
+#define VIDEOS_CTXPOP_MENU_DELETE VIDEOS_GET_STR("IDS_VIDEO_BUTTON_DELETE")
+#define VIDEOS_CTXPOP_MENU_DELETE_IDS ("IDS_VIDEO_BUTTON_DELETE")
+#define VIDEOS_CTXPOP_MENU_VIEW_AS VIDEOS_GET_STR("IDS_VIDEO_OPT_VIEW_AS")
+#define VIDEOS_CTXPOP_MENU_VIEW_AS_IDS ("IDS_VIDEO_OPT_VIEW_AS")
+#define VIDEOS_CTXPOP_MENU_SORT_BY VIDEOS_GET_STR("IDS_VIDEO_OPT_SORT_BY")
+#define VIDEOS_CTXPOP_MENU_SORT_BY_IDS ("IDS_VIDEO_OPT_SORT_BY")
+#define VIDEOS_CTXPOP_MENU_RENAME VIDEOS_GET_STR("IDS_VIDEO_OPT_RENAME")
+#define VIDEOS_CTXPOP_MENU_RENAME_IDS ("IDS_VIDEO_OPT_RENAME")
+#define VIDEOS_CTXPOP_MENU_DETAILS VIDEOS_GET_STR("IDS_VIDEO_OPT_DETAILS")
+#define VIDEOS_CTXPOP_MENU_DETAILS_IDS ("IDS_VIDEO_OPT_DETAILS")
+#define VIDEOS_CTXPOP_MENU_ADD_TO_HOME VIDEOS_GET_STR("IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN")
+#define VIDEOS_CTXPOP_MENU_CONTENT_TO_DISPLAY VIDEOS_GET_STR("IDS_VIDEO_OPT_CONTENT_TO_DISPLAY_ABB")
+#define VIDEOS_CTXPOP_MENU_CONTENT_TO_DISPLAY_IDS ("IDS_VIDEO_OPT_CONTENT_TO_DISPLAY_ABB")
+#define VIDEOS_CTXPOP_MENU_MOVE_TO_PRIVATE VIDEOS_GET_STR("IDS_GALLERY_OPT_MOVE_TO_PRIVATE")
+#define VIDEOS_CTXPOP_MENU_REMOVE_FROM_PRIVATE VIDEOS_GET_STR("IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE")
+
+// Delete popup //
+#define VIDEOS_DELETEPOP_HEADER_DELETE VIDEOS_GET_STR("IDS_VIDEO_BUTTON_DELETE")
+#define VIDEOS_DELETEPOP_BUTTON_DELETE VIDEOS_GET_STR("IDS_VIDEO_BUTTON_DELETE")
+#define VIDEOS_DELETEPOP_BUTTON_DELETE_ALL VIDEOS_GET_STR("IDS_ST_OPT_DELETE_ALL")
+#define VIDEOS_DELETEPOP_MSG_PD_VIDEOS_WILL_BE_DELETED VIDEOS_GET_STR_FMT("IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_ONE_VIDEO_WILL_BE_DELETED VIDEOS_GET_STR("IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_ALL_VIDEOS_WILL_BE_DELETED VIDEOS_GET_STR("IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_ONE_FOLDER_WILL_BE_DELETED VIDEOS_GET_STR("IDS_MUSIC_POP_1_FOLDER_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_ONE_FOLDER_WILL_BE_DELETED_IDS ("IDS_MUSIC_POP_1_FOLDER_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_THIS_FOLDER_WILL_BE_DELETED_IDS VIDEOS_GET_STR("IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_PD_FOLDERS_WILL_BE_DELETED VIDEOS_GET_STR_FMT("IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_ALL_FOLDERS_WILL_BE_DELETED VIDEOS_GET_STR("IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED")
+#define VIDEOS_DELETEPOP_MSG_DELETING VIDEOS_GET_STR("IDS_VIDEO_TPOP_DELETING_ING")
+#define VIDEOS_DELETEPOP_MSG_DELETING_IDS ("IDS_VIDEO_TPOP_DELETING_ING")
+#define VIDEOS_DELETEPOP_HEADER_DELETE_VIDEO VIDEOS_GET_STR("IDS_VIDEO_HEADER_DELETE_VIDEO") // not be used in lite
+#define VIDEOS_DELETEPOP_HEADER_DELETE_VIDEOS VIDEOS_GET_STR("IDS_VIDEO_HEADER_DELETE_VIDEOS") // not be used in lite
+#define MP_COM_POP_DELETED (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETED")) // not be used in lite
+
+// Rename popup //
+#define VIDEOS_RENAMEPOP_HEADER_RENAME VIDEOS_GET_STR("IDS_VIDEO_OPT_RENAME")
+#define VIDEOS_RENAMEPOP_HEADER_RENAME_IDS ("IDS_VIDEO_OPT_RENAME")
+#define VIDEOS_RENAMEPOP_BUTTON_RENAME VIDEOS_GET_STR("IDS_VIDEO_OPT_RENAME")
+#define VIDEOS_RENAMEPOP_BUTTON_RENAME_IDS ("IDS_VIDEO_OPT_RENAME")
+
+// View as popup //
+#define VIDEOS_VIEWASPOP_HEADER_VIEW_AS VIDEOS_GET_STR("IDS_VIDEO_OPT_VIEW_AS")
+#define VIDEOS_VIEWASPOP_HEADER_VIEW_AS_IDS ("IDS_VIDEO_OPT_VIEW_AS")
+
+// Sort by popup //
+#define VIDEOS_SORTBYPOP_HEADER_SORT_BY VIDEOS_GET_STR("IDS_VIDEO_OPT_SORT_BY")
+#define VIDEOS_SORTBYPOP_HEADER_SORT_BY_IDS ("IDS_VIDEO_OPT_SORT_BY")
+
+// Download popup //
+#define VIDEOS_DOWNLOADPOP_MSG_1_VIDEO_WILL_BE_DOWNLOADED "1 video will be downloaded." // TODO. need to change STMS string after release new ID
+#define VIDEOS_DOWNLOADPOP_MSG_PD_VIDEOS_WILL_BE_DOWNLOADED "%d videos will be downloaded." // TODO. need to change STMS string after release new ID
+#define VIDEOS_DOWNLOADPOP_MSG_ALL_VIDEOS_WILL_BE_DOWNLOADED "All videos will be downloaded." // TODO. need to change STMS string after release new ID
+#define VIDEOS_DOWNLOADPOP_BUTTON_DOWNLOAD VIDEOS_GET_STR("IDS_VIDEO_BUTTON_DOWNLOAD")
+
+// Move popup (not be used for lite) //
+#define MP_PERSONAL_ITEM_MOVE_TO VIDEOS_GET_STR_FMT("IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS")
+#define MP_PERSONAL_ITEMS_MOVE_TO VIDEOS_GET_STR_FMT("IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS")
+#define MP_PERSONAL_DONT_ASK_AGAIN VIDEOS_GET_STR("IDS_MUSIC_BUTTON_DONT_ASK_AGAIN")
+#define MP_TEXT_MOVING_IDS ("IDS_VIDEO_POP_MOVING_ING")
+#define MP_TEXT_MOVING VIDEOS_GET_STR("IDS_VIDEO_POP_MOVING_ING")
+#define MP_TEXT_REMOVING_IDS ("IDS_VIDEO_POP_REMOVING_ING")
+#define MP_BUTTON_MOVE_IDS ("IDS_VIDEO_BUTTON_MOVE_ABB")
+#define MP_COM_OPT_ADDED (dgettext(MP_SYS_STRING, "IDS_COM_OPT_ADDED")) // status bar noti
+#define MP_COM_OPT_UNABLE_ADDED (dgettext(MP_SYS_STRING, "IDS_COM_BODY_UNABLE_TO_ADD")) // status bar noti
+#define MP_COM_BODY_MOVE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MOVE"))
+
+// Share panel (not used at lite) //
+#define MP_SHARE_BLUETOOTH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_BLUETOOTH"))
+#define MP_SHARE_FTM (dgettext(MP_SYS_STRING, "IDS_COM_OPT1_WI_FI_DIRECT"))
+#define MP_SHARE_MESSAGE VIDEOS_GET_STR("IDS_VIDEO_OPT_MESSAGE_ABB")
+#define MP_SHARE_EMAIL VIDEOS_GET_STR("IDS_VIDEO_OPT_EMAIL_ABB")
+
+// Notificatioin msg (noti, toast popup) //
+#define VIDEOS_NOTIPOP_MSG_ALREADY_EXISTS VIDEOS_GET_STR("IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE")
+#define VIDEOS_NOTIPOP_MSG_ALREADY_EXISTS_IDS ("IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE")
+#define VIDEOS_NOTIPOP_MSG_SHARE_ITEM_MAX VIDEOS_GET_STR_FMT("IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED")
+#define VIDEOS_NOTIPOP_MSG_UNABLE_TO_PLAY_THIS_VIDEO_SIDESYNC VIDEOS_GET_STR("IDS_VIDEO_POP_UNABLE_TO_PLAY_THIS_VIDEO_WHILE_USING_SIDESYNC")
+#define VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS VIDEOS_GET_STR("IDS_SWALL_HEADER_INVALID_CHARACTER")
+#define VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS dgettext(MP_SYS_STRING, "IDS_COM_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED")
+#define VIDEOS_NOTIPOP_MSG_CONNECTION_FAIL (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_ERROR"))
+#define VIDEOS_NOTIPOP_MSG_FILE_NOT_EXIST (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_EXIST"))
+#define VIDEOS_NOTIPOP_MSG_UNABLE_TO_SHARE_DRM_FILE VIDEOS_GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE") // it will be removed. // not be used for lite
+#define VIDEOS_NOTIPOP_MSG_UNABLE_TO_PLAY_VIDEO_DURING_CALL VIDEOS_GET_STR("IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL")
+#define VIDEOS_NOTIPOP_MSG_TURN_PHONE_OVER_TO_MUTE_IDS ("IDS_VPL_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS")
+#define VIDEOS_NOTIPOP_MSG_CLOUD_FILE_CONNECT_FAIL ("IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN")
+#define VIDEOS_NOTIPOP_MSG_MOVE_TO_PERSONAL_STORAGE_FAILED VIDEOS_GET_STR("IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE")
+#define VIDEOS_NOTIPOP_MSG_MOVE_TO_NORMAL_STORAGE_FAILED VIDEOS_GET_STR("IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE")
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Option
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Sort by //
+#define VIDEOS_SORTBYOPT_OPT_DATE_MOST_RECENT VIDEOS_GET_STR("IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB")
+#define VIDEOS_SORTBYOPT_OPT_NAME VIDEOS_GET_STR("IDS_VIDEO_OPT_NAME_HA_Z_ABB")
+#define VIDEOS_SORTBYOPT_OPT_RECENTLY_VIEWED VIDEOS_GET_STR("IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB")
+#define VIDEOS_SORTBYOPT_OPT_RECENTLY_ADDED VIDEOS_GET_STR("IDS_VIDEO_OPT_RECENTLY_ADDED_ABB")
+#define VIDEOS_SORTBYOPT_OPT_TITLE VIDEOS_GET_STR("IDS_VIDEO_OPT_TITLE")
+#define VIDEOS_SORTBYOPT_OPT_SIZE VIDEOS_GET_STR("IDS_VIDEO_OPT_SIZE")
+#define VIDEOS_SORTBYOPT_OPT_TYPE VIDEOS_GET_STR("IDS_VIDEO_OPT_TYPE")
+
+// Veiw as //
+#define VIDEOS_VIEWASOPT_OPT_LIST VIDEOS_GET_STR("IDS_VIDEO_OPT_LIST")
+#define VIDEOS_VIEWASOPT_OPT_THUMBNAIL VIDEOS_GET_STR("IDS_VIDEO_OPT_VIDEOS") // not be used for lite
+#define VIDEOS_VIEWASOPT_OPT_FOLDER VIDEOS_GET_STR("IDS_VIDEO_OPT_FOLDERS_ABB")
+#define VIDEOS_TITLE_OPT_FOLDER VIDEOS_GET_STR("IDS_VIDEO_OPT_FOLDERS_ABB")
+
+// Content to display //
+#define VIDEOS_CONTENTTODISPLAYOPT_OPT_ALLCONTENT VIDEOS_GET_STR("IDS_VPL_OPT_ALL_CONTENT_ABB")
+#define VIDEOS_CONTENTTODISPLAYOPT_OPT_PHONE VIDEOS_GET_STR("IDS_VPL_OPT_CONTENT_ON_DEVICE_ABB")
+#define VIDEOS_CONTENTTODISPLAYOPT_OPT_CLOUD VIDEOS_GET_STR("IDS_VPL_OPT_CONTENT_IN_DROPBOX_ABB")
+
+//dropbox
+#define VIDEOS_POP_CLOUD_FILE_CONNECT_FAIL ("IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN")
+#define VIDEOS_VIEW_DROPBOX_NAME VIDEOS_GET_STR("IDS_CLOUD_BODY_DROPBOX_ABB")
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// View
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Nocontent //
+#define VIDEOS_NOCONTENT_MSG_NO_VIDEOS VIDEOS_GET_STR("IDS_VIDEO_NPBODY_NO_VIDEOS")
+#define VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS VIDEOS_GET_STR("IDS_VIDEO_NPBODY_NO_VIDEOS")
+#define VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC VIDEOS_GET_STR("IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE")
+#define VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS ("IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE")
+
+// List view //
+#define VIDEOS_LISTVIEW_BODY_ONE_VIDEO VIDEOS_GET_STR("IDS_VPL_BODY_1_VIDEO")
+#define VIDEOS_LISTVIEW_BODY_PD_VIDEOS VIDEOS_GET_STR_FMT("IDS_VIDEO_HEADER_PD_VIDEOS")
+
+// Folder view //
+#define VIDEOS_FOLDERVIEW_BODY_ONE_FOLDER VIDEOS_GET_STR("IDS_VPL_BODY_1_FOLDER")
+#define VIDEOS_FOLDERVIEW_BODY_PD_FOLDERS VIDEOS_GET_STR_FMT("IDS_VIDEO_HEADER_PD_FOLDERS")
+#define VIDEOS_FOLDERVIEW_BODY_DEVICE_MEMORY VIDEOS_GET_STR("IDS_IS_BODY_DEVICE_MEMORY_ABB")
+#define VIDEOS_FOLDERVIEW_BODY_SD_CARD VIDEOS_GET_STR("IDS_IS_BODY_SD_CARD")
+#define VIDEOS_FOLDERVIEW_BODY_USB_MEMORY VIDEOS_GET_STR("IDS_IS_BODY_SD_CARD") // need to add IDS about USB memory
+
+// Folder item view //
+
+// Search view //
+#define VIDEOS_SEARCHVIEW_MSG_NO_RESULTS_FOUND_IDS ("IDS_MUSIC_BODY_NO_RESULTS_FOUND")
+#define VIDEOS_SEARCHVIEW_MSG_NO_SEARCH_RESULTS VIDEOS_GET_STR("IDS_VIDEO_BODY_NO_SEARCH_RESULTS")
+#define VIDEOS_SEARCHVIEW_MSG_NO_SEARCH_RESULTS_IDS ("IDS_VIDEO_BODY_NO_SEARCH_RESULTS")
+
+// Share view //
+#define VIDEOS_SHAREVIEW_DONE_IDS VIDEOS_GET_STR("IDS_TPLATFORM_ACBUTTON_DONE_ABB")
+#define VIDEOS_SHAREVIEW_CANCEL_IDS VIDEOS_GET_STR("IDS_TPLATFORM_ACBUTTON_CANCEL_ABB")
+// Delete view //
+#define VIDEOS_DELETEVIEW_DELETE_IDS VIDEOS_GET_STR("IDS_TPLATFORM_ACBUTTON_DELETE_ABB")
+#define VIDEOS_DELETEVIEW_CANCEL_IDS VIDEOS_GET_STR("IDS_TPLATFORM_ACBUTTON_CANCEL_ABB")
+
+// Select view //
+#define VIDEOS_SELECTVIEW_HEADER_PD_SELECTED VIDEOS_GET_STR_FMT("IDS_VIDEO_HEADER_PD_SELECTED")
+#define VIDEOS_SELECTVIEW_BODY_SELECT_ALL VIDEOS_GET_STR_FMT("IDS_VIDEO_HEADER_SELECT_ALL")
+#define VIDEOS_SELECTVIEW_BODY_SELECT_ALL_IDS ("IDS_VIDEO_HEADER_SELECT_ALL")
+#define VIDEOS_SELECTVIEW_HEADER_SELECT_ITEMS VIDEOS_GET_STR("IDS_VPL_BODY_SELECT_ITEMS") // not be used in lite
+#define VIDEOS_SELECTVIEW_HEADER_SELECT_ITEMS_IDS ("IDS_VPL_BODY_SELECT_ITEMS") // not be used in lite
+#define VIDEOS_SELECTVIEW_HEADER_SELECT VIDEOS_GET_STR("IDS_GALLERY_HEADER_SELECT")
+#define VIDEOS_SELECTVIEW_HEADER_SELECT_IDS ("IDS_GALLERY_HEADER_SELECT")
+#define VIDEOS_SELECTVIEW_HEADER_SELECT_VIDEO VIDEOS_GET_STR("IDS_GALLERY_HEADER_SELECT_VIDEO")
+
+// Rename view //
+#define VIDEOS_RENAMEVIEW_HEADER_RENAME VIDEOS_GET_STR("IDS_VIDEO_OPT_RENAME")
+#define VIDEOS_RENAMEVIEW_HEADER_RENAME_IDS ("IDS_VIDEO_OPT_RENAME")
+
+// Detail view //
+#define VIDEOS_DETAILVIEW_HEADER_DETAILS VIDEOS_GET_STR("IDS_VIDEO_OPT_DETAILS")
+#define VIDEOS_DETAILVIEW_HEADER_DETAILS_IDS ("IDS_VIDEO_OPT_DETAILS")
+#define VIDEOS_DETAILVIEW_BODY_TITLE VIDEOS_GET_STR("IDS_VIDEO_OPT_TITLE")
+#define VIDEOS_DETAILVIEW_BODY_SIZE VIDEOS_GET_STR("IDS_VIDEO_OPT_SIZE")
+#define VIDEOS_DETAILVIEW_BODY_DATE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DATE" ))
+#define VIDEOS_DETAILVIEW_BODY_FORMAT VIDEOS_GET_STR("IDS_VPL_OPT_FORMAT")
+#define VIDEOS_DETAILVIEW_BODY_RESOLUTION VIDEOS_GET_STR("IDS_VIDEO_BODY_RESOLUTION")
+#define VIDEOS_DETAILVIEW_BODY_LAST_MODIFIED ("Last modified")
+#define VIDEOS_DETAILVIEW_BODY_LOCATION (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOCATION"))
+#define VIDEOS_DETAILVIEW_BODY_LATITUDE VIDEOS_GET_STR("IDS_VIDEO_BODY_LATITUDE")
+#define VIDEOS_DETAILVIEW_BODY_LONGITUDE VIDEOS_GET_STR("IDS_VIDEO_BODY_LONGITUDE")
+#define VIDEOS_DETAILVIEW_BODY_UNKNOWN ("Unknown")
+#define VIDEOS_DETAILVIEW_BODY_KB (dgettext(MP_SYS_STRING, "IDS_COM_BODY_KB"))
+#define VIDEOS_DETAILVIEW_BODY_B (dgettext(MP_SYS_STRING, "IDS_COM_BODY_B"))
+#define VIDEOS_DETAILVIEW_BODY_MB (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MB"))
+#define VIDEOS_DETAILVIEW_BODY_GB (dgettext(MP_SYS_STRING, "IDS_COM_BODY_GB"))
+
+// Device view // // not be used in lite
+#define VP_TEXT_NOT_TO_CONNECT_WIFI_IDS ("IDS_IS_BODY_YOU_NEED_TO_BE_CONNECTED_TO_A_WI_FI_NETWORK_TO_SCAN_FOR_NEARBY_DEVICES_CONNECT_VIA_WI_FI_AND_TRY_AGAIN")
+#define VP_TEXT_NO_DEVICE_FOUND_IDS ("IDS_IS_BODY_NO_DEVICES_FOUND_ENABLE_THE_SHARE_CONTENT_FUNCTION_ON_YOUR_NEARBY_DEVICES")
+#define MP_VPL_LIST_CTX_NEAR_BY_DEVICE VIDEOS_GET_STR("IDS_VIDEO_OPT_NEARBY_DEVICES_ABB")
+#define MP_VPL_LIST_CTX_NEAR_BY_DEVICE_IDS ("IDS_VIDEO_OPT_NEARBY_DEVICES_ABB")
+#define VS_TEXT_DISCONNECT_DEVICE VIDEOS_GET_STR_FMT("IDS_DLNA_POP_DISCONNECTED_FROM_PS_CHECK_THE_NETWORK_STATUS_AND_THE_CONNECTED_DEVICE")
+#define MP_COM_SK_REFRESH (dgettext(MP_SYS_STRING, "IDS_COM_SK_REFRESH"))
+#define VS_TEXT_SETTINGS_DEVICES_IDS ("IDS_IS_BODY_DEVICES")
+#define VS_TEXT_LOADING VIDEOS_GET_STR("IDS_IS_BODY_LOADING_ING")
+#define MP_VPL_DEVICES VIDEOS_GET_STR_FMT("IDS_MUSIC_HEADER_PD_DEVICES")
+#define MP_VPL_CTX_SCAN_NEAR_BY_DEVICE_IDS ("IDS_VIDEO_OPT_SCAN_FOR_NEARBY_DEVICES")
+#define MP_TEXT_NO_DEVICES_IDS ("IDS_VIDEO_BODY_NO_DEVICES")
+
+// Cloud view //
+#define MP_COM_POP_DOWNLOADED (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DOWNLOADED"))
+#define MP_VPL_DOWNLOAD_LIST_NO_VIDEO VIDEOS_GET_STR("IDS_VPL_POP_YOU_CAN_DOWNLOAD_AND_ENJOY_VIDEOS_THROUGH_THE_VIDEO_STORE")
+#define MP_VPL_DOWNLOAD_LIST_NO_VIDEO_IDS ("IDS_VPL_POP_YOU_CAN_DOWNLOAD_AND_ENJOY_VIDEOS_THROUGH_THE_VIDEO_STORE")
+#define MP_DOWNLOAD_STR_SELECT_QUALITY VIDEOS_GET_STR("IDS_VIDEO_HEADER_SELECT_QUALITY_ABB")
+
+// Tab (Personal, Devices) // // not be used in lite
+#define MP_VPL_LIST_TAB_PERSONAL VIDEOS_GET_STR("IDS_IS_TAB4_PERSONAL_M_CONTENT")
+#define MP_VPL_LIST_TAB_PERSONAL_IDS ("IDS_IS_TAB4_PERSONAL_M_CONTENT")
+#define MP_VPL_LIST_TAB_VIEW VIDEOS_GET_STR("IDS_VIDEO_BUTTON_VIEW")
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Other strings
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#ifdef ENABLE_DRM_FEATURE
+// DRM feature string //
+#define MP_VPL_DRM_PS_1_MORE_TIME_START_NOW_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_START_NOW_Q"))
+#define MP_VPL_DRM_PS_2_MORE_TIME_START_NOW_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_YOU_CAN_USE_PS_2_MORE_TIMES_START_NOW_Q"))
+#define MP_VPL_DRM_PS_FOR_PD_DAYS_START_NOW_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_YOU_CAN_USE_PS_FOR_PD_DAYS_START_NOW_Q"))
+#define MP_VPL_DRM_PS_CURRENTLY_LOCKED_UNLOCK_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_PS_CURRENTLY_LOCKED_UNLOCK_Q"))
+#define MP_VPL_DRM_PS_CAN_USE_1_MORE_TIME_GET_ANOTHER_LICENCE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_GET_ANOTHER_LICENCE_Q"))
+#define MP_VPL_DRM_PS_CANNOT_USE_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_YOU_CANNOT_USE_PS_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q"))
+#define MP_VPL_DRM_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q"))
+#endif
+
+// Sensor Control (not be used in lite) //
+#define MP_VPL_ENABLE_MOTION_IDS ("IDS_MUSIC_BUTTON_ENABLE_MOTION")
+
+
+#endif //_VIDEO_STRING_DEFINE_
diff --git a/include/mp-video-subtitle-ctrl.h b/include/mp-video-subtitle-ctrl.h
deleted file mode 100755
index 1c329c4..0000000
--- a/include/mp-video-subtitle-ctrl.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-#ifndef _MP_VIDEO_SUBTITLE_CTRL_
-#define _MP_VIDEO_SUBTITLE_CTRL_
-
-bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath);
-void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent);
-void MpVideoSubtitleCtrlDestroy(void);
-void MpVideoSubtitleCtrlUpdate(char *szTxt);
-
-bool MpVideoSubtitleCtrlIsExistSubtitle(void);
-bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath);
-void MpVideoSubtitleCtrlSetLayoutShow(bool bShow);
-void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode);
-int MpVideoSubtitleCtrlGetSizeMode();
-void MpVideoSubtitleCtrlSetShowStatus(bool bShow);
-bool MpVideoSubtitleCtrlGetShowStatus();
-
-void MpVideoSubtitleCtrlSetRotate(int nRotateStatus);
-void MpVideoSubtitleCtrlSetLockScreen(bool bShow);
-
-#endif // _MP_VIDEO_SUBTITLE_CTRL_
-
diff --git a/include/mp-video-type-define.h b/include/mp-video-type-define.h
index 5bb0f86..8512c9e 100644
--- a/include/mp-video-type-define.h
+++ b/include/mp-video-type-define.h
@@ -1,169 +1,46 @@
/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_TYPE_DEFINE__
+#define __MP_VIDEO_TYPE_DEFINE__
-#ifndef _VIDEO_TYPE_DEFINE_
-#define _VIDEO_TYPE_DEFINE_
+ typedef enum
+ {
+ LIST_TAB_TYPE_PERSONAL = 0,
+ LIST_TAB_TYPE_DEVICES,
+ LIST_TAB_TYPE_MAX,
+ }MpVideoListTabType;
typedef enum
{
- VIDEO_ROTATE_UNKNOWN = 0,
- VIDEO_ROTATE_PORTRAIT_NORMAL,
- VIDEO_ROTATE_PORTRAIT_REVERSE,
- VIDEO_ROTATE_LANDSCAPE_NORMAL,
- VIDEO_ROTATE_LANDSCAPE_REVERSE,
-}MpVideoRotateType;
+ LIST_UPDATE_TYPE_NONE = 0,
+ LIST_UPDATE_TYPE_ALL, //DATA AND VIEW
+ LIST_UPDATE_TYPE_VIEW, //ONLY UPDATE VIEW, NOT UPDATE DATA
+ LIST_UPDATE_TYPE_DATA, //ONLY UPDATE DATA, NOT UPDATE VIEW
+ LIST_UPDATE_TYPE_MAX //RESERVED FIELD
+}MpListUpdateType;
typedef enum
{
- MP_HTTP_STREAMING = 0,
- MP_RTSP_STREAMING,
-}MpProtocolType;
+ MEDIA_TYPE_FILE = 0, /**< File type*/
+ MEDIA_TYPE_DIRECTORY = 1, /**< Directory type*/
+} MpMediaType;
-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
-#endif //_VIDEO_TYPE_DEFINE_
diff --git a/include/mp-video-value-define.h b/include/mp-video-value-define.h
index 8536cb6..da1b013 100755..100644
--- a/include/mp-video-value-define.h
+++ b/include/mp-video-value-define.h
@@ -1,26 +1,24 @@
/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#ifndef _VIDEO_VALUE_DEFINE_
#define _VIDEO_VALUE_DEFINE_
-#include <utilX.h>
-
-
//PLAY_TIME_FORMAT
#define PLAY_TIME_FORMAT "02u:%02u:%02u"
@@ -45,130 +43,193 @@
#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_UTIL_PERSONAL_HEAD_STR "/opt/usr/media/PersonalPage"
+#define VIDEO_UTIL_PERSONAL_HEAD_STR "/opt/storage/PersonalStorage"
+
+#define MP_UTIL_VCONF_KEY_PERSONAL_TAG "memory/setting/personal"
+
+
+#define PREFIX "/usr/apps/org.tizen.videos"
+#define EDJ_PATH "/usr/apps/org.tizen.videos/res/edje"
+#define LOCALEDIR "/usr/apps/org.tizen.videos/res/locale"
+
+#define VIDEO_BOOKMARK_DIR "/opt"PREFIX"/data"
+#define VIDEO_THUMB_DATA_DIR "/opt/usr/media/.video_thumb"
+#define VIDEO_TRIM_DATA_DIR "/opt/usr/media/.video_thumb"
+#define VIDEO_DOWNLOAD_FILE_DIR "/opt/usr/media/Videos"
+#define VIDEO_CHAPTER_VIEW_DATA_DIR "/opt/usr/media/.video_thumb"
+
+#define VIDEO_LIST_VIEW_ICON_VIDEO_DEFAULT "player_library_list_thumbnail_default.png"
+#define VIDEO_LIST_VIEW_ICON_SEARCH "icon/T01_2_icon_search.png"
+
+#define VIDEO_LIST_VIEW_ICON_VIDEO "icon/T01_2_icon_video.png"
+#define VIDEO_LIST_VIEW_NO_ITEM "icon/T01-2_video_noitem.png"
+#define VIDEO_SOFT_BACK_BUTTON "T01_icon_soft_back.png"
+#define VIDEO_LIST_VIEW_PREVIEW_NO_ITEM "icon/T01-2_video_thumbnail_default.png"
+#define VIDEO_LIST_VIEW_ICON_SELECT_ALL "icon/T02_icon_edit.png"
+#define VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK "icon/T01_2_video_lock_45x45.png"
+#define VIDEO_LIST_VIEW_ICON_DROPBOX "icon/T01_2_thumbnail_icon_drop_box.png"
+#define VIDEO_LIST_VIEW_ICON_REFRESH "icon/T01_Device_icon_index_refresh_bg.png"
+#define VIDEO_LIST_VIEW_ICON_REFRESH_FOCUS "icon/T01_Device_icon_index_refresh_focus_ef.png"
+
+//folder view
+#define VIDEO_LIST_VIEW_ICON_FOLDER_PHONE "icon/player_folder_list_icon_folder.png"
+#define VIDEO_LIST_VIEW_ICON_FOLDER_PHONE_EF "icon/player_folder_list_icon_folder_ef.png"
+#define VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX "icon/player_folder_list_icon_dropbox.png"
+#define VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX_EF "icon/player_folder_list_icon_dropbox_ef.png"
+#define VIDEO_LIST_VIEW_ICON_FOLDER_EXTERNAL "icon/T01_2_list_icon_inner_usb.png"
+#define VIDEO_LIST_VIEW_ICON_FOLDER_SDCARD "icon/T01_2_list_icon_sd_card.png"
+
+#define VIDEO_STORE_PATH ".video-store"
+
+#define VIDEO_PLAYER_TOOLBAR_ICON_VIDEOS "toolbar/T01-2_controlbar_icon_video.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_RECORDED "toolbar/T01-2_controlbar_icon_recorded.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_BACK "toolbar/T01-2_btn_toolbar_back.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_CANCEL "toolbar/T01-2_icon_toolbar_cancel.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_DELETE "toolbar/icon_delete.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_MOVE_TO_PERSONAL "toolbar/more_button_icon_add_to_your_personal_storage.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_MOVE_TO_NORMAL "toolbar/more_button_icon_remove_from_your_personal_storage.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_DONE "toolbar/T01-2_icon_toolbar_done.png"
+
+
+//Use for more button popup
+#define VIDEO_PLAYER_TOOLBAR_ICON_SIGN_IN "toolbar/icon_signin.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_DOWNLOAD "toolbar/icon_download.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_REFRESH "toolbar/icon_refresh.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_SORT_BY "toolbar/icon_sort_by.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_VIEW_AS "toolbar/icon_view_as.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_SHARE "toolbar/icon_share_via.png"
+#define VIDEO_PLAYER_TOOLBAR_ICON_NEAR_BY_DEVICES "toolbar/icon_nearbydevices.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_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_SUBTITLE_SYNC_EDJ EDJ_PATH"/subtitle_sync.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 VIDEO_PLAYER_REMOVE_LIST_EDJ EDJ_PATH"/vp-remove-list-internal.edj"
+#define VIDEO_PLAYER_LISTVIEW_EDJ EDJ_PATH"/vp-main-listview-internal.edj"
+#define VIDEO_PLAYER_ASF_DEVICE_LIST_EDJ EDJ_PATH"/vp-device-list-internal.edj"
+#define VIDEO_PLAYER_PREVIEW_MOVIE_EDJ EDJ_PATH"/vp-main-listview-preview.edj"
+#define VIDEO_PLAYER_SEARCH_VIEW_DIM_EDJ EDJ_PATH"/vp-search-view-internal.edj"
+#define VIDEO_PLAYER_IMAGE_NAME_EDJ EDJ_PATH"/vp-images.edj"
+#define VIDEO_PLAYER_STORE_IMAGE_EDJ EDJ_PATH"/VppStoreImage.edj"
+#define VIDEO_PLAYER_MOTION_POPUP_EDJ EDJ_PATH"/vp-motion-popup.edj"
+#define VIDEO_PLAYER_NO_ITEM_EDJ EDJ_PATH"/vp-genlist-no-item.edj"
+#define VIDEO_PLAYER_NUMBER_INFO_EDJ EDJ_PATH"/vp-numberinfo.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 VIDEO_PLAYER_DOWNLOAD_VIEW_LOADING_EDJ EDJ_PATH"/VppStorePopupProgressbar.edj"
+#define VIDEO_PLAYER_OPTION_CTXPOPUP EDJ_PATH"/vp-ctxpopup-option.edj"
+
+#define VIDEO_PLAYER_THUMBNAIL_VIEW_EDJ EDJ_PATH"/vp-thumbnail-view.edj"
+#define VIDEO_BASIC_LAYOUT_EDJ EDJ_PATH"/vp-main-layout.edj"
+#define VIDEO_BASIC_NAVIFRAME_EDJ EDJ_PATH"/vp-naviframe.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 REMOVE_LIST_EDJ_GROUP "main.listview.internal"
+#define LISTVIEW_EDJ_GROUP "main.listview.internal"
+#define ASF_DEVICE_LIST_EDJ_GROUP "asf.device.list.internal"
+#define PREVIEW_MOVIE_EDJ_GROUP "listview.preview.movie"
+#define PREVIEW_MOVIE_LANDSCAPE_EDJ_GROUP "listview.preview.movie.landscape"
+#define SEARCH_VIEW_DIM_EDJ_GROUP "search.view.internal"
+#define GENLIST_NOITEM_EDJ_GROUP "listview.genlist.noitem"
+#define GENLIST_NOITEM_SIGNIN_EDJ_GROUP "listview.genlist.noitem.signin"
+#define PREVIEW_MOVIE_NOCOTENT__EDJ_GROUP_L "listview.preview.movie.landspace.nocontent"
+#define PREVIEW_MOVIE_NOCOTENT_EDJ_GROUP "listview.preview.movie.nocontent"
+
+
+
+#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 SWALLOW_LISTVIEW_CONTENT "main.listview.content"
+#define SWALLOW_ASF_DEVICE_LIST_CONTENT "asf.device.list.content"
+#define SWALLOW_LISTVIEW_SELECTION_INFO "main.listview.selection.info"
+#define SWALLOW_LISTVIEW_PREVIEW_MOVIE_PIXMAP "listview.preview.movie.pixmap"
+#define SWALLOW_LISTVIEW_PREVIEW_PROGRESS_BAR "listview.preview.movie.progressbar"
+#define SWALLOW_LISTVIEW_NO_ITEM_BUTTON "listview.genlist.noitem.button"
+#define SWALLOW_LISTVIEW_NO_ITEM_SIGNIN_BUTTON "listview.genlist.noitem.signin.button"
+#define SWALLOW_LISTVIEW_NO_ITEM_TEXT "listview.genlist.noitem.text"
+#define SWALLOW_LISTVIEW_NO_ITEM_SIGNIN_TEXT "listview.genlist.noitem.signin.text"
+#define SWALLOW_LISTVIEW_PREVIEW_LANDSCAPE_PROGRESS_BAR "listview.preview.movie.landscape.progressbar"
+#define SWALLOW_LISTVIEW_PREVIEW_LANDSCAPE_MOVIE_PIXMAP "listview.preview.movie.landscape.pixmap"
+#define SWALLOW_LISTVIEW_PREVIEW_NOCOTENT_PIXMAP "listview.preview.movie.nocontent.pixmap"
+
+#define SWALLOW_LISTVIEW_PROGRESS_CONTENT "main.listview.progress"
+
+
+
+
+
+
+#define PART_BUTTON_ICON "icon"
+#define MAIN_SPEED_TEXT "main.speedbox.txt"
+#define SUBTITLE_TEXT "subtitle.txt"
+
+#define PART_MAIN_ROTATE_BUTTON "main.rotate.button"
+
+#define SIGNAL_MAIN_ROTATE_BUTTON_SHOW "signal.main.rotate.button.show"
+#define SIGNAL_MAIN_ROTATE_BUTTON_HIDE "signal.main.rotate.button.hide"
+
+#define SIGNAL_MAIN_ROTATE_BUTTON_CLICK "signal.main.rotate.button.clicked"
#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_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"
@@ -176,35 +237,29 @@
#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 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_BOOKMARK_ADD "bookmark.add"
+#define PART_BOOKMARK_DEL "bookmark.end.btn"
-#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_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_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_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_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_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_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_BACK_BUTTON_UP "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"
@@ -213,91 +268,89 @@
#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_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_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_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_SHARE "option.share"
#define PART_OPTION_BOOKMARK "option.bookmark"
#define PART_OPTION_MULTIWIN "option.multiwin"
-#define PART_OPTION_MORE "option.more"
+#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_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_OPTION_SHARE_CLICKED "signal.option.share.clicked"
+#define SIGNAL_OPTION_BOOKMARK_CLICKED "signal.option.bookmark.clicked"
+#define SIGNAL_OPTION_MULTIWIN_CLICKED "signal.option.multiwin.clicked"
+#define SIGNAL_OPTION_MORE_CLICKED "signal.option.more.clicked"
+#define SIGNAL_OPTION_SOUND_ALIVE_CLICKED "signal.option.sa.clicked"
+#define SIGNAL_OPTION_TRIM_CLICKED "signal.option.trim.clicked"
+#define SIGNAL_OPTION_REPEAT_UP "signal.option.repeat.clicked"
+#define SIGNAL_OPTION_CONNECT_INFO_UP "signal.option.connectinfo.clicked"
-#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_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 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_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_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_NAVIFRAME_TITLE_SHOW "elm,state,title,show,custom"
+#define SIGNAL_NAVIFRAME_TITLE_HIDE "elm,state,title,hide,custom"
#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_NO_EFFECT_HIDE "signal.main.control.no.effect.hide"
#define SIGNAL_MAIN_CONTROL_LANDSCAPE_BOOKMAKR_HIDE "signal.main.control.hide.with.bookmark"
#define SIGNAL_MW_CLOSE_CLICKED "signal.mw.close.clicked"
@@ -336,7 +389,6 @@
#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"
@@ -374,6 +426,9 @@
#define SIGNAL_CONTROL_SET_MUTE "signal.control.volume.set.mute"
#define SIGNAL_CONTROL_UNSET_MUTE "signal.control.volume.unset.mute"
+#define SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_SHOW "signal.search.view.internal.dimming.show"
+#define SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_HIDE "signal.search.view.internal.dimming.hide"
+
// Callback signals.
#define SIGNAL_CONTROL_PLAY_BUTTON_DOWN "signal.control.play.button.down"
@@ -394,25 +449,19 @@
#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_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_ANIMATION_IMAGE_LOADING "signal.loading.image.step"
+#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_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"
@@ -422,83 +471,199 @@
#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_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_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_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_LISTVIEW_SELECTION_INFO_SHOW "signal.main.listview.internal.selection.info.show"
+#define SIGNAL_LISTVIEW_SELECTION_INFO_HIDE "signal.main.listview.internal.selection.info.hide"
+
+#define SIGNAL_ASF_VDIEO_ITEM_SELECTION_INFO_SHOW "signal.asf.device.internal.selection.info.show"
+#define SIGNAL_ASF_VIDEO_ITEM_SELECTION_INFO_HIDE "signal.asf.device.internal.selection.info.hide"
+
+#define SIGNAL_LISTVIEW_PREVIEW_MOVIE_EVENT_CLICKED "signal.listview.preview.movie.event.clicked"
#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_SHOW "signal.landscape.thumb.preview.show"
#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_HIDE "signal.landscape.thumb.preview.hide"
+#define SIGNAL_MOUSE_DOWN "mouse,down,1"
+#define SIGNAL_MOUSE_UP "mouse,up,1"
+#define SIGNAL_MOUSE_CLICK "mouse,clicked,1"
+
+//download
+#define MP_DOWNLOAD_BUTTON_STYLE "video/circle"
+// Multi Window value
+#define MP_MULTI_WINDOW_STARTUP_TYPE "window_startup_type"
+#define MP_MULTI_WINDOW_LAYOUT_ID "window_layout_id"
+#define MP_MULTI_WINDOW_OPERATION "http://tizen.org/appcontrol/operation/main"
#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
+#ifndef PACKAGE
+#define PACKAGE "video-player"
+#endif
+#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 "XF86Stop"
+#define HOME_KEY "XF86Home"
+#define KEY_CANCLE "Cancel"
+#define POWER_KEY "XF86PowerOff"
+
+#define VOLUME_DOWN_KEY "XF86AudioLowerVolume"
+#define VOLUME_UP_KEY "XF86AudioRaiseVolume"
+
+#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 KEY_GRAB_TOP_POSITION TOP_POSITION_GRAB
+#define KEY_GRAB_OR_EXCLUSIVE OR_EXCLUSIVE_GRAB
+#define STR_LEN_MAX 4096
+#define SVC_LEN_MAX 2048
+#define FORMAT_LEN_MAX 100
+
-#define _WIFI_MODE_ 1
-#define _3G_MODE_ 2
+#define XML_ITEM_NUM 6
+#define _WIFI_MODE_ 1
+#define _3G_MODE_ 2
#define USE_STREAMING_ANI 1
#define LONG_PRESS_INTERVAL 1.0
#define DOUBLE_CLICK_TIME 0.2
-#define SCREEN_TOUCH_TOGGLE_AREA_Y_START 0.065
-#define SCREEN_TOUCH_TOGGLE_AREA_Y_END 0.78
+#define 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_TIMER_INTERVAL 0.05
#define ANIMATION_MAX_COUNT 30
-#define BOOSTER_STEP_DISTANCE 99
-#define TRIM_DETAIL_STEP_DISTANCE 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 CAPTION_TEXT_MAX_LEN 16
#define STR_UUID_LEN_MAX 37
-#define DEFAULT_SCALE_WIDTH 720
-#define DEFAULT_SCALE_HEIGHT 1280
+#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
+#define VIDEO_ICON_WIDTH 70 //90 //168
+#define VIDEO_ICON_HEIGHT 45 //54 //124
+
+#define VIDEO_LIST_PROGRESSBAR_LENGTH 70
+
+#define NO_ITEM_GENLIST_WIDTH 720
+#define NO_ITEM_GENLIST_HEIGHT 690
+
+#define VIDEO_THUMB_WIDTH 176
+#define VIDEO_THUMB_HEIGHT 144
+
+#define VIDEO_PREVIEW_WIDTH 320
+#define VIDEO_PREVIEW_HEIGHT 240
+
+#define VIDEO_NUMBER_INFO_BAR_Y 1115
+
+#define NUMBER_INFO_BAR_HEIGHT 57
+
+#define VIDEO_POPUP_TITLE_H 72
+#define VIDEO_POPUP_1_ITEM_H 46 //112
+#define VIDEO_POPUP_2_ITEM_H 84 //135
+
+#define VIDEO_POPUP_MAX_HEIGHT 752-72 //728
+#define VIDEO_POPUP_MAX_HEIGHT_L 432-72 //392
+
+#define VIDEO_POPUP_MIN_ITEMS 4
+
+#define VIDEO_POPUP_LIST_HEIGHT(count) (((VIDEO_POPUP_1_ITEM_H*count) > VIDEO_POPUP_MAX_HEIGHT) ? (VIDEO_POPUP_MAX_HEIGHT) : (VIDEO_POPUP_1_ITEM_H*count)) //(((112*count) > 728) ? (728) : (112*count))
+#define VIDEO_POPUP_LIST_HEIGHT_L(count) (((VIDEO_POPUP_1_ITEM_H*count-1) > VIDEO_POPUP_MAX_HEIGHT_L) ? (VIDEO_POPUP_MAX_HEIGHT_L) : (VIDEO_POPUP_1_ITEM_H*count-1))
+
+#define VIDEO_POPUP_2_TEXT_HEIGHT(count) (((VIDEO_POPUP_2_ITEM_H*count-1) > VIDEO_POPUP_MAX_HEIGHT) ? (VIDEO_POPUP_MAX_HEIGHT) : (VIDEO_POPUP_2_ITEM_H*count-1))
+#define VIDEO_POPUP_2_TEXT_HEIGHT_L(count) (((VIDEO_POPUP_2_ITEM_H*count-1) > VIDEO_POPUP_MAX_HEIGHT_L) ? (VIDEO_POPUP_MAX_HEIGHT_L) : (VIDEO_POPUP_2_ITEM_H*count-1))
+
+
+#define VIDEO_POPUP_ITEM_W 120 //409 //614
+#define VIDEO_POPUP_ITEM_LADSCAPE_W 480 //555 //832
+
+#define VIDEO_POPUP_DETAIL_ITEM_W 367 //550
+
+#define VIDEO_FILE_ENTRY_LEN_MAX 255
+#define VIDEO_FILE_SEARCH_CHAR_LEN_MAX 50
+#define VIDEO_CTXPOPUP_ITEM_W 500
+#define VIDEO_CTXPOPUP_TITLE_H 54
+
+
+#define PREVIEW_MOVIE_WIDTH 720
+#define PREVIEW_MOVIE_HEIGHT 406
+#define PREVIEW_MOVIE_WIDTH_LANDSCAPE 1280
+#define PREVIEW_MOVIE_HEIGHT_LANDSCAPE 320
+#define PREVIEW_MOVIE_NOCONTENT_LANDSCAPE 640
+#define NO_CONTENTS_WIDTH 720
+#define NO_CONTENTS_HEIGHT 897
+#define VIDEO_MAIN_LIST_BLOCK_COUNT 12
+#define VIDEO_GENLIST_BLOCK_COUNT 12
+#define VIDEO_PERSONAL_UPDATE_TIMER 1.0
+
+#define VIDEO_PREVIEW_WIDTH_ICON_LANDSCAPE 640
+#define VIDEO_PREVIEW_HEIGHT_ICON_LANDSCAPE 320
+
+
+//thumbnail view
+#define VP_GENLIST_THUMB_PORTRAIT_COUNT 2
+#define VP_GENLIST_THUMB_LANDSPACE_COUNT 4
+#define VP_GENLIST_THUMB_PORTRAIT_COUNT_ZOOM_IN 1
+#define VP_GENLIST_THUMB_LANDSPACE_COUNT_ZOOM_IN 2
+#define VP_ALBUM_THUMB_ICON_HEIGHT 150
+#define VP_ALBUM_THUMB_ICON_HEIGHT_ZOOM_IN 225
+#define GRID_VIDEO_ICON_WIDTH 150
+#define GRID_VIDEO_ICON_HEIGHT 210
+#define GRID_VIDEO_TAB_PAD_HEIGHT 12
+
+#define VIDEO_GENGRID_ICON_WIDTH 150
+
+//landspace
+#define VP_ALBUM_THUMB_ICON_HEIGHT_LAND 150
+#define GRID_VIDEO_ICON_WIDTH_LAND 314
+#define GRID_VIDEO_ICON_HEIGHT_LAND 186
+
+#define VIDEO_GENGRID_ICON_WIDTH_LAND 132
+
+//video wall
+#define MP_VIDEO_WALL_START_POSITION 0
+#define MP_VIDEO_WALL_DIR "/opt/usr/media/.video_wall"
+#define MP_VIDEO_WALL_FRAME_FILE_PREFIX "%s/.frame_buff.jpg"
+#define MP_VIDEO_WALL_GEN_FILE_NAME_PREFIX "%s/preview.3gp"
+
+#define VIDEO_SHARE_OPERATION_SINGLE "http://tizen.org/appcontrol/operation/share"
+#define VIDEO_SHARE_OPERATION_MULTIPLE "http://tizen.org/appcontrol/operation/multi_share"
+#define VIDEO_SHARE_SVC_FILE_PATH "http://tizen.org/appcontrol/data/path"
+
+#define MP_VIDEO_WALL_DURATION 10000
+#define MP_VIDEO_WALL_DEFAULT_FPS 10
+
+
+#define GRID_VIDEO_ICON_WIDTH_T 352
+#define GRID_VIDEO_ICON_HEIGHT_T 192
+
+#define VIDEO_DETAIL_VALUE_GPS_DEFAULT -200.0
#endif //_VIDEO_VALUE_DEFINE_
diff --git a/include/mp-video-view-mgr.h b/include/mp-video-view-mgr.h
deleted file mode 100755
index 24a4fca..0000000
--- a/include/mp-video-view-mgr.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _VIDEO_VIEW_MGR_
-#define _VIDEO_VIEW_MGR_
-
-
-
-bool MpVideoViewCtrlInit(VideoAppData* pAppData);
-void MpVideoViewCtrlDestroy(void* pUserData);
-
-
-void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData);
-void MpVideoViewCtrlInitAfterBeginOfStream(void*);
-void MpVideoViewCtrlPause(void* pUserData);
-void MpVideoViewCtrlResume(void* pUserData);
-void MpVideoViewShowLayout(void* pUserData);
-void MpVideoViewHideLayout(void* pUserData);
-void MpVideoViewCtrlShowFinish(void *pUserData);
-void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff);
-void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData);
-void MpVideoViewCtrlChangeTitle(void *pUserData);
-bool MpVideoViewCtrlIsTopView(void *pUserData);
-void MpVideoViewCtrlShowNocontentImage(void* pUserData);
-void MpVideoViewCtrlHideNocontentImage(void* pUserData);
-void MpVideoViewCtrlResetProgressBar(void *pUserData);
-void MpVideoViewCtrlPopTopView(int nPlayerType, void *pUserData);
-void MpVideoViewCtrlUpdateProgressbar(void *pUserData);
-bool MpVideoViewCtrlIsPauseByUser(void *pUserData);
-void MpVideoViewCtrlSetMuteValue(bool bMute);
-void MpVideoViewCtrlShowVolume();
-void MpVideoViewCtrlHideVolume();
-
-#endif //_VIDEO_VIEW_MGR_ \ No newline at end of file
diff --git a/include/mp-video-volume-ctrl.h b/include/mp-video-volume-ctrl.h
deleted file mode 100644
index 4b8a7ea..0000000
--- a/include/mp-video-volume-ctrl.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef _MP_VIDEO_VOLUME_CTRL_
-#define _MP_VIDEO_VOLUME_CTRL_
-
-
-void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData);
-void MpVideoVolumeCtrlDestroy(void);
-void MpVideoVolumeCtrlShow();
-void MpVideoVolumeCtrlHide();
-void MpVideoVolumeCtrlSetVolume(int nVol);
-int MpVideoVolumeCtrlGetVolume();
-bool MpVideoVolumeCtrlGetShowStatus();
-
-#endif // _MP_VIDEO_VOLUME_CTRL_
-
diff --git a/include/video-player.h b/include/video-player.h
index 278d15e..1423c98 100755..100644
--- a/include/video-player.h
+++ b/include/video-player.h
@@ -1,122 +1,33 @@
/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <app.h>
#include <stdbool.h>
-#include <utilX.h>
#include <Ecore_X.h>
#include <Elementary.h>
-
#include "mp-video-value-define.h"
-#include "mp-video-type-define.h"
-
-#define LVL0 (0)
-#define LVL1 (1)
-#define LVL2 (2)
-#define LVL3 (3)
-#define LVL4 (4)
-#define LVL5 (5)
-#define LVL6 (6)
-#define LVL7 (7)
-
-typedef enum
-{
- MP_UG_FAIL,
- MP_UG_SUCCESS
-} mp_ug_load_status;
-
-typedef struct _VideoAppData VideoAppData;
-
-
-typedef struct
-{
- void (*VideoAppCtrlStart) (VideoAppData* pAppData);
- void (*VideoAppCtrlStop) (VideoAppData* pAppData);
- void (*VideoAppCtrlPause) (VideoAppData* pAppData);
- void (*VideoAppCtrlResume) (VideoAppData* pAppData);
- void (*VideoAppCtrlStopByAppPause) (VideoAppData* pAppData);
- void (*VideoAppCtrlStartByAppResume) (VideoAppData* pAppData);
- void (*VideoAppCtrlFFDown) (VideoAppData* pAppData);
- void (*VideoAppCtrlRewDown) (VideoAppData* pAppData);
- void (*VideoAppCtrlFFUp) (VideoAppData* pAppData);
- void (*VideoAppCtrlRewUp) (VideoAppData* pAppData);
- void (*VideoAppCtrlSpeedReset) (VideoAppData* pAppData);
- void (*VideoAppCtrlSpeedFF) (VideoAppData* pAppData);
- void (*VideoAppCtrlSpeedRew) (VideoAppData* pAppData);
- void (*VideoAppCtrlRotateScreen) (VideoAppData *pAppData, int nRotateState);
- void (*VideoAppCtrlGetPosition) (VideoAppData* pAppData);
- void (*VideoAppCtrlSetPosition) (VideoAppData* pAppData);
- void (*VideoAppCtrlSetSubtitlePosition) (VideoAppData* pAppData);
- void (*VideoAppCtrlHideLayout) (VideoAppData* pAppData);
- void (*VideoAppCtrlShowLayout) (VideoAppData* pAppData);
- void (*VideoAppCtrlHideFinish) (VideoAppData* pAppData);
- void (*VideoAppCtrlShowFinish) (VideoAppData* pAppData);
- void (*VideoAppCtrlGetVideoResolution) (VideoAppData* pAppData);
- void (*VideoAppCtrlReqDurationTime) (VideoAppData* pAppData);
- void (*VideoAppCtrlChangeResolution) (VideoAppData* pAppData);
- void (*VideoAppCtrlBeginOfStream) (VideoAppData* pAppData);
- void (*VideoAppCtrlEndOfStream) (VideoAppData* pAppData);
- void (*VideoAppCtrlExit) (VideoAppData* pAppData);
- void (*VideoAppCtrlStartStreaming) (VideoAppData* pAppData);
- void (*VideoAppCtrlReLaunching) (VideoAppData* pAppData);
- void (*VideoAppCtrlGetBufferingPosition) (VideoAppData* pAppData);
- void (*VideoAppCtrlSetMute) (VideoAppData *pAppData, bool bMute);
-
-
- void (*VideoAppCtrlShowVolume) (VideoAppData *pAppData);
- void (*VideoAppCtrlHideVolume) (VideoAppData *pAppData);
-}VideoAppCtrlFunc;
-
-
-struct _VideoAppData
-{
- Evas_Object* pMainWindow;
-
- int nDuration;
- int nSetPosition;
- int nCurPosition;
- int nSubtitleDuration;
- int nBufferingPosition;
- int nPlayingSpeed;
-
- int nVideoWidthResolution;
- int nVideoHeightResolution;
-
- char *szSubtitle;
- char *szVideoTitle;
- char *szMediaUri;
- char *szPreMediaUri;
- char *szNextMediaUri;
-
- MpPlayerState nPrePlayerState;
- MpPlayerState nCurPlayerState;
- VideoAppCtrlFunc VideoAppCtrlCallbackFunc;
- bool bSeekComplete;
- int nSeekPosition;
- MpPlayerState nSeekPlayerState;
-
- char *szProxyAddress;
- char *szUserAgent;
- char *szCookie;
- bool bStartSeek;
-};
+#ifndef EXPORT_API
+#define EXPORT_API __attribute__((__visibility__("default")))
+#endif
#endif //__VIDEO_PLAYER__
diff --git a/include/view/mp-library-view-mgr.h b/include/view/mp-library-view-mgr.h
new file mode 100644
index 0000000..bc7c8e0
--- /dev/null
+++ b/include/view/mp-library-view-mgr.h
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_
+
+#include "mp-video-type-define.h"
+
+void* mp_library_mgr_init(void);
+void mp_library_mgr_destroy(void *pUserData);
+
+void mp_library_mgr_set_value(void);
+
+void mp_library_mgr_unset_value(void);
+
+void mp_library_mgr_update_video_list(void);
+void mp_library_mgr_update_library_view(MpListUpdateType eUpdateType);
+void mp_library_mgr_change_language(void);
+void mp_library_mgr_change_color(void);
+
+void mp_library_mgr_destroy_player(void);
+
+void mp_library_mgr_pause_wall_render(void);
+void mp_library_mgr_resume_wall_render(void);
+
+void mp_library_mgr_init_value(void);
+
+#endif //_VIDEO_VIEW_MGR_
diff --git a/include/view/mp-video-detail-view.h b/include/view/mp-video-detail-view.h
new file mode 100644
index 0000000..f4f13f4
--- /dev/null
+++ b/include/view/mp-video-detail-view.h
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_DETAIL_VIEW_
+#define _VIDEO_PLAYER_DETAIL_VIEW_
+
+typedef struct _VideoDetailInfo{
+ char *szTitle;
+ char *szSize;
+ char *szFormat;
+ //char *szDate;
+ char *szResolution;
+ char *szLastModifiedTime;
+ char *szLocation;
+ //char *szLatitude;
+ //char *szLongitude;
+}stDetailInfo;
+
+typedef void(*mpDetailViewCbFunc)(void);
+
+void mp_detail_view_free_detail_info(stDetailInfo *pDetailInfo);
+//bool mp_detail_view_popup_show(void *pUserData, mpDetailCtrlCbFunc pDetailCtrlCb, stDetailInfo *pDetailInfo);
+void mp_detail_view_push(void* pNaviFrame, bool IsFolder, const char *pMediaId, stDetailInfo *pDetailInfo);
+
+void mp_detail_view_delete_handle(void);
+bool mp_detail_view_get_video_detail_info(int nVideoItemIndex, stDetailInfo **pDetailInfo);
+bool mp_detail_view_get_folder_detail_info(int nFolderItemIndex, stDetailInfo **pDetailInfo);
+void mp_detail_view_update(void);
+
+#endif // __MP_VIDEO_DETAIL_VIEW__
+
diff --git a/include/view/mp-video-list-folder-share-via-view.h b/include/view/mp-video-list-folder-share-via-view.h
new file mode 100644
index 0000000..4c0d48e
--- /dev/null
+++ b/include/view/mp-video-list-folder-share-via-view.h
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_FOLDER_SHARE_VIA_VIEW_
+#define _VIDEO_LIST_FOLDER_SHARE_VIA_VIEW_
+
+#include <stdbool.h>
+#include "mp-video-type-define.h"
+
+typedef void (*ChangeListFolderShareViewCbFunc)(void);
+
+void mp_folder_share_view_push(void* pNaviFrame, ChangeListFolderShareViewCbFunc pChangeViewCb, MpVideoListTabType eTabType);
+void mp_folder_share_view_pop(void);
+void mp_folder_share_view_change_language(void);
+
+#endif
diff --git a/include/view/mp-video-list-personal-ctrl.h b/include/view/mp-video-list-personal-ctrl.h
new file mode 100644
index 0000000..7d37191
--- /dev/null
+++ b/include/view/mp-video-list-personal-ctrl.h
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_PERSONAL_CTRL_
+#define _MP_VIDEO_LIST_PERSONAL_CTRL_
+
+
+typedef void (*PersonalCtrlCbFunc)(void);
+
+
+bool mp_personal_ctrl_show(bool *pCheckedItemsEditList, int pCheckedItemsEditListSize, int nViewStyle, bool bFolderMove, PersonalCtrlCbFunc pPersonalCtrlCb, void* pUserData);
+
+#endif // _MP_VIDEO_LIST_SORT_CTRL_
+
+
diff --git a/include/view/mp-video-list-personal-view.h b/include/view/mp-video-list-personal-view.h
new file mode 100644
index 0000000..67faaf6
--- /dev/null
+++ b/include/view/mp-video-list-personal-view.h
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_PERSONAL_VIEW_
+#define _VIDEO_LIST_PERSONAL_VIEW_
+
+#include <stdbool.h>
+#include "mp-video-type-define.h"
+
+
+typedef void (*ChangePersonalViewCbFunc)(MpListUpdateType eUpdateType);
+
+/*nViewStyle: 0->add to personal, 1->Remove from personal */
+void mp_personal_view_push(void* pNaviFrame, ChangePersonalViewCbFunc pChangeViewCb, char *pFolderPath, int nViewStyle);
+void mp_personal_view_pop(void);
+bool mp_personal_view_is_top_view(void);
+void mp_personal_view_update(void);
+
+
+#endif
+
diff --git a/include/view/mp-video-list-remove-ctrl.h b/include/view/mp-video-list-remove-ctrl.h
new file mode 100644
index 0000000..be4f17a
--- /dev/null
+++ b/include/view/mp-video-list-remove-ctrl.h
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_REMOVE_CTRL_
+#define _MP_VIDEO_LIST_REMOVE_CTRL_
+
+
+typedef void (*ListRemoveCtrlCbFunc)(void);
+
+
+bool mp_remove_ctrl_show(bool *pCheckedItemsEditList, int pCheckedItemsEditListSize, ListRemoveCtrlCbFunc pListRemoveCtrlCb, bool bFolderDel, void* pUserData);
+
+#endif // _MP_VIDEO_LIST_SORT_CTRL_
+
+
diff --git a/include/view/mp-video-list-remove-view.h b/include/view/mp-video-list-remove-view.h
new file mode 100644
index 0000000..f09231e
--- /dev/null
+++ b/include/view/mp-video-list-remove-view.h
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_REMOVE_VIEW_
+#define _VIDEO_LIST_REMOVE_VIEW_
+
+#include <stdbool.h>
+#include "mp-video-type-define.h"
+
+
+typedef void (*ChangeListRemoveViewCbFunc)(void);
+typedef void (*ListRemoveViewCbFunc)(MpListUpdateType eUpdateType);
+
+void mp_remove_view_push(void* pNaviFrame, ListRemoveViewCbFunc pUpdateViewCb, ChangeListRemoveViewCbFunc pChangeViewCb, char *pFolderPath, MpVideoListTabType eTabType);
+void mp_remove_view_pop(void);
+bool mp_remove_view_is_top_view(void);
+void mp_remove_view_change_language(void);
+
+#endif
+
diff --git a/include/view/mp-video-list-share-via-view.h b/include/view/mp-video-list-share-via-view.h
new file mode 100644
index 0000000..c2faeff
--- /dev/null
+++ b/include/view/mp-video-list-share-via-view.h
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_SHARE_VIA_VIEW_
+#define _VIDEO_LIST_SHARE_VIA_VIEW_
+
+
+#include <stdbool.h>
+#include "mp-video-type-define.h"
+
+typedef void (*ChangeListShareViewCbFunc)(void);
+
+void mp_share_view_push(void* pNaviFrame, ChangeListShareViewCbFunc pChangeViewCb, char *pFolderPath, MpVideoListTabType eTabType);
+void mp_share_view_pop(void);
+bool mp_share_view_is_top_view(void);
+void mp_share_view_change_language(void);
+
+#endif
diff --git a/include/view/mp-video-list-view-common.h b/include/view/mp-video-list-view-common.h
new file mode 100644
index 0000000..c28dc0a
--- /dev/null
+++ b/include/view/mp-video-list-view-common.h
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_COMMON_
+#define _VIDEO_LIST_VIEW_COMMON_
+
+
+#include <stdbool.h>
+#include <Ecore_X.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-video-type-define.h"
+
+typedef void (*UpdateListItemsCbFunc)(MpListUpdateType eUpdateType);
+
+typedef struct
+{
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+
+ void *pVideosGenlist; // DON'T CHANGE GENLIST HANDLE!!!
+
+ Ecore_Timer *pDbUpdateTimer; //db Update
+
+ MpVideoListTabType nListTabType;
+
+ int nCurrentViewType;
+
+ Evas_Smart_Cb pGenlistItemtLanguageChangedCb;
+ Evas_Smart_Cb pGenlistItemtRealizeCb;
+ Evas_Smart_Cb pGenlistItemtPressCb;
+ Evas_Smart_Cb pGenlistItemtLongPressCb;
+}st_VideoListViewMainViewHandle;
+
+
+typedef struct
+{
+ Evas_Object *pBox; // DON'T CHANGE BOX !!!
+ Evas_Object *pToolBar; // DON'T CHANGE TOOLBAR !!!
+
+ ////////////////////////////////////////////////////////////
+ // personal tab
+ Evas_Object *pListViewBaselayout;
+ Evas_Object *pListViewTitlelayout;
+ Evas_Object *pListViewNocontentlayout;
+ ////////////////////////////////////////////////////////////
+ Evas_Object *pScroller;
+
+ Evas_Object *pVideoGenlistTitle;
+ Elm_Genlist_Item_Class *pVideoGenlistTitleItc;
+ Elm_Object_Item *pVideoGenlistItemForTitle;
+ Elm_Object_Item *pVideoGenlistItemForNoContentLayout;
+
+ Evas_Object *gesture;
+ int zoom_level;
+}st_VideoListViewMainViewWidget;
+
+void mp_list_common_set_callabcks(void *viewHandle,
+ Evas_Smart_Cb pGenlistItemtLanguageChangedCb,
+ Evas_Smart_Cb pGenlistItemtRealizeCb,
+ Evas_Smart_Cb pGenlistItemtPressCb,
+ Evas_Smart_Cb pGenlistItemtLongPressCb);
+void mp_list_common_unset_callabcks(void *viewHandle);
+
+void mp_folder_view_set_is_item_view(bool isSelected);
+bool mp_folder_view_is_item_view(void);
+bool mp_folder_view_is_top_view(void);
+
+
+#endif
+
diff --git a/include/view/mp-video-list-view-folder.h b/include/view/mp-video-list-view-folder.h
new file mode 100644
index 0000000..d6e3379
--- /dev/null
+++ b/include/view/mp-video-list-view-folder.h
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_FOLDER_LIST_VIEW_
+#define _VIDEO_PLAYER_FOLDER_LIST_VIEW_
+
+#include "mp-video-list-view-common.h"
+#include "mp-video-type-define.h"
+
+void mp_folder_view_destroy(void);
+void mp_folder_view_arrange_folder_list(void* pMainViewHandle, void* pMainViewWidget, MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb);
+void mp_folder_view_update_video_items(void);
+void mp_folder_view_change_language(void);
+#endif
diff --git a/include/view/mp-video-list-view-item-of-folder.h b/include/view/mp-video-list-view-item-of-folder.h
new file mode 100644
index 0000000..33dadea
--- /dev/null
+++ b/include/view/mp-video-list-view-item-of-folder.h
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_ITEM_VIEW_OF_FOLDER_
+#define _VIDEO_ITEM_VIEW_OF_FOLDER_
+
+#include "mp-video-list-view-common.h"
+#include "mp-video-type-define.h"
+
+void mp_folder_item_view_push(void* pNaviFrame, int folder_index, UpdateListItemsCbFunc pChangeViewCb);
+bool mp_folder_item_view_is_current_view();
+void mp_folder_item_view_check_more_button_of_toolbar(void);
+void mp_folder_item_view_change_language(void);
+void mp_folder_item_view_update_played_item(void);
+void mp_folder_item_view_update_video_list(MpListUpdateType eUpdateType);
+
+#endif
diff --git a/include/view/mp-video-list-view-main.h b/include/view/mp-video-list-view-main.h
new file mode 100644
index 0000000..223c559
--- /dev/null
+++ b/include/view/mp-video-list-view-main.h
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_
+#define _VIDEO_LIST_VIEW_
+
+#include <stdbool.h>
+#include "mp-video-type-define.h"
+
+
+void mp_list_view_push(void* pNaviFrame);
+void mp_list_view_destroy(void);
+void mp_list_view_update_widget(void);
+void mp_list_view_update_widget_resume(void);
+void mp_list_view_change_language(void);
+void mp_list_view_change_color(void);
+void mp_list_view_destroy_player(void);
+void mp_list_view_update_whole_genlist(MpListUpdateType eUpdateType);
+void mp_list_view_rotate_view(MpListUpdateType eUpdateType);
+void mp_list_view_update_count_layout();
+void mp_list_view_update_base_layout();
+void mp_list_view_search_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+
+#endif
+
diff --git a/include/view/mp-video-list-view-normal.h b/include/view/mp-video-list-view-normal.h
new file mode 100644
index 0000000..53bc536
--- /dev/null
+++ b/include/view/mp-video-list-view-normal.h
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_NORMAL_
+#define _VIDEO_LIST_VIEW_NORMAL_
+
+#include "mp-video-list-view-common.h"
+#include "mp-video-type-define.h"
+
+
+bool mp_normal_view_arrange_list_item(void* pMainViewHandle, void* pMainViewWidget, MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb);
+int mp_normal_view_get_selected_video_item_index(void);
+void mp_normal_view_update_video_items(int nVideoItemIndex);
+
+void mp_normal_view_change_language(void);
+void mp_normal_view_update_video_list(void);
+void mp_normal_view_destroy(void);
+
+
+
+#endif
diff --git a/include/view/mp-video-list-view-select.h b/include/view/mp-video-list-view-select.h
new file mode 100644
index 0000000..2c89fb8
--- /dev/null
+++ b/include/view/mp-video-list-view-select.h
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_SELECT_H_
+#define _VIDEO_LIST_VIEW_SELECT_H_
+
+#include <stdbool.h>
+#include "mp-video-type-define.h"
+
+typedef enum
+{
+ SELECT_TYPE_UNKNOW = 0,
+ SELECT_TYPE_DETAIL,
+ SELECT_TYPE_RENAME,
+}SelectType;
+
+typedef void (*ChangeSelectViewCbFunc)(MpListUpdateType eUpdateType);
+
+void mp_select_view_push(void* pNaviFrame, void* pNaviItem, ChangeSelectViewCbFunc pChangeViewCb, char *pFolderUrl, SelectType eSelType, MpVideoListTabType eTabType);
+void mp_select_view_pop(void);
+void mp_select_view_change_language(void);
+bool mp_select_view_arrange_video_list(void* pGenlist, bool bNeedSvc);
+
+#endif
diff --git a/include/view/mp-video-list-view-thumbnail.h b/include/view/mp-video-list-view-thumbnail.h
new file mode 100644
index 0000000..7306f18
--- /dev/null
+++ b/include/view/mp-video-list-view-thumbnail.h
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_THUMBNAIL_
+#define _VIDEO_LIST_VIEW_THUMBNAIL_
+
+#include "mp-video-list-view-common.h"
+
+bool mp_thumbnail_view_arrange_list_item(void* pMainViewHandle, void* pMainViewWidget, MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb);
+
+int mp_thumbnail_view_get_selected_video_item_index(void);
+void mp_thumbnail_view_update_genlist_item(int nVideoItemIndex);
+void mp_thumbnail_view_update_played_item(void);
+void mp_thumbnail_view_update_video_list(void);
+int mp_thumbnail_view_thumbnail_to_genlist_index(int nVideoItemIndex);
+
+int _grid_view_zoom_in(void *data, Evas_Object *view);
+int _grid_view_zoom_out(void *data, Evas_Object *view);
+
+void mp_thumbnail_view_change_language(void);
+void mp_thumbnail_view_start_to_render(char *pVideoId);
+void mp_thumbnail_view_free_wall_handle_list(void);
+void mp_thumbnail_view_start_video_wall(bool *bSuccess);
+void mp_thumbnail_view_pause_video_wall(void);
+void mp_thumbnail_view_destroy(void);
+
+#endif
diff --git a/include/view/mp-video-search-view.h b/include/view/mp-video-search-view.h
new file mode 100644
index 0000000..ec727ba
--- /dev/null
+++ b/include/view/mp-video-search-view.h
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_SEARCH_VIEW_
+#define _VIDEO_PLAYER_SEARCH_VIEW_
+
+#include "mp-video-type-define.h"
+#include "mp-video-list-view-folder.h"
+
+
+typedef void (*ListViewUpdateListItemCbFunc)(void);
+typedef void (*ViewUpdateListItemCbFunc)(MpListUpdateType eUpdateType);
+
+void mp_search_view_push(void* pNaviFrame, char *pFolderPath);
+void mp_search_view_register_update_list_func(ViewUpdateListItemCbFunc pUpdateViewCb, ListViewUpdateListItemCbFunc pChangeViewCb);
+void mp_search_view_change_language(void);
+void mp_search_view_update_played_item(int nIndex);
+char* mp_search_view_search_markup_keyword(char *szOriginStr, char *szSearchWord, bool *bResult);
+void mp_search_view_update_genlist();
+bool mp_search_view_get_active_view();
+
+#endif
diff --git a/include/viewMgr/videos-view-mgr.h b/include/viewMgr/videos-view-mgr.h
new file mode 100644
index 0000000..d1f7411
--- /dev/null
+++ b/include/viewMgr/videos-view-mgr.h
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 _VIDEOS_VIEW_MGR_
+#define _VIDEOS_VIEW_MGR_
+
+
+#include <Evas.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+#include <Elementary.h>
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+const Evas_Object* mp_mgr_create_main_window( const char *pStrName );
+void mp_mgr_restart_main_window();
+const Evas_Object *mp_mgr_get_main_window();
+const Evas_Object *mp_mgr_get_conformant();
+const Evas_Object *mp_mgr_get_main_layout();
+
+Eina_Bool mp_mgr_is_landscape();
+
+const Evas_Object* mp_mgr_get_library_naviframe();
+const Evas_Object* mp_mgr_get_current_inner_naviframe();
+
+const Evas_Object* mp_mgr_get_library_parent();
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
+#endif // _VIDEOS_VIEW_MGR_
+
diff --git a/include/widget/mp-external-ug.h b/include/widget/mp-external-ug.h
new file mode 100644
index 0000000..50f0270
--- /dev/null
+++ b/include/widget/mp-external-ug.h
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_
+
+void mp_external_service_share_panel(const char *pUrl);
+
+#endif // _MP_EXTERNAL_UG_
diff --git a/include/widget/mp-footer-toolbar.h b/include/widget/mp-footer-toolbar.h
new file mode 100644
index 0000000..594ae64
--- /dev/null
+++ b/include/widget/mp-footer-toolbar.h
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_FOOTER_TOOLBAR_
+#define _VIDEO_FOOTER_TOOLBAR_
+
+
+typedef enum
+{
+ FOOTER_TAB_TYPE_PERSONAL = 0,
+ FOOTER_TAB_TYPE_DOWNLOAD,
+ FOOTER_LIST_ITEM_TYPE_MAX,
+}MpFooterLibraryMainListTabType;
+
+
+typedef struct
+{
+ void* DownloadCb;
+ void* SearchCb;
+ void* ShareViaCb;
+ void* DeleteCb;
+ void* ViewAsCb;
+ void* SortItemCb;
+ void* RenameCb;
+ void* DetailsCb;
+ void* SignInCb;
+#ifdef ENABLE_PRIVATE_MODE
+ void* AddToPersonalCB;
+ void* RemoveFromPersonalCB;
+#endif
+}st_RegisteCbFunc;
+
+
+void mp_ft_ctrl_create(void* pNaviFrameHandle, void* pNaviFrameItem, MpFooterLibraryMainListTabType nFooterListTabType, st_RegisteCbFunc* pRegisteCbFunc);
+void mp_ft_ctrl_destroy(void);
+void mp_ft_ctrl_hide_more_popup(void);
+void mp_ft_ctrl_create_center_button(void* pUserData, void* pToolbarCenterButtonCb);
+void mp_ft_ctrl_create_center_toolbar(void *pParent, void* pToolbarCenterButtonCb);
+void mp_ft_ctrl_delete_center_button(void);
+void mp_ft_ctrl_disable(void);
+void mp_ft_ctrl_delete_center_toolbar();
+void mp_ft_ctrl_rotate_update();
+bool mp_ft_ctrl_is_show(void);
+#endif
diff --git a/include/widget/mp-util-widget-ctrl.h b/include/widget/mp-util-widget-ctrl.h
new file mode 100644
index 0000000..667ddf8
--- /dev/null
+++ b/include/widget/mp-util-widget-ctrl.h
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_WIDGET_CTRL__
+#define __MP_UTIL_WIDGET_CTRL__
+
+#include <Eina.h>
+#include <Ecore_X.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+typedef enum
+{
+ VIDEOS_POPUP_NONE = 0x00,
+ VIDEOS_POPUP_114,
+ VIDEOS_POPUP_141,
+ VIDEOS_POPUP_MAX
+}euPopUpStyle;
+
+
+void mp_widget_ctrl_enable_navi_handle_focus(Evas_Object *pNaviHandle);
+void mp_widget_ctrl_disable_navi_handle_focus_except_item(Evas_Object *pNaviHandle, Elm_Object_Item *pCurentNaviItem);
+void mp_widget_ctrl_set_popup_min_size(Evas_Object *pBox, int nListCount, euPopUpStyle eStyle);
+void mp_widget_ctrl_navi_item_layout_focus_out(Evas_Object *pFocusLayout);
+void mp_widget_ctrl_navi_item_layout_focus_in(Evas_Object *pFocusLayout);
+Evas_Object* mp_widget_ctrl_create_navi_btn(Evas_Object *pParent, const char *pIconPath, Evas_Smart_Cb pFunc, void *pUserData);
+
+Evas_Object* mp_widget_ctrl_create_navi_left_btn(Evas_Object *pParent, Elm_Object_Item *pNaviItem,
+ const char *pIconPath, Evas_Smart_Cb pFunc, void *pUserData);
+
+Evas_Object* mp_widget_ctrl_create_navi_right_btn(Evas_Object *pParent, Elm_Object_Item *pNaviItem,
+ const char *pIconPath, Evas_Smart_Cb pFunc, void *pUserData);
+
+bool mp_widget_ctrl_create_select_all_layout(Evas_Object *pParent, Evas_Smart_Cb pChangeFunc,
+ Evas_Object_Event_Cb pMouseDownFunc, void *pUserData, Evas_Object **pCheckBox, Evas_Object **pSelectLayout);
+
+Evas_Object * mp_widget_ctrl_create_progressbar(Evas_Object *pParent, double dRadio);
+
+#endif
diff --git a/include/widget/mp-video-list-option-ctrl.h b/include/widget/mp-video-list-option-ctrl.h
new file mode 100644
index 0000000..b17cd54
--- /dev/null
+++ b/include/widget/mp-video-list-option-ctrl.h
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_OPTION_CTRL_
+#define _MP_VIDEO_LIST_OPTION_CTRL_
+
+
+typedef enum
+{
+ MP_LIST_OPTION_NONE = 0,
+ MP_LIST_OPTION_SHARE_VIA_ITEM,
+ MP_LIST_OPTION_ADD_HOME_ITEM,
+ MP_LIST_OPTION_RENAME_ITEM,
+ MP_LIST_OPTION_DETAILS_ITEM,
+ MP_LIST_OPTION_DELETE_ITEM,
+ MP_LIST_OPTION_DOWNLOAD_ITEM,
+ MP_LIST_OPTION_MAX,
+}MpListOptionType;
+
+typedef enum
+{
+ MP_LIST_OPTION_DOWNLOAD_NONE = 0,
+ MP_LIST_OPTION_CLOUD_DOWNLOAD_ITEM,
+ MP_LIST_OPTION_ASF_DOWNLOAD_ITEM,
+ MP_LIST_OPTION_DOWNLOAD_OPTION_MAX,
+}MpDownloadType;
+
+
+typedef struct
+{
+ void* ShareViaItemCb;
+ void* AddToHomeItemCb;
+ void* DeleteItemCb;
+ void* DownloadCb; //CLOUD, ALLSHARE
+}st_RegisteOptionCbFunc;
+
+typedef void (* MpListOptionCbFunc)(void *pUserData);
+
+bool mp_option_ctrl_show(void *pNaviHandle, const char *title, int nVideoIndex,
+ st_RegisteOptionCbFunc *pCallbackFunc, MpListOptionCbFunc pCloseFun, void*userData, MpDownloadType euType);
+void mp_option_ctrl_change_language(void);
+void mp_option_ctrl_delete_handle(void);
+void *mp_option_ctrl_get_handle(void);
+
+
+#endif // _MP_VIDEO_LIST_OPTION_CTRL_
diff --git a/include/widget/mp-video-list-sort-ctrl.h b/include/widget/mp-video-list-sort-ctrl.h
new file mode 100644
index 0000000..03cc615
--- /dev/null
+++ b/include/widget/mp-video-list-sort-ctrl.h
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_SORT_CTRL_
+#define _MP_VIDEO_LIST_SORT_CTRL_
+
+
+typedef enum
+{
+ MP_LIST_SORT_BY_NONE = 0,
+ //MP_LIST_SORT_BY_RECENTLY_VIEWED,
+ MP_LIST_SORT_BY_RECENTLY_ADDED =2,
+ MP_LIST_SORT_BY_NAME =3,
+ //MP_LIST_SORT_BY_SIZE,
+ //MP_LIST_SORT_BY_TYPE,
+ MP_LIST_SORT_BY_MAX,
+}MpListSortType;
+
+
+typedef void (*ListSortCtrlCbFunc)(void);
+
+
+bool mp_sort_ctrl_show(ListSortCtrlCbFunc pListSortCtrlCb);
+void mp_sort_ctrl_hide(void);
+void mp_sort_ctrl_change_language(void);
+int mp_sort_ctrl_get_sort_state(void);
+
+
+#endif // _MP_VIDEO_LIST_SORT_CTRL_
+
diff --git a/include/widget/mp-video-list-view-as-ctrl.h b/include/widget/mp-video-list-view-as-ctrl.h
new file mode 100644
index 0000000..213fe46
--- /dev/null
+++ b/include/widget/mp-video-list-view-as-ctrl.h
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_AS_CTRL_
+#define _MP_VIDEO_LIST_VIEW_AS_CTRL_
+
+
+typedef enum
+{
+ MP_LIST_VIEW_AS_NONE = 0,
+#ifdef VS_FEATURE_LIST_VIEW
+ MP_LIST_VIEW_AS_NORMAL_LIST,
+#endif
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ MP_LIST_VIEW_AS_THUMBNAIL_LIST,
+#endif
+ MP_LIST_VIEW_AS_FOLDER_LIST,
+ MP_LIST_VIEW_AS_MAX,
+}MpListViewAsType;
+
+
+typedef void(*ListViewAsCtrlCbFunc)(void);
+
+
+bool mp_view_as_ctrl_show(int tabType, ListViewAsCtrlCbFunc pListViewAsCtrlCb);
+void mp_view_as_ctrl_hide(void);
+void mp_view_as_ctrl_change_language(void);
+int mp_view_as_ctrl_get_type(void);
+
+
+#endif // _MP_VIDEO_LIST_VIEW_AS_CTRL_
diff --git a/include/widget/mp-video-nocontent-layout.h b/include/widget/mp-video-nocontent-layout.h
new file mode 100644
index 0000000..2dd1546
--- /dev/null
+++ b/include/widget/mp-video-nocontent-layout.h
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Evas.h>
+
+
+#ifndef _MP_VIDEO_NOCONTENT_LAYOUT_
+#define _MP_VIDEO_NOCONTENT_LAYOUT_
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+Evas_Object* mp_create_nocontent_layout( const Evas_Object *pParent, const char *pText, const char *pHelpText );
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
+#endif // _MP_VIDEO_NOCONTENT_LAYOUT_
diff --git a/include/widget/mp-video-rename-ctrl.h b/include/widget/mp-video-rename-ctrl.h
new file mode 100644
index 0000000..9271a73
--- /dev/null
+++ b/include/widget/mp-video-rename-ctrl.h
@@ -0,0 +1,31 @@
+ /*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_RENAME_CTRL__
+#define __MP_VIDEO_RENAME_CTRL__
+
+typedef void(*mpRenameCtrlCbFunc)(void);
+
+Evas_Object* mp_rename_ctrl_show(void *pNaviFrameHandlet, void *pUserData, mpRenameCtrlCbFunc pRenameCtrlCb, int nVideoItemIndex);
+void mp_rename_ctrl_delete_handle(void);
+void mp_rename_ctrl_focus_out_cb(void);
+bool mp_rename_ctrl_is_top_view();
+void mp_rename_ctrl_set_focus();
+#endif // __MP_VIDEO_RENAME_CTRL__
+
+
diff --git a/include/widget/mp-video-view-popup-ctrl.h b/include/widget/mp-video-view-popup-ctrl.h
new file mode 100644
index 0000000..45871a1
--- /dev/null
+++ b/include/widget/mp-video-view-popup-ctrl.h
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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_LIST_VIEW_CTRL_
+#define _MP_VIDEO_LIST_VIEW_CTRL_
+
+#include "mp-video-type-define.h"
+
+
+typedef enum
+{
+ MP_LIST_VIEW_NONE = 0,
+ MP_LIST_VIEW_ALL,
+ MP_LIST_VIEW_PHONE,
+ MP_LIST_VIEW_CLOUD,
+ MP_LIST_VIEW_MAX,
+}MpListItemType;
+
+typedef void (*ListViewCtrlCbFunc)(MpListUpdateType eUpdateType);
+
+bool mp_view_ctrl_show(ListViewCtrlCbFunc pListViewCtrlCb);
+void mp_view_ctrl_hide(void);
+void mp_view_ctrl_change_language(void);
+int mp_view_ctrl_get_list_type(void);
+
+#endif // _MP_VIDEO_LIST_VIEW_CTRL_
+
diff --git a/org.tizen.video-player.manifest b/org.tizen.video-player.manifest
index b0d83bf..d48cf70 100755
--- a/org.tizen.video-player.manifest
+++ b/org.tizen.video-player.manifest
@@ -3,6 +3,7 @@
<domain name="org.tizen.video-player" />
</define>
<assign>
+ <filesystem path="/usr/share/icons/default/small/org.tizen.video-player.png" label="_" />
<filesystem path="/usr/ug/lib/*" label="_" />
<filesystem path="/usr/ug/res/*" label="_" />
<filesystem path="/usr/ug/bin/*" label="_" exec_label="_" />
@@ -11,4 +12,3 @@
<domain name="org.tizen.video-player" />
</request>
</manifest>
-
diff --git a/org.tizen.video-player.rule b/org.tizen.video-player.rule
deleted file mode 100755
index e9581a8..0000000
--- a/org.tizen.video-player.rule
+++ /dev/null
@@ -1,70 +0,0 @@
-org.tizen.video-player org.tizen.videos rwxat
-org.tizen.video-player com.samsung.vp-chapter-svc rwxat
-org.tizen.video-player system::homedir rwxat
-org.tizen.video-player system::vconf rwxat
-org.tizen.video-player system::vconf_setting rwxat
-org.tizen.video-player system::vconf_inhouse rwxat
-org.tizen.video-player system::vconf_privacy rwxat
-org.tizen.video-player system::vconf_system rwxat
-org.tizen.video-player system::vconf_multimedia rwxat
-org.tizen.video-player system::vconf_network rwxat
-org.tizen.video-player system::vconf_misc rwxat
-org.tizen.video-player system::media rwxat
-org.tizen.video-player system::share rwxat
-org.tizen.video-player pulseaudio rwxat
-org.tizen.video-player sys-assert::core rwxat
-org.tizen.video-player org.tizen.indicator rw
-org.tizen.video-player ail::db rw
-org.tizen.video-player system::use_internet rw
-org.tizen.video-player xorg rw
-org.tizen.video-player isf rwx
-org.tizen.video-player sound_server rw
-org.tizen.video-player media-data::db rw
-org.tizen.video-player allshare::svc rwx
-org.tizen.video-player dbus rwx
-org.tizen.video-player media-server rwx
-org.tizen.video-player power_manager w
-org.tizen.video-player device::app_logging w
-org.tizen.video-player device::video r
-org.tizen.video-player device::hwcodec rw
-org.tizen.video-player device::bklight rw
-org.tizen.video-player libaccounts-svc::db rw
-org.tizen.video-player device::camera r
-org.tizen.video-player org.tizen.facebook rw
-org.tizen.video-player stest-service w
-org.tizen.video-player cloud-content-sync::db rw
-org.tizen.video-player cloud-content-sync rwx
-org.tizen.video-player org.tizen.setting rw
-org.tizen.video-player device::mdnie rw
-org.tizen.video-player download-provider rw
-org.tizen.video-player drmfw rw
-org.tizen.video-player nfc-manager w
-org.tizen.video-player deviced rwx
-org.tizen.video-player syslogd w
-org.tizen.video-player vcs-server rwx
-org.tizen.video-player stt-server rwx
-org.tizen.video-player secure-storage w
-org.tizen.video-player email-service x
-org.tizen.video-player secure-storage::divx-fragment rw
-
-e17 org.tizen.video-player w
-org.tizen.app-tray org.tizen.video-player rx
-system::use_internet org.tizen.video-player w
-org.tizen.volume org.tizen.video-player r
-media-server org.tizen.video-player w
-org.tizen.cluster-home org.tizen.video-player rx
-stest-service org.tizen.video-player rx
-org.tizen.setting org.tizen.video-player w
-wifi_direct_manager org.tizen.video-player rwx
-miracast-server org.tizen.video-player rwx
-
-org.tizen.data-provider-slave org.tizen.video-player rwx
-org.tizen.data-provider-slave media-data::db rwx
-org.tizen.data-provider-slave media-server rwx
-org.tizen.add-viewer org.tizen.video-player rwx
-org.tizen.video-player org.tizen.cluster-home w
-org.tizen.video-player data-provider-master rw
-
-org.tizen.video-player ug.email-composer-efl include
-org.tizen.video-player ug.setting-bluetooth-efl include
-org.tizen.video-player ug.fileshare-efl include
diff --git a/org.tizen.video-player.xml b/org.tizen.video-player.xml
deleted file mode 100755
index 9ca4b03..0000000
--- a/org.tizen.video-player.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.video-player" version="0.5.93" install-location="internal-only">
- <label>Video player</label>
- <author email="jongdong.lee@samsung.com" href="www.samsung.com">JongDong Lee</author>
- <description>Video player Application</description>
- <ui-application appid="org.tizen.video-player" exec="/usr/apps/org.tizen.video-player/bin/video-player" nodisplay="true" multiple="false" type="capp" taskmanage="true">
- <label>Video player</label>
- <icon>org.tizen.video-player.png</icon>
- <label xml:lang="en-us">Video player</label>
- <label xml:lang="nl-nl">Video player</label>
- <label xml:lang="de-de">Video player</label>
- <label xml:lang="zh-hk">Video player</label>
- <label xml:lang="zh-cn">Video player</label>
- <label xml:lang="ru-ru">Video player</label>
- <label xml:lang="zh-tw">Video player</label>
- <label xml:lang="ja-jp">Video player</label>
- <label xml:lang="es-es">Video player</label>
- <label xml:lang="el-gr">Video player</label>
- <label xml:lang="it-it">Video player</label>
- <label xml:lang="tr-tr">Video player</label>
- <label xml:lang="pt-pt">Video player</label>
- <label xml:lang="fr-fr">Video player</label>
- <label xml:lang="ko-kr">비디오 플레이어</label>
- <application-service>
- <operation name="http://tizen.org/appcontrol/operation/view" />
- <mime name="video/mp4" />
- <mime name="video/3gp" />
- <mime name="video/x-msvideo" />
- <mime name="video/x-ms-wmv" />
- <mime name="video/x-ms-asf" />
- <mime name="video/3gpp" />
- <mime name="video/x-matroska" />
- <mime name="video/vnd.ms-playready.media.pyv" />
- <mime name="application/x-mpegurl" />
- <mime name="audio/x-mpegurl" />
- <mime name="video/x-mpegurl" />
- <mime name="video/x-flv" />
- <mime name="video/ogg" />
- <mime name="application/sdp" />
- <uri name="http" />
- <uri name="https" />
- <uri name="rtsp" />
- <uri name="rtp" />
- </application-service>
- <application-service>
- <operation name="http://tizen.org/appcontrol/operation/view" />
- <mime name="video/mp4" />
- <mime name="video/3gp" />
- <mime name="video/x-msvideo" />
- <mime name="video/x-ms-wmv" />
- <mime name="video/x-ms-asf" />
- <mime name="video/3gpp" />
- <mime name="video/x-matroska" />
- <mime name="video/vnd.ms-playready.media.pyv" />
- <mime name="application/x-mpegurl" />
- <mime name="audio/x-mpegurl" />
- <mime name="video/x-mpegurl" />
- <mime name="video/x-flv" />
- <mime name="video/ogg" />
- <mime name="application/sdp" />
- </application-service>
- </ui-application>
-</manifest>
diff --git a/org.tizen.videos.efl b/org.tizen.videos.efl
new file mode 100755
index 0000000..e0ed757
--- /dev/null
+++ b/org.tizen.videos.efl
@@ -0,0 +1,71 @@
+org.tizen.videos org.tizen.video-player rwxat- ------
+org.tizen.videos tizen::vconf::volume::set rw---- ------
+org.tizen.videos org.tizen.indicator rw---- ------
+org.tizen.videos system::use_internet rw---- ------
+org.tizen.videos xorg rw---- ------
+org.tizen.videos isf rwx--- ------
+org.tizen.videos sound_server rw---- ------
+org.tizen.videos media-data::db rw---- ------
+org.tizen.videos dbus rwx--- ------
+org.tizen.videos media-server rwx--- ------
+org.tizen.videos power_manager -w---- ------
+org.tizen.videos device::video rw---- ------
+org.tizen.videos device::hwcodec rw---- ------
+org.tizen.videos libaccounts-svc::db rw---- ------
+org.tizen.videos device::camera r----- ------
+org.tizen.videos com.samsung.facebook rw---- ------
+org.tizen.videos stest-service -w---- ------
+org.tizen.videos org.tizen.setting rw---- ------
+org.tizen.videos device::app_logging -w---- ------
+org.tizen.videos device::mdnie rw---- ------
+org.tizen.videos download-provider rw---- ------
+org.tizen.videos drmfw rw---- ------
+org.tizen.videos nfc-manager -w---- ------
+org.tizen.videos nfc-manager::p2p rw---- ------
+org.tizen.videos deviced rwx--- ------
+org.tizen.videos syslogd -w---- ------
+org.tizen.videos vcs-server rwx--- ------
+org.tizen.videos tts-server rwx--- ------
+org.tizen.videos stt-server rwx--- ------
+org.tizen.videos svi-data r-x--- ------
+org.tizen.videos data-provider-master rw---- ------
+org.tizen.videos data-provider-master::notification rw---- ------
+org.tizen.videos data-provider-master::notification.client rw---- ------
+org.tizen.videos aul::launch --x--- ------
+org.tizen.videos connman::get rw---- ------
+org.tizen.videos connman::set rw---- ------
+org.tizen.videos telephony_framework::api_ps_public rw---- ------
+org.tizen.videos telephony_framework::api_ps_profile rw---- ------
+org.tizen.videos telephony_framework::api_modem r----- ------
+org.tizen.videos telephony_framework::api_manager r----- ------
+org.tizen.videos telephony_framework::api_sim r----- ------
+org.tizen.videos cloud-content-sync::db rw---- ------
+org.tizen.videos cloud-content-sync rwx--- ------
+org.tizen.videos com.samsung.cloud-content-sync::cloud-content-sync rwx--- ------
+com.samsung.app-tray org.tizen.videos r-x--- ------
+system::use_internet org.tizen.videos -w---- ------
+org.tizen.volume org.tizen.videos r----- ------
+org.tizen.videos org.tizen.volume rw----- ------
+media-server org.tizen.videos -w---- ------
+com.samsung.cluster-home org.tizen.videos r-x--- ------
+stest-service org.tizen.videos r-x--- ------
+org.tizen.setting org.tizen.videos -w---- ------
+org.tizen.quickpanel-lite org.tizen.videos rwx--- ------
+org.tizen.data-provider-slave org.tizen.videos rwx--- ------
+org.tizen.data-provider-slave media-data::db rwx--- ------
+org.tizen.data-provider-slave media-server rwx--- ------
+com.samsung.add-viewer org.tizen.videos rwx--- ------
+org.tizen.videos com.samsung.cluster-home -w---- ------
+org.tizen.videos data-provider-master::shortcut rw---- ------
+org.tizen.videos data-provider-master::shortcut.livebox -w---- ------
+org.tizen.videos system::homedir rwxat- ------
+org.tizen.videos system::media rwxat- ------
+org.tizen.videos system::share rwxat- ------
+org.tizen.videos pulseaudio rwxat- ------
+e17 org.tizen.videos -w---- ------
+org.tizen.videos sys-assert::core rwxat- ------
+org.tizen.videos privacy-manager::db r----l ------
+org.tizen.videos pkgmgr::db r----l ------
+org.tizen.videos ecore::lock rwxat- ------
+org.tizen.videos tizen::vconf::public::r::platform::rw r----- ------
+org.tizen.videos system::ext_storage rwx--- ------
diff --git a/org.tizen.videos.manifest b/org.tizen.videos.manifest
new file mode 100755
index 0000000..4a61fb1
--- /dev/null
+++ b/org.tizen.videos.manifest
@@ -0,0 +1,16 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.videos" />
+ </define>
+ <assign>
+ <filesystem path="/usr/share/icons/default/small/org.tizen.videos.png" label="_" />
+ <filesystem path="/usr/ug/lib/*" label="_" />
+ <filesystem path="/usr/ug/res/*" label="_" />
+ <filesystem path="/usr/ug/bin/*" label="_" exec_label="_" />
+ <filesystem path="/etc/nsswitch.conf" label="_" />
+ <filesystem path="/opt/usr/apps/org.tizen.videos/data/.video-store.db*" label="_"/>
+ </assign>
+ <request>
+ <domain name="org.tizen.videos" />
+ </request>
+</manifest>
diff --git a/org.tizen.videos.xml b/org.tizen.videos.xml
new file mode 100755
index 0000000..b694220
--- /dev/null
+++ b/org.tizen.videos.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.videos" version="1.0.39" install-location="internal-only" api-version="2.4">
+ <label>Videos</label>
+ <author email="yoechan.song@samsung.com" href="www.samsung.com">Yochan Song</author>
+ <description>Videos Application</description>
+ <ui-application appid="org.tizen.videos" exec="/usr/apps/org.tizen.videos/bin/videos"
+ nodisplay="false" multiple="false" type="capp" taskmanage="true" indicatordisplay="false" process-pool="false" hw-acceleration="use-GL"
+ effectimage-type="edj-default" portrait-effectimage="/usr/apps/org.tizen.videos/shared/res/video.edj">
+ <metadata key="http://developer.samsung.com/tizen/metadata/multiwindow"/>
+ <label>Video</label>
+ <icon>org.tizen.videos.png</icon>
+ <!--INDIA-->
+ <label xml:lang="en-gb">Video</label> <!-- -->
+ <label xml:lang="hi-in">वीडियो</label>
+ <label xml:lang="bn-in">ভিডিও</label>
+ <label xml:lang="gu-in">વિડિયો</label>
+ <label xml:lang="kn-in">ವೀಡಿಯೊ</label>
+ <label xml:lang="ml-in">വീഡിയോ</label>
+ <label xml:lang="si-lk">වීඩියෝ</label>
+ <label xml:lang="ta-in">நிகழ்படம்</label>
+ <label xml:lang="te-in">వీడియో</label>
+ <label xml:lang="ur-pk">ویڈیو</label>
+ <!--SEA-->
+ <label xml:lang="en-us">Video</label>
+ <label xml:lang="en-ph">Video</label>
+ <label xml:lang="zh-cn">视频</label>
+ <label xml:lang="tl-ph">Video</label>
+ <label xml:lang="id-id">Video</label>
+ <label xml:lang="ko-kr">비디오</label>
+ <label xml:lang="ms-my">Video</label>
+ <label xml:lang="my-mm">ဗီဒီယို</label>
+ <label xml:lang="th-th">วิดีโอ</label>
+ <label xml:lang="vi-vn">Video</label>
+ <label xml:lang="lo-la">ວິດີໂອ</label>
+ <label xml:lang="km-kh">វីដេអូ</label>
+ <!--Latin-->
+ <label xml:lang="pt-br">Vídeo</label>
+ <label xml:lang="es-us">Video</label>
+ </ui-application>
+
+ <privileges>
+ <privilege>http://tizen.org/privilege/mediastorage</privilege>
+ <privilege>http://tizen.org/privilege/systemsettings</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage</privilege>
+ <privilege>http://tizen.org/privilege/telephony</privilege>
+ <privilege>http://tizen.org/privilege/wifidirect</privilege>
+ <privilege>http://tizen.org/privilege/network.get</privilege>
+ <privilege>http://tizen.org/privilege/volume.set</privilege>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ </privileges>
+</manifest>
diff --git a/packaging/load_pkgs.sh b/packaging/load_pkgs.sh
new file mode 100755
index 0000000..e511ceb
--- /dev/null
+++ b/packaging/load_pkgs.sh
@@ -0,0 +1,149 @@
+#!/bin/bash
+
+#snapshot="SLPRelease_20121204.002"
+#snapshot="SLP_20130208.002"
+
+snapshot=$1
+
+if [ $# -ne 1 ]
+then
+ echo ""
+ echo "load_pkg : Get debug package from web"
+ echo ""
+ echo "Usage load_pkg [Snapshot version]"
+ echo ""
+ exit 1;
+fi
+
+declare -i release
+
+case $snapshot in
+ RelRedwoodCISOPEN*)
+ echo "CIS Open"
+ url="http://165.213.148.149:8008/snapshots/rel/redwood/cis-open/"
+ release=0
+ ;;
+ RelRedwoodEUROPEN*)
+ echo "Europe Open"
+ url="http://165.213.148.149:8008/snapshots/rel/redwood/eur-open/"
+ release=0
+ ;;
+ SLPRelease*)
+ echo "Release Mode"
+ url="http://165.213.148.151/snapshots/release/"
+ release=1
+ ;;
+ DailyRedwoodEUROPEN*)
+ echo "Daily Binary"
+ url="http://165.213.148.149:8008/snapshots/daily/redwood/eur-open/"
+ release=0
+ ;;
+
+ DailyRedwoodLTEEURORA*)
+ echo "Daily Binary Orange LTE"
+ url="http://165.213.148.151/snapshots/daily/redwoodlte/eur-ora/"
+ release=0
+ ;;
+
+ RelRedwoodLTEEURORA*)
+ echo "Release LTE orange Binary"
+ url="http://165.213.148.151/snapshots/rel/redwoodlte/eur-ora/"
+ release=0
+ ;;
+
+ DailyRedwoodCISOPEN*)
+ echo "Daily Redwood CIS Open"
+ url="http://165.213.148.151/snapshots/daily/redwood/cis-open/"
+ release=0
+ ;;
+
+ DailyRedwoodEURORA*)
+ echo "Daily Redwood Eur Ora"
+ url="http://165.213.148.151/snapshots/daily/redwood/eur-ora/"
+ release=0
+ ;;
+
+ SLP_*)
+ echo "Normal mode"
+ url="http://165.213.148.149:8008/snapshots/standard/"
+ release=0
+ ;;
+ *)
+ echo "Uknown snapshot name: " $snapshot
+ exit 1;
+ ;;
+esac
+
+mkdir -p $snapshot; cd $snapshot
+
+echo "Addr=$url$snapshot/repos"
+
+pkg="eglibc app-core-efl evas ecore elementary edje eina mmfw capi-media-player capi-media-sound-manager capi-media-image-util capi-content-media-content libmm-common libmm-sound libmm-session libmm-utility libmm-fileinfo libmm-transcode libmm-player libmedia-thumbnail"
+
+url_repo=$url$snapshot"/repos"
+
+if [ -e tmp ]; then
+ rm tmp
+fi
+
+if [ -e pkg_list ]; then
+ rm pkg_list
+fi
+
+#libstd++ is in http://165.213.148.149:8008/snapshots/standard/SLP_20130208.002/repos/slp-base/armv7l/packages/armv7l/libstdc++-4.5.3-11.3.slp.armv7l.rpm
+if [ $release -eq 1 ]
+then
+ url_base=$url_repo"/slp-base/armv7l/debug/"
+ url_release=$url_repo"/slp-release/armv7l/debug/"
+ url_package=$url_repo"/slp-base/armv7/packages/armv7l"
+
+# echo DBG=$url_base
+# echo DBG=$url_release
+
+ lynx -dump $url_base >> tmp
+ lynx -dump $url_release >> tmp
+
+
+ for pkgname in $pkg
+ do
+ if [ "$pkgname" == "libstdc++" ]
+ then
+ echo $url_package
+ lynx -dump $url_package | grep 'http' | egrep "/libstdc\+\+-[0-9]" | awk '{print $2}' >> pkg_list
+ else
+ grep 'http' tmp | grep "/$pkgname" | awk '{print $2}' >> pkg_list
+ fi
+ done
+
+elif [ $release -eq 0 ]
+then
+ url_base=$url_repo"/slp-release/armv7l/debug/"
+# url_standard=$url_repo"/slp-standard/armv7l/debug/"
+# url_package=$url_repo"/slp-base/armv7l/packages/armv7l"
+
+# echo DBG=$url_base
+# echo DBG=$url_standard
+ lynx -dump $url_base >> tmp
+# lynx -dump $url_standard >> tmp
+
+ for pkgname in $pkg
+ do
+ if [ "$pkgname" == "libstdc++" ]
+ then
+ echo $url_package
+ lynx -dump $url_package | grep 'http' | egrep "/libstdc\+\+-[0-9]" | awk '{print $2}' >> pkg_list
+ else
+ grep 'http' tmp | grep "/$pkgname" | awk '{print $2}' >> pkg_list
+ fi
+ done
+fi
+
+for x in $(cat pkg_list)
+do
+ echo "Get: '${x##*/}"
+ wget -q -nd -N $x
+done
+
+rm tmp
+rm pkg_list
+
diff --git a/packaging/org.tizen.video-player.spec b/packaging/org.tizen.video-player.spec
deleted file mode 100755
index 2447908..0000000
--- a/packaging/org.tizen.video-player.spec
+++ /dev/null
@@ -1,96 +0,0 @@
-Name: org.tizen.video-player
-Summary: Video & streaming player
-Version: 0.5.141
-Release: 1
-Group: TO_BE/FILLED_IN
-License: Flora
-Source0: %{name}-%{version}.tar.gz
-BuildRequires: pkgconfig(elementary)
-BuildRequires: pkgconfig(drm-client)
-BuildRequires: pkgconfig(utilX)
-BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(vconf)
-BuildRequires: pkgconfig(syspopup-caller)
-BuildRequires: pkgconfig(ecore)
-BuildRequires: pkgconfig(eina)
-BuildRequires: pkgconfig(evas)
-BuildRequires: pkgconfig(edje)
-BuildRequires: pkgconfig(efreet)
-BuildRequires: pkgconfig(pmapi)
-BuildRequires: pkgconfig(capi-appfw-application)
-BuildRequires: pkgconfig(capi-media-player)
-BuildRequires: pkgconfig(capi-media-sound-manager)
-BuildRequires: pkgconfig(capi-media-image-util)
-BuildRequires: pkgconfig(capi-system-power)
-BuildRequires: pkgconfig(capi-media-metadata-extractor)
-BuildRequires: pkgconfig(capi-content-media-content)
-BuildRequires: pkgconfig(capi-content-mime-type)
-BuildRequires: pkgconfig(capi-system-sensor)
-BuildRequires: pkgconfig(ecore-evas)
-BuildRequires: pkgconfig(ecore-x)
-BuildRequires: pkgconfig(xext)
-BuildRequires: pkgconfig(devman)
-BuildRequires: pkgconfig(ui-gadget-1)
-BuildRequires: boost-devel
-BuildRequires: boost-thread
-BuildRequires: boost-system
-BuildRequires: boost-filesystem
-
-
-BuildRequires: cmake
-BuildRequires: gettext-tools
-BuildRequires: edje-tools
-BuildRequires: prelink
-BuildRequires: libicu-devel
-
-%description
-Video & streaming player
-
-%prep
-%setup -q
-
-%ifarch %{arm}
-%define ARCH arm
-%else
-%define ARCH i586
-%endif
-
-%build
-cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.video-player -DARCH=%{ARCH}
-make %{?jobs:-j%jobs}
-
-
-%install
-rm -rf %{buildroot}
-%make_install
-execstack -c %{buildroot}/usr/apps/org.tizen.video-player/bin/video-player
-mkdir -p %{buildroot}/usr/share/license
-cp LICENSE.Flora %{buildroot}/usr/share/license/%{name}
-
-%post
-vconftool set -t bool db/private/org.tizen.video-player/backgroud_playing 0 -g 5000
-vconftool set -t int db/private/org.tizen.video-player/video_auto_off_type 0 -g 5000
-vconftool set -t bool db/private/org.tizen.video-player/auto_search_subtitle_file 1 -g 5000
-vconftool set -t bool db/private/org.tizen.video-player/show_subtitle 1 -g 5000
-vconftool set -t int db/private/org.tizen.video-player/subtitle_size 1 -g 5000
-vconftool set -t int db/private/org.tizen.video-player/display_color_tone_type 0 -g 5000
-vconftool set -t bool db/private/org.tizen.video-player/outdoor_visibility 0 -g 5000
-vconftool set -t string db/private/org.tizen.video-player/preview_url_videos "" -g 5000
-vconftool set -t string db/private/org.tizen.video-player/preview_url_records "" -g 5000
-vconftool set -t string db/private/org.tizen.video-player/show_indicator 1 -g 5000
-vconftool set -t string db/private/org.tizen.video-player/show_border 0 -g 5000
-
-%files -n org.tizen.video-player
-/opt/etc/smack/accesses.d/org.tizen.video-player.rule
-
-%manifest org.tizen.video-player.manifest
-%dir /opt/usr/media/.video_thumb
-
-/usr/apps/org.tizen.video-player/bin/*
-/usr/apps/org.tizen.video-player/res/locale/*
-/usr/share/icons/default/small/*
-/usr/apps/org.tizen.video-player/res/edje/*
-/usr/apps/org.tizen.video-player/res/images/*
-/usr/share/packages/org.tizen.video-player.xml
-
-/usr/share/license/%{name}
diff --git a/packaging/org.tizen.videos.spec b/packaging/org.tizen.videos.spec
new file mode 100644
index 0000000..6904356
--- /dev/null
+++ b/packaging/org.tizen.videos.spec
@@ -0,0 +1,274 @@
+Name: org.tizen.videos
+Summary: video library & store
+Version: 1.0.40
+Release: 1
+Group: Applications
+License: Apache-2.0
+Source0: %{name}-%{version}.tar.gz
+
+%if "%{?tizen_profile_name}" == "wearable" || "%{?tizen_profile_name}" == "tv"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(libmedia-service)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(efreet)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-appfw-preference)
+BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-media-image-util)
+BuildRequires: pkgconfig(capi-media-metadata-extractor)
+BuildRequires: pkgconfig(capi-content-media-content)
+BuildRequires: pkgconfig(capi-content-mime-type)
+BuildRequires: pkgconfig(capi-system-media-key)
+BuildRequires: pkgconfig(capi-web-url-download)
+BuildRequires: pkgconfig(capi-system-sensor)
+BuildRequires: pkgconfig(xext)
+BuildRequires: pkgconfig(shortcut)
+BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(accounts-svc)
+BuildRequires: pkgconfig(capi-network-connection)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(capi-system-runtime-info)
+BuildRequires: pkgconfig(capi-network-wifi)
+BuildRequires: pkgconfig(capi-network-wifi-direct)
+BuildRequires: boost-devel
+BuildRequires: boost-thread
+BuildRequires: boost-system
+BuildRequires: boost-filesystem
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(minicontrol-provider)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(storage)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(libcore-context-manager)
+BuildRequires: pkgconfig(capi-system-device)
+BuildRequires: pkgconfig(capi-network-bluetooth)
+BuildRequires: pkgconfig(capi-base-utils-i18n)
+
+BuildRequires: cmake
+BuildRequires: gettext-tools
+BuildRequires: edje-tools
+BuildRequires: prelink
+BuildRequires: libicu-devel
+#BuildRequires: hash-signer
+
+BuildRequires: pkgconfig(tapi)
+BuildRequires: pkgconfig(efl-extension)
+BuildRequires: pkgconfig(capi-telephony)
+
+%description
+video library
+
+
+Description: chapter video manange app for video-player.
+
+%package -n org.tizen.video-player
+Summary: video file video-player.
+Group: Applications
+License: Apache-2.0
+
+%description -n org.tizen.video-player
+
+Description: video file video-player.
+
+%prep
+%setup -q
+
+%ifarch %{arm}
+%define ARCH arm
+%else
+%define ARCH i586
+%endif
+
+%build
+%if 0%{?tizen_build_binary_release_type_eng}
+export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
+export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
+%endif
+
+CFLAGS+=" -fvisibility=hidden"; export CFLAGS
+CXXFLAGS+=" -fvisibility=hidden"; export CXXFLAGS
+FFLAGS+=" -fvisibility=hidden"; export FFLAGS
+
+%if 0%{?sec_product_feature_cloud_enable_content_sync_dropbox}
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DENABLE_CLOUD_FEATURE=YES -DARCH=%{ARCH}
+%else
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DARCH=%{ARCH}
+%endif
+
+%if 0%{?sec_product_feature_msg_disable_mms}
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DCMAKE_DISABLE_FEATURE_MMS=YES -DARCH=%{ARCH}
+%else
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DARCH=%{ARCH}
+%endif
+
+%if 0%{?sec_product_feature_multiwindow}
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DCMAKE_ENABLE_MULTI_WINDOW=YES -DARCH=%{ARCH}
+%else
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DARCH=%{ARCH}
+%endif
+
+%if 0%{?sec_product_feature_hw_enable_back_menu_key}
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DENABLE_HW_BACK_KEY=YES -DARCH=%{ARCH}
+%else
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DARCH=%{ARCH}
+%endif
+
+%if 0%{?sec_product_feature_nfc_disable}
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DENABLE_NFC_FEATURE=YES -DARCH=%{ARCH}
+%else
+cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.videos -DARCH=%{ARCH}
+%endif
+
+%if 0%{?sec_build_binary_debug_enable}
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
+export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
+%endif
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+
+if [ ! -d %{buildroot}/opt/usr/apps/org.tizen.videos/data/ ]
+then
+ mkdir -p %{buildroot}/opt/usr/apps/org.tizen.videos/data/
+fi
+
+if [ ! -f %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db ];
+ rm -rf %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db*
+then
+ echo -e "install video thumb DB in install"
+ sqlite3 %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db 'PRAGMA journal_mode=PERSIST;
+ CREATE TABLE video_preview(preview_uuid INTEGER PRIMARY KEY AUTOINCREMENT, file_path TEXT, file_size INTEGER, last_hit_date INTEGER, media_id TEXT);
+ CREATE TABLE video_thumb(thumb_uuid INTEGER PRIMARY KEY AUTOINCREMENT, thumb_idx INTEGER, file_path TEXT, file_size INTEGER, media_id TEXT);
+ CREATE TABLE video_chapter(chapter_uuid INTEGER PRIMARY KEY AUTOINCREMENT, chapter_idx INTEGER, file_path TEXT, file_size INTEGER, media_id TEXT);'
+fi
+
+%make_install
+execstack -c %{buildroot}/usr/apps/org.tizen.videos/bin/videos
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE %{buildroot}/usr/share/license/%{name}
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/org.tizen.videos;/usr/apps/org.tizen.video-player;
+%define tizen_sign_level platform
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
+
+%post
+#/usr/bin/signing-client/hash-signer-client.sh -a -d -p platform /usr/apps/org.tizen.videos
+
+%postun
+
+%post -n org.tizen.video-player
+/sbin/ldconfig
+
+if [ ! -d %{buildroot}/opt/usr/apps/org.tizen.videos/ ]
+then
+ mkdir -p %{buildroot}/opt/usr/apps/org.tizen.videos/
+fi
+
+if [ ! -d %{buildroot}/opt/usr/apps/org.tizen.videos/data/ ]
+then
+ mkdir -p %{buildroot}/opt/usr/apps/org.tizen.videos/data/
+fi
+
+if [ ! -d %{buildroot}/opt/usr/media/.video_thumb ]
+then
+ mkdir -p %{buildroot}/opt/usr/media/.video_thumb
+fi
+
+if [ ! -d %{buildroot}/opt/usr/media/.cur_video_thumb ]
+then
+ mkdir -p %{buildroot}/opt/usr/media/.cur_video_thumb
+fi
+
+if [ ! -d %{buildroot}/opt/usr/media/.video_thumb/tmp ]
+then
+ mkdir -p %{buildroot}/opt/usr/media/.video_thumb/tmp
+fi
+
+if [ ! -d %{buildroot}/opt/usr/media/.video_thumb/sdp ]
+then
+ mkdir -p %{buildroot}/opt/usr/media/.video_thumb/sdp
+fi
+
+if [ ! -f %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db ];
+ rm -rf %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db*
+then
+ echo -e "install video thumb DB in postfile"
+ sqlite3 %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db 'PRAGMA journal_mode=PERSIST;
+ CREATE TABLE video_preview(preview_uuid INTEGER PRIMARY KEY AUTOINCREMENT, file_path TEXT, file_size INTEGER, last_hit_date INTEGER, media_id TEXT);
+ CREATE TABLE video_thumb(thumb_uuid INTEGER PRIMARY KEY AUTOINCREMENT, thumb_idx INTEGER, file_path TEXT, file_size INTEGER, media_id TEXT);
+ CREATE TABLE video_chapter(chapter_uuid INTEGER PRIMARY KEY AUTOINCREMENT, chapter_idx INTEGER, file_path TEXT, file_size INTEGER, media_id TEXT);'
+fi
+
+chmod 660 %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db
+chmod 660 %{buildroot}/opt/usr/apps/org.tizen.videos/data/.video-thumb.db-journal
+
+# Change file owner
+chown -R app:app /opt/usr/apps/org.tizen.videos/data
+chown -R app:app /opt/usr/apps/org.tizen.video-player/data
+chown -R 5000:5000 /opt/usr/media/.video_thumb
+chown -R 5000:5000 /opt/usr/media/.cur_video_thumb
+chown -R 5000:5000 /opt/usr/media/.video_thumb/tmp
+chown -R 5000:5000 /opt/usr/media/.video_thumb/sdp
+
+chown -R 5000:5000 /opt/usr/apps/org.tizen.videos/data/.video-thumb.db
+chown -R 5000:5000 /opt/usr/apps/org.tizen.videos/data/.video-thumb.db-journal
+
+chmod 777 /opt/usr/apps/org.tizen.videos/data
+chmod 777 /opt/usr/apps/org.tizen.video-player/shared/data
+
+#/usr/bin/signing-client/hash-signer-client.sh -a -d -p platform /usr/apps/org.tizen.video-player
+
+%files -n org.tizen.videos
+%manifest org.tizen.videos.manifest
+
+/usr/apps/org.tizen.videos/bin/*
+/usr/apps/org.tizen.videos/res/locale/*
+/usr/share/icons/default/small/org.tizen.videos.png
+/usr/apps/org.tizen.videos/res/edje/*
+#/usr/apps/org.tizen.videos/res/images/*
+/usr/share/packages/org.tizen.videos.xml
+/usr/apps/org.tizen.videos/shared/res/video.edc
+/usr/apps/org.tizen.videos/res/images/core_theme_bg_01.png
+
+#/usr/apps/org.tizen.videos/res/script/*
+#/usr/apps/org.tizen.videos/libexec/*
+
+/etc/smack/accesses.d/org.tizen.videos.efl
+
+#/usr/apps/org.tizen.videos/author-signature.xml
+#/usr/apps/org.tizen.videos/signature1.xml
+
+%files -n org.tizen.video-player
+/etc/smack/accesses.d/org.tizen.video-player.efl
+%manifest org.tizen.video-player.manifest
+%defattr(-,root,root,-)
+/opt/usr/media/.video_thumb
+/opt/usr/media/.cur_video_thumb
+/opt/usr/media/.video_thumb/tmp
+/opt/usr/media/.video_thumb/sdp
+/opt/usr/apps/org.tizen.videos/data
+/usr/apps/org.tizen.video-player/bin/*
+/usr/apps/org.tizen.video-player/res/locale/*
+/usr/apps/org.tizen.video-player/res/edje/*
+/usr/share/icons/default/small/org.tizen.video-player.png
+/usr/apps/org.tizen.video-player/shared/res/video_preview.png
+/usr/apps/org.tizen.video-player/shared/res/video_preview_l.png
+/opt/usr/apps/org.tizen.video-player/data
+/opt/usr/apps/org.tizen.video-player/shared/data
+/usr/share/packages/org.tizen.video-player.xml
+#/usr/apps/org.tizen.video-player/author-signature.xml
+#/usr/apps/org.tizen.video-player/signature1.xml
+
+/usr/share/license/%{name}
diff --git a/playview/CMakeLists.txt b/playview/CMakeLists.txt
new file mode 100755
index 0000000..14bba47
--- /dev/null
+++ b/playview/CMakeLists.txt
@@ -0,0 +1,238 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(playview C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(VERSION 0.1.0)
+
+SET(SRCS
+#################################################
+#play view src
+#################################################
+ src/vp-play-view.c
+ src/common/vp-play-util.c
+ src/common/vp-play-config.c
+ src/common/vp-play-preference.c
+ src/common/vp-play-ug.c
+ src/view/vp-play-multi-view.c
+ src/view/vp-play-normal-view.c
+ src/widget/vp-play-bookmark.c
+ src/widget/vp-play-button.c
+ src/widget/vp-play-more.c
+ src/widget/vp-play-popup.c
+ src/widget/vp-play-subtitle.c
+ src/widget/vp-play-volume.c
+ src/widget/vp-play-progressbar.c
+ src/widget/vp-play-loading-ani.c
+ src/widget/vp-play-volume-popup.c
+ src/widget/vp-play-brightness-popup.c
+ src/core/vp-mm-player.c
+ src/core/vp-sound.c
+ src/core/vp-media-contents.c
+ src/core/vp-image-util.c
+ src/core/vp-device.c
+ src/core/vp-media-key.c
+ src/core/vp-sensor.c
+ src/core/vp-multi-path.c
+ src/core/vp-hollic.c
+ src/core/vp-device-language.c
+ src/core/vp-avrcp.c
+ src/feature/vp-share.c
+ src/feature/vp-sound-alive.c
+ src/feature/vp-sound-path.c
+ src/feature/vp-repeat.c
+ src/feature/vp-setting.c
+ src/feature/vp-audio-track.c
+ src/feature/vp-subtitle.c
+ src/feature/vp-subtitle-sync.c
+ src/feature/vp-subtitle-select.c
+ src/feature/vp-subtitle-track.c
+ src/feature/vp-subtitle-font.c
+ src/feature/vp-subtitle-size.c
+ src/feature/vp-subtitle-color.c
+ src/feature/vp-subtitle-alignment.c
+ src/feature/vp-subtitle-bg-color.c
+ src/feature/vp-subtitle-edge.c
+ src/feature/vp-detail.c
+ src/feature/vp-capture.c
+ src/feature/vp-play-speed.c
+ src/feature/vp-zoom-guide.c
+)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/video-downloader/include
+ ${CMAKE_SOURCE_DIR}/common/include
+ ${CMAKE_SOURCE_DIR}/feature/include
+ ${CMAKE_SOURCE_DIR}/core/include
+
+#################################################
+#play view include
+#################################################
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/common/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/view/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/widget/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/core/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/feature/include
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED
+ elementary
+ ecore-x
+ evas
+ edje
+ vconf
+ capi-appfw-application
+ capi-system-system-settings
+ glib-2.0
+ libxml-2.0
+ appcore-efl
+ capi-appfw-application
+ capi-appfw-preference
+ capi-media-player
+ capi-media-image-util
+ capi-network-wifi-direct
+ capi-system-media-key
+ capi-content-media-content
+ capi-system-sensor
+ capi-system-runtime-info
+ capi-web-url-download
+ shortcut
+ notification
+ capi-content-mime-type
+ capi-network-connection
+ fontconfig
+ minicontrol-provider
+ capi-appfw-app-manager
+ storage
+ accounts-svc
+ tapi
+ libcore-context-manager
+ capi-system-device
+ capi-network-bluetooth
+ capi-base-utils-i18n
+ capi-network-wifi
+ efl-extension
+ capi-telephony
+)
+
+FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS})
+ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -Wall")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+ ADD_DEFINITIONS("-DTARGET")
+ MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+IF(ENABLE_HW_BACK_KEY)
+ADD_DEFINITIONS("-D_ENABLE_HW_BACK_KEY")
+ENDIF(ENABLE_HW_BACK_KEY)
+
+ADD_DEFINITIONS("-DUSE_I_FRAMESEKK")
+
+# K feature
+#ADD_DEFINITIONS("-DK_FEATURE_MICROSEEK")
+ADD_DEFINITIONS("-DSUBTITLE_K_FEATURE")
+
+# support multi-language of subtitle
+ADD_DEFINITIONS("-D_SUBTITLE_MULTI_LANGUAGE")
+
+# apply new feature for trim view
+ADD_DEFINITIONS("-D_TRIME_VIEW_NEW_FEATURE")
+
+# apply native buffer sync
+#ADD_DEFINITIONS("-D_NATIVE_BUFFER_SYNC")
+
+# apply native buffer sync
+#ADD_DEFINITIONS("-DFLICK_JUMP")
+
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS})
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} )
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS} feature common core video-downloader -ldl)
+
+SET(VIDEO_PLAYER_PACKAGE "org.tizen.video-player")
+SET(VIDEO_PLAYER_EDJ_DIR "/usr/apps/${VIDEO_PLAYER_PACKAGE}/res/edje")
+SET(VIDEO_SHARED_DATA_DIR "/opt/usr/apps/${VIDEO_PLAYER_PACKAGE}/shared/data")
+
+INSTALL(DIRECTORY DESTINATION ${VIDEO_PLAYER_EDJ_DIR})
+INSTALL(DIRECTORY DESTINATION ${VIDEO_SHARED_DATA_DIR})
+
+# EDJE
+FUNCTION (BUILD_EDJ _in _out _base _dir)
+ ADD_CUSTOM_TARGET(${_out}
+ COMMAND
+ edje_cc -no-save -id ${_base}/${_dir}
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in}
+ ${CMAKE_BINARY_DIR}/${_out}
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in}
+ )
+ ADD_DEPENDENCIES(${PROJECT_NAME} ${_out})
+ INSTALL(FILES ${CMAKE_BINARY_DIR}/${_out} DESTINATION ${VIDEO_PLAYER_EDJ_DIR})
+ENDFUNCTION (BUILD_EDJ)
+
+FUNCTION (BUILD_CUSTOM_EDJ _in _out _base _id _sd)
+ ADD_CUSTOM_TARGET(${_out}
+ COMMAND
+ edje_cc -no-save -id ${_base}/${_id} -sd ${_base}/${_sd}
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in}
+ ${CMAKE_BINARY_DIR}/${_out}
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in}
+ )
+ ADD_DEPENDENCIES(${PROJECT_NAME} ${_out})
+ INSTALL(FILES ${CMAKE_BINARY_DIR}/${_out} DESTINATION ${VIDEO_PLAYER_EDJ_DIR})
+ENDFUNCTION (BUILD_CUSTOM_EDJ)
+
+BUILD_EDJ(pv-normal-main.edc pv-normal-main.edj res/edc/playview images)
+BUILD_EDJ(pv-normal-control.edc pv-normal-control.edj res/edc/playview images)
+BUILD_EDJ(pv-normal-top-control.edc pv-normal-top-control.edj res/edc/playview images)
+BUILD_EDJ(pv-normal-function.edc pv-normal-function.edj res/edc/playview images)
+BUILD_EDJ(pv-multi-main.edc pv-multi-main.edj res/edc/playview images)
+BUILD_EDJ(pv-trim-main.edc pv-trim-main.edj res/edc/playview images)
+BUILD_EDJ(pv-trim-control.edc pv-trim-control.edj res/edc/playview images)
+BUILD_EDJ(pv-trim-top-control.edc pv-trim-top-control.edj res/edc/playview images)
+BUILD_EDJ(pv-trim-item.edc pv-trim-item.edj res/edc/playview images)
+BUILD_EDJ(pv-chapter-main-new.edc pv-chapter-main-new.edj res/edc/playview images)
+BUILD_EDJ(pv-progressbar.edc pv-progressbar.edj res/edc/playview images)
+BUILD_EDJ(pv-volume.edc pv-volume.edj res/edc/playview images)
+BUILD_EDJ(pv-volume-popup.edc pv-volume-popup.edj res/edc/playview images)
+BUILD_EDJ(pv-brightness-popup.edc pv-brightness-popup.edj res/edc/playview images)
+BUILD_EDJ(pv-bookmark.edc pv-bookmark.edj res/edc/playview images)
+BUILD_EDJ(pv-bookmark-item.edc pv-bookmark-item.edj res/edc/playview images)
+BUILD_EDJ(pv-resource.edc pv-resource.edj res/edc/playview images)
+BUILD_EDJ(pv-subtitle.edc pv-subtitle.edj res/edc/playview images)
+BUILD_EDJ(pv-popup.edc pv-popup.edj res/edc/playview images)
+BUILD_EDJ(pv-sensor-popup.edc pv-sensor-popup.edj res/edc/playview images)
+BUILD_EDJ(pv-speed-popup.edc pv-speed-popup.edj res/edc/playview images)
+BUILD_EDJ(pv-zoom-guide.edc pv-zoom-guide.edj res/edc/playview images)
+BUILD_EDJ(pv-gesture.edc pv-gesture.edj res/edc/playview images)
+BUILD_EDJ(pv-subtitle-color-popup.edc pv-subtitle-color-popup.edj res/edc/playview images)
+BUILD_EDJ(pv-colorselector.edc pv-colorselector.edj res/edc/playview images)
+
+BUILD_CUSTOM_EDJ(pv-minicontroller.edc pv-minicontroller.edj res/edc/playview images custom)
+BUILD_CUSTOM_EDJ(pv-custom-winset.edc pv-custom-winset.edj res/edc/playview images custom)
+
+
+#install resouce files.
+# Lack of a trailing slash means install this directory, trailing slash means
+# install everything in this directory.
+
+# Install image files.
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
+
+
+
diff --git a/playview/include/vp-play-log.h b/playview/include/vp-play-log.h
new file mode 100644
index 0000000..fc4e916
--- /dev/null
+++ b/playview/include/vp-play-log.h
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#ifndef _VIDEO_LOG_H_
+#define _VIDEO_LOG_H_
+
+#include <dlog.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+#include <stdbool.h>
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+
+#define LOG_TAG "VIDEO_PLAYER"
+
+#define VideoLogInfoWithTid(fmt,arg...) LOGI_IF(true, "[VP][TID:%d]" fmt "\n", syscall(__NR_gettid), ##arg)
+#define VideoLogInfo(fmt,arg...) LOGI_IF(true, "[VP]" fmt "\n", ##arg)
+#define VideoLogDebug(fmt,arg...) LOGD_IF(true, " " fmt "\n", ##arg)
+#define VideoLogWarning(fmt,arg...) LOGW_IF(true, "\033[0;33m [WARN] " fmt "\033[0m\n", ##arg)
+#define VideoLogError( fmt,arg...) LOGE_IF(true, "\033[0;31m [ERR] " fmt "\033[0m\n", ##arg)
+
+#define VideoLogPerfS( fmt,arg...) LOGI_IF(true, "\033[0;31m [PERF] ---> Start " fmt "\033[0m\n", ##arg)
+#define VideoLogPerfE( fmt,arg...) LOGI_IF(true, "\033[0;31m [PERF] End <--- " fmt "\033[0m\n", ##arg)
+
+
+#define VideoSecureLogInfoWithTid(fmt,arg...) SECURE_LOGI( "[VP][TID:%d]" fmt "\n", syscall(__NR_gettid), ##arg)
+#define VideoSecureLogDebug(fmt,arg...) SECURE_LOGD( " " fmt "\n", ##arg)
+#define VideoSecureLogInfo(fmt,arg...) SECURE_LOGI( fmt "\n", ##arg)
+#define VideoSecureLogError( fmt,arg...) SECURE_LOGE( "\033[0;31m [ERR] " fmt "\033[0m\n", ##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/playview/include/vp-play-type-define.h b/playview/include/vp-play-type-define.h
new file mode 100644
index 0000000..9932fed
--- /dev/null
+++ b/playview/include/vp-play-type-define.h
@@ -0,0 +1,185 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+
+typedef enum {
+ VIDEO_PLAY_ROTATE_NONE = 0x00,
+ VIDEO_PLAY_ROTATE_90,
+ VIDEO_PLAY_ROTATE_180,
+ VIDEO_PLAY_ROTATE_270
+}video_play_rotate_t;
+
+
+typedef enum {
+ VIDEO_PLAY_MODE_NORMAL_VIEW = 0x00,
+}video_play_mode_t;
+
+
+typedef enum {
+ VIDEO_PLAY_TYPE_OTHER = 0x00,
+ VIDEO_PLAY_TYPE_STORE, //Currently, Don't support this type. if support this type, we need to sync code
+ VIDEO_PLAY_TYPE_LIST,
+ VIDEO_PLAY_TYPE_GALLERY,
+ VIDEO_PLAY_TYPE_MYFILE,
+ VIDEO_PLAY_TYPE_MESSAGE,
+ VIDEO_PLAY_TYPE_EMAIL,
+ VIDEO_PLAY_TYPE_WEB,
+ VIDEO_PLAY_TYPE_MULTI_PATH,
+ VIDEO_PLAY_TYPE_PREVIEW
+}video_play_launching_type_t;
+
+
+typedef enum {
+ VIDEO_PLAY_LIST_TYPE_ALL = 0x00,
+ VIDEO_PLAY_LIST_TYPE_FOLDER,
+}video_play_list_type_t;
+
+
+typedef enum {
+ VIDEO_PLAY_CB_TYPE_REALIZE = 0x00,
+ VIDEO_PLAY_CB_TYPE_DESTORY,
+ VIDEO_PLAY_CB_TYPE_EVENT_KEY_DOWN,
+ VIDEO_PLAY_CB_TYPE_EVENT_KEY_UP
+}video_play_callback_type_t;
+
+typedef enum {
+ VIDEO_PLAY_POPUP_SOUND_ALIVE = 0x00,
+ VIDEO_PLAY_POPUP_SUBTITLE_MAIN,
+ VIDEO_PLAY_POPUP_SUBTITLE_LANGUAGE,
+ VIDEO_PLAY_POPUP_SUBTITLE_SIZE,
+ VIDEO_PLAY_POPUP_SUBTITLE_SYNC,
+ VIDEO_PLAY_POPUP_REPEAT_MODE,
+ VIDEO_PLAY_POPUP_AUDIO_TRACK
+}video_play_popup_mode_t;
+
+typedef enum {
+ VIDEO_SHARE_FILE_TRANSFER = 0x00,
+ VIDEO_SHARE_MESSAGE,
+ VIDEO_SHARE_EMAIL,
+ VIDEO_SHARE_NFC,
+ VIDEO_SHARE_WIFI_DIRECT,
+ VIDEO_SHARE_BLUETOOTH,
+ VIDEO_SHARE_FACEBOOK,
+ VIDEO_SHARE_YOUTUBE
+}video_share_mode_t;
+
+typedef enum {
+ VIDEO_SA_NONE = 0x00,
+ VIDEO_SA_NORMAL,
+ VIDEO_SA_VOICE,
+ VIDEO_SA_MOVIE,
+ VIDEO_SA_7_1_CH
+}video_sound_alive_t;
+
+typedef enum
+{
+ VIDEO_SOUND_PATH_NONE = 0x00,
+ VIDEO_SOUND_PATH_SPEAKER,
+ VIDEO_SOUND_PATH_EARJACK,
+ VIDEO_SOUND_PATH_BLUETOOTH,
+ VIDEO_SOUND_PATH_HDMI,
+ VIDEO_SOUND_PATH_MIRRORING,
+ VIDEO_SOUND_PATH_USB_AUDIO,
+ VIDEO_SOUND_PATH_MAX,
+}video_sound_path_t;
+
+
+typedef enum {
+ VIDEO_PLAY_REPEAT_NONE = 0x00,
+ VIDEO_PLAY_REPEAT_OFF,
+ VIDEO_PLAY_REPEAT_ALL_STOP,
+ VIDEO_PLAY_REPEAT_ONE,
+ VIDEO_PLAY_REPEAT_ALL,
+ VIDEO_PLAY_REPEAT_FOLDER
+}video_play_repeat_mode_t;
+
+typedef enum {
+ VIDEO_PLAY_COLOR_TONE_NORMAL = 0x00,
+ VIDEO_PLAY_COLOR_TONE_WARM,
+ VIDEO_PLAY_COLOR_TONE_COLD,
+}video_play_color_tone_t;
+
+typedef enum {
+ VIDEO_SORT_BY_NONE = 0,
+ VIDEO_SORT_BY_NAME_A_Z,
+ VIDEO_SORT_BY_NAME_Z_A,
+ VIDEO_SORT_BY_DATE_MOST_RECENT,
+ VIDEO_SORT_BY_OLDEST,
+ VIDEO_SORT_BY_MAX,
+}video_play_sort_type_t;
+
+typedef enum {
+ VIDEO_EDIT_WEATHER_TAG_NONE = -1,
+ VIDEO_EDIT_WEATHER_TAG_NO,
+ VIDEO_EDIT_WEATHER_TAG_SUNNY_DAY,
+ VIDEO_EDIT_WEATHER_TAG_CLOUDY_DAY,
+ VIDEO_EDIT_WEATHER_TAG_RAINY_DAY,
+ VIDEO_EDIT_WEATHER_TAG_SNOWY_DAY,
+ VIDEO_EDIT_WEATHER_TAG_CLEAR_DAY,
+}video_play_edit_weather_tag_t;
+
+typedef enum {
+ VIDEO_DISPLAY_LETTER_BOX = 0x00,
+ VIDEO_DISPLAY_ORIGIN,
+ VIDEO_DISPLAY_FULL,
+ VIDEO_DISPLAY_CROPPED_FULL
+}video_play_display_mode_t;
+
+typedef enum {
+ VIDEO_SUBTITLE_SIZE_SMALL = 0x00,
+ VIDEO_SUBTITLE_SIZE_MEDIUM,
+ VIDEO_SUBTITLE_SIZE_LARGE,
+}video_play_subtitle_size_t;
+
+typedef enum {
+ VIDEO_SUBTITLE_EDGE_NONE = 0x00,
+ VIDEO_SUBTITLE_EDGE_RAISED,
+ VIDEO_SUBTITLE_EDGE_DEPRESSED,
+ VIDEO_SUBTITLE_EDGE_UNIFORM,
+ VIDEO_SUBTITLE_EDGE_DROP_SHADOW,
+}video_play_subtitle_edge_t;
+
+typedef enum {
+ VIDEO_SUBTITLE_FONT_DEFAULT = 0x00,
+ VIDEO_SUBTITLE_FONT_SAMSUNG_SANS,
+ VIDEO_SUBTITLE_FONT_GEORGIA,
+ VIDEO_SUBTITLE_FONT_CHOCO_COOKY,
+ VIDEO_SUBTITLE_FONT_ROSEMARY,
+ VIDEO_SUBTITLE_FONT_COOL_JAZZ,
+}video_play_subtitle_font_t;
+
+typedef enum {
+ VIDEO_SUBTITLE_COLOR_WHITE = 0x00,
+ VIDEO_SUBTITLE_COLOR_BLACK,
+ VIDEO_SUBTITLE_COLOR_RED,
+ VIDEO_SUBTITLE_COLOR_GREEN,
+ VIDEO_SUBTITLE_COLOR_BLUE,
+ VIDEO_SUBTITLE_COLOR_YELLOW,
+ VIDEO_SUBTITLE_COLOR_MAGENTA,
+ VIDEO_SUBTITLE_COLOR_CYAN,
+ VIDEO_SUBTITLE_COLOR_CUSTOM,
+ VIDEO_SUBTITLE_COLOR_NONE
+}video_play_subtitle_color_t;
+
+typedef enum {
+ VIDEO_SUBTITLE_ALIGNMENT_LEFT = 0x00,
+ VIDEO_SUBTITLE_ALIGNMENT_CENTER,
+ VIDEO_SUBTITLE_ALIGNMENT_RIGHT
+}video_play_subtitle_alignment_t;
+
diff --git a/playview/include/vp-play-view.h b/playview/include/vp-play-view.h
new file mode 100644
index 0000000..9c5f2e5
--- /dev/null
+++ b/playview/include/vp-play-view.h
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+#include <Ecore_X.h>
+
+#include "vp-play-type-define.h"
+
+typedef void *play_view_handle;
+
+typedef void (*vp_play_view_realize_cb) (void *pUserData);
+typedef void (*vp_play_view_destroy_cb) (void *pUserData);
+typedef Eina_Bool (*vp_play_view_event_key_down_cb) (void *pUserData, int nType, void *pEvent);
+typedef Eina_Bool (*vp_play_view_event_key_up_cb) (void *pUserData, int nType, void *pEvent);
+
+
+play_view_handle vp_play_view_create(Evas_Object *pParent, Ecore_X_Window nParentXID, video_play_mode_t nMode, video_play_launching_type_t nLaunchingType);
+void vp_play_view_destroy(play_view_handle pViewHandle);
+#ifdef _PERF_TEST_
+void vp_play_view_reset(play_view_handle pViewHandle, int nMode);
+#endif
+bool vp_play_view_realize(play_view_handle pViewHandle);
+bool vp_play_view_live_stream_realize(play_view_handle pViewHandle);
+bool vp_play_view_unrealize(play_view_handle pViewHandle);
+bool vp_play_view_is_realize(play_view_handle pViewHandle, bool *bIsRealize);
+bool vp_play_view_set_user_data(play_view_handle pViewHandle, void *pUserData);
+bool vp_play_view_set_url(play_view_handle pViewHandle, const char *szMediaURL);
+bool vp_play_view_get_url(play_view_handle pViewHandle, char **szMediaURL);
+bool vp_play_view_get_visible_status(play_view_handle pViewHandle, bool *bVisible);
+bool vp_play_view_set_device_id(play_view_handle pViewHandle, const char *szDeviceID);
+bool vp_play_view_set_dmr_id(play_view_handle pViewHandle, const char *szDMRID);
+bool vp_play_view_set_media_title(play_view_handle pViewHandle, const char *szMediaTitle);
+bool vp_play_view_set_play_mode(play_view_handle pViewHandle, video_play_mode_t nMode);
+bool vp_play_view_set_start_position(play_view_handle pViewHandle, int nPosition);
+bool vp_play_view_set_rotate(play_view_handle pViewHandle, video_play_rotate_t nRotate);
+bool vp_play_view_get_popup_mode(play_view_handle pViewHandle, bool *bPopupMode);
+bool vp_play_view_set_relaunch_caller(play_view_handle pViewHandle, bool bRelaunch);
+bool vp_play_view_set_launching_mode(play_view_handle pViewHandle, video_play_launching_type_t nLaunchingType);
+bool vp_play_view_set_list_mode(play_view_handle pViewHandle, video_play_list_type_t nListType);
+bool vp_play_view_set_cookie(play_view_handle pViewHandle, const char *szCookie);
+bool vp_play_view_set_proxy(play_view_handle pViewHandle, const char *szProxy);
+bool vp_play_view_set_store_download_mode(play_view_handle pViewHandle, bool bStoreDownload);
+bool vp_play_view_set_stop_after_repeat_mode(play_view_handle pViewHandle, bool bStopAfterRepeat);
+bool vp_play_view_set_store_download_filesize(play_view_handle pViewHandle, double dStoreDL_FileSize);
+bool vp_play_view_set_store_order_info(play_view_handle pViewHandle, char *pStoreOrderId, char *pStoreServerId, char *pStoreAppId, char *pStoreMvId);
+
+bool vp_play_view_add_multi_path(play_view_handle pViewHandle, const char *szURL, char *szTitle, char *szSubTitle, int nPosition, int nDuration, bool bIsSameAP);
+
+bool vp_play_view_update(play_view_handle pViewHandle);
+
+bool vp_play_view_set_callback(play_view_handle pViewHandle, video_play_callback_type_t nCbType, void *pFunc);
+bool vp_play_view_unset_callback(play_view_handle pViewHandle, video_play_callback_type_t nCbType);
+
+Evas_Object* vp_play_view_get_main_window(play_view_handle pViewHandle);
+bool vp_play_view_change_style_minimode_to_fullmode(play_view_handle pViewHandle, video_play_launching_type_t nLaunchingType);
+
diff --git a/playview/res/edc/playview/custom/Tizen_Touch.wav b/playview/res/edc/playview/custom/Tizen_Touch.wav
new file mode 100755
index 0000000..ef6e6ae
--- /dev/null
+++ b/playview/res/edc/playview/custom/Tizen_Touch.wav
Binary files differ
diff --git a/playview/res/edc/playview/custom/button-pressed.wav b/playview/res/edc/playview/custom/button-pressed.wav
new file mode 100755
index 0000000..ef6e6ae
--- /dev/null
+++ b/playview/res/edc/playview/custom/button-pressed.wav
Binary files differ
diff --git a/playview/res/edc/playview/custom/pv-custom-button.edc b/playview/res/edc/playview/custom/pv-custom-button.edc
new file mode 100644
index 0000000..bd9aeb9
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-button.edc
@@ -0,0 +1,4467 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+sounds {
+ sample {
+ name: "button-pressed" RAW;
+ source: "button-pressed.wav";
+ }
+ sample {
+ name: "touch-pressed" RAW;
+ source: "Tizen_Touch.wav";
+ }
+}
+
+
+#define BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC 63 63
+#define BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC 63 63
+
+#define BUTTON_CUSTOM_ICON_NORMAL_COLOR 236 234 226 255
+#define BUTTON_CUSTOM_ICON_PRESS_COLOR 64 147 247 255
+#define BUTTON_CUSTOM_ICON_DIM_COLOR 236 234 226 75
+
+#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 85 98
+#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 63 63
+
+#define BUTTON_CIRCLE_01_MIN_MAX_INC 40 40
+#define BUTTON_CIRCLE_02_MIN_MAX_INC 36 36
+#define BUTTON_CIRCLE_03_MIN_MAX_INC 45 45
+
+#define BUTTON_FLAT_MIN_MAX_INC 30 30
+
+#define BUTTON_ROUND_LEFT_MIN_MAX_INC 104 68
+#define BUTTON_ROUND_CENTER_MIN_MAX_INC 104 68
+#define BUTTON_ROUND_RIGHT_MIN_MAX_INC 104 68
+
+#define BUTTON_ROUND_ICON_MIN_MAX_INC 40 40
+
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DEFAULT_COLOR_INC 101 101 101 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DEFAULT_BLACK_COLOR_INC 255 255 255 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_PRESSED_COLOR_INC 64 147 247 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DISABLED_COLOR_INC 101 101 101 76
+
+
+#define BUTTON_CUSTOM_ICON_STYLES(style_name, min_width, min_height) \
+group { \
+ name: "elm/button/base/playview/custom/"style_name; \
+ parts { \
+ part { \
+ name: "button_image"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: min_width min_height; \
+ max: min_width min_height; \
+ fixed: 1 1; \
+ visible: 0; \
+ } \
+ description { \
+ state: "clicked" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ description { \
+ state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ description { \
+ state: "focused" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ } \
+ part { \
+ name: "elm.text"; \
+ type: TEXT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ visible: 0; \
+ rel1 { relative: 0.0 0.0;} \
+ rel2 { relative: 0.0 0.0;} \
+ color: 0 0 0 0; \
+ text { \
+ font: "Tizen:style=Regular"; \
+ size: 24; \
+ min: 0 0; \
+ } \
+ } \
+ } \
+ part { \
+ name: "elm.swallow.content"; \
+ type: SWALLOW; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ visible: 1; \
+ min: min_width min_height; \
+ max: min_width min_height; \
+ fixed: 1 1; \
+ rel1.to: "button_image"; \
+ rel2.to: "button_image"; \
+ } \
+ } \
+ 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; \
+ ignore_flags: ON_HOLD; \
+ description { \
+ state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ } \
+ } \
+ programs \
+ { \
+ program { \
+ name: "button_down"; \
+ signal: "mouse,down,1"; \
+ source: "over2"; \
+ action: SIGNAL_EMIT "elm,action,press" ""; \
+ } \
+ program { \
+ name: "button_up"; \
+ signal: "mouse,up,1"; \
+ source: "over3"; \
+ action: SIGNAL_EMIT "elm,action,unpress" ""; \
+ } \
+ program { \
+ name: "button_clicked"; \
+ signal: "mouse,clicked,1"; \
+ source: "over2"; \
+ action: SIGNAL_EMIT "elm,action,click" ""; \
+ } \
+ program { \
+ name: "button_click"; \
+ source: "over2"; \
+ signal: "mouse,clicked,1"; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ } \
+ } \
+}
+
+
+
+group {
+ name: "elm/button/base/playview/custom/circle_1/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 0.3 0.3;
+ rel2.relative: 0.7 0.7;
+ color: 0 166 191 255;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "button_bg";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ }
+
+ part {
+ name: "button_circle";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_focus.png";
+ color: 0 166 191 255;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "over2";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "disabler";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ 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";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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_circle";
+ //target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+
+ /*program {
+ name: "focused";
+ signal: "elm,action,focus";
+ source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "unfocused";
+ signal: "elm,action,unfocus";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }*/
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+group {
+ name: "elm/button/base/playview/custom/circle_1_focus/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 0.3 0.3;
+ rel2.relative: 0.7 0.7;
+ color: 0 255 0 255;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "button_bg";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01_press.png";
+ color: 0 166 191 255;
+ }
+ }
+
+ part {
+ name: "button_circle";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_01.png";
+ color: 0 166 191 255;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "over2";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "disabler";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ } /* parts */
+ 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";
+ target: "button_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "button_circle";
+ target: "button_bg";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "button_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "focused";
+ signal: "elm,action,focus";
+ source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "unfocused";
+ signal: "elm,action,unfocus";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+group {
+ name: "elm/button/base/playview/custom/circle_2/default";
+ parts {
+ part {
+ name: "button_image";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 0.8 0.3;
+ rel2.relative: 1.2 0.7;
+ visible: 1;
+ image { normal: "control/T01-2_control_circle_icon_rewind.png";}
+ color: 0 166 191 255;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ /*part {
+ name: "button_bg";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 0 0 0 153;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 66 162 207 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 0 0 0 153;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 0 0 0 153;
+ }
+ }
+
+ part {
+ name: "button_circle";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 255 255 255 255 128;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 66 162 207 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 255 255 255 51;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 255 255 255 255 128;
+ }
+ }*/
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ /*part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }*/
+ part {
+ name: "over2";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "disabler";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ 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";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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_circle";
+ //target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+ /*program {
+ name: "focused";
+ action: STATE_SET "focused" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "unfocused";
+ action: STATE_SET "default" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }*/
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+group {
+ name: "elm/button/base/playview/custom/circle_3/default";
+ parts {
+ part {
+ name: "button_image";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ rel1.relative: -0.2 0.3;
+ rel2.relative: 0.2 0.7;
+ visible: 1;
+ image { normal: "control/T01-2_control_circle_icon_next.png";}
+ color: 0 166 191 255;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ /*part {
+ name: "button_bg";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 0 0 0 153;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 66 162 207 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 0 0 0 153;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02_press.png";
+ color: 0 0 0 153;
+ }
+ }
+
+ part {
+ name: "button_circle";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 255 255 255 255 128;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 66 162 207 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 255 255 255 51;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01-2_control_circle_button_02.png";
+ color: 255 255 255 255 128;
+ }
+ }*/
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ /*part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }*/
+ part {
+ name: "over2";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ }
+ part {
+ name: "disabler";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ rel1.relative: 0 0;
+ rel2.relative: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ 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";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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_circle";
+ //target: "button_bg";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ //target: "button_circle";
+ //target: "button_bg";
+ }
+ /*program {
+ name: "focused";
+ action: STATE_SET "focused" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }
+
+ program {
+ name: "unfocused";
+ action: STATE_SET "default" 0.0;
+ target: "button_circle";
+ target: "button_bg";
+ }*/
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+
+
+group { name: "elm/button/base/playview/custom/navi_button/default";
+ parts {
+ part { name: "button_image";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 0;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "elm.icon.clipper";
+ description { state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ rel1 { relative: 0.5 0.5; to : "button_image"; }
+ rel2 { relative: 0.5 0.5; to : "button_image"; }
+
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "elm.swallow.icon.proxy";
+ type: PROXY;
+ scale: 1;
+ clip_to: "elm.icon.proxy.clipper";
+ description { state: "default" 0.0;
+ source: "elm.swallow.content";
+ rel1.to: "elm.swallow.content";
+ rel1.offset: 0 -2;
+ rel2.to: "elm.swallow.content";
+ rel2.offset: -1 -3;
+ }
+ }
+ part { name: "elm.icon.proxy.clipper";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DEFAULT_BLACK_COLOR_INC;
+ }
+ description { state: "clicked" 0.0;
+ color: BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_PRESSED_COLOR_INC;
+ }
+ description { state: "disabled" 0.0;
+ color: BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DISABLED_COLOR_INC;
+ }
+ }
+ part { name: "elm.icon.clipper";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_NORMAL_COLOR_INC;
+ }
+ description { state: "clicked" 0.0;
+ color: BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_NORMAL_COLOR_INC;
+ }
+ description { state: "disabled" 0.0;
+ color: BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DISABLED_COLOR_INC;
+ }
+ }
+ part { name: "over2";
+ type: RECT;
+ 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: "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";
+ target: "elm.icon.clipper";
+ target: "elm.icon.proxy.clipper";
+ }
+ program { name: "button_unpress";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ }
+ program { name: "button_mouseout_clicked";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: STATE_SET "default" 0.0;
+ target: "elm.icon.clipper";
+ target: "elm.icon.proxy.clipper";
+ after: button_unpress;
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ after: button_unclick3;
+ }
+ program { name: "button_unclick3";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ 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: "button_image";
+ target: "disabler";
+ target: "elm.icon.clipper";
+ target: "elm.icon.proxy.clipper";
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "elm.icon.clipper";
+ target: "elm.icon.proxy.clipper";
+ target: "disabler";
+ }
+ }
+}
+
+group {
+ name: "elm/button/base/playview/custom/sound_path/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "rotate_button";
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ rel1 { relative: 0.5 0.5; to : "button_image"; }
+ rel2 { relative: 0.5 0.5; to : "button_image"; }
+ image.normal: "button/T01_2_icon_bluetooth_headset.png";
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_bluetooth_headset_press.png";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_bluetooth_headset.png";
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ target: "rotate_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "rotate_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "rotate_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "rotate_button";
+ }
+ } /* programs */
+}
+
+group
+{
+ name: "elm/button/base/playview/custom/allshare/default";
+ parts
+ {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "allshare_button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01_2_icon_Near_by_device.png";
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_Near_by_device_press.png";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_Near_by_device.png";
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_Near_by_device_press.png";
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ 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: "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";
+ target: "allshare_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "allshare_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "allshare_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "allshare_button";
+ }
+ program {
+ name: "focused";
+ signal: "elm,action,focus";
+ source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "allshare_button";
+ }
+
+ program {
+ name: "unfocused";
+ signal: "elm,action,unfocus";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "allshare_button";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ }
+
+}
+
+group {
+ name: "elm/button/base/playview/custom/check/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "save_button";
+ scale: 1;
+ mouse_events: 0;
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01_2_icon_check.png";
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_check_press.png";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_check.png";
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ target: "save_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "save_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "save_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "save_button";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+group {
+ name: "elm/button/base/playview/naviframe/close/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_BG_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "back_button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_MAX_INC;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image.normal: "button/T01_2_icon_close.png";
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_close_press.png";
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "button/T01_2_icon_close.png";
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ target: "back_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "back_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "back_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "back_button";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+
+
+group {
+ name: "elm/button/base/playview/custom/round_left/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_ROUND_LEFT_MIN_MAX_INC;
+ max: BUTTON_ROUND_LEFT_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "round_button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: BUTTON_ROUND_LEFT_MIN_MAX_INC;
+ max: BUTTON_ROUND_LEFT_MIN_MAX_INC;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image { normal: "multi/T01_2_mw_control_bg_left.png"; border: 37 1 0 0;}
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/T01_2_mw_control_bg_left_press.png"; border: 37 1 0 0;}
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/T01_2_mw_control_bg_left.png"; border: 37 1 0 0;}
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: BUTTON_ROUND_ICON_MIN_MAX_INC;
+ max: BUTTON_ROUND_ICON_MIN_MAX_INC;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "button_image"; }
+ rel2 { relative: 0.5 0.5; to: "button_image"; }
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ target: "round_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "round_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "round_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "round_button";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+group {
+ name: "elm/button/base/playview/custom/round_right/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_ROUND_RIGHT_MIN_MAX_INC;
+ max: BUTTON_ROUND_RIGHT_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "round_button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: BUTTON_ROUND_RIGHT_MIN_MAX_INC;
+ max: BUTTON_ROUND_RIGHT_MIN_MAX_INC;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image { normal: "multi/T01_2_mw_control_bg_right.png"; border: 1 37 0 0;}
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/T01_2_mw_control_bg_right_press.png"; border: 1 37 0 0;}
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/T01_2_mw_control_bg_right.png"; border: 1 37 0 0;}
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: BUTTON_ROUND_ICON_MIN_MAX_INC;
+ max: BUTTON_ROUND_ICON_MIN_MAX_INC;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "button_image"; }
+ rel2 { relative: 0.5 0.5; to: "button_image"; }
+ }
+ }
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ target: "round_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "round_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "round_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "round_button";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+
+group {
+ name: "elm/button/base/playview/custom/round_center/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_ROUND_CENTER_MIN_MAX_INC;
+ max: BUTTON_ROUND_CENTER_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "round_button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: BUTTON_ROUND_LEFT_MIN_MAX_INC;
+ max: BUTTON_ROUND_LEFT_MIN_MAX_INC;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ image { normal: "multi/T01_2_mw_control_bg_center.png"; border: 19 19 0 0;}
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/T01_2_mw_control_bg_center_press.png"; border: 19 19 0 0;}
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/T01_2_mw_control_bg_center.png"; border: 19 19 0 0;}
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: BUTTON_ROUND_ICON_MIN_MAX_INC;
+ max: BUTTON_ROUND_ICON_MIN_MAX_INC;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "button_image"; }
+ rel2 { relative: 0.5 0.5; to: "button_image"; }
+ }
+ }
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ target: "round_button";
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ 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: "round_button";
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "round_button";
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ target: "round_button";
+ }
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+group {
+ name: "elm/button/base/playview/custom/flat_70_70/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: BUTTON_FLAT_MIN_MAX_INC;
+ max: BUTTON_FLAT_MIN_MAX_INC;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: BUTTON_FLAT_MIN_MAX_INC;
+ max: BUTTON_FLAT_MIN_MAX_INC;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: BUTTON_FLAT_MIN_MAX_INC;
+ max: BUTTON_FLAT_MIN_MAX_INC;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: BUTTON_FLAT_MIN_MAX_INC;
+ max: BUTTON_FLAT_MIN_MAX_INC;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ source: "elm";
+ signal: "elm,state,enabled";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+//volume icon
+
+group {
+ name: "elm/button/base/playview/custom/flat_46_46/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+
+ description {
+ state: "default" 0.0;
+ rel1.relative:0.0 0.0;
+ rel2.relative:0.95 1.0;
+ color:255 0 0 255;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 26 26;
+ max: 26 26;
+ //fixed: 1 1;
+ rel1
+ { relative: 0.0 0.0; to:"button_image";}
+ rel2
+ {relative: 1.0 1.0; to:"button_image"; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 26;
+ max: 26 26;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 26;
+ max: 26 26;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ source: "elm";
+ signal: "elm,state,enabled";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+//screen size icon
+
+group {
+ name: "elm/button/base/playview/custom/flat_56_56/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ //rel1.relative:0.7 0.0;
+ //rel2.relative:1.0 1.0;
+ color:0 0 255 255;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 26 26;
+ max: 26 26;
+ //fixed: 1 1;
+ rel1
+ { relative: 0.0 0.0; to:"button_image";}
+ rel2
+ {relative: 1.0 1.0; to:"button_image"; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 26;
+ max: 26 26;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 26;
+ max: 26 26;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ source: "elm";
+ signal: "elm,state,enabled";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+group {
+ name: "elm/button/base/playview/custom/flat_63_63/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 63 63;
+ max: 63 63;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+group {
+ name: "elm/button/base/playview/custom/flat_63_85/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 63 85;
+ max: 63 85;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+ /*keep default state when it is focused, Only show blue border in focued state*/
+ program {
+ name: "focused";
+ signal: "elm,action,focus";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "unfocused";
+ signal: "elm,action,unfocus";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+group {
+ name: "elm/button/base/playview/custom/flat_94_60/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 94 60;
+ max: 94 60;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 45 45;
+ max: 45 45;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 45 45;
+ max: 45 45;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 45 45;
+ max: 45 45;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "touch-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+group {
+ name: "elm/button/base/playview/custom/flat_36_36/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 36 36;
+ max: 36 36;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 36 36;
+ max: 36 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 36 36;
+ max: 36 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 36 36;
+ max: 36 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+
+
+group {
+ name: "elm/button/base/playview/custom/flat_63_78/default";
+ parts {
+ part {
+ name: "button_image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 20 20;
+ max: 20 20;
+ visible: 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 0 0 0;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ min: 0 0;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 20 20;
+ max: 20 20;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content.press";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 20 20;
+ max: 20 20;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "elm.swallow.content.dim";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 20 20;
+ max: 20 20;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "button_image";
+ rel2.to: "button_image";
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "over2";
+ type: RECT;
+ 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: "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;
+ }
+ }
+ } /* parts */
+ 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";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "clicked", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "show", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over3";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program {
+ name: "button_unclick_anim";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "disabled", 0.0);
+ set_state(PART:"elm.swallow.content", "hide", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "show", 0.0);
+ }
+ }
+ program {
+ name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ script {
+ set_state(PART:"button_image", "default", 0.0);
+ set_state(PART:"disabler", "default", 0.0);
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.content.press", "default", 0.0);
+ set_state(PART:"elm.swallow.content.dim", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "button_clicked";
+ source: "over2";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ } /* programs */
+}
+group {
+ name: "elm/button/base/back";
+ images
+ {
+ image: "button/core_icon_back.png" COMP;
+ }
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ min: 50 80;
+ max: 50 80;
+ }
+ }
+ part {
+ name: "icon";
+ type: IMAGE;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "bg";
+ }
+ image {
+ normal: "button/core_icon_back.png";
+ }
+ }
+ }
+ } /*parts*/
+ programs {
+ program {
+ name: "buttonclicked";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program {
+ name: "buttontextclicked";
+ signal: "mouse,clicked,1";
+ source: "icon";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program{
+ name: "touch_snd";
+ source: "bg";
+ signal: "mouse,clicked,1";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd1";
+ source: "icon";
+ signal: "mouse,clicked,1";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ }
+
+}
+
diff --git a/playview/res/edc/playview/custom/pv-custom-colorselector.edc b/playview/res/edc/playview/custom/pv-custom-colorselector.edc
new file mode 100644
index 0000000..d0215cb
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-colorselector.edc
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+ group {
+ name: "colorplane";
+ parts{
+ part {
+ name: "bg";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 578 344;
+ max: 578 344;
+ }
+ }
+ part {
+ name: "top_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 21;
+ fixed: 0 1;
+ rel1.to: "bg";
+ rel2 {
+ to: "bg";
+ relative: 1.0 0.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "colorpalette";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_y: "top_padding";
+ to_x: "bg";
+ }
+ rel2 {
+ to_y: "top_padding";
+ to_x: "bg";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "colorpalette_bottom_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 12;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_y: "colorpalette";
+ to_x: "bg";
+ }
+ rel2 {
+ to_x: "bg";
+ to_y: "colorpalette";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ }//end parts
+ }
diff --git a/playview/res/edc/playview/custom/pv-custom-define.edc b/playview/res/edc/playview/custom/pv-custom-define.edc
new file mode 100644
index 0000000..84f0706
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-define.edc
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+
+#define VIDEO_TITLE_FONT_STYLE "Tizen:style=Medium"
+#define VIDEO_TITLE_FONT_SIZE 40
+#define VIDEO_TITLE_FONT_DEFAULT_COLOR 255 255 255 204
+
+
diff --git a/playview/res/edc/playview/custom/pv-custom-gengrid-item.edc b/playview/res/edc/playview/custom/pv-custom-gengrid-item.edc
new file mode 100644
index 0000000..d9deab9
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-gengrid-item.edc
@@ -0,0 +1,515 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define GENGRID_PART_BG_COLOR_INC 0 0 0 0
+#define GENGRID_PART_REORDER_BG_COLOR_INC 0 0 0 128
+
+
+group {
+ name: "elm/gengrid/item/bookmark/default";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ }
+ }
+
+ part {
+ name: "left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 8 18;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 { relative: 0.0 0.0; to: "bg"; }
+ }
+ }
+
+ part {
+ name: "right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 0;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "bg"; }
+ rel2.to: "bg";
+ }
+ }
+
+ part {
+ name: "item_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to: "left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "right_bottom_padding"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "item_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 0;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_bg";
+ rel2 { relative: 0.0 0.0; to: "item_bg"; }
+ }
+ }
+
+ part {
+ name: "item_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 6;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "item_bg"; }
+ rel2.to: "item_bg";
+ }
+ }
+
+ part {
+ name: "item_real_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "item_bg_left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "item_bg_right_bottom_padding"; }
+ }
+ }
+
+ part {
+ name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 2;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_real_bg";
+ rel2 { relative: 0.0 0.0; to: "item_real_bg"; }
+ }
+ }
+
+
+ part {
+ name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 2;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "item_real_bg"; }
+ rel2.to: "item_real_bg";
+ }
+ }
+
+ part {
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to: "item_real_bg_left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "item_real_bg_right_bottom_padding"; }
+ }
+ }
+
+
+ part {
+ name: "elm.swallow.end";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ }
+ }
+
+
+ part {
+ name: "reorder_bg";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ rel1.to: "item_bg";
+ rel2.to: "item_bg";
+ }
+ description {
+ state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ color: GENGRID_PART_REORDER_BG_COLOR_INC;
+ }
+ }
+
+
+ part {
+ name: "focus_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 8 16;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 { relative: 0.0 0.0; to: "bg"; }
+ }
+ }
+
+
+ part {
+ name: "focus_bg_right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 4;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "bg"; }
+ rel2.to: "bg";
+ }
+ }
+
+
+ part {
+ name: "focus_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "focus_bg_left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "focus_bg_right_bottom_padding"; }
+ }
+ description {
+ state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } /* parts */
+
+
+ programs {
+ program {
+ name: "go_mouse_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ action: STATE_SET "enabled" 0.0;
+ target: "focus_bg";
+ transition: ACCELERATE 0.2;
+ }
+ program {
+ name: "go_mouse_up";
+ signal: "mouse,up,1";
+ source: "reorder_bg";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ transition: DECELERATE 0.2;
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: ACCELERATE 0.3;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: DECELERATE 0.3;
+ }
+ }
+}
+
+
+group {
+ name: "elm/gengrid/item/trim_thumb/default";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ }
+ }
+
+ part {
+ name: "left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 8 18;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 { relative: 0.0 0.0; to: "bg"; }
+ }
+ }
+
+ part {
+ name: "right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 0;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "bg"; }
+ rel2.to: "bg";
+ }
+ }
+
+ part {
+ name: "item_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to: "left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "right_bottom_padding"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "item_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 0;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_bg";
+ rel2 { relative: 0.0 0.0; to: "item_bg"; }
+ }
+ }
+
+ part {
+ name: "item_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 6;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "item_bg"; }
+ rel2.to: "item_bg";
+ }
+ }
+
+ part {
+ name: "item_real_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "item_bg_left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "item_bg_right_bottom_padding"; }
+ }
+ }
+
+ part {
+ name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 2;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_real_bg";
+ rel2 { relative: 0.0 0.0; to: "item_real_bg"; }
+ }
+ }
+
+
+ part {
+ name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 2 2;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "item_real_bg"; }
+ rel2.to: "item_real_bg";
+ }
+ }
+
+ part {
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 100 100;
+ align: 0.0 0.0;
+ rel1.to: "bg";
+ rel2 { relative: 0.0 0.0; to: "bg"; }
+ }
+ }
+
+
+ part {
+ name: "elm.swallow.end";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ }
+ }
+
+
+ part {
+ name: "reorder_bg";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ rel1.to: "item_bg";
+ rel2.to: "item_bg";
+ }
+ description {
+ state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ color: GENGRID_PART_REORDER_BG_COLOR_INC;
+ }
+ }
+
+
+ part {
+ name: "focus_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 8 16;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 { relative: 0.0 0.0; to: "bg"; }
+ }
+ }
+
+
+ part {
+ name: "focus_bg_right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 4;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "bg"; }
+ rel2.to: "bg";
+ }
+ }
+
+
+ part {
+ name: "focus_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 1.0 1.0; to: "focus_bg_left_top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "focus_bg_right_bottom_padding"; }
+ }
+ description {
+ state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } /* parts */
+
+
+ programs {
+ program {
+ name: "go_mouse_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ action: STATE_SET "enabled" 0.0;
+ target: "focus_bg";
+ transition: ACCELERATE 0.2;
+ }
+ program {
+ name: "go_mouse_up";
+ signal: "mouse,up,1";
+ source: "reorder_bg";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ transition: DECELERATE 0.2;
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: ACCELERATE 0.3;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: DECELERATE 0.3;
+ }
+ }
+}
diff --git a/playview/res/edc/playview/custom/pv-custom-genlist-item.edc b/playview/res/edc/playview/custom/pv-custom-genlist-item.edc
new file mode 100644
index 0000000..85f0621
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-genlist-item.edc
@@ -0,0 +1,2076 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define GENLIST_HEIGHT_MULTILINE_SUB 38
+#define GENLIST_HEIGHT_2LINE_SUB 42
+#define GENLIST_LIST_SUB_TEXT_SIZE 32
+#define GENLIST_TREESIZE_DEFAULT 26
+#define GENLIST_PART_LIST_LINE_HEIGHT 1
+#define GENLIST_HEIGHT_2LINE_MAIN 57
+#define GENLIST_PADDING_SIZE_DEFAULT 16
+#define GENLIST_PADDING_SIZE_LEFT 62
+#define GENLIST_PADDING_SIZE_RIGHT GENLIST_PADDING_SIZE_LEFT
+#define GENLIST_PADDING_SIZE_TOP_2LINE 19
+#define GENLIST_PADDING_SIZE_BOTTOM_2LINE 19
+#define GENLIST_HEIGHT_1LINE 112 // (114 - top/bottom padding)
+#define GENLIST_PADDING_SIZE_TOP 5
+#define GENLIST_PADDING_SIZE_BOTTOM 5
+#define GENLIST_ICON_MEDIUM_SIZE 81
+#define GENLIST_BTN_01_HEIGHT 74
+
+#define GENLIST_LIST_MAIN_TEXT_SIZE 44
+
+//popup
+#define POPUP_ITEM_BG_PRESSED_BORDER_INC 8 8 8 8
+#define POPUP_ITEM_BG_LEFT_TOP_PAD_MIN_INC 4 4
+#define POPUP_ITEM_BG_RIGHT_BOTTOM_PAD_MIN_INC 4 6
+
+
+//white
+///---------------------------------------------------------------start
+#define GENLIST_LIST_BG_COLOR 248 246 239 0
+#define GENLIST_LIST_PRESS_COLOR 87 135 194 255
+#define GENLIST_LIST_DIM_COLOR 248 246 239 255
+#define GENLIST_LIST_LINE2_COLOR 204 203 199 255
+#define GENLIST_LIST_LINE1_COLOR 250 250 250 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR 0 0 0 255
+#define GENLIST_LIST_GROUP_TEXT_COLOR 14 104 173 255
+
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE "#4F4F4FFF"
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR_STYLE "#A3A99FFF"
+//#define GENLIST_LIST_TEXT_FOCUS_COLOR_STYLE "#FFFFFFFF"
+#define GENLIST_PART_MATCH_TAG_COLOR "+ color=#1382FF"
+
+
+// Genlist Text
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF"
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR 124 123 119 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_STYLE "#7C7B77FF"
+#define GENLIST_LIST_MAIN_TEXT_READ_COLOR 128 128 128 255
+#define GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR 188 187 183 255
+#define GENLIST_LIST_TEXT_FOCUS_COLOR 255 255 255 255
+#define GENLIST_LIST_TEXT_FOCUS_COLOR_STYLE "#FAFAFAFF"
+
+
+//popup
+#define GENLIST_LIST_BG_POPUP_COLOR 0 0 0 0
+#define GENLIST_LIST_BG_POPUP_PRESS_COLOR 255 255 255 255
+#define GENLIST_LIST_LINE1_POPUP_COLOR 211 209 203 255
+#define GENLIST_LIST_LINE2_POPUP_COLOR 250 250 250 255
+
+
+#define PV_POPUP_TITLE_LINE_WIDTH_HEIGHT_MIN 0 4
+#define PV_GENLIST_LIST_LINE1_POPUP_COLOR 211 209 203 255
+
+//----------------------------------------------------------------end
+
+#define GENLIST_PARAM_ICON_MEDIUM \
+ min: GENLIST_ICON_MEDIUM_SIZE GENLIST_ICON_MEDIUM_SIZE; \
+ max: GENLIST_ICON_MEDIUM_SIZE GENLIST_ICON_MEDIUM_SIZE;
+
+#define GENLIST_PARAM_ICON_BTN_01 \
+ min: 0 GENLIST_BTN_01_HEIGHT; \
+ max: -1 GENLIST_BTN_01_HEIGHT;
+
+
+sounds {
+ sample {
+ name: "touch_sound" RAW;
+ source: "button-pressed.wav";
+ }
+}
+
+
+#define STYLE_TAG \
+ tag: "br" "\n";\
+ tag: "ps" "ps";\
+ tag: "tab" "\t";\
+ tag: "b" "+ font_weight=Bold";
+
+#define STYLE_TAG_MATCH \
+ tag: "match" GENLIST_PART_MATCH_TAG_COLOR;
+
+
+styles {
+ style { name: "genlist_style_list_sub_text_default_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_multiline_text_default_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_sub_multiline_text_default_wrap";
+ base: "font=Tizen:style=Light font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_sub_text_default_dim_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_sub_text_focus_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+
+ style { name: "genlist_style_list_main_text_default_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_default_dim_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_focus_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_custom_wrap";
+ base: "font=Tizen:style=Roman font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_1_text_default_wrap";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_1_text_default_dim_wrap";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_1_text_focus_wrap";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+}
+
+
+#define GENLIST_NAME(NAME) \
+ name: "elm/genlist/item/"NAME;
+
+ // | PART == HERE |
+ // ------------------
+ #define GENLIST_DESCRIPTION_ENVELOP( PART, PARAM ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 0 0; \
+ to: PART; \
+ }\
+ rel2 {\
+ relative: 1 1;\
+ to: PART; \
+ }\
+ PARAM\
+ }
+
+
+ // | top |
+ // ---------------------
+ // left | HERE | right
+ // ---------------------
+ // | bottom |
+#define GENLIST_DESCRIPTION( left, right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+
+// | top |
+// ---------------------
+// left | HERE | right
+#define GENLIST_DESCRIPTION_LRT( left, right, top, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+ param\
+ }
+
+// ---------------------
+// left |--> HERE
+// ---------------------
+#define GENLIST_DESCRIPTION_L( left, param ) \
+ description { state: "default" 0.0;\
+ align: 0 0.5; \
+ fixed: 1 0; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 { \
+ relative: 1 1;\
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// | top |
+// -----------------
+// | HERE <--| right
+// -----------------
+// | bottom |
+#define GENLIST_DESCRIPTION_RTB( right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 1 0.5;\
+ rel1 { \
+ relative: 0 1; \
+ to_x: right; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+// --------------------------
+// left |--> HERE <--| right
+// --------------------------
+#define GENLIST_DESCRIPTION_LR( left, right, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// | top |
+// ---------------------
+// left |--> HERE |
+// ---------------------
+// | bottom |
+#define GENLIST_DESCRIPTION_LTB( left, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 0 0.5;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 1 0;\
+ to_x: left;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+
+#define GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB_WRAP \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_sub_text_default_dim_wrap"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_sub_text_focus_wrap"; \
+ }
+
+#define GENLIST_PARAM_SUBITEM_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_sub_text_default_wrap"; \
+ }
+
+#define GENLIST_PARAM_MULTI_MAINITEM_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_main_multiline_text_default_wrap"; \
+ }
+
+#define GENLIST_PARAM_MULTI_SUBITEM_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_sub_multiline_text_default_wrap"; \
+ }
+
+#define GENLIST_PARAM_MAINITEM_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_main_text_default_wrap"; \
+ }
+
+#define GENLIST_PARAM_MAINITEM_CUSTOM_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_main_text_custom_wrap"; \
+ }
+
+#define GENLIST_PARAM_MAINITEM_1TEXT_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_main_1_text_default_wrap"; \
+ }
+
+#define GENLIST_DESCRIPTION_MAINITEM_1TEXT_DEFAULT_OTHERS_TB_WRAP \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_1_text_default_dim_wrap"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_1_text_focus_wrap"; \
+ }
+
+
+#define GENLIST_DESCRIPTION_MAINITEM_DEFAULT_OTHERS_TB_WRAP \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_default_dim_wrap"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_focus_wrap"; \
+ }
+
+#define GENLIST_PART_TEXTBLOCK(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: TEXTBLOCK; \
+ repeat_events: 1; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_TEXT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: TEXT; \
+ repeat_events: 1; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_SPACER(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ mouse_events: 0; \
+ type: SPACER; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_RECT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: RECT; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_IMAGE(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: IMAGE; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_ICON(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: SWALLOW; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_ICON_MEDIUM_L(NAME, LEFT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_LTB(LEFT, "elm.padding.top", "elm.padding.bottom", \
+ GENLIST_PARAM_ICON_MEDIUM \
+ fixed: 1 1; \
+ ) \
+ )
+
+
+// list main text
+#define GENLIST_PARAM_LISTITEM \
+ color: 8 8 8 255; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Regular"; \
+ size: GENLIST_LIST_MAIN_TEXT_SIZE; \
+ }
+
+// list main text
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR; \
+ } \
+ description { state: "read" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_READ_COLOR; \
+ } \
+ description { state: "read,disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_TEXT_FOCUS_COLOR; \
+ }
+
+#define GENLIST_PART_PADDING_T_SIZE( NAME, TOP, SIZE ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ min: 0 SIZE; \
+ max: -1 SIZE; \
+ fixed: 0 1; \
+ align: 0.5 0; \
+ rel1 { \
+ relative: 0 1; \
+ to: TOP; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to: TOP; \
+ } \
+ } \
+ )
+
+#define GENLIST_PART_EXPANDED_PAD \
+ part { name: "elm.swallow.pad"; \
+ type: SWALLOW; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ min: 0 0; \
+ fixed: 1 0; \
+ align: 0.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 0.0 1.0; \
+ } \
+ } \
+
+#define GENLIST_PROLOG \
+ data.item: "selectraise" "on"; \
+ data.item: "treesize" 0;
+
+
+#define GENLIST_PROLOG_NORMAL \
+ GENLIST_PROLOG \
+ data.item: "treesize" GENLIST_TREESIZE_DEFAULT; \
+ data.item: "flips" "elm.flip.icon elm.flip.content"; \
+ images { \
+ image : "genlist/00_list_group_bg.png" COMP; \
+ image : "genlist/00_list_group_bg_press.png" COMP; \
+ }
+
+#define GENLIST_PART_BASE_SIZE(HEIGHT) \
+ part { name: "base"; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ min: 0 HEIGHT; \
+ } \
+ } \
+ part { name: "state"; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default"; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default"; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default"; \
+ } \
+ }
+
+#define GENLIST_PART_BASE \
+ GENLIST_PART_BASE_SIZE(0)
+
+#define GENLIST_DESCRIPTION_DECORATE_PADDING \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ max: 0 0; \
+ }
+
+#define GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ max: 0 0; \
+ }
+
+#define GENLIST_DESCRIPTION_REORDER_PADDING \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 32 0; \
+ max: 32 -1; \
+ }
+
+
+#define GENLIST_PART_PADDING_LEFT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_SIZE_LEFT 0; \
+ max: GENLIST_PADDING_SIZE_LEFT -1; \
+ fixed: 1 0; \
+ ) \
+ GENLIST_DESCRIPTION_DECORATE_PADDING \
+ GENLIST_DESCRIPTION_REORDER_PADDING \
+ GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+ )
+
+#define GENLIST_PART_PADDING_RIGHT \
+ GENLIST_PART_SPACER("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_SIZE_RIGHT 0; \
+ max: GENLIST_PADDING_SIZE_RIGHT -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ GENLIST_DESCRIPTION_DECORATE_PADDING \
+ GENLIST_DESCRIPTION_REORDER_PADDING \
+ GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+ )
+
+
+#define GENLIST_PART_PADDING_R( NAME, RIGHT ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+ max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+ align: 1 0.5; \
+ rel1 { \
+ relative: 0 0; \
+ to_x: RIGHT; \
+ } \
+ rel2 { \
+ relative: 0 1; \
+ to_x: RIGHT; \
+ } \
+ } \
+ )
+
+#define GENLIST_PART_ICON_BTN_01_LTB(NAME, LEFT, TOP, BOTTOM) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_LTB(LEFT, TOP, BOTTOM,\
+ GENLIST_PARAM_ICON_BTN_01 \
+ fixed: 1 1; \
+ ) \
+ )
+
+#define GENLIST_PART_BG_NORMAL \
+ GENLIST_PART_RECT("bg_clip", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 1; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT("bg_reorder_clip", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "reorder_flip" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT("bg", \
+ clip_to: "bg_clip"; \
+ description { state: "default" 0.0; \
+ color: GENLIST_LIST_BG_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_PRESS_COLOR; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_DIM_COLOR; \
+ } \
+ ) \
+ GENLIST_PART_SPACER("bg_reorder_left", \
+ description { state: "default" 0.0; \
+ min: 16 0; \
+ max: 16 -1; \
+ fixed: 1 0; \
+ align: 0 0.5; \
+ rel2.relative: 0 1; \
+ } \
+ ) \
+ GENLIST_PART_SPACER("bg_reorder_right", \
+ description { state: "default" 0.0; \
+ min: 16 0; \
+ max: 16 -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.relative: 1 0; \
+ } \
+ ) \
+ GENLIST_PART_SPACER("bg_reorder_top", \
+ description { state: "default" 0.0; \
+ min: 0 2; \
+ max: -1 2; \
+ fixed: 0 1; \
+ align: 0.5 0; \
+ rel2.relative: 1 0; \
+ } \
+ ) \
+ GENLIST_PART_SPACER("bg_reorder_bottom", \
+ description { state: "default" 0.0; \
+ min: 0 2; \
+ max: -1 2; \
+ fixed: 0 1; \
+ align: 0.5 1.0; \
+ rel1.relative: 0 1; \
+ } \
+ ) \
+ GENLIST_PART_IMAGE("bg_reorder", \
+ clip_to: "bg_reorder_clip"; \
+ description { state: "default" 0.0; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: "bg_reorder_left"; \
+ to_y: "bg_reorder_top"; \
+ } \
+ rel2 { \
+ relative: 0 0; \
+ to_x: "bg_reorder_right"; \
+ to_y: "bg_reorder_bottom"; \
+ } \
+ image { \
+ normal: "genlist/00_list_group_bg.png"; \
+ border: 17 17 8 8; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default"; \
+ image { \
+ normal: "genlist/00_list_group_bg_press.png"; \
+ border: 17 17 8 8; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default"; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT("sound", \
+ repeat_events: 1; /*for play_sound to check selected state*/ \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ ) \
+
+
+#define GENLIST_PART_BOTTOM_LINE \
+ GENLIST_PART_RECT("bottom_line_clip", \
+ description { state: "default" 0.0; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT("bottom_line", \
+ mouse_events: 0; \
+ clip_to: "bottom_line_clip"; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+ max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+ fixed: 0 1; \
+ align: 0.5 1; \
+ color: GENLIST_LIST_LINE1_COLOR; \
+ rel1.to: "bottom_line2"; \
+ rel2.to: "bottom_line2"; \
+ rel2.relative: 1 0; \
+ rel1.offset: -1 -1; \
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT("bottom_line2", \
+ mouse_events: 0; \
+ clip_to: "bottom_line_clip"; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+ max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+ fixed: 0 1; \
+ align: 0.5 1; \
+ color: GENLIST_LIST_LINE2_COLOR; \
+ rel1.to_x: "base"; \
+ rel1.relative: 0 0; \
+ rel2.to_x: "base"; \
+ rel2.relative: 1 1; \
+ rel1.offset: -1 -1; \
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_TOP_2LINE \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_TOP_2LINE; \
+ max: -1 GENLIST_PADDING_SIZE_TOP_2LINE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_TOP_2LINE+2); \
+ max: -1 (GENLIST_PADDING_SIZE_TOP_2LINE+2); \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_BOTTOM_2LINE \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_BOTTOM_2LINE; \
+ max: -1 GENLIST_PADDING_SIZE_BOTTOM_2LINE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_BOTTOM_2LINE+2); \
+ max: -1 (GENLIST_PADDING_SIZE_BOTTOM_2LINE+2); \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_TOP \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_TOP; \
+ max: -1 GENLIST_PADDING_SIZE_TOP; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_TOP+2); \
+ max: -1 (GENLIST_PADDING_SIZE_TOP+2); \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_BOTTOM \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_BOTTOM; \
+ max: -1 GENLIST_PADDING_SIZE_BOTTOM; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_BOTTOM+2); \
+ max: -1 (GENLIST_PADDING_SIZE_BOTTOM+2); \
+ } \
+ )
+
+
+#define GENLIST_PART_FLIP \
+ GENLIST_PART_RECT("elm.flip.bg", \
+ mouse_events: 0; \
+ description { state: "default" 0.0;\
+ color: 0 0 0 0;\
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ rel2.offset: 0 -3; \
+ color: GENLIST_LIST_BG_COLOR;\
+ }\
+ ) \
+ GENLIST_PART_SPACER("elm.flip.padding.right", \
+ description { state: "default" 0.0; \
+ min: 26 0; \
+ max: 26 -1; \
+ fixed: 1 0; \
+ align: 1 0.5; \
+ rel1.relative: 1 0; \
+ } \
+ ) \
+ GENLIST_PART_ICON("elm.flip.content", \
+ GENLIST_DESCRIPTION("elm.padding.left", "elm.flip.padding.icon.left", \
+ "elm.padding.top", "elm.padding.bottom", \
+ visible: 0; \
+ aspect: 1 1; \
+ min: 0 96; \
+ ) \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ ) \
+ GENLIST_PART_PADDING_R("elm.flip.padding.icon.left", "elm.flip.icon") \
+ GENLIST_PART_ICON( "elm.flip.icon", \
+ GENLIST_DESCRIPTION_RTB("elm.flip.padding.right", \
+ "elm.padding.top", "elm.padding.bottom", \
+ visible: 0; \
+ aspect: 1 1; \
+ align: 1 0.5; \
+ max: 158 74; \
+ ) \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+
+#define GENLIST_PART_FOCUS \
+ GENLIST_PART_IMAGE("focus_part", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ image { \
+ normal: "genlist/00_focus.png"; \
+ border: 6 6 6 6; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "focused" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ ) \
+ GENLIST_PART_ICON("elm.icon.focus", \
+ repeat_events: 1; \
+ GENLIST_DESCRIPTION_ENVELOP("focus_part", \
+ fixed: 1 1; \
+ ) \
+ )
+
+#define GENLIST_PART_FOCUS_REORDER \
+ GENLIST_PART_IMAGE("focus_part_reorder", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: "bg_reorder_left"; \
+ to_y: "bg_reorder_top"; \
+ } \
+ rel2 { \
+ relative: 0 0; \
+ to_x: "bg_reorder_right"; \
+ to_y: "bg_reorder_bottom"; \
+ } \
+ visible: 0; \
+ image { \
+ normal: "genlist/00_focus.png"; \
+ border: 6 6 6 6; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "focused" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_L( NAME, LEFT ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+ max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+ align: 0 0.5; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: LEFT; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ } \
+ } \
+ )
+
+
+#define GENLIST_PART_FOCUS_NORMAL \
+ GENLIST_PART_FOCUS \
+ GENLIST_PART_FOCUS_REORDER
+
+
+#define GENLIST_PROGRAM_DEFAULT( TARGET ) \
+ program { name: "default"; \
+ signal: "elm,state,default"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ } \
+
+#define GENLIST_PROGRAM_DISABLED( TARGET ) \
+ program { name: "enabled"; \
+ signal: "elm,state,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ } \
+ program { name: "disabled"; \
+ signal: "elm,state,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "disabled" 0.0; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_FOCUS \
+ program { name: "focused"; \
+ signal: "elm,state,focused"; \
+ source: "elm"; \
+ action: STATE_SET "focused" 0.0; \
+ target: "focus_part"; \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,state,unfocused"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part"; \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_NORMAL \
+ program { name: "focused"; \
+ signal: "elm,action,focus_highlight,show"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"bg_reorder_clip", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) \
+ set_state(PART:"focus_part_reorder", "focused", 0.0); \
+ else \
+ set_state(PART:"focus_part", "focused", 0.0); \
+ } \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,action,focus_highlight,hide"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part_reorder"; \
+ target: "focus_part"; \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_DIALOGUE \
+ program { name: "focused"; \
+ signal: "elm,state,focused"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"bg_dialogue", st, 30, vl); \
+ if (!strcmp(st, "top") || !strcmp(st, "top_selected") || !strcmp(st, "2depth_top")) \
+ set_state(PART:"focus_part_dialogue", "top_focused", 0.0); \
+ else if (!strcmp(st, "center") || !strcmp(st, "center_selected") || !strcmp(st, "2depth_center")) \
+ set_state(PART:"focus_part_dialogue", "center_focused", 0.0); \
+ else if (!strcmp(st, "bottom") || !strcmp(st, "bottom_selected") || !strcmp(st, "2depth_bottom")) \
+ set_state(PART:"focus_part_dialogue", "bottom_focused", 0.0); \
+ else if (!strcmp(st, "default") || !strcmp(st, "selected") || !strcmp(st, "2depth")) \
+ set_state(PART:"focus_part_dialogue", "focused", 0.0); \
+ } \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,state,unfocused"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part_dialogue"; \
+ }
+
+#define GENLIST_PROGRAM_SOUND( SRC ) \
+ program { name: "play_sound"SRC; \
+ signal: "mouse,clicked,1"; \
+ source: SRC; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:SRC, st, 30, vl); \
+ if (!strcmp(st, "selected") || \
+ !strcmp(st, "top_selected") || \
+ !strcmp(st, "center_selected") || \
+ !strcmp(st, "bottom_selected")) \
+ play_sample("touch_sound", 1.0); \
+ } \
+ }
+
+#define GENLIST_PROGRAM_SELECT( TARGET ) \
+ program { name: "selected"; \
+ signal: "elm,state,selected"; \
+ source: "elm"; \
+ action: STATE_SET "selected" 0.0; \
+ TARGET \
+ } \
+ program { name: "unselected"; \
+ signal: "elm,state,unselected"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_DECORATE_REORDER( NAME, TARGET ) \
+ program { name: "reorder_enabled"NAME; \
+ signal: "elm,state,reorder,mode_set"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "decorate") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"reorder_set"NAME); \
+ } \
+ } \
+ } \
+ program { name: "reorder_disabled"NAME; \
+ signal: "elm,state,reorder,mode_unset"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "decorate") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"default_set"NAME); \
+ } \
+ } \
+ } \
+ program { name: "decorate_enabled_effect"NAME; \
+ signal: "elm,state,decorate,enabled,effect";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"decorate_set"NAME); \
+ } \
+ } \
+ }\
+ program { name: "decorate_disabled_effect"NAME;\
+ signal: "elm,state,decorate,disabled,effect";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"default_set"NAME); \
+ } \
+ } \
+ }\
+ program { name: "decorate_enabled"NAME;\
+ signal: "elm,state,decorate,enabled";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"decorate_set"NAME); \
+ } \
+ } \
+ }\
+ program { name: "decorate_disabled"NAME;\
+ signal: "elm,state,decorate,disabled";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"default_set"NAME); \
+ } \
+ } \
+ } \
+ program { name: "default_set"NAME; \
+ action: STATE_SET "default" 0.0;\
+ target: "state"; \
+ TARGET \
+ } \
+ program { name: "decorate_set"NAME; \
+ action: STATE_SET "decorate" 0.0;\
+ target: "state"; \
+ TARGET \
+ } \
+ program { name: "reorder_set"NAME; \
+ action: STATE_SET "reorder" 0.0;\
+ target: "state"; \
+ TARGET \
+ } \
+ program { name: "decorate_reorder_set"NAME; \
+ action: STATE_SET "decorate_reorder" 0.0;\
+ target: "state"; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_FLIP \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ transition: DECELERATE 0.5; \
+ action: STATE_SET "flipped" 0.0; \
+ target: "elm.flip.content"; \
+ target: "elm.flip.icon"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ transition: DECELERATE 0.5; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.flip.content"; \
+ target: "elm.flip.icon"; \
+ } \
+ program { name: "flip_enabled_bg"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flipped" 0.0; \
+ target: "elm.flip.bg"; \
+ } \
+ program { name: "flip_disabled_bg"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.flip.bg"; \
+ }
+
+
+#define GENLIST_PROGRAMS_NORMAL( TARGET ) \
+ programs { \
+ GENLIST_PROGRAM_DEFAULT( TARGET \
+ target: "bg"; \
+ target: "bg_clip"; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ target: "bottom_line_clip"; \
+ target: "bg_reorder"; \
+ target: "elm.padding.left"; \
+ target: "elm.padding.right"; \
+ target: "elm.padding.top"; \
+ target: "elm.padding.bottom"; \
+ ) \
+ GENLIST_PROGRAM_DISABLED( TARGET \
+ target: "bg"; \
+ target: "bg_reorder"; \
+ ) \
+ GENLIST_PROGRAM_FOCUS_NORMAL \
+ GENLIST_PROGRAM_SELECT( TARGET \
+ target: "bg"; \
+ target: "bg_reorder"; \
+ ) \
+ GENLIST_PROGRAM_SOUND("bg") \
+ GENLIST_PROGRAM_SOUND("bg_reorder") \
+ GENLIST_PROGRAM_DECORATE_REORDER("normal", TARGET \
+ target: "bg_clip"; \
+ target: "bg_reorder_clip"; \
+ target: "bottom_line_clip"; \
+ target: "elm.padding.left"; \
+ target: "elm.padding.right"; \
+ target: "elm.padding.top"; \
+ target: "elm.padding.bottom"; \
+ ) \
+ GENLIST_PROGRAM_FLIP \
+ }
+
+ group { GENLIST_NAME("video.multiline/2text/default")
+ GENLIST_PROLOG_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2";
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_NORMAL
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_PADDING_TOP_2LINE
+ GENLIST_PART_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_TEXT("elm.text.1",
+ GENLIST_DESCRIPTION_LRT("elm.padding.left", "elm.padding.right", "elm.padding.top",
+ GENLIST_PARAM_LISTITEM
+ min: 0 GENLIST_HEIGHT_2LINE_MAIN;
+ fixed: 0 1;
+ )
+ GENLIST_DESCRIPTION_LISTITEM_OTHERS
+ )
+ //GENLIST_PART_PADDING_T_SIZE("elm.padding.text1.bottom", "elm.text.1", 0)
+ GENLIST_PART_TEXTBLOCK("elm.text.2",
+ GENLIST_DESCRIPTION("elm.padding.left", "elm.padding.right", "elm.text.1", "elm.padding.bottom",
+ GENLIST_PARAM_SUBITEM_DEFAULT_TB_WRAP
+ min: 0 GENLIST_HEIGHT_MULTILINE_SUB;
+ )
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS_NORMAL
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; )
+ }
+
+ group { GENLIST_NAME("video.multiline/1text.2icon/default")
+ GENLIST_PROLOG_NORMAL
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_NORMAL
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_PADDING_TOP
+ GENLIST_PART_PADDING_BOTTOM
+
+ GENLIST_PART_ICON_BTN_01_LTB("elm.icon.2", "elm.padding.left", "elm.padding.top", "elm.padding.bottom")
+ GENLIST_PART_PADDING_L("elm.padding.icon2.right", "elm.icon.2")
+ GENLIST_PART_ICON_MEDIUM_L( "elm.icon.1", "elm.padding.icon2.right")
+ GENLIST_PART_PADDING_L("elm.padding.icon1.right", "elm.icon.1")
+ GENLIST_PART_TEXTBLOCK("elm.text",
+ GENLIST_DESCRIPTION_LR("elm.padding.icon1.right", "elm.padding.right",
+ GENLIST_PARAM_MAINITEM_1TEXT_DEFAULT_TB_WRAP
+ min: 0 GENLIST_HEIGHT_1LINE;
+ )
+ GENLIST_DESCRIPTION_MAINITEM_1TEXT_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS_NORMAL
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text"; target: "elm.icon.1"; target: "elm.icon.2"; )
+ }
+
+ group { GENLIST_NAME("video.multiline/2text.1icon/default")
+ GENLIST_PROLOG_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2" ;
+ data.item: "contents" "elm.icon";
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_NORMAL
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_PADDING_TOP_2LINE
+ GENLIST_PART_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_ICON_MEDIUM_L( "elm.icon", "elm.padding.left")
+ GENLIST_PART_PADDING_L("elm.padding.icon.right", "elm.icon")
+ GENLIST_PART_TEXTBLOCK("elm.text.1",
+ GENLIST_DESCRIPTION_LRT("elm.padding.icon.right", "elm.padding.right", "elm.padding.top",
+ GENLIST_PARAM_MAINITEM_DEFAULT_TB_WRAP
+ min: 0 GENLIST_HEIGHT_2LINE_MAIN;
+ )
+ GENLIST_DESCRIPTION_MAINITEM_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_TEXTBLOCK("elm.text.2",
+ GENLIST_DESCRIPTION("elm.padding.icon.right", "elm.padding.right", "elm.text.1", "elm.padding.bottom",
+ GENLIST_PARAM_MULTI_SUBITEM_DEFAULT_TB_WRAP
+ min: 0 GENLIST_HEIGHT_MULTILINE_SUB;
+ )
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS_NORMAL
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.icon";)
+ }
+
+
+ group { GENLIST_NAME("video.multiline/1text.1icon/default")
+ GENLIST_PROLOG_NORMAL
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon";
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_NORMAL
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_PADDING_TOP
+ GENLIST_PART_PADDING_BOTTOM
+
+ GENLIST_PART_ICON_MEDIUM_L( "elm.icon", "elm.padding.left")
+ GENLIST_PART_PADDING_L("elm.padding.icon.right", "elm.icon")
+ GENLIST_PART_TEXTBLOCK("elm.text",
+ GENLIST_DESCRIPTION_LR("elm.padding.icon.right", "elm.padding.right",
+ GENLIST_PARAM_MAINITEM_CUSTOM_TB_WRAP
+ min: 0 GENLIST_HEIGHT_1LINE;
+ )
+ GENLIST_DESCRIPTION_MAINITEM_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS_NORMAL
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text"; target: "elm.icon";)
+ }
+
+ group {
+ name: "elm/genlist/item/custom.subtitle/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ //color: 22 28 45 255;
+ color: GENLIST_LIST_BG_POPUP_COLOR;
+ min: 0 76;
+ }
+ }
+ part {
+ name: "elm.text";
+ scale: 1;
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 26/618 0.0; offset: 0 0; to: "base";
+ }
+ rel2 {
+ relative: 556/618 1.0; to: "base";
+ }
+ text {
+ align: 0.0 0.5;
+ min: 0 1;
+ size: 27;
+ }
+ color: 21 108 148 255;
+ }
+ }
+ part {
+ name: "elm.icon";
+ scale: 0;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 23/76; to: "base";
+ }
+ rel2 {
+ relative: 1.0 59/76; to: "base"; offset:-26 0;
+ }
+ min: 36 36;
+ max: 36 36;
+ }
+ }
+
+ part {
+ name:"bottom.line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ //min: PV_POPUP_TITLE_LINE_WIDTH_HEIGHT_MIN;
+ //color: PV_GENLIST_LIST_LINE1_POPUP_COLOR;
+ color: 217 217 217 255;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; to_x: "base"; to_y: "elm.icon"; offset:4 13;}
+ rel2 { relative: 1.0 1.0; to_x: "base"; to_y: "elm.icon"; offset:-5 17;}
+ }
+ }
+ }
+}/* group */
+
+
+#define GENLIST_POPUP_STYLE(NAME) \
+ group { GENLIST_NAME(NAME"/popup/default") \
+ inherit: "elm/genlist/item/"NAME"/default"; \
+ images { \
+ image: "genlist/00_popup_list_press.png" COMP; \
+ } \
+ parts { \
+ GENLIST_PART_SPACER("bg_left_top_padding", \
+ description { state: "default" 0.0; \
+ min: POPUP_ITEM_BG_LEFT_TOP_PAD_MIN_INC; \
+ fixed: 1 1; \
+ align: 0 0; \
+ rel2.relative: 0 0; \
+ } \
+ ) \
+ GENLIST_PART_SPACER("bg_right_bottom_padding", \
+ description { state: "default" 0.0; \
+ min: POPUP_ITEM_BG_RIGHT_BOTTOM_PAD_MIN_INC; \
+ fixed: 1 1; \
+ align: 1 1; \
+ rel1.relative: 1 1; \
+ } \
+ ) \
+ GENLIST_PART_IMAGE("bg", \
+ description { state: "default" 0.0; \
+ image { \
+ normal: "genlist/00_popup_list_press.png"; \
+ border: POPUP_ITEM_BG_PRESSED_BORDER_INC; \
+ border_scale: 1; \
+ } \
+ rel1 { \
+ relative: 1 1; \
+ to_x: "bg_left_top_padding"; \
+ to_y: "bg_left_top_padding"; \
+ } \
+ rel2 { \
+ relative: 0 0; \
+ to_x: "bg_right_bottom_padding"; \
+ to_y: "bg_right_bottom_padding"; \
+ } \
+ color: GENLIST_LIST_BG_POPUP_COLOR; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_BG_POPUP_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_BG_POPUP_PRESS_COLOR; \
+ } \
+ ) \
+ GENLIST_PART_RECT("bottom_line", \
+ description { state: "default" 0.0; \
+ color: GENLIST_LIST_LINE1_POPUP_COLOR; \
+ rel1.to: "bottom_line2"; \
+ rel2.to: "bottom_line2"; \
+ rel2.relative: 1 0; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT("bottom_line2", \
+ description { state: "default" 0.0; \
+ color: GENLIST_LIST_LINE2_POPUP_COLOR; \
+ rel1.to_x: "bg"; \
+ rel2.to_x: "bg"; \
+ rel1.offset: 1 0; \
+ rel2.offset: -2 -1; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ } \
+ programs { \
+ program { name : "hide_bottomline"; \
+ signal: "elm,state,bottomline,hide"; \
+ source: ""; \
+ action: STATE_SET "disabled" 0.0; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ } \
+ program { name : "show_bottomline"; \
+ signal: "elm,state,bottomline,show"; \
+ source: ""; \
+ action: STATE_SET "default" 0.0; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ } \
+ } \
+ }
+
+
+//popup
+GENLIST_POPUP_STYLE("video.multiline/2text")
+GENLIST_POPUP_STYLE("video.multiline/1text.2icon")
+GENLIST_POPUP_STYLE("video.multiline/1text.1icon")
+GENLIST_POPUP_STYLE("video.multiline/2text.1icon")
+
+#define POPUP_FS_OUTSIDE_PADDING "500"
+#define POPUP_FS_TITLE_AREA_HEIGHT "72"
+
+#define POPUP_FS_TITLE_LEFT_PADDING 15
+#define POPUP_FS_TITLE_RIGHT_PADDING 15
+#define POPUP_FS_TITLE_TOP_PADDING 3
+#define POPUP_FS_TITLE_BOTTOM_PADDING 3
+#define POPUP_SUBTITLE_HEIGHT 28
+
+
+#define POPUP_FS_DEFAULT_TEXT_FONT_SIZE_INC 30
+#define POPUP_FS_SUBTITLE_TEXT_FONT_SIZE_INC 21
+
+#define POPUP_FS_DEFAULT_BASE_DEFAULT_MIN_INC 480 0
+#define POPUP_FS_DEFAULT_BASE_DEFAULT_MAX_INC 480 800
+#define POPUP_FS_DEFAULT_BASE_LANDSCAPE_MIN_INC 800 0
+#define POPUP_FS_DEFAULT_BASE_LANDSCAPE_MAX_INC 800 480
+#define POPUP_FS_DEFAULT_TITLE_DEFAULT_MIN_INC 480 72
+#define POPUP_FS_DEFAULT_TITLE_DEFAULT_MAX_INC 800 72
+#define POPUP_FS_DEFAULT_BUTTON_BG_DEFAULT_MIN_INC 480 0
+#define POPUP_FS_DEFAULT_TEXT_SHADOW_COLOR_INC "#08080855"
+#define POPUP_FS_SUBTITLE_TEXT_SHADOW_COLOR_INC "#08080855"
+
+ group { name: "elm/popup/fullsrceen/default";
+ data {
+ item: "focus_highlight" "on";
+ item: "default_orient" "2"; //top, center:1 bottom:2
+ item: "title_height" POPUP_FS_TITLE_AREA_HEIGHT;
+ item: "popup_outside_pad" POPUP_FS_OUTSIDE_PADDING;
+ }
+ styles {
+ style { name: "popup_fs_title_style";
+ base: "font=Tizen:style=Regular align=center font_size="POPUP_FS_DEFAULT_TEXT_FONT_SIZE_INC" color=#FFFFFF wrap=mixed ellipsis=1.0 style=far_shadow,bottom shadow_color="POPUP_FS_DEFAULT_TEXT_SHADOW_COLOR_INC"";
+ tag: "br" "\n";
+ tag: "tab" "\t";
+ }
+ style { name: "popup_subtitle_style";
+ base: "font=Tizen:style=Regular align=center font_size="POPUP_FS_SUBTITLE_TEXT_FONT_SIZE_INC" color=#FFFFFF wrap=mixed ellipsis=1.0 style=far_shadow,bottom shadow_color="POPUP_FS_SUBTITLE_TEXT_SHADOW_COLOR_INC"";
+ tag: "br" "\n";
+ tag: "tab" "\t";
+ }
+ }
+ parts {
+ part { name: "base";
+ scale: 1;
+ type: RECT;
+ description { state: "default" 0.0;
+ min: POPUP_FS_DEFAULT_BASE_DEFAULT_MAX_INC;
+ max: POPUP_FS_DEFAULT_BASE_DEFAULT_MAX_INC;
+ fixed: 1 0;
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: POPUP_FS_DEFAULT_BASE_LANDSCAPE_MAX_INC;
+ max: POPUP_FS_DEFAULT_BASE_LANDSCAPE_MAX_INC;
+ }
+ }
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "access.outline";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.bg.title";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1.relative: 0.0 0.0;
+ rel2.relative: 0.0 1.0;
+ color: 115 167 191 255;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: POPUP_FS_DEFAULT_TITLE_DEFAULT_MAX_INC;
+ max: POPUP_FS_DEFAULT_TITLE_DEFAULT_MAX_INC;
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: POPUP_FS_DEFAULT_TITLE_DEFAULT_MAX_INC;
+ max: POPUP_FS_DEFAULT_TITLE_DEFAULT_MAX_INC;
+ }
+ }
+ part { name: "title_left_top_padding";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.to: "elm.bg.title";
+ fixed: 1 1;
+ min: POPUP_FS_TITLE_LEFT_PADDING POPUP_FS_TITLE_TOP_PADDING;
+ max: POPUP_FS_TITLE_LEFT_PADDING POPUP_FS_TITLE_TOP_PADDING;
+ }
+ }
+ part { name: "title_right_bottom_padding";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 1.0 1.0;
+ rel2.to: "elm.bg.title";
+ fixed: 1 1;
+ min: POPUP_FS_TITLE_RIGHT_PADDING POPUP_FS_TITLE_BOTTOM_PADDING;
+ max: POPUP_FS_TITLE_RIGHT_PADDING POPUP_FS_TITLE_BOTTOM_PADDING;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXTBLOCK;
+ scale:1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ text {
+ style: "popup_fs_title_style";
+ size: POPUP_FS_DEFAULT_TEXT_FONT_SIZE_INC;
+ }
+ rel1 {
+ relative: 1.0 1.0;
+ to: "title_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "title_right_bottom_padding";
+ }
+ }
+ description { state: "subtitle_visible" 0.0;
+ inherit: "default" 0.0;
+ rel2 {
+ relative: 1.0 0.0;
+ to: "elm.text.subtitle";
+ }
+ }
+ }
+
+ part { name: "elm.text.subtitle";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 POPUP_SUBTITLE_HEIGHT;
+ max: -1 POPUP_SUBTITLE_HEIGHT;
+ text.style: "popup_subtitle_style";
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "title_left_top_padding";
+ to_y: "title_right_bottom_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "title_right_bottom_padding";
+ }
+ align: 0.5 1.0;
+ fixed: 1 1;
+ visible: 0;
+ }
+ description { state: "subtitle_visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "access.title";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ rel1.to: "elm.bg.title";
+ rel2.to: "elm.bg.title";
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ rel1.to: "base";
+ rel2.to: "base";
+ }
+ description { state: "show_title_area" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "base";
+ to_y: "elm.bg.title";
+ }
+ rel2.to: "base";
+ }
+ description { state: "show_action_area" 0.0;
+ inherit: "default" 0.0;
+ rel1.to: "base";
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "base";
+ to_y: "elm.swallow.action_area.bg";
+ }
+ }
+ description { state: "show_action_title_area" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "base";
+ to_y: "elm.bg.title";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "base";
+ to_y: "elm.swallow.action_area.bg";
+ }
+ }
+ }
+ part { name: "access.body";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.swallow.action_area.bg";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ fixed : 1 1;
+ align: 0.5 1.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "base";
+ }
+ rel2.to: "base";
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: POPUP_FS_DEFAULT_BUTTON_BG_DEFAULT_MIN_INC;
+ visible: 1;
+ color: 245 245 242 255;
+ }
+ }
+ part { name: "elm.swallow.action_area";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.action_area.bg";
+ rel2.to: "elm.swallow.action_area.bg";
+ }
+ }
+ }
+ programs {
+ program { name: "show_subtitle";
+ signal: "elm,state,subtitle,text,visible";
+ source: "elm";
+ action: STATE_SET "subtitle_visible" 0.0;
+ target: "elm.text.title";
+ target: "elm.text.subtitle";
+ }
+ program { name: "hide_subtitle";
+ signal: "elm,state,subtitle,text,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.text.title";
+ target: "elm.text.subtitle";
+ }
+ program { name: show_title_area;
+ signal: "elm,state,title_area,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.action_area.bg", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.swallow.content", "show_action_title_area", 0.0);
+ else
+ set_state(PART:"elm.swallow.content", "show_title_area", 0.0);
+ set_state(PART:"elm.bg.title", "visible", 0.0);
+ }
+ }
+ program { name: hide_title_area;
+ signal: "elm,state,title_area,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.action_area.bg", st, 30, vl);
+ if ((!strcmp(st, "visible")) || (!strcmp(st, "landscape_visible")))
+ set_state(PART:"elm.swallow.content", "show_action_area", 0.0);
+ else
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.bg.title", "default", 0.0);
+ }
+ }
+ program { name: show_action_area;
+ signal: "elm,state,action_area,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.bg.title", st, 30, vl);
+ if ((!strcmp(st, "visible")))
+ set_state(PART:"elm.swallow.content", "show_action_title_area", 0.0);
+ else
+ set_state(PART:"elm.swallow.content", "show_action_area", 0.0);
+ set_state(PART:"elm.swallow.action_area.bg", "visible", 0.0);
+ }
+ }
+ program { name: hide_action_area;
+ signal: "elm,state,action_area,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.bg.title", st, 30, vl);
+ if ((!strcmp(st, "visible")))
+ set_state(PART:"elm.swallow.content", "show_title_area", 0.0);
+ else
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"elm.swallow.action_area.bg", "default", 0.0);
+ }
+ }
+ program { name: "change_to_landscape";
+ action: STATE_SET "landscape" 0.0;
+ target: "base";
+ target: "elm.bg.title";
+ after: "orientation_change";
+ }
+ program { name: "title_change_to_portrait";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.bg.title";
+ }
+ program { name: "orientation_change";
+ action: SIGNAL_EMIT "elm,state,orientation,changed" "";
+ after: "title_change_to_portrait";
+ }
+ program { name: "change_to_portrait";
+ action: STATE_SET "default" 0.0;
+ target: "base";
+ after: "orientation_change";
+ }
+ program { name: "landscape_mode";
+ source: "elm";
+ signal: "elm,state,orient,90";
+ after: "change_to_landscape";
+ }
+ program { name: "landscape_mode2";
+ source: "elm";
+ signal: "elm,state,orient,270";
+ after: "change_to_landscape";
+ }
+ program { name: "portrait_mode";
+ source: "elm";
+ signal: "elm,state,orient,0";
+ after: "change_to_portrait";
+ }
+ program { name: "portrait_mode2";
+ source: "elm";
+ signal: "elm,state,orient,180";
+ after: "change_to_portrait";
+ }
+ } /* end of programs */
+ }
+ group { name: "elm/popup/fullsrceen/notitle/default";
+ data {
+ item: "focus_highlight" "on";
+ item: "default_orient" "2"; //top, center:1 bottom:2
+ item: "title_height" POPUP_FS_TITLE_AREA_HEIGHT;
+ item: "popup_outside_pad" POPUP_FS_OUTSIDE_PADDING;
+ }
+ parts {
+ part { name: "base";
+ scale: 1;
+ type: RECT;
+ description { state: "default" 0.0;
+ min: POPUP_FS_DEFAULT_BASE_DEFAULT_MAX_INC;
+ max: POPUP_FS_DEFAULT_BASE_DEFAULT_MAX_INC;
+ fixed: 1 0;
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: POPUP_FS_DEFAULT_BASE_LANDSCAPE_MAX_INC;
+ max: POPUP_FS_DEFAULT_BASE_LANDSCAPE_MAX_INC;
+ }
+ }
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 255 255 255 255;
+ }
+ }
+
+ part { name: "elm.bg.title";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1.relative: 0.0 0.0;
+ rel2.relative: 0.0 1.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "base";
+ to_y: "elm.bg.title";
+ }
+ rel2.to: "base";
+ }
+ }
+ }
+
+ programs {
+ program { name: "change_to_landscape";
+ action: STATE_SET "landscape" 0.0;
+ target: "base";
+ after: "orientation_change";
+ }
+ program { name: "orientation_change";
+ action: SIGNAL_EMIT "elm,state,orientation,changed" "";
+ }
+ program { name: "change_to_portrait";
+ action: STATE_SET "default" 0.0;
+ target: "base";
+ after: "orientation_change";
+ }
+ program { name: "landscape_mode";
+ source: "elm";
+ signal: "elm,state,orient,90";
+ after: "change_to_landscape";
+ }
+ program { name: "landscape_mode2";
+ source: "elm";
+ signal: "elm,state,orient,270";
+ after: "change_to_landscape";
+ }
+ program { name: "portrait_mode";
+ source: "elm";
+ signal: "elm,state,orient,0";
+ after: "change_to_portrait";
+ }
+ program { name: "portrait_mode2";
+ source: "elm";
+ signal: "elm,state,orient,180";
+ after: "change_to_portrait";
+ }
+ } /* end of programs */
+ }
diff --git a/playview/res/edc/playview/custom/pv-custom-image.edc b/playview/res/edc/playview/custom/pv-custom-image.edc
new file mode 100644
index 0000000..88cb534
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-image.edc
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+images
+{
+ /* multi window */
+ image: "multi/T01_2_mw_control_bg_left.png" COMP;
+ image: "multi/T01_2_mw_control_bg_left_press.png" COMP;
+ image: "multi/T01_2_mw_control_bg_center.png" COMP;
+ image: "multi/T01_2_mw_control_bg_center_press.png" COMP;
+ image: "multi/T01_2_mw_control_bg_right.png" COMP;
+ image: "multi/T01_2_mw_control_bg_right_press.png" COMP;
+
+ /* button images */
+ image: "button/T01_2_icon_Near_by_device.png" COMP;
+ image: "button/T01_2_icon_Near_by_device_press.png" COMP;
+ image: "button/T01_2_icon_bluetooth_headset.png" COMP;
+ image: "button/T01_2_icon_bluetooth_headset_press.png" COMP;
+
+ image: "button/T01_2_icon_check.png" COMP;
+ image: "button/T01_2_icon_check_press.png" COMP;
+ image: "button/T01_2_icon_close.png" COMP;
+ image: "button/T01_2_icon_close_press.png" COMP;
+ image: "button/T01-2_control_circle_button_01.png" COMP;
+ image: "button/T01-2_control_circle_button_01_press.png" COMP;
+ image: "button/T01-2_control_circle_button_01_focus.png" COMP;
+ image: "button/T01-2_control_circle_button_02.png" COMP;
+ image: "button/T01-2_control_circle_button_02_press.png" COMP;
+ image: "button/T01-2_control_circle_button_02_focus.png" COMP;
+ image: "button/T01-2_control_circle_button_03.png" COMP;
+ image: "button/T01-2_control_circle_button_03_press.png" COMP;
+ image: "button/core_icon_back.png" COMP;
+ image: "control/T01-2_control_circle_icon_rewind.png" COMP;
+ image: "control/T01-2_control_circle_icon_next.png" COMP;
+ /*genlist*/
+ image: "genlist/00_focus.png" COMP;
+ image: "genlist/00_list_group_bg.png" COMP;
+ image: "genlist/00_list_group_bg_press.png" COMP;
+ image: "genlist/00_popup_list_press.pngg" COMP;
+
+}
diff --git a/playview/res/edc/playview/custom/pv-custom-layout.edc b/playview/res/edc/playview/custom/pv-custom-layout.edc
new file mode 100644
index 0000000..a9d251b
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-layout.edc
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+ group {
+ name: "elm/layout/application/play_view";
+ parts {
+ part {
+ name: "elm.swallow.bg";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "elm.swallow.event";
+ type: SWALLOW;
+ mouse_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.content";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ }
+ }
+ } /* parts */
+} /* group */
+
+ group {
+ name: "elm/layout/application/multi_view";
+ parts {
+ part {
+ name: "elm.swallow.bg";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ mouse_events: 1;
+ repeat_events : 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ }
+ }
+ } /* parts */
+} /* group */
+
diff --git a/playview/res/edc/playview/custom/pv-custom-naviframe.edc b/playview/res/edc/playview/custom/pv-custom-naviframe.edc
new file mode 100644
index 0000000..f735be9
--- /dev/null
+++ b/playview/res/edc/playview/custom/pv-custom-naviframe.edc
@@ -0,0 +1,2840 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 0
+#define NAVIFRAME_TOOLBAR_BG_COLOR_INC 0 0 0 0
+#define NAVIFRAME_TITLE_TOP_PADDING_INC 0 16
+#define NAVIFRAME_TITLE_H_INC 50
+#define NAVIFRAME_TOOLBAR_HEIGHT_INC 0
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 63 63
+
+#define NAVIFRAME_PADDING_INC 20 0
+#define NAVIFRAME_PADDING2_INC 26 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_VIEW_TRANS_TIME 0.3
+
+#define NAVIFRAME_TOP_LINE_COLOR 0 0 0 0
+
+//tag buddy
+#define NAVIFRAME_TAG_TOP_PADDING 116
+#define NAVIFRAME_TAG_RIGHT_PADDING 26
+#define NAVIFRAME_TAG_LEFT_PADDING 26
+#define NAVIFRAME_TAG_HEIGHT 192
+
+
+group {
+ name:"elm/naviframe/item/playview/basic/default";
+ alias:"elm/naviframe/item/playview/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_swallow";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ align: 0.0 1.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 NAVIFRAME_TITLE_H_INC;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 0.0; to: "base"; }
+ }
+ }
+
+ 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: "title_swallow"; }
+ rel2 { relative: 1.0 0.0; to: "title_swallow"; }
+ 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_line";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 2;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "title_swallow"; }
+ rel2 { relative: 1.0 0.0; to: "title_swallow"; }
+ color: NAVIFRAME_TOP_LINE_COLOR;
+ }
+/*
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ }
+*/
+ }
+ 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;
+ visible: 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+ }
+ }*/
+ part {
+ name: "padding_center_text1";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 45 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: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ // _NATIVE_BUFFER_SYNC
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ /*
+ 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: 45 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_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;
+ effect: FAR_SHADOW BOTTOM;
+ scale: 1;
+ repeat_events: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ text {
+ min: 0 0;
+ max: 1 0;
+ size: 18;
+ }
+/* chageable GUI
+ color: VIDEO_TITLE_FONT_DEFAULT_COLOR;
+ color3: 0 0 0 255;
+ align: 0.5 0.5;
+*/
+ color: 240 240 240 255;
+
+ 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"; }
+ }
+ }
+ part {
+ name: "access.title";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1.to: "title_bg";
+ rel2.to: "title_bg";
+ color: 0 0 0 0;
+ }
+ }
+
+ 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: "click_event_area";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { to: "title_bg"; }
+ rel2 { to: "title_bg"; }
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "title_btns_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: NAVIFRAME_PADDING2_INC;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ visible: 0;
+ rel1 { relative: 0.0 0.0; to: "title_bg"; }
+ rel2 { relative: 0.0 1.0; to: "title_bg"; }
+ }
+ }
+
+ 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_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 0.5;
+ rel1 { relative: 0.5 0.0; to: "title_btns_padding"; }
+ rel2 { relative: 0.5 1.0; to: "title_btns_padding"; }
+ }
+ }
+ 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: "pv.tag.left.padding";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: NAVIFRAME_TAG_LEFT_PADDING 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 1.0;}
+ }
+ }
+ part {
+ name: "pv.tag.right.padding";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: NAVIFRAME_TAG_RIGHT_PADDING 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "pv.tag.top.padding";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 NAVIFRAME_TAG_TOP_PADDING;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.tag.left.padding";}
+ rel2 { relative: 0.0 0.0; to: "pv.tag.right.padding";}
+ }
+ }
+ part {
+ name: "pv.tag.bg";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 NAVIFRAME_TAG_HEIGHT;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to:"pv.tag.top.padding";}
+ rel2 { relative: 1.0 1.0; to:"pv.tag.top.padding";}
+ color: 90 46 7 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+ 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_swallow";
+ transition: LINEAR 0.2;
+ after: "show_finished";
+ }
+ program {
+ name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_swallow";
+ transition: LINEAR 0.2;
+ after: "hide_finished";
+ }
+ program {
+ name: "no_effect_title_hide";
+ signal: "elm,state,title,no,effect,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_swallow";
+ transition: LINEAR 0.0;
+ 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: "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);
+ }
+ }
+ program {
+ name: "left_btn_hide";
+ signal: "elm,state,title_left_btn,hide";
+ source: "elm";
+ script {
+ set_int(buttons_visible, get_int(buttons_visible) - 1);
+ 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);
+ }
+ }
+ 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);
+ if (get_int(buttons_visible) == 0)
+ set_state(PART:"bottom_right_padding", "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: "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" "";
+ }
+ program {
+ name: "pv.tag.bg.hide";
+ signal: "signal.pv.tag.bg.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.tag.bg";
+ }
+ program {
+ name: "pv.tag.bg.show";
+ signal: "signal.pv.tag.bg.show";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.tag.bg";
+ }
+ }
+}
+
+
+
+group {
+ name:"elm/naviframe/item/playview/multiwin/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 0;
+ 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: 0 0;
+ 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: 0 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;
+ }
+ }
+
+ 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: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_btns_padding_ext"; }
+ rel2 { relative: 0.0 1.0; to: "title_btns_padding_ext"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "padding_bottom_text";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ 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;
+ effect: FAR_SHADOW BOTTOM;
+ scale: 1;
+ repeat_events: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ text {
+ font: VIDEO_TITLE_FONT_STYLE;
+ size: VIDEO_TITLE_FONT_SIZE;
+ min: 0 0;
+ max: 1 0;
+ align: 0.0 0.5;
+ }
+ color: VIDEO_TITLE_FONT_DEFAULT_COLOR;
+ color3: 0 0 0 255;
+ 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"; }
+ }
+ }
+ part {
+ name: "access.title";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1.to: "title_bg";
+ rel2.to: "title_bg";
+ color: 0 0 0 0;
+ }
+ }
+
+ 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: 0 0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "click_event_area";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { to: "title_bg"; }
+ rel2 { to: "title_bg"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "title_left_btn_ext";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ max: 0 0;
+ fixed: 1 1;
+ align: 1 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_btns_padding_ext"; }
+ rel2 { relative: 0.0 1.0; to: "title_btns_padding_ext"; }
+ }
+ }
+ part {
+ name: "title_btns_padding_ext";
+ 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_left_btn"; }
+ rel2 { relative: 0.0 1.0; to: "title_left_btn"; }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ }
+ }
+ part {
+ name: "title_left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ max: 0 0;
+ 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: 0 0;
+ }
+ }
+ 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: 0 0;
+ }
+ }
+ part {
+ name: "title_right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ max: 0 0;
+ 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: 0 0 0 0;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ visible: 1;
+ }
+ description {
+ state: "sip_visible" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.0;
+ min: 1 0;
+ rel1 { to: "title_bg"; }
+ rel2 { to: "title_bg"; }
+ visible: 1;
+ }
+ }
+ }
+ 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: "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: "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: "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" "";
+ }
+ }
+}
+
+group {
+ name:"elm/naviframe/item/playview/trim/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_line";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 6;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "title_bg"; }
+ rel2 { relative: 1.0 0.0; to: "title_bg"; }
+ color: NAVIFRAME_TOP_LINE_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ }
+ }
+ 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;
+ visible: 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"; }
+ }
+ }
+
+ 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;
+ effect: FAR_SHADOW BOTTOM;
+ scale: 1;
+ repeat_events: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ text {
+ font: VIDEO_TITLE_FONT_STYLE;
+ size: VIDEO_TITLE_FONT_SIZE;
+ min: 0 0;
+ max: 1 0;
+ align: 0.0 0.5;
+ }
+ color: VIDEO_TITLE_FONT_DEFAULT_COLOR;
+ color3: 0 0 0 255;
+ 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"; }
+ }
+ }
+
+ part {
+ name: "access.title";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1.to: "title_bg";
+ rel2.to: "title_bg";
+ color: 0 0 0 0;
+ }
+ }
+
+ 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: "click_event_area";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { to: "title_bg"; }
+ rel2 { to: "title_bg"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "title_left_btn_line_shadow";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 1 48;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "title_left_btn_line"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "title_left_btn_line"; to_y: "title_bg"; }
+ color: 0 0 0 81;
+ }
+ }
+
+ part {
+ name: "title_left_btn_line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 2 48;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "title_left_btns_padding"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "title_left_btns_padding"; to_y: "title_bg"; }
+ color: 255 255 255 81;
+ }
+ }
+
+ part {
+ name: "title_left_btns_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: NAVIFRAME_PADDING2_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ visible: 0;
+ rel1 { relative: 0.0 0.0; to_x: "title_left_btn"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "title_left_btn"; to_y: "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 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: NAVIFRAME_PADDING2_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ visible: 0;
+ rel1 { relative: 0.0 0.0; to_x: "title_right_btn_line"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "title_right_btn_line"; to_y: "title_bg"; }
+ }
+ }
+
+ part {
+ name: "title_right_btn_line_shadow";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 1 48;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "title_right_btn_line"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "title_right_btn_line"; to_y: "title_bg"; }
+ color: 0 0 0 81;
+ }
+ }
+
+ part {
+ name: "title_right_btn_line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 2 48;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "title_btns_line_padding"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "title_btns_line_padding"; to_y: "title_bg"; }
+ color: 255 255 255 81;
+ }
+ }
+
+ part {
+ name: "title_btns_line_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: NAVIFRAME_PADDING2_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ visible: 0;
+ rel1 { relative: 0.0 0.0; to_x: "title_right_btn"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "title_right_btn"; to_y: "title_bg"; }
+ }
+ }
+
+ 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_PADDING2_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 0.5;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.5; to_x: "bottom_right_padding"; to_y: "title_bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "bottom_right_padding"; to_y: "title_bg"; }
+ }
+ }
+
+ 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;
+ }
+ }
+ }
+ 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";
+ target: "title_line";
+ }
+ program {
+ name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_bg";
+ target: "title_line";
+ }
+ 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: "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);
+ }
+ }
+ program {
+ name: "left_btn_hide";
+ signal: "elm,state,title_left_btn,hide";
+ source: "elm";
+ script {
+ set_int(buttons_visible, get_int(buttons_visible) - 1);
+ 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);
+ }
+ }
+ 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);
+ if (get_int(buttons_visible) == 0)
+ set_state(PART:"bottom_right_padding", "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: "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" "";
+ }
+ }
+}
+
+
+
+group {
+ name:"elm/naviframe/item/playview/chapter/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 0;
+ 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_line";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 6;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "title_bg"; }
+ rel2 { relative: 1.0 0.0; to: "title_bg"; }
+ color: NAVIFRAME_TOP_LINE_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ }
+ }
+ 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: 0 0;
+ 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: 0 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;
+ }
+ }
+
+ 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: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_btns_padding_ext"; }
+ rel2 { relative: 0.0 1.0; to: "title_btns_padding_ext"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "padding_bottom_text";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ 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;
+ effect: FAR_SHADOW BOTTOM;
+ scale: 1;
+ repeat_events: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ text {
+ font: VIDEO_TITLE_FONT_STYLE;
+ size: VIDEO_TITLE_FONT_SIZE;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ color: VIDEO_TITLE_FONT_DEFAULT_COLOR;
+ color3: 0 0 0 255;
+ align: 0.5 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"; }
+ }
+ }
+
+ part {
+ name: "access.title";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1.to: "title_bg";
+ rel2.to: "title_bg";
+ color: 0 0 0 0;
+ }
+ }
+
+ 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: 0 0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "click_event_area";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { to: "title_bg"; }
+ rel2 { to: "title_bg"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "title_left_btn_ext";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ max: 0 0;
+ fixed: 1 1;
+ align: 1 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_btns_padding_ext"; }
+ rel2 { relative: 0.0 1.0; to: "title_btns_padding_ext"; }
+ }
+ }
+ part {
+ name: "title_btns_padding_ext";
+ 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_left_btn"; }
+ rel2 { relative: 0.0 1.0; to: "title_left_btn"; }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ }
+ }
+ part {
+ name: "title_left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ max: 0 0;
+ 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: 0 0;
+ }
+ }
+ 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: 0 0;
+ }
+ }
+ part {
+ name: "title_right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description {
+ state: "default" 0.0;
+ max: 0 0;
+ 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: 0 0 0 255;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: 0 98;
+ max: 999999 98;
+ visible: 1;
+ }
+ description {
+ state: "sip_visible" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.0;
+ min: 1 0;
+ rel1 { to: "title_bg"; }
+ rel2 { to: "title_bg"; }
+ visible: 1;
+ }
+ }
+ part {
+ name: "prev_btn_bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 112 0;
+ 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;
+ clip_to: "toolbar_clip";
+ description {
+ state: "default" 0.0;
+ max: 85 98;
+ 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 { to: "toolbar_bg"; }
+ rel2 { to: "toolbar_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 "default" 0.0;
+ target: "title_bg";
+ target: "title_line";
+ 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";
+ target: "title_line";
+ 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: "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: "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: "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/playview/res/edc/playview/images/00_color_picker_palette_bg.png b/playview/res/edc/playview/images/00_color_picker_palette_bg.png
new file mode 100755
index 0000000..462be08
--- /dev/null
+++ b/playview/res/edc/playview/images/00_color_picker_palette_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/T01_2_video_thumbnail_default.png b/playview/res/edc/playview/images/T01_2_video_thumbnail_default.png
new file mode 100644
index 0000000..4b83dc8
--- /dev/null
+++ b/playview/res/edc/playview/images/T01_2_video_thumbnail_default.png
Binary files differ
diff --git a/playview/res/edc/playview/images/T01_no_video.png b/playview/res/edc/playview/images/T01_no_video.png
new file mode 100644
index 0000000..9cb28a1
--- /dev/null
+++ b/playview/res/edc/playview/images/T01_no_video.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_AC_Wall.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_AC_Wall.png
new file mode 100755
index 0000000..4d55d0c
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_AC_Wall.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_BD.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_BD.png
new file mode 100755
index 0000000..660d972
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_BD.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Camcorder.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Camcorder.png
new file mode 100755
index 0000000..d6103c1
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Camcorder.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Camera.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Camera.png
new file mode 100755
index 0000000..fcbb254
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Camera.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Dongle.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Dongle.png
new file mode 100755
index 0000000..09158a1
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Dongle.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_LFD.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_LFD.png
new file mode 100755
index 0000000..0c1feb5
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_LFD.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Mobile.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Mobile.png
new file mode 100755
index 0000000..5eaf414
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Mobile.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_None_DNS.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_None_DNS.png
new file mode 100755
index 0000000..62e2fa3
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_None_DNS.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_PC.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_PC.png
new file mode 100755
index 0000000..ddda068
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_PC.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_REF.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_REF.png
new file mode 100755
index 0000000..236881f
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_REF.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_ROBOT_VC.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_ROBOT_VC.png
new file mode 100755
index 0000000..cd17475
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_ROBOT_VC.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_STB.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_STB.png
new file mode 100755
index 0000000..c3b8434
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_STB.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_TV.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_TV.png
new file mode 100755
index 0000000..8a5877a
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_TV.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Tablet.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Tablet.png
new file mode 100755
index 0000000..244b3b5
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_Tablet.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/120x120/U04_device_WM.png b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_WM.png
new file mode 100755
index 0000000..f5f9194
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/120x120/U04_device_WM.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_AC_Wall.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_AC_Wall.png
new file mode 100755
index 0000000..74690f5
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_AC_Wall.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_BD.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_BD.png
new file mode 100755
index 0000000..1b2989d
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_BD.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Camcorder.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Camcorder.png
new file mode 100755
index 0000000..43ee93b
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Camcorder.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Camera.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Camera.png
new file mode 100755
index 0000000..35cb8f8
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Camera.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Dongle.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Dongle.png
new file mode 100755
index 0000000..9255146
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Dongle.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_LFD.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_LFD.png
new file mode 100755
index 0000000..d910c09
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_LFD.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Mobile.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Mobile.png
new file mode 100755
index 0000000..36c0620
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Mobile.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_None_DNS.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_None_DNS.png
new file mode 100755
index 0000000..a468d9c
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_None_DNS.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_PC.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_PC.png
new file mode 100755
index 0000000..1df39f3
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_PC.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_REF.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_REF.png
new file mode 100755
index 0000000..c5ad8f5
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_REF.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_ROBOT_VC.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_ROBOT_VC.png
new file mode 100755
index 0000000..21fefb0
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_ROBOT_VC.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_STB.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_STB.png
new file mode 100755
index 0000000..24385f0
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_STB.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_TV.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_TV.png
new file mode 100755
index 0000000..faffe24
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_TV.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Tablet.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Tablet.png
new file mode 100755
index 0000000..0cd0b7b
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_Tablet.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/device/81x81/U04_device_WM.png b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_WM.png
new file mode 100755
index 0000000..fe23494
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/device/81x81/U04_device_WM.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_bg.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_bg.png
new file mode 100755
index 0000000..7d553c8
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus.png
new file mode 100644
index 0000000..98bb3c0
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_dim.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_dim.png
new file mode 100644
index 0000000..93de255
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_press.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_press.png
new file mode 100644
index 0000000..507476d
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_minus_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute.png
new file mode 100644
index 0000000..428d10a
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_dim.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_dim.png
new file mode 100644
index 0000000..97e0fc1
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_press.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_press.png
new file mode 100644
index 0000000..dcf2447
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_mute_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus.png
new file mode 100644
index 0000000..6632065
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_dim.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_dim.png
new file mode 100644
index 0000000..906d101
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_press.png b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_press.png
new file mode 100644
index 0000000..0293b1e
--- /dev/null
+++ b/playview/res/edc/playview/images/allshare/voice/T01-2_icon_volume_control_plus_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/bookmark/T01_2_button_remove.png b/playview/res/edc/playview/images/bookmark/T01_2_button_remove.png
new file mode 100755
index 0000000..b60da84
--- /dev/null
+++ b/playview/res/edc/playview/images/bookmark/T01_2_button_remove.png
Binary files differ
diff --git a/playview/res/edc/playview/images/bookmark/T01_2_button_remove_press.png b/playview/res/edc/playview/images/bookmark/T01_2_button_remove_press.png
new file mode 100644
index 0000000..b39e22e
--- /dev/null
+++ b/playview/res/edc/playview/images/bookmark/T01_2_button_remove_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add.png b/playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add.png
new file mode 100644
index 0000000..4102187
--- /dev/null
+++ b/playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add.png
Binary files differ
diff --git a/playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add_press.png b/playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add_press.png
new file mode 100644
index 0000000..42c0938
--- /dev/null
+++ b/playview/res/edc/playview/images/bookmark/T01_2_icon_bookmark_add_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_00.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_00.png
new file mode 100755
index 0000000..b6bf84a
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_00.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_01.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_01.png
new file mode 100755
index 0000000..f7e8e94
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_02.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_02.png
new file mode 100755
index 0000000..b3c8df5
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_03.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_03.png
new file mode 100755
index 0000000..eb3347c
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_04.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_04.png
new file mode 100755
index 0000000..870f98b
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_04.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_05.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_05.png
new file mode 100755
index 0000000..20988bc
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_05.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_06.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_06.png
new file mode 100755
index 0000000..808ffb8
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_06.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_07.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_07.png
new file mode 100755
index 0000000..db4d391
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_07.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_08.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_08.png
new file mode 100755
index 0000000..592476e
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_08.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_09.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_09.png
new file mode 100755
index 0000000..7846ed2
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_09.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_10.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_10.png
new file mode 100755
index 0000000..b5f828b
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_10.png
Binary files differ
diff --git a/playview/res/edc/playview/images/brightness/quick_icon_brightness_11.png b/playview/res/edc/playview/images/brightness/quick_icon_brightness_11.png
new file mode 100755
index 0000000..e14d945
--- /dev/null
+++ b/playview/res/edc/playview/images/brightness/quick_icon_brightness_11.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_01.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_01.png
new file mode 100755
index 0000000..6db9120
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_01_focus.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_01_focus.png
new file mode 100644
index 0000000..6ef09c6
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_01_focus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_01_press.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_01_press.png
new file mode 100755
index 0000000..91666cb
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_01_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_02.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_02.png
new file mode 100755
index 0000000..52c1349
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_02_focus.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_02_focus.png
new file mode 100644
index 0000000..89c4db3
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_02_focus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_02_press.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_02_press.png
new file mode 100755
index 0000000..098299d
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_02_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_03.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_03.png
new file mode 100644
index 0000000..a0c4105
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_03_focus.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_03_focus.png
new file mode 100644
index 0000000..e131fce
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_03_focus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_control_circle_button_03_press.png b/playview/res/edc/playview/images/button/T01-2_control_circle_button_03_press.png
new file mode 100644
index 0000000..5ad0e86
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_control_circle_button_03_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus.png b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus.png
new file mode 100644
index 0000000..eb7f6c2
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus_press.png b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus_press.png
new file mode 100644
index 0000000..099735a
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_minus_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus.png b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus.png
new file mode 100644
index 0000000..342d9eb
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus_press.png b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus_press.png
new file mode 100644
index 0000000..db4ca27
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01-2_play_popup_icon_plus_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device.png b/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device.png
new file mode 100644
index 0000000..6610276
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_dim.png b/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_dim.png
new file mode 100644
index 0000000..88f7ba4
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_press.png b/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_press.png
new file mode 100644
index 0000000..12e1ede
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_Near_by_device_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_back.png b/playview/res/edc/playview/images/button/T01_2_icon_back.png
new file mode 100644
index 0000000..ba8ad4d
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_back.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset.png b/playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset.png
new file mode 100644
index 0000000..df28789
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset_press.png b/playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset_press.png
new file mode 100644
index 0000000..fb92314
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_bluetooth_headset_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_check.png b/playview/res/edc/playview/images/button/T01_2_icon_check.png
new file mode 100644
index 0000000..7fde44c
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_check.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_check_dim.png b/playview/res/edc/playview/images/button/T01_2_icon_check_dim.png
new file mode 100755
index 0000000..56cd9d1
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_check_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_check_press.png b/playview/res/edc/playview/images/button/T01_2_icon_check_press.png
new file mode 100755
index 0000000..9125e88
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_check_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_close.png b/playview/res/edc/playview/images/button/T01_2_icon_close.png
new file mode 100644
index 0000000..6309ae0
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_close.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_close_dim.png b/playview/res/edc/playview/images/button/T01_2_icon_close_dim.png
new file mode 100644
index 0000000..c78ced9
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_close_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_close_press.png b/playview/res/edc/playview/images/button/T01_2_icon_close_press.png
new file mode 100644
index 0000000..5408b0c
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_close_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_lock.png b/playview/res/edc/playview/images/button/T01_2_icon_lock.png
new file mode 100644
index 0000000..ca2ae28
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_lock.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_lock_dim.png b/playview/res/edc/playview/images/button/T01_2_icon_lock_dim.png
new file mode 100755
index 0000000..0eb519f
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_lock_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_lock_press.png b/playview/res/edc/playview/images/button/T01_2_icon_lock_press.png
new file mode 100644
index 0000000..ca2ae28
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_lock_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_more.png b/playview/res/edc/playview/images/button/T01_2_icon_more.png
new file mode 100755
index 0000000..1f58790
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_more.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_more_dim_web.png b/playview/res/edc/playview/images/button/T01_2_icon_more_dim_web.png
new file mode 100755
index 0000000..8aa7a9d
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_more_dim_web.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_more_press_web.png b/playview/res/edc/playview/images/button/T01_2_icon_more_press_web.png
new file mode 100644
index 0000000..275ec6e
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_more_press_web.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_more_web.png b/playview/res/edc/playview/images/button/T01_2_icon_more_web.png
new file mode 100644
index 0000000..ebff3db
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_more_web.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_rotate.png b/playview/res/edc/playview/images/button/T01_2_icon_rotate.png
new file mode 100644
index 0000000..a9e0cdb
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_rotate.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_rotate_dim.png b/playview/res/edc/playview/images/button/T01_2_icon_rotate_dim.png
new file mode 100755
index 0000000..c676948
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_rotate_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T01_2_icon_rotate_press.png b/playview/res/edc/playview/images/button/T01_2_icon_rotate_press.png
new file mode 100644
index 0000000..bd613a7
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T01_2_icon_rotate_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T02_icon_soundPath.png b/playview/res/edc/playview/images/button/T02_icon_soundPath.png
new file mode 100644
index 0000000..a9b7d26
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T02_icon_soundPath.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T02_icon_speaker.png b/playview/res/edc/playview/images/button/T02_icon_speaker.png
new file mode 100755
index 0000000..f56f688
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T02_icon_speaker.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T02_icon_speaker_dim.png b/playview/res/edc/playview/images/button/T02_icon_speaker_dim.png
new file mode 100755
index 0000000..39990bd
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T02_icon_speaker_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/T02_icon_speaker_press.png b/playview/res/edc/playview/images/button/T02_icon_speaker_press.png
new file mode 100755
index 0000000..5d391af
--- /dev/null
+++ b/playview/res/edc/playview/images/button/T02_icon_speaker_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/button/core_icon_back.png b/playview/res/edc/playview/images/button/core_icon_back.png
new file mode 100644
index 0000000..baf1df0
--- /dev/null
+++ b/playview/res/edc/playview/images/button/core_icon_back.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01-2_icon_left.png b/playview/res/edc/playview/images/capture/T01-2_icon_left.png
new file mode 100755
index 0000000..6b3138f
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01-2_icon_left.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01-2_icon_left_dim.png b/playview/res/edc/playview/images/capture/T01-2_icon_left_dim.png
new file mode 100644
index 0000000..8cce261
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01-2_icon_left_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01-2_icon_left_press.png b/playview/res/edc/playview/images/capture/T01-2_icon_left_press.png
new file mode 100644
index 0000000..2715a3d
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01-2_icon_left_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01-2_icon_right.png b/playview/res/edc/playview/images/capture/T01-2_icon_right.png
new file mode 100755
index 0000000..d0af401
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01-2_icon_right.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01-2_icon_right_dim.png b/playview/res/edc/playview/images/capture/T01-2_icon_right_dim.png
new file mode 100644
index 0000000..43acd99
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01-2_icon_right_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01-2_icon_right_press.png b/playview/res/edc/playview/images/capture/T01-2_icon_right_press.png
new file mode 100644
index 0000000..b5c566f
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01-2_icon_right_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01_2_icon_capture.png b/playview/res/edc/playview/images/capture/T01_2_icon_capture.png
new file mode 100644
index 0000000..f54451f
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01_2_icon_capture.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01_2_icon_capture_dim.png b/playview/res/edc/playview/images/capture/T01_2_icon_capture_dim.png
new file mode 100644
index 0000000..c8d2b4f
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01_2_icon_capture_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/capture/T01_2_icon_capture_press.png b/playview/res/edc/playview/images/capture/T01_2_icon_capture_press.png
new file mode 100644
index 0000000..b162bd6
--- /dev/null
+++ b/playview/res/edc/playview/images/capture/T01_2_icon_capture_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow.png b/playview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow.png
new file mode 100755
index 0000000..90d5ede
--- /dev/null
+++ b/playview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow.png
Binary files differ
diff --git a/playview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow_h.png b/playview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow_h.png
new file mode 100755
index 0000000..5cbcd11
--- /dev/null
+++ b/playview/res/edc/playview/images/chapter/T01_2_thumbnail_shadow_h.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_bg.png b/playview/res/edc/playview/images/control/T01-2_control_bg.png
new file mode 100755
index 0000000..4c7a0cf
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_bg_h.png b/playview/res/edc/playview/images/control/T01-2_control_bg_h.png
new file mode 100755
index 0000000..6042922
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_bg_h.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_circle_icon_next.png b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_next.png
new file mode 100755
index 0000000..49d0ff8
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_next.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_circle_icon_pause.png b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_pause.png
new file mode 100755
index 0000000..6806d10
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_pause.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_circle_icon_play.png b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_play.png
new file mode 100755
index 0000000..68570ac
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_play.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_circle_icon_reverse.png b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_reverse.png
new file mode 100644
index 0000000..97681f1
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_reverse.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01-2_control_circle_icon_rewind.png b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_rewind.png
new file mode 100755
index 0000000..c824398
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01-2_control_circle_icon_rewind.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01_2_control_circle_icon_forward.png b/playview/res/edc/playview/images/control/T01_2_control_circle_icon_forward.png
new file mode 100755
index 0000000..55de668
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01_2_control_circle_icon_forward.png
Binary files differ
diff --git a/playview/res/edc/playview/images/control/T01_2_control_circle_icon_reverse.png b/playview/res/edc/playview/images/control/T01_2_control_circle_icon_reverse.png
new file mode 100755
index 0000000..e01e0a9
--- /dev/null
+++ b/playview/res/edc/playview/images/control/T01_2_control_circle_icon_reverse.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_01.png b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_01.png
new file mode 100644
index 0000000..7441c0a
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_02.png b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_02.png
new file mode 100644
index 0000000..c211a0c
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_03.png b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_03.png
new file mode 100644
index 0000000..70c8356
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_04.png b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_04.png
new file mode 100644
index 0000000..da069dc
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T01_2_device_connect_arrow_04.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T01_2_image_mydevice.png b/playview/res/edc/playview/images/dmc/T01_2_image_mydevice.png
new file mode 100644
index 0000000..56c90fc
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T01_2_image_mydevice.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T01_2_image_tv.png b/playview/res/edc/playview/images/dmc/T01_2_image_tv.png
new file mode 100644
index 0000000..e0fbe2b
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T01_2_image_tv.png
Binary files differ
diff --git a/playview/res/edc/playview/images/dmc/T02_player_all_share.png b/playview/res/edc/playview/images/dmc/T02_player_all_share.png
new file mode 100644
index 0000000..71c89c2
--- /dev/null
+++ b/playview/res/edc/playview/images/dmc/T02_player_all_share.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01-2_control_icon_mute.png b/playview/res/edc/playview/images/function/T01-2_control_icon_mute.png
new file mode 100755
index 0000000..63533f4
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01-2_control_icon_mute.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01-2_control_icon_mute_dim.png b/playview/res/edc/playview/images/function/T01-2_control_icon_mute_dim.png
new file mode 100755
index 0000000..da5474c
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01-2_control_icon_mute_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01-2_control_icon_mute_press.png b/playview/res/edc/playview/images/function/T01-2_control_icon_mute_press.png
new file mode 100755
index 0000000..95e82ee
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01-2_control_icon_mute_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark.png b/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark.png
new file mode 100755
index 0000000..c1a65f9
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark_dim.png
new file mode 100755
index 0000000..98167f9
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark_press.png
new file mode 100755
index 0000000..7a99b31
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_bookmark_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_detail.png b/playview/res/edc/playview/images/function/T01_2_control_icon_detail.png
new file mode 100755
index 0000000..5122ecf
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_detail.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_detail_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_detail_dim.png
new file mode 100755
index 0000000..8a61671
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_detail_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_detail_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_detail_press.png
new file mode 100644
index 0000000..095439a
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_detail_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window.png b/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window.png
new file mode 100755
index 0000000..df95e5b
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window_dim.png
new file mode 100755
index 0000000..488d04d
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window_press.png
new file mode 100755
index 0000000..69d520e
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_multi_window_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all.png
new file mode 100644
index 0000000..8c99880
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_dim.png
new file mode 100755
index 0000000..5ba6557
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_press.png
new file mode 100644
index 0000000..0545637
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_all_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode.png
new file mode 100755
index 0000000..05b608a
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_dim.png
new file mode 100755
index 0000000..6bfe188
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_press.png
new file mode 100755
index 0000000..a4057f2
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_mode_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once.png
new file mode 100755
index 0000000..1fe6626
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_dim.png
new file mode 100644
index 0000000..d77a34c
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_press.png
new file mode 100755
index 0000000..e199523
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_repeat_once_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode.png
new file mode 100755
index 0000000..5f0d011
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02.png
new file mode 100755
index 0000000..d56760c
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_dim.png
new file mode 100755
index 0000000..d98a961
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_press.png
new file mode 100755
index 0000000..fee5177
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode02_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03.png
new file mode 100755
index 0000000..fc8aade
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_dim.png
new file mode 100755
index 0000000..f4e213d
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_press.png
new file mode 100755
index 0000000..38a9e0d
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode03_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04.png
new file mode 100755
index 0000000..a2e5c80
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_dim.png
new file mode 100755
index 0000000..7915c17
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_press.png
new file mode 100755
index 0000000..e953141
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode04_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode_dim.png
new file mode 100755
index 0000000..0e5f397
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode_press.png
new file mode 100755
index 0000000..b870966
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_screenmode_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_share.png b/playview/res/edc/playview/images/function/T01_2_control_icon_share.png
new file mode 100644
index 0000000..4fa103b
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_share.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_share_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_share_dim.png
new file mode 100644
index 0000000..dca23cc
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_share_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_share_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_share_press.png
new file mode 100644
index 0000000..32697eb
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_share_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive.png b/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive.png
new file mode 100644
index 0000000..25f976e
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_dim.png
new file mode 100644
index 0000000..bfda60f
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_press.png
new file mode 100644
index 0000000..59a27ee
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_soundalive_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_trim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_trim.png
new file mode 100644
index 0000000..98cf3e8
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_trim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_trim_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_trim_dim.png
new file mode 100644
index 0000000..1ddf444
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_trim_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_trim_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_trim_press.png
new file mode 100644
index 0000000..7fd0240
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_trim_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_volume.png b/playview/res/edc/playview/images/function/T01_2_control_icon_volume.png
new file mode 100755
index 0000000..e4424a2
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_volume.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_volume_dim.png b/playview/res/edc/playview/images/function/T01_2_control_icon_volume_dim.png
new file mode 100755
index 0000000..8d525b8
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_volume_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/T01_2_control_icon_volume_press.png b/playview/res/edc/playview/images/function/T01_2_control_icon_volume_press.png
new file mode 100755
index 0000000..26ffc61
--- /dev/null
+++ b/playview/res/edc/playview/images/function/T01_2_control_icon_volume_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/function/player_popup_view_icon_nomal.png b/playview/res/edc/playview/images/function/player_popup_view_icon_nomal.png
new file mode 100644
index 0000000..9f9b633
--- /dev/null
+++ b/playview/res/edc/playview/images/function/player_popup_view_icon_nomal.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_focus.png b/playview/res/edc/playview/images/genlist/00_focus.png
new file mode 100755
index 0000000..4f46811
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_focus.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_focus_dark.png b/playview/res/edc/playview/images/genlist/00_focus_dark.png
new file mode 100755
index 0000000..fed29db
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_focus_dark.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_list_group_bg.png b/playview/res/edc/playview/images/genlist/00_list_group_bg.png
new file mode 100755
index 0000000..612fbc5
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_list_group_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_list_group_bg_dark.png b/playview/res/edc/playview/images/genlist/00_list_group_bg_dark.png
new file mode 100755
index 0000000..31f109b
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_list_group_bg_dark.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_list_group_bg_press.png b/playview/res/edc/playview/images/genlist/00_list_group_bg_press.png
new file mode 100755
index 0000000..01edbc1
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_list_group_bg_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_list_group_bg_press_dark.png b/playview/res/edc/playview/images/genlist/00_list_group_bg_press_dark.png
new file mode 100755
index 0000000..e0c84fa
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_list_group_bg_press_dark.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_popup_list_press.png b/playview/res/edc/playview/images/genlist/00_popup_list_press.png
new file mode 100755
index 0000000..a19964e
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_popup_list_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/00_popup_list_press_dark.png b/playview/res/edc/playview/images/genlist/00_popup_list_press_dark.png
new file mode 100755
index 0000000..a1ce14f
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/00_popup_list_press_dark.png
Binary files differ
diff --git a/playview/res/edc/playview/images/genlist/preview_settings_bg.png b/playview/res/edc/playview/images/genlist/preview_settings_bg.png
new file mode 100644
index 0000000..333f1e0
--- /dev/null
+++ b/playview/res/edc/playview/images/genlist/preview_settings_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/jump/T01_2_jump_L_01.png b/playview/res/edc/playview/images/jump/T01_2_jump_L_01.png
new file mode 100755
index 0000000..d41b576
--- /dev/null
+++ b/playview/res/edc/playview/images/jump/T01_2_jump_L_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/jump/T01_2_jump_L_02.png b/playview/res/edc/playview/images/jump/T01_2_jump_L_02.png
new file mode 100755
index 0000000..52440f2
--- /dev/null
+++ b/playview/res/edc/playview/images/jump/T01_2_jump_L_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/jump/T01_2_jump_L_03.png b/playview/res/edc/playview/images/jump/T01_2_jump_L_03.png
new file mode 100755
index 0000000..16714b1
--- /dev/null
+++ b/playview/res/edc/playview/images/jump/T01_2_jump_L_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/jump/T01_2_jump_R_01.png b/playview/res/edc/playview/images/jump/T01_2_jump_R_01.png
new file mode 100755
index 0000000..ed79a92
--- /dev/null
+++ b/playview/res/edc/playview/images/jump/T01_2_jump_R_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/jump/T01_2_jump_R_02.png b/playview/res/edc/playview/images/jump/T01_2_jump_R_02.png
new file mode 100755
index 0000000..1cd5468
--- /dev/null
+++ b/playview/res/edc/playview/images/jump/T01_2_jump_R_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/jump/T01_2_jump_R_03.png b/playview/res/edc/playview/images/jump/T01_2_jump_R_03.png
new file mode 100755
index 0000000..5006e98
--- /dev/null
+++ b/playview/res/edc/playview/images/jump/T01_2_jump_R_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/micro_control/T01-2_Control_detail_text_bg.png b/playview/res/edc/playview/images/micro_control/T01-2_Control_detail_text_bg.png
new file mode 100755
index 0000000..b85e609
--- /dev/null
+++ b/playview/res/edc/playview/images/micro_control/T01-2_Control_detail_text_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_01.png b/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_01.png
new file mode 100755
index 0000000..66b6f5a
--- /dev/null
+++ b/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_02.png b/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_02.png
new file mode 100755
index 0000000..5b81ce3
--- /dev/null
+++ b/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_03.png b/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_03.png
new file mode 100755
index 0000000..c0faa11
--- /dev/null
+++ b/playview/res/edc/playview/images/micro_control/T01_2_micro_control_up_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/A01_15_popup_No_device.png b/playview/res/edc/playview/images/mini_controller/A01_15_popup_No_device.png
new file mode 100644
index 0000000..930d2a9
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/A01_15_popup_No_device.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_close_dim.png b/playview/res/edc/playview/images/mini_controller/btn_close_dim.png
new file mode 100755
index 0000000..9d815ce
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_close_dim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_close_nor.png b/playview/res/edc/playview/images/mini_controller/btn_close_nor.png
new file mode 100755
index 0000000..afb665a
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_close_nor.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_close_press.png b/playview/res/edc/playview/images/mini_controller/btn_close_press.png
new file mode 100755
index 0000000..9282d96
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_close_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_close_nor.png b/playview/res/edc/playview/images/mini_controller/btn_video_close_nor.png
new file mode 100644
index 0000000..2cced24
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_close_nor.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_close_press.png b/playview/res/edc/playview/images/mini_controller/btn_video_close_press.png
new file mode 100644
index 0000000..557cd76
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_close_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_next_nor.png b/playview/res/edc/playview/images/mini_controller/btn_video_next_nor.png
new file mode 100644
index 0000000..eff2815
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_next_nor.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_next_press.png b/playview/res/edc/playview/images/mini_controller/btn_video_next_press.png
new file mode 100644
index 0000000..c626d0b
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_next_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_pause_nor.png b/playview/res/edc/playview/images/mini_controller/btn_video_pause_nor.png
new file mode 100644
index 0000000..5c1b020
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_pause_nor.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_pause_press.png b/playview/res/edc/playview/images/mini_controller/btn_video_pause_press.png
new file mode 100644
index 0000000..7e4b313
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_pause_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_play_nor.png b/playview/res/edc/playview/images/mini_controller/btn_video_play_nor.png
new file mode 100644
index 0000000..7bff225
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_play_nor.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_play_press.png b/playview/res/edc/playview/images/mini_controller/btn_video_play_press.png
new file mode 100644
index 0000000..f58c2ff
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_play_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_prev_nor.png b/playview/res/edc/playview/images/mini_controller/btn_video_prev_nor.png
new file mode 100644
index 0000000..8da4589
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_prev_nor.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/btn_video_prev_press.png b/playview/res/edc/playview/images/mini_controller/btn_video_prev_press.png
new file mode 100644
index 0000000..faab5f0
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/btn_video_prev_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/video_progress.png b/playview/res/edc/playview/images/mini_controller/video_progress.png
new file mode 100755
index 0000000..f3386d9
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/video_progress.png
Binary files differ
diff --git a/playview/res/edc/playview/images/mini_controller/video_progress_bg.png b/playview/res/edc/playview/images/mini_controller/video_progress_bg.png
new file mode 100644
index 0000000..b54c7db
--- /dev/null
+++ b/playview/res/edc/playview/images/mini_controller/video_progress_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_add_to_home.png b/playview/res/edc/playview/images/more/icon_add_to_home.png
new file mode 100755
index 0000000..0367025
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_add_to_home.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_chapter_preview.png b/playview/res/edc/playview/images/more/icon_chapter_preview.png
new file mode 100755
index 0000000..3d18d77
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_chapter_preview.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_detail.png b/playview/res/edc/playview/images/more/icon_detail.png
new file mode 100755
index 0000000..2bbd312
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_detail.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_download.png b/playview/res/edc/playview/images/more/icon_download.png
new file mode 100755
index 0000000..ceb91db
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_download.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_nearbydevices.png b/playview/res/edc/playview/images/more/icon_nearbydevices.png
new file mode 100755
index 0000000..1611c96
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_nearbydevices.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_setting.png b/playview/res/edc/playview/images/more/icon_setting.png
new file mode 100755
index 0000000..992a1aa
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_setting.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_share_via.png b/playview/res/edc/playview/images/more/icon_share_via.png
new file mode 100755
index 0000000..eb9bc07
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_share_via.png
Binary files differ
diff --git a/playview/res/edc/playview/images/more/icon_trim.png b/playview/res/edc/playview/images/more/icon_trim.png
new file mode 100755
index 0000000..ffb8ae2
--- /dev/null
+++ b/playview/res/edc/playview/images/more/icon_trim.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/Mw_title_icon_press_bg.png b/playview/res/edc/playview/images/multi/Mw_title_icon_press_bg.png
new file mode 100755
index 0000000..77c12d9
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/Mw_title_icon_press_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01-2_multiscreen_player_bg.png b/playview/res/edc/playview/images/multi/T01-2_multiscreen_player_bg.png
new file mode 100644
index 0000000..3ff5c9f
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01-2_multiscreen_player_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_center.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_center.png
new file mode 100755
index 0000000..94a06e1
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_center.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_center_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_center_press.png
new file mode 100755
index 0000000..a93b093
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_center_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_left.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_left.png
new file mode 100755
index 0000000..cf134e4
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_left.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_left_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_left_press.png
new file mode 100755
index 0000000..9ca72a7
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_left_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_right.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_right.png
new file mode 100755
index 0000000..5ade040
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_right.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_right_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_right_press.png
new file mode 100755
index 0000000..baa989b
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_bg_right_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff.png
new file mode 100755
index 0000000..74d5486
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff_press.png
new file mode 100755
index 0000000..91c7cb7
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_ff_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause.png
new file mode 100755
index 0000000..927b17a
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause_press.png
new file mode 100755
index 0000000..065d1d7
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_pause_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_play.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_play.png
new file mode 100755
index 0000000..40dfd5a
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_play.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_play_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_play_press.png
new file mode 100755
index 0000000..cf27bf7
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_play_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew.png
new file mode 100755
index 0000000..ac94645
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew_press.png b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew_press.png
new file mode 100755
index 0000000..f4b087f
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/T01_2_mw_control_icon_rew_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_frame.png b/playview/res/edc/playview/images/multi/mw_frame.png
new file mode 100755
index 0000000..5c644c6
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_frame.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_frame_handler.png b/playview/res/edc/playview/images/multi/mw_frame_handler.png
new file mode 100755
index 0000000..f2eff75
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_frame_handler.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_frame_handler_press.png b/playview/res/edc/playview/images/multi/mw_frame_handler_press.png
new file mode 100755
index 0000000..415aad8
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_frame_handler_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_bg.#.png b/playview/res/edc/playview/images/multi/mw_title_bg.#.png
new file mode 100755
index 0000000..e8ce44b
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_bg.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_bg_ef.#.png b/playview/res/edc/playview/images/multi/mw_title_bg_ef.#.png
new file mode 100755
index 0000000..07f8f89
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_bg_ef.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_bg_focus.#.png b/playview/res/edc/playview/images/multi/mw_title_bg_focus.#.png
new file mode 100755
index 0000000..e8ce44b
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_bg_focus.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_bg_focus_ef.#.png b/playview/res/edc/playview/images/multi/mw_title_bg_focus_ef.#.png
new file mode 100755
index 0000000..9b7678e
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_bg_focus_ef.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_bg_press.png b/playview/res/edc/playview/images/multi/mw_title_bg_press.png
new file mode 100755
index 0000000..d7e7a1c
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_bg_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_divider.png b/playview/res/edc/playview/images/multi/mw_title_divider.png
new file mode 100755
index 0000000..491aeda
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_divider.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_focus.#.png b/playview/res/edc/playview/images/multi/mw_title_focus.#.png
new file mode 100755
index 0000000..a04f8e0
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_focus.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/mw_title_focus_bg_press.#.png b/playview/res/edc/playview/images/multi/mw_title_focus_bg_press.#.png
new file mode 100755
index 0000000..53a6fb5
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/mw_title_focus_bg_press.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_delete.png b/playview/res/edc/playview/images/multi/my_title_icon_delete.png
new file mode 100755
index 0000000..93eefd2
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_delete.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_delete_ef_press.png b/playview/res/edc/playview/images/multi/my_title_icon_delete_ef_press.png
new file mode 100755
index 0000000..06278ed
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_delete_ef_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_delete_press.png b/playview/res/edc/playview/images/multi/my_title_icon_delete_press.png
new file mode 100755
index 0000000..759f493
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_delete_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_maximize.png b/playview/res/edc/playview/images/multi/my_title_icon_maximize.png
new file mode 100755
index 0000000..7fce9c6
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_maximize.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_maximize_ef_press.png b/playview/res/edc/playview/images/multi/my_title_icon_maximize_ef_press.png
new file mode 100755
index 0000000..af41bea
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_maximize_ef_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_maximize_press.png b/playview/res/edc/playview/images/multi/my_title_icon_maximize_press.png
new file mode 100755
index 0000000..5cac9d9
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_maximize_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_mimimize.png b/playview/res/edc/playview/images/multi/my_title_icon_mimimize.png
new file mode 100755
index 0000000..c980242
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_mimimize.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_mimimize_ef_press.png b/playview/res/edc/playview/images/multi/my_title_icon_mimimize_ef_press.png
new file mode 100755
index 0000000..5a35ba1
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_mimimize_ef_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/multi/my_title_icon_mimimize_press.png b/playview/res/edc/playview/images/multi/my_title_icon_mimimize_press.png
new file mode 100755
index 0000000..2b98639
--- /dev/null
+++ b/playview/res/edc/playview/images/multi/my_title_icon_mimimize_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_01.png b/playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_01.png
new file mode 100644
index 0000000..96e22b0
--- /dev/null
+++ b/playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_02.png b/playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_02.png
new file mode 100644
index 0000000..d8828b6
--- /dev/null
+++ b/playview/res/edc/playview/images/nearby_device/T02_Player_Nearby_device_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_01.png b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_01.png
new file mode 100644
index 0000000..17b5dcd
--- /dev/null
+++ b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_02.png b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_02.png
new file mode 100644
index 0000000..23e086a
--- /dev/null
+++ b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_03.png b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_03.png
new file mode 100644
index 0000000..3c20025
--- /dev/null
+++ b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_04.png b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_04.png
new file mode 100644
index 0000000..2d9e9b1
--- /dev/null
+++ b/playview/res/edc/playview/images/nearby_device/U04_connecting_ani_04.png
Binary files differ
diff --git a/playview/res/edc/playview/images/player_error_screen.png b/playview/res/edc/playview/images/player_error_screen.png
new file mode 100755
index 0000000..f11bc29
--- /dev/null
+++ b/playview/res/edc/playview/images/player_error_screen.png
Binary files differ
diff --git a/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_brightness.png b/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_brightness.png
new file mode 100755
index 0000000..228e3a4
--- /dev/null
+++ b/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_brightness.png
Binary files differ
diff --git a/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume01.png b/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume01.png
new file mode 100755
index 0000000..fd96325
--- /dev/null
+++ b/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume02.png b/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume02.png
new file mode 100755
index 0000000..ee5340f
--- /dev/null
+++ b/playview/res/edc/playview/images/popup/T01-2_volume_popup_icon_volume02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/popup/U05_help_popup_sbeam.png b/playview/res/edc/playview/images/popup/U05_help_popup_sbeam.png
new file mode 100755
index 0000000..aee263a
--- /dev/null
+++ b/playview/res/edc/playview/images/popup/U05_help_popup_sbeam.png
Binary files differ
diff --git a/playview/res/edc/playview/images/progressbar/T01_2_control_progress_handle.png b/playview/res/edc/playview/images/progressbar/T01_2_control_progress_handle.png
new file mode 100755
index 0000000..c4e7a4f
--- /dev/null
+++ b/playview/res/edc/playview/images/progressbar/T01_2_control_progress_handle.png
Binary files differ
diff --git a/playview/res/edc/playview/images/progressbar/T01_2_control_progress_handle_press.png b/playview/res/edc/playview/images/progressbar/T01_2_control_progress_handle_press.png
new file mode 100755
index 0000000..b1977db
--- /dev/null
+++ b/playview/res/edc/playview/images/progressbar/T01_2_control_progress_handle_press.png
Binary files differ
diff --git a/playview/res/edc/playview/images/progressbar/core_progress_bar.#.png b/playview/res/edc/playview/images/progressbar/core_progress_bar.#.png
new file mode 100755
index 0000000..ead779c
--- /dev/null
+++ b/playview/res/edc/playview/images/progressbar/core_progress_bar.#.png
Binary files differ
diff --git a/playview/res/edc/playview/images/sensor/B15_turn_over_01.png b/playview/res/edc/playview/images/sensor/B15_turn_over_01.png
new file mode 100644
index 0000000..2bc3166
--- /dev/null
+++ b/playview/res/edc/playview/images/sensor/B15_turn_over_01.png
Binary files differ
diff --git a/playview/res/edc/playview/images/sensor/B15_turn_over_02.png b/playview/res/edc/playview/images/sensor/B15_turn_over_02.png
new file mode 100644
index 0000000..d8d7c84
--- /dev/null
+++ b/playview/res/edc/playview/images/sensor/B15_turn_over_02.png
Binary files differ
diff --git a/playview/res/edc/playview/images/sensor/B15_turn_over_03.png b/playview/res/edc/playview/images/sensor/B15_turn_over_03.png
new file mode 100644
index 0000000..81481d8
--- /dev/null
+++ b/playview/res/edc/playview/images/sensor/B15_turn_over_03.png
Binary files differ
diff --git a/playview/res/edc/playview/images/sound_only.png b/playview/res/edc/playview/images/sound_only.png
new file mode 100755
index 0000000..0849699
--- /dev/null
+++ b/playview/res/edc/playview/images/sound_only.png
Binary files differ
diff --git a/playview/res/edc/playview/images/tag/T01-1_Tag_buddy_settings_bg.png b/playview/res/edc/playview/images/tag/T01-1_Tag_buddy_settings_bg.png
new file mode 100644
index 0000000..b1d05eb
--- /dev/null
+++ b/playview/res/edc/playview/images/tag/T01-1_Tag_buddy_settings_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/tag/T01-1_logo_accuweather.png b/playview/res/edc/playview/images/tag/T01-1_logo_accuweather.png
new file mode 100644
index 0000000..4a5874c
--- /dev/null
+++ b/playview/res/edc/playview/images/tag/T01-1_logo_accuweather.png
Binary files differ
diff --git a/playview/res/edc/playview/images/tag/T01_2_icon_tag_buddy_cplogo.PNG b/playview/res/edc/playview/images/tag/T01_2_icon_tag_buddy_cplogo.PNG
new file mode 100755
index 0000000..d6905eb
--- /dev/null
+++ b/playview/res/edc/playview/images/tag/T01_2_icon_tag_buddy_cplogo.PNG
Binary files differ
diff --git a/playview/res/edc/playview/images/tag/U07_weather_logo.png b/playview/res/edc/playview/images/tag/U07_weather_logo.png
new file mode 100755
index 0000000..86ce5b5
--- /dev/null
+++ b/playview/res/edc/playview/images/tag/U07_weather_logo.png
Binary files differ
diff --git a/playview/res/edc/playview/images/trim/T01_2_trim_left.png b/playview/res/edc/playview/images/trim/T01_2_trim_left.png
new file mode 100755
index 0000000..f0d3e36
--- /dev/null
+++ b/playview/res/edc/playview/images/trim/T01_2_trim_left.png
Binary files differ
diff --git a/playview/res/edc/playview/images/trim/T01_2_trim_picker.png b/playview/res/edc/playview/images/trim/T01_2_trim_picker.png
new file mode 100755
index 0000000..153d9e2
--- /dev/null
+++ b/playview/res/edc/playview/images/trim/T01_2_trim_picker.png
Binary files differ
diff --git a/playview/res/edc/playview/images/trim/T01_2_trim_right.png b/playview/res/edc/playview/images/trim/T01_2_trim_right.png
new file mode 100755
index 0000000..a8b7935
--- /dev/null
+++ b/playview/res/edc/playview/images/trim/T01_2_trim_right.png
Binary files differ
diff --git a/playview/res/edc/playview/images/volume/T01_2_volume_popup_bg.png b/playview/res/edc/playview/images/volume/T01_2_volume_popup_bg.png
new file mode 100755
index 0000000..2069958
--- /dev/null
+++ b/playview/res/edc/playview/images/volume/T01_2_volume_popup_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bar.png b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bar.png
new file mode 100755
index 0000000..509ecbb
--- /dev/null
+++ b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bar.png
Binary files differ
diff --git a/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bg.png b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bg.png
new file mode 100755
index 0000000..f789938
--- /dev/null
+++ b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_bg.png
Binary files differ
diff --git a/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle.png b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle.png
new file mode 100755
index 0000000..68105d1
--- /dev/null
+++ b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle.png
Binary files differ
diff --git a/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle_press.png b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle_press.png
new file mode 100755
index 0000000..88eb56f
--- /dev/null
+++ b/playview/res/edc/playview/images/volume/T01_2_volume_popup_progress_handle_press.png
Binary files differ
diff --git a/playview/res/edc/playview/pv-bookmark-item.edc b/playview/res/edc/playview/pv-bookmark-item.edc
new file mode 100644
index 0000000..0eeffcd
--- /dev/null
+++ b/playview/res/edc/playview/pv-bookmark-item.edc
@@ -0,0 +1,277 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define VP_BOOKMARK_ITEM_RECT_MIN_MAX_INC 152 132
+#define VP_BOOKMARK_ITEM_ICON_MIN_MAX_INC 146 88
+
+#define BOOKMARK_ITEM_SELECT_VI_EFFECT \
+} \
+description { state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp1"; \
+ smooth: 0; \
+ } \
+} \
+description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp"; \
+ smooth: 1; \
+ }
+
+#define BOOKMARK_PROGRAM_ITEM_SELECT_VI_EFFECT( TARGET ) \
+ program { name: "vi_pressed"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ after: "vi_zoom_in"; \
+ } \
+ program { name: "vi_zoom_in"; \
+ action: STATE_SET "selected" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ } \
+ program { name: "vi_zoom_out"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ after: "vi_default"; \
+ } \
+ program { name: "vi_default"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ }
+
+
+collections {
+ group {
+ name: "pv.bookmark.item";
+ script {
+ public selected = 0;
+ }
+ parts {
+ part {
+ name: "pv.bookmark.item.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: VP_BOOKMARK_ITEM_RECT_MIN_MAX_INC;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ BOOKMARK_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "persp";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: -70;
+ focal: 1000;
+ }
+ }
+ }
+ part { name: "persp1";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: 0;
+ focal: 1000;
+ }
+ }
+ }
+ part {
+ name: "pv.bookmark.item.top.padding";
+ scale: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 6 ;
+ fixed: 0 1;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: pv.bookmark.item.rect; }
+ rel2 { relative: 0.0 0.0; to: pv.bookmark.item.rect; }
+ }
+ }
+ part {
+ name: "pv.bookmark.item.bottom.padding";
+ scale: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 18 ;
+ fixed: 0 1;
+ visible: 0;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: pv.bookmark.item.rect; }
+ rel2 { relative: 0.0 1.0; to: pv.bookmark.item.rect; }
+ }
+ }
+ part {
+ name: "pv.bookmark.item.icon";
+ scale: 1;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VP_BOOKMARK_ITEM_ICON_MIN_MAX_INC;
+ max: VP_BOOKMARK_ITEM_ICON_MIN_MAX_INC;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x: pv.bookmark.item.rect; to_y: pv.bookmark.item.top.padding;}
+ rel2 { relative: 0.0 1.0; to_x: pv.bookmark.item.rect; to_y: pv.bookmark.item.top.padding;}
+ color: 255 255 255 255;
+ BOOKMARK_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part {
+ name: "pv.bookmark.item.txt";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x: pv.bookmark.item.rect; to_y: pv.bookmark.item.icon;}
+ rel2 { relative: 1.0 0.0; to_x: pv.bookmark.item.rect; to_y: pv.bookmark.item.bottom.padding;}
+ color: 248 246 240 255;
+ text {
+ font: "Tizen:style=Regular";
+ size: 24;
+ align: 0.5 0.0;
+ }
+ }
+ }
+ part {
+ name: "pv.bookmark.item.event";
+ scale: 1;
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: pv.bookmark.item.icon;}
+ rel2 { relative: 1.0 1.0; to: pv.bookmark.item.icon;}
+ color: 255 255 255 0;
+ }
+ }
+ } /* parts */
+ programs {
+ BOOKMARK_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "pv.bookmark.item.rect";
+ target: "pv.bookmark.item.icon";
+ )
+ program {
+ name: "mouse_down";
+ signal: "mouse,down,1";
+ source: "pv.bookmark.item.event";
+ action: SIGNAL_EMIT "down" "*";
+ script {
+ if (!get_int(selected)) {
+ set_int(selected, 1);
+ run_program(PROGRAM:"vi_pressed");
+ }
+ }
+ }
+ program {
+ name: "mouse_up";
+ signal: "mouse,up,1";
+ source: "pv.bookmark.item.event";
+ action: SIGNAL_EMIT "up" "*";
+ script {
+ if (get_int(selected)) {
+ set_int(selected, 0);
+ run_program(PROGRAM:"vi_zoom_out");
+ }
+ }
+ }
+ }
+ } /* group */
+ group {
+ name: "pv.bookmark.item.end";
+ parts {
+ part {
+ name: "pv.bookmark.item.end.bg";
+ type: RECT;
+ mouse_events: 0;
+ repeat_events : 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: VP_BOOKMARK_ITEM_RECT_MIN_MAX_INC;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 255 128;
+ }
+ }
+ part {
+ name: "pv.bookmark.item.del.rect";
+ scale: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 48 48;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: pv.bookmark.item.end.bg;}
+ rel2 { relative: 1.0 0.0; to: pv.bookmark.item.end.bg;}
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "pv.bookmark.item.del";
+ scale: 1;
+ type: SWALLOW;
+ mouse_events: 1;
+ repeat_events : 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 48 48;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: pv.bookmark.item.del.rect;}
+ rel2 { relative: 1.0 1.0; to: pv.bookmark.item.del.rect;}
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-bookmark.edc b/playview/res/edc/playview/pv-bookmark.edc
new file mode 100644
index 0000000..11453cc
--- /dev/null
+++ b/playview/res/edc/playview/pv-bookmark.edc
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+collections {
+ group {
+ name: "pv.bookmark";
+ parts {
+ part {
+ name: "pv.bookmark.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events : 0;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ fixed: 0 1;
+ min: 0 150;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 0.0;}
+ color: 0 0 0 128;
+ }
+ }
+
+ part {
+ name: "pv.bookmark.top.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y : "pv.bookmark.rect"; }
+ rel2 { relative: 0.0 0.0; to_y : "pv.bookmark.rect"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.bookmark.bottom.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 0 1;
+ min: 0 2;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to_y : "pv.bookmark.rect"; }
+ rel2 { relative: 1.0 1.0; to_y : "pv.bookmark.rect"; }
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "pv.bookmark.left.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 1.0;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.bookmark.add.button";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 44 44;
+ max: 44 44;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to_x : "pv.bookmark.left.padding"; to_y: "pv.bookmark.rect"; }
+ rel2 { relative: 1.0 0.0; to_x : "pv.bookmark.left.padding"; to_y: "pv.bookmark.bottom.padding"; }
+ }
+ }
+
+ part {
+ name: "pv.bookmark.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 20 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x : "pv.bookmark.add.button"; }
+ rel2 { relative: 1.0 1.0; to_x : "pv.bookmark.add.button"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.bookmark.item.list";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x : "pv.bookmark.right.padding"; to_y: "pv.bookmark.top.padding"; }
+ rel2 { relative: 1.0 1.0; to_x : "pv.bookmark.rect"; to_y: "pv.bookmark.bottom.padding"; }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-brightness-popup.edc b/playview/res/edc/playview/pv-brightness-popup.edc
new file mode 100644
index 0000000..c4c11ee
--- /dev/null
+++ b/playview/res/edc/playview/pv-brightness-popup.edc
@@ -0,0 +1,338 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_BOLD_TYPE "Tizen:style=Bold"
+
+#define FONT_VOLUME_COLOR 255 255 255 255
+
+
+collections {
+ group {
+ name: "pv.brightness.popup";
+ parts {
+ part {
+ name: "pv.brightness.popup.rect";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 116 572;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 116 572;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ color: 255 255 255 255;
+ image { normal: "volume/T01_2_volume_popup_bg.png"; border: 0 0 29 29;}
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.icon.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 24;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.brightness.popup.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.brightness.popup.bg";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.icon";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 45 45;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 1.0; to_x: "pv.brightness.popup.bg"; to_y: "pv.brightness.popup.icon.padding";}
+ rel2 { relative: 0.5 1.0; to_x: "pv.brightness.popup.bg"; to_y: "pv.brightness.popup.icon.padding";}
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.top.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 8;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to: "pv.brightness.popup.icon";}
+ rel2 { relative: 1.0 1.0; to: "pv.brightness.popup.icon";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.bottom.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 32;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.brightness.popup.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.brightness.popup.bg";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ effect: FAR_SHADOW BOTTOM;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 0 46;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.brightness.popup.bottom.padding";}
+ rel2 { relative: 1.0 0.0; to: "pv.brightness.popup.bottom.padding";}
+ color: FONT_VOLUME_COLOR;
+ color3: 51 57 72 255;
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 42;
+ text: "3";
+ align: 0.5 0.5;
+ }
+
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.txt.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 0;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.brightness.popup.txt";}
+ rel2 { relative: 1.0 0.0; to: "pv.brightness.popup.txt";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.bar.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 19 0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 1.0; to_x : "pv.brightness.popup.bg"; to_y : "pv.brightness.popup.top.padding";}
+ rel2 { relative: 0.5 0.0; to_x : "pv.brightness.popup.bg"; to_y : "pv.brightness.popup.txt.padding";}
+ image { normal: "volume/T01_2_volume_popup_progress_bg.png"; border: 0 0 19 19;}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.bar.bg.top.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 22;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; to : "pv.brightness.popup.bar.bg"; }
+ rel2 { relative: 1.0 0.0; to : "pv.brightness.popup.bar.bg"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.bar.bg.bottom.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 22;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; to : "pv.brightness.popup.bar.bg"; }
+ rel2 { relative: 1.0 1.0; to : "pv.brightness.popup.bar.bg"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.bar.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 13;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; to_x : "pv.brightness.popup.bar.bg"; to_y : "pv.brightness.popup.bar.bg.top.padding";}
+ rel2 { relative: 1.0 0.0; to_x : "pv.brightness.popup.bar.bg"; to_y : "pv.brightness.popup.bar.bg.bottom.padding";}
+ color: 255 255 255 255;
+ }
+ }
+
+
+ part {
+ name: "pv.brightness.popup.step";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 19 0;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.0; to_x : "pv.brightness.popup.bar.rect"; to_y: "pv.brightness.popup.circle";}
+ rel2 { relative: 0.5 1.0; to_x : "pv.brightness.popup.bar.rect"; to_y: "pv.brightness.popup.bar.bg"; }
+ color: 255 255 255 255;
+ image { normal: "volume/T01_2_volume_popup_progress_bar.png"; border: 0 0 19 19;}
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "pv.brightness.popup.confine.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "pv.brightness.popup.bar.rect"; }
+ rel2 { relative: 1.0 1.0; to: "pv.brightness.popup.bar.rect"; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "pv.brightness.popup.circle";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 49 49;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: "pv.brightness.popup.bar.rect"; to_y: "pv.brightness.popup.playing"; }
+ rel2 { relative: 0.5 0.5; to_x: "pv.brightness.popup.bar.rect"; to_y: "pv.brightness.popup.playing"; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "pv.brightness.popup.playing";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 49 0;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.0; to: "pv.brightness.popup.bar.rect"; }
+ rel2 { relative: 0.5 0.0; to: "pv.brightness.popup.bar.rect"; }
+ }
+ dragable {
+ confine: "pv.brightness.popup.confine.rect";
+ x: 0 0 0;
+ y: -1 1 0;
+ }
+ }
+
+
+ part {
+ name: "pv.brightness.popup.point";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 49 49;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: "pv.brightness.popup.bar.rect"; to_y: "pv.brightness.popup.circle"; }
+ rel2 { relative: 0.5 0.5; to_x: "pv.brightness.popup.bar.rect"; to_y: "pv.brightness.popup.circle"; }
+ image { normal: "volume/T01_2_volume_popup_progress_handle.png";}
+ color: 255 255 255 255;
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-chapter-main-new.edc b/playview/res/edc/playview/pv-chapter-main-new.edc
new file mode 100644
index 0000000..138fbde
--- /dev/null
+++ b/playview/res/edc/playview/pv-chapter-main-new.edc
@@ -0,0 +1,1922 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define ITEM_LINE_WIDTH 1
+#define ITEM_TEXT_BG_COLOR 8 8 8 255
+#define ITEM_LINE_COLOR 109 109 109 255
+#define ITEM_TEXT_COLOR 212 212 212 255
+
+
+#define CHAPTER_ITEM_SELECT_VI_EFFECT \
+} \
+description { state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp1"; \
+ smooth: 0; \
+ } \
+} \
+description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp"; \
+ smooth: 1; \
+ }
+
+#define CHAPTER_PROGRAM_ITEM_SELECT_VI_EFFECT( TARGET ) \
+ program { name: "vi_pressed"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ after: "vi_zoom_in"; \
+ } \
+ program { name: "vi_zoom_in"; \
+ action: STATE_SET "selected" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ } \
+ program { name: "vi_zoom_out"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ after: "vi_default"; \
+ } \
+ program { name: "vi_default"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ }
+
+
+collections {
+ group {
+ name: "pv.chapter.main";
+ parts {
+ part {
+ name: "pv.chapter.main.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: 8 8 8 255;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.016 0.01;}
+ rel2 { relative: 0.246 0.33;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.01 0.016 ;}
+ rel2 { relative: 0.33 0.246;}
+ }
+
+ }
+ part {
+ name: "pv.chapter.main.item.02.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.262 0.01;}
+ rel2 { relative: 0.492 0.33;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.34 0.016;}
+ rel2 { relative: 0.66 0.246;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.508 0.01;}
+ rel2 { relative: 0.738 0.33;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.67 0.016;}
+ rel2 { relative: 0.99 0.246;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.754 0.01;}
+ rel2 { relative: 0.984 0.33;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.01 0.262;}
+ rel2 { relative: 0.33 0.492;}
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.05.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.016 0.34;}
+ rel2 { relative: 0.246 0.66;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.34 0.262;}
+ rel2 { relative: 0.66 0.492;}
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.06.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.262 0.34;}
+ rel2 { relative: 0.492 0.66;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.67 0.262;}
+ rel2 { relative: 0.99 0.492;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.07.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.508 0.34;}
+ rel2 { relative: 0.738 0.66;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.01 0.508;}
+ rel2 { relative: 0.33 0.738;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.754 0.34;}
+ rel2 { relative: 0.984 0.66;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.34 0.508;}
+ rel2 { relative: 0.66 0.738;}
+ }
+ }
+
+
+ part {
+ name: "pv.chapter.main.item.09.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.016 0.67;}
+ rel2 { relative: 0.246 0.99;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.67 0.508;}
+ rel2 { relative: 0.99 0.738;}
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.10.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.262 0.67;}
+ rel2 { relative: 0.492 0.99;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.01 0.754;}
+ rel2 { relative: 0.33 0.984;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.508 0.67;}
+ rel2 { relative: 0.738 0.99;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.34 0.754;}
+ rel2 { relative: 0.66 0.984;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12.bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: ITEM_TEXT_BG_COLOR;
+ rel1 { relative: 0.754 0.67;}
+ rel2 { relative: 0.984 0.99;}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.67 0.754;}
+ rel2 { relative: 0.99 0.984;}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.02";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ }
+ }
+
+
+ part {
+ name: "pv.chapter.main.item.05";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.06";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.07";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ }
+ }
+
+
+ part {
+ name: "pv.chapter.main.item.09";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.10";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ }
+ }
+ //shadow
+ part {
+ name: "pv.chapter.main.shadow.01";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.02";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.03";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.04";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.05";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.06";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.07";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.08";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.09";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.10";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.11";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+ part {
+ name: "pv.chapter.main.shadow.12";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.3; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ image { normal: "chapter/T01_2_thumbnail_shadow.png";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "chapter/T01_2_thumbnail_shadow_h.png";}
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "01";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.02.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "02";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "03";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "04";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.05.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "05";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.06.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "06";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.07.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "07";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "08";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.09.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "09";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.10.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "10";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "11";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12.num.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ color: ITEM_TEXT_COLOR ;
+ text {
+ font: "Tizen:style=Bold";
+ size: 30;
+ text: "12";
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.01.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.01.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.01.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.02.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.02.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.02.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.02.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.02.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.02.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.03.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.03.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.03.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.04.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.04.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.04.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.05.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.05.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.05.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.05.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.05.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.05.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.06.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.06.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.06.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.06.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.06.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.06.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.07.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.07.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.07.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.07.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.07.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.07.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.08.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.08.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.08.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.09.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.09.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.09.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.09.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.09.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.09.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.10.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.10.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.10.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.10.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.10.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.10.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.11.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.11.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.11.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: ITEM_LINE_WIDTH 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.chapter.main.item.12.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+
+ part {
+ name: "pv.chapter.main.item.12.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 ITEM_LINE_WIDTH;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.12.bg";}
+ color: ITEM_LINE_COLOR;
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ name: "portrait_mode";
+ signal: "signal.pv.chapter.portrait.mode";
+ source: "*";
+ action: STATE_SET "portrait" 0.0;
+ target: "pv.chapter.main.item.01.bg";
+ target: "pv.chapter.main.item.02.bg";
+ target: "pv.chapter.main.item.03.bg";
+ target: "pv.chapter.main.item.04.bg";
+ target: "pv.chapter.main.item.05.bg";
+ target: "pv.chapter.main.item.06.bg";
+ target: "pv.chapter.main.item.07.bg";
+ target: "pv.chapter.main.item.08.bg";
+ target: "pv.chapter.main.item.09.bg";
+ target: "pv.chapter.main.item.10.bg";
+ target: "pv.chapter.main.item.11.bg";
+ target: "pv.chapter.main.item.12.bg";
+ target: "pv.chapter.main.shadow.01";
+ target: "pv.chapter.main.shadow.02";
+ target: "pv.chapter.main.shadow.03";
+ target: "pv.chapter.main.shadow.04";
+ target: "pv.chapter.main.shadow.05";
+ target: "pv.chapter.main.shadow.06";
+ target: "pv.chapter.main.shadow.07";
+ target: "pv.chapter.main.shadow.08";
+ target: "pv.chapter.main.shadow.09";
+ target: "pv.chapter.main.shadow.10";
+ target: "pv.chapter.main.shadow.11";
+ target: "pv.chapter.main.shadow.12";
+ }
+
+ program {
+ name: "landscape_mode";
+ signal: "signal.pv.chapter.landscape.mode";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.chapter.main.item.01.bg";
+ target: "pv.chapter.main.item.02.bg";
+ target: "pv.chapter.main.item.03.bg";
+ target: "pv.chapter.main.item.04.bg";
+ target: "pv.chapter.main.item.05.bg";
+ target: "pv.chapter.main.item.06.bg";
+ target: "pv.chapter.main.item.07.bg";
+ target: "pv.chapter.main.item.08.bg";
+ target: "pv.chapter.main.item.09.bg";
+ target: "pv.chapter.main.item.10.bg";
+ target: "pv.chapter.main.item.11.bg";
+ target: "pv.chapter.main.item.12.bg";
+ target: "pv.chapter.main.shadow.01";
+ target: "pv.chapter.main.shadow.02";
+ target: "pv.chapter.main.shadow.03";
+ target: "pv.chapter.main.shadow.04";
+ target: "pv.chapter.main.shadow.05";
+ target: "pv.chapter.main.shadow.06";
+ target: "pv.chapter.main.shadow.07";
+ target: "pv.chapter.main.shadow.08";
+ target: "pv.chapter.main.shadow.09";
+ target: "pv.chapter.main.shadow.10";
+ target: "pv.chapter.main.shadow.11";
+ target: "pv.chapter.main.shadow.12";
+ }
+ }
+ } /* group */
+
+ group {
+ name: "pv.chapter.main.item";
+ script {
+ public selected = 0;
+ }
+ parts {
+ part {
+ name: "pv.chapter.main.item.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 0;
+ CHAPTER_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "persp";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: -70;
+ focal: 1000;
+ }
+ }
+ }
+ part { name: "persp1";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: 0;
+ focal: 1000;
+ }
+ }
+ }
+ part {
+ name: "pv.chapter.main.item.image";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ align: 0.5 0.5;
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.chapter.main.item.bg"; }
+ rel2 { relative: 1.0 1.0; to: "pv.chapter.main.item.bg"; }
+ CHAPTER_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ }
+ programs {
+ CHAPTER_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "pv.chapter.main.item.bg";
+ target: "pv.chapter.main.item.image";
+ )
+ program {
+ name: "mouse_down";
+ signal: "mouse,down,1";
+ source: "pv.chapter.main.item.bg";
+ action: SIGNAL_EMIT "down" "*";
+ script {
+ if (!get_int(selected)) {
+ set_int(selected, 1);
+ run_program(PROGRAM:"vi_pressed");
+ }
+ }
+ }
+ program {
+ name: "mouse_up";
+ signal: "mouse,up,1";
+ source: "pv.chapter.main.item.bg";
+ action: SIGNAL_EMIT "up" "*";
+ script {
+ if (get_int(selected)) {
+ set_int(selected, 0);
+ run_program(PROGRAM:"vi_zoom_out");
+ }
+ }
+ }
+ }
+ }
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-colorselector.edc b/playview/res/edc/playview/pv-colorselector.edc
new file mode 100644
index 0000000..0efc6de
--- /dev/null
+++ b/playview/res/edc/playview/pv-colorselector.edc
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+collections {
+ group {
+ name: "colorpalette/rect";
+ parts{
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 233;
+ max: -1 233;
+ }
+ }
+ part {
+ name: "top_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 33;
+ fixed: 0 1;
+ rel1.to: "bg";
+ rel2 {
+ relative: 1.0 0.0;
+ to: "bg";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "rect";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 168;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.2 1.0;
+ to_x: "bg";
+ to_y: "top_padding";
+ }
+ rel2 {
+ relative: 0.8 1.0;
+ to_x: "bg";
+ to_y: "top_padding";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "bottom_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 33;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "rect";
+ }
+ rel2 {
+ to_x: "bg";
+ to_y: "rect";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ }//end parts
+ } //end group
+
+ group {
+ name: "colorpalette";
+ parts{
+ part {
+ name: "bg";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 274;
+ max: -1 274;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 162;
+ max: -1 162;
+ }
+ }
+ part {
+ name: "top_left_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 32;
+ fixed: 1 1;
+ rel1.to: "bg";
+ rel2 {
+ to: "bg";
+ relative: 0.0 0.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "colorpalette";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "top_left_padding";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "bottom_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 44;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "colorpalette";
+ }
+ rel2 {
+ to_x: "bg";
+ to_y: "colorpalette";
+ }
+ align: 1.0 1.0;
+ }
+ }
+ }//end parts
+ programs {
+ program {
+ name: "landscape";
+ signal: "landscape";
+ source: "";
+ action: STATE_SET "landscape" 0.0;
+ target: "bg";
+ }
+ program {
+ name: "portrait";
+ signal: "portrait";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ }
+ }
+ } //end group
+
+ group {
+ name: "item/colorpalette";
+ images {
+ image: "00_color_picker_palette_bg.png" COMP;
+ }
+ parts {
+ part {
+ name: "color_rect";
+ type: IMAGE;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ image.normal: "00_color_picker_palette_bg.png";
+ image.border: 13 13 13 13;
+ image.border_scale: 1;
+ }
+ }
+ }
+ }
+
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-custom-winset.edc b/playview/res/edc/playview/pv-custom-winset.edc
new file mode 100644
index 0000000..6321c0b
--- /dev/null
+++ b/playview/res/edc/playview/pv-custom-winset.edc
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "custom/pv-custom-define.edc"
+#include "custom/pv-custom-image.edc"
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+collections {
+ plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
+ #include "custom/pv-custom-layout.edc"
+ #include "custom/pv-custom-naviframe.edc"
+ #include "custom/pv-custom-button.edc"
+ #include "custom/pv-custom-gengrid-item.edc"
+ #include "custom/pv-custom-genlist-item.edc"
+ #include "custom/pv-custom-colorselector.edc"
+}
diff --git a/playview/res/edc/playview/pv-gesture.edc b/playview/res/edc/playview/pv-gesture.edc
new file mode 100644
index 0000000..4afb3ea
--- /dev/null
+++ b/playview/res/edc/playview/pv-gesture.edc
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+collections {
+ group {
+ name: "pv.gesture";
+ parts {
+ part {
+ name: "pv.gesture.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ }
+}
+
diff --git a/playview/res/edc/playview/pv-image.edc b/playview/res/edc/playview/pv-image.edc
new file mode 100644
index 0000000..186cfb7
--- /dev/null
+++ b/playview/res/edc/playview/pv-image.edc
@@ -0,0 +1,139 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+images
+{
+ /* main */
+ image: "T01_2_video_thumbnail_default.png" COMP;
+ image: "T01_no_video.png" COMP;
+
+ /* multi window */
+ image: "multi/mw_frame.png" COMP;
+ image: "multi/mw_title_bg.#.png" COMP;
+ image: "multi/mw_title_bg_ef.#.png" COMP;
+ image: "multi/mw_title_bg_focus.#.png" COMP;
+ image: "multi/mw_title_bg_focus_ef.#.png" COMP;
+ image: "multi/mw_title_bg_press.png" COMP;
+ image: "multi/mw_title_focus.#.png" COMP;
+ image: "multi/mw_title_focus_bg_press.#.png" COMP;
+ image: "multi/mw_title_divider.png" COMP;
+ image: "multi/Mw_title_icon_press_bg.png" COMP;
+ image: "multi/my_title_icon_delete.png" COMP;
+ image: "multi/my_title_icon_delete_press.png" COMP;
+ image: "multi/my_title_icon_delete_ef_press.png" COMP;
+ image: "multi/my_title_icon_maximize.png" COMP;
+ image: "multi/my_title_icon_maximize_press.png" COMP;
+ image: "multi/my_title_icon_maximize_ef_press.png" COMP;
+ image: "multi/my_title_icon_mimimize.png" COMP;
+ image: "multi/my_title_icon_mimimize_press.png" COMP;
+ image: "multi/my_title_icon_mimimize_ef_press.png" COMP;
+
+ /* genlist */
+ image: "genlist/preview_settings_bg.png" COMP;
+
+ /* main controller */
+ image: "control/T01-2_control_bg.png" COMP;
+
+ /* normal progressbar */
+ image: "progressbar/T01_2_control_progress_handle.png" COMP;
+ image: "progressbar/T01_2_control_progress_handle_press.png" COMP;
+ image: "progressbar/core_progress_bar.#.png" COMP;
+
+ /* volume */
+ image: "volume/T01_2_volume_popup_bg.png" COMP;
+ image: "volume/T01_2_volume_popup_progress_bar.png" COMP;
+ image: "volume/T01_2_volume_popup_progress_bg.png" COMP;
+ image: "volume/T01_2_volume_popup_progress_handle.png" COMP;
+ image: "volume/T01_2_volume_popup_progress_handle_press.png" COMP;
+
+ /* popup */
+ image: "popup/T01-2_volume_popup_icon_brightness.png" COMP;
+ image: "popup/T01-2_volume_popup_icon_volume01.png" COMP;
+ image: "popup/T01-2_volume_popup_icon_volume02.png" COMP;
+ image: "popup/U05_help_popup_sbeam.png" COMP;
+
+
+ /* dmc */
+ image: "dmc/T01_2_device_connect_arrow_01.png" COMP;
+ image: "dmc/T01_2_device_connect_arrow_02.png" COMP;
+ image: "dmc/T01_2_device_connect_arrow_03.png" COMP;
+ image: "dmc/T01_2_device_connect_arrow_04.png" COMP;
+ image: "dmc/T01_2_image_mydevice.png" COMP;
+ image: "dmc/T01_2_image_tv.png" COMP;
+ image: "dmc/T02_player_all_share.png" COMP;
+
+ /* trim */
+ image: "trim/T01_2_trim_left.png" COMP;
+ image: "trim/T01_2_trim_right.png" COMP;
+ image: "trim/T01_2_trim_picker.png" COMP;
+
+ /* tag */
+ image: "tag/T01-1_logo_accuweather.png" COMP;
+ image: "tag/U07_weather_logo.png" COMP;
+
+ /* nearby device */
+ image: "nearby_device/U04_connecting_ani_01.png" COMP;
+ image: "nearby_device/U04_connecting_ani_02.png" COMP;
+ image: "nearby_device/U04_connecting_ani_03.png" COMP;
+ image: "nearby_device/U04_connecting_ani_04.png" COMP;
+
+ /* chapter */
+ image: "chapter/T01_2_thumbnail_shadow.png" COMP;
+ image: "chapter/T01_2_thumbnail_shadow_h.png" COMP;
+
+ /* allshare voice control*/
+ image: "allshare/voice/T01-2_icon_volume_control_minus.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_minus_dim.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_minus_press.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_mute.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_mute_dim.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_mute_press.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_plus.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_plus_dim.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_plus_press.png" COMP;
+ image: "allshare/voice/T01-2_icon_volume_control_bg.png" COMP;
+
+ /*minicontroller*/
+ image: "mini_controller/btn_video_prev_nor.png" COMP;
+ image: "mini_controller/btn_music_prev_press.png" COMP;
+ image: "mini_controller/btn_music_play_nor.png" COMP;
+ image: "mini_controller/btn_music_play_press.png" COMP;
+ image: "mini_controller/btn_music_pause_nor.png" COMP;
+ image: "mini_controller/btn_music_next_nor.png" COMP;
+ image: "mini_controller/btn_music_next_press.png" COMP;
+ image: "mini_controller/btn_close_nor.png" COMP;
+ image: "mini_controller/btn_close_press.png" COMP;
+ image: "mini_controller/music_progress_bg.png" COMP;
+ image: "mini_controller/music_progress.png" COMP;
+
+ /* micro controller */
+ image: "micro_control/T01_2_micro_control_down_01.png" COMP;
+ image: "micro_control/T01_2_micro_control_down_02.png" COMP;
+ image: "micro_control/T01_2_micro_control_down_03.png" COMP;
+ image: "micro_control/T01_2_micro_control_up_01.png" COMP;
+ image: "micro_control/T01_2_micro_control_up_02.png" COMP;
+ image: "micro_control/T01_2_micro_control_up_03.png" COMP;
+
+ /* jump */
+ image: "jump/T01_2_jump_L_01.png" COMP;
+ image: "jump/T01_2_jump_L_02.png" COMP;
+ image: "jump/T01_2_jump_L_03.png" COMP;
+ image: "jump/T01_2_jump_R_01.png" COMP;
+ image: "jump/T01_2_jump_R_02.png" COMP;
+ image: "jump/T01_2_jump_R_03.png" COMP;
+}
+
diff --git a/playview/res/edc/playview/pv-macro.edc b/playview/res/edc/playview/pv-macro.edc
new file mode 100644
index 0000000..584a4b9
--- /dev/null
+++ b/playview/res/edc/playview/pv-macro.edc
@@ -0,0 +1,19 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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/playview/res/edc/playview/pv-minicontroller.edc b/playview/res/edc/playview/pv-minicontroller.edc
new file mode 100644
index 0000000..ccded07
--- /dev/null
+++ b/playview/res/edc/playview/pv-minicontroller.edc
@@ -0,0 +1,982 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define MINI_W 692
+#define MINI_H 180
+#define TOP_PADDING 10
+#define LEFT_PADDING 16
+#define RIGHT_PADDING 20
+#define BOTTOM_PADDING 12
+#define ALBUM_ART_SIZE 156 156
+#define BUTTON_SIZE_MIN_MAX 80 80
+#define BIG_BTN_SIZE_MIN_MAX 102 102
+#define BUTTON_EXPAND_OFFSET 0
+#define BUTTON_CLOSE_SIZE_MAX 30 30
+
+#define ALBUM_ART_LD_SIZE 130 130
+
+#define MC_BG 30 28 28 0
+
+
+#define MC_IMG_REW_NORMAL "mini_controller/btn_video_prev_nor.png"
+#define MC_IMG_REW_PRESSED "mini_controller/btn_video_prev_press.png"
+#define MC_IMG_PLAY_NORMAL "mini_controller/btn_video_play_nor.png"
+#define MC_IMG_PLAY_PRESSED "mini_controller/btn_video_play_press.png"
+#define MC_IMG_PAUSE_NORMAL "mini_controller/btn_video_pause_nor.png"
+#define MC_IMG_PAUSE_PRESSED "mini_controller/btn_video_pause_press.png"
+#define MC_IMG_FF_NORMAL "mini_controller/btn_video_next_nor.png"
+#define MC_IMG_FF_PRESSED "mini_controller/btn_video_next_press.png"
+#define MC_IMG_CLOSE_NORMAL "mini_controller/btn_close_nor.png"
+#define MC_IMG_CLOSE_PRESSED "mini_controller/btn_close_press.png"
+#define MC_IMG_PROGRESS_BG "mini_controller/video_progress_bg.png"
+#define MC_IMG_PROGRESS_BAR "mini_controller/video_progress.png"
+
+
+#define MC_PART_AREA_FROM_LEFT(__name, __left_part, __width, __height) \
+part { name: __name; \
+ type: SPACER; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ rel1 { relative: 1.0 0.5; to: __left_part; } \
+ rel2 { relative: 1.0 0.5; to: __left_part; } \
+ min: __width __height; \
+ fixed: 1 1; \
+ align: 0.0 0.5; \
+ } \
+}
+
+#define MC_PART_ICON_BTN(__name, __to, __normal, __pressed, __btn_min_max) \
+part { name: __name"_clip"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ rel1.to: __name"_bg"; \
+ rel2.to: __name"_bg"; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+} \
+part { name: __name"_bg"; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 0; \
+ clip_to: __name"_clip"; \
+ description { state: "default" 0.0; \
+ rel1 { relative: 0.5 0.5; to: __to; } \
+ rel2 { relative: 0.5 0.5; to: __to; }\
+ min: __btn_min_max; \
+ max: __btn_min_max; \
+ image.normal: __normal; \
+ fixed: 1 1; \
+ align: 0.5 0.5; \
+ } \
+ description { state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ image.normal: __pressed; \
+ } \
+} \
+part { name: __name; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 1; \
+ clip_to: __name"_clip"; \
+ description { state: "default" 0.0; \
+ rel1.to: __name"_bg"; \
+ rel2.to: __name"_bg"; \
+ color: 0 0 0 0; \
+ } \
+}
+
+#define MC_PART_TEXT_BTN(__name, __to, __text_part_name) \
+part { name: __name"_clip"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ rel1.to: __to; \
+ rel2.to: __to; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+} \
+part { name: __name"_bg"; \
+ type: SPACER; \
+ scale: 1; \
+ mouse_events: 0; \
+ clip_to: __name"_clip"; \
+ description { state: "default" 0.0; \
+ rel1.to: __to; \
+ rel2.to: __to; \
+ } \
+ description { state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+} \
+part { name: __text_part_name; \
+ type: TEXT; \
+ scale: 1; \
+ mouse_events: 0; \
+ clip_to: __name"_clip"; \
+ description { state: "default" 0.0; \
+ rel1.to: __name"_bg"; \
+ rel2.to: __name"_bg"; \
+ text { \
+ font: "Tizen:style=Medium"; \
+ size: 28; \
+ align: 0.5 0.5; \
+ } \
+ color: 149 149 149 255; \
+ } \
+} \
+part { name: __name; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 1; \
+ clip_to: __name"_clip"; \
+ description { state: "default" 0.0; \
+ rel1.to: __to; \
+ rel2.to: __to; \
+ color: 0 0 0 0; \
+ } \
+}
+
+#define MC_PART_RECT(__name, __to, __sx, __sy, __ex, __ey) \
+part { \
+ name: __name; \
+ mouse_events: 1; \
+ repeat_events: 1; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0 0; \
+ visible: 1; \
+ rel1 { \
+ relative: __sx __sy; \
+ to: __to; \
+ } \
+ rel2 { \
+ relative: __ex __ey; \
+ to: __to; \
+ } \
+ color: 0 0 0 0; \
+ }\
+ description { \
+ state: "hide" 0.0; \
+ visible: 0; \
+ }\
+}
+
+#define MC_PART_SWALLOW(__name, __to, __sx, __sy, __ex, __ey) \
+part { \
+ name: __name; \
+ mouse_events: 1; \
+ type: SWALLOW; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0.5 0.5; \
+ fixed: 1 1; \
+ visible: 1; \
+ fixed:1 1;\
+ rel1 { \
+ relative: __sx __sy; \
+ to: __to; \
+ } \
+ rel2 { \
+ relative: __ex __ey; \
+ to: __to; \
+ } \
+ color: 0 0 0 0; \
+ } \
+}
+
+#define MC_PROGRAM_BTN_ACTION(__btn, __down_emission, __down_src, __up_emission, __up_src, __clicked_emission, __clicked_src) \
+program { \
+ name: __btn"_after_down"; \
+ signal: "mouse,down,1"; \
+ source: __btn; \
+ script { \
+ set_state(PART:__btn"_bg", "pressed", 0.0); \
+ emit(__down_emission, __down_src); \
+ } \
+} \
+program { \
+ source: __btn; \
+ signal: "mouse,down,1"; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ after: __btn"_after_down"; \
+ transition: ACCELERATE 0.02;\
+} \
+program { \
+ signal: "mouse,up,1"; \
+ source: __btn; \
+ script { \
+ set_state(PART:__btn"_bg", "default", 0.0); \
+ emit(__up_emission, __up_src); \
+ } \
+} \
+program { \
+ signal: "mouse,clicked,1"; \
+ source: __btn; \
+ action: SIGNAL_EMIT __clicked_emission __clicked_src; \
+}
+
+#define MC_PROGRAM_BTN_VISIBLE(__btn, __show_signal, __hide_signal) \
+program { \
+ signal: __show_signal; \
+ source: "*"; \
+ action: STATE_SET "default" 0.0; \
+ target: __btn"_clip"; \
+} \
+program { \
+ signal: __hide_signal; \
+ source: "*"; \
+ action: STATE_SET "hide" 0.0; \
+ target: __btn"_clip"; \
+}
+
+collections {
+
+sounds {
+ sample {
+ name: "button-pressed" AS_IS;
+ source: "button-pressed.wav";
+ }
+}
+
+group {
+ name: "video-minicontroller";
+ images {
+ image: MC_IMG_REW_NORMAL COMP;
+ image: MC_IMG_REW_PRESSED COMP;
+ image: MC_IMG_PLAY_NORMAL COMP;
+ image: MC_IMG_PLAY_PRESSED COMP;
+ image: MC_IMG_PAUSE_NORMAL COMP;
+ image: MC_IMG_PAUSE_PRESSED COMP;
+ image: MC_IMG_FF_NORMAL COMP;
+ image: MC_IMG_FF_PRESSED COMP;
+ image: MC_IMG_CLOSE_NORMAL COMP;
+ image: MC_IMG_CLOSE_PRESSED COMP;
+ image: MC_IMG_PROGRESS_BG COMP;
+ image: MC_IMG_PROGRESS_BAR COMP;
+ }
+ parts {
+ part{ name: "bg";
+ type : RECT;
+ scale : 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min : 0 MINI_H;
+ fixed: 1 1;
+ rel1{ relative : 0 0;}
+ rel2{ relative : 1 1;}
+ color : MC_BG;
+ }
+ }
+
+ part { name: "padding.top";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 0; to: "bg"; }
+ rel2 { relative: 1 0; to: "bg"; }
+ min: 0 TOP_PADDING;
+ fixed: 0 1;
+ align: 0 0;
+ }
+ }
+
+ part { name: "padding.left";
+ type: SPACER; scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 0; to: "bg"; }
+ rel2 { relative: 0 1; to: "bg"; }
+ min: LEFT_PADDING 0;
+ fixed: 1 0;
+ align: 0 0;
+ }
+ }
+
+ part { name: "padding.right";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1 0; to: "bg"; }
+ rel2 { relative: 1 1; to: "bg"; }
+ min: RIGHT_PADDING 0;
+ fixed: 1 0;
+ align: 1 0;
+ }
+ }
+
+ part { name: "padding.bottom";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 1; to: "bg"; }
+ rel2 { relative: 1 1; to: "bg"; }
+ min: 0 BOTTOM_PADDING;
+ fixed: 0 1;
+ align: 0 1;
+ }
+ }
+
+ part { name: "padding_for_albumart.top";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel2 { relative: 1.0 0.0; }
+ min: 0 12;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "padding_for_albumart.bottom";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 1; to: "bg"; }
+ rel2 { relative: 1 1; to: "bg"; }
+ min: 0 12;
+ fixed: 0 1;
+ align: 0 1;
+ }
+ }
+
+ part { name: "albumarmt_bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "padding.left"; to_y: "padding_for_albumart.top"; }
+ rel2 { relative: 1.0 0.0; to_x: "padding.left"; to_y: "padding_for_albumart.bottom"; }
+ min: ALBUM_ART_SIZE;
+ max: ALBUM_ART_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "albumart_image";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.5 0.5; to: "albumarmt_bg"; }
+ rel2 { relative: 0.5 0.5; to: "albumarmt_bg"; }
+ min: ALBUM_ART_SIZE;
+ max: ALBUM_ART_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "right_area";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "albumarmt_bg"; to_y: "padding.top"; }
+ rel2 { relative: 0.0 0.0; to_x: "padding.right"; to_y: "padding.bottom"; }
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.text"; // title
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to_x: "right_area"; to_y: "padding.top"; offset: 16 0;}
+ rel2 { relative: 458/520 1.0; to_x: "right_area"; to_y: "padding.top";}
+ min: 442 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "close_btn_left_padding";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "elm.text"; to_y: "padding.top"; offset: 12 0;}
+ rel2 { relative: 1.0 1.0; to_x: "elm.text"; to_y: "padding.top"; offset: 12 0;}
+ min: BUTTON_CLOSE_SIZE_MAX;
+ max: BUTTON_CLOSE_SIZE_MAX;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ }
+ description { state: "landsape" 0.0;
+ inherit: "default" 0.0;
+ min: 308 86;
+ }
+ }
+ MC_PART_AREA_FROM_LEFT("close_btn_area", "close_btn_left_padding", BUTTON_CLOSE_SIZE_MAX, BUTTON_CLOSE_SIZE_MAX)
+ MC_PART_ICON_BTN("close_btn", "close_btn_area", MC_IMG_CLOSE_NORMAL, MC_IMG_CLOSE_PRESSED, BUTTON_CLOSE_SIZE_MAX)
+
+
+ /* progress bg image */
+ part {
+ name: "progress_bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0;
+ visible:1;
+ image { normal: MC_IMG_PROGRESS_BG; }
+ min: 484 8;
+ max: 484 8;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to_x: "right_area"; to_y: "elm.text"; offset: 16 0; }
+ rel2 { relative: 1.0 1.0; to_x: "right_area"; to_y: "elm.text";}
+ }
+ }
+ /* progress */
+ MC_PART_RECT("progress_area", "progress_bg", 0, 0, 1, 1)
+ MC_PART_SWALLOW("progress_box", "progress_area", 0, 0, 1, 1)
+
+ part { name: "button_area";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 1; to_x: "right_area"; to_y: "progress_bg"; offset: 0 15;}
+ rel2 { relative: 1 0; to_x: "right_area"; to_y: "padding.bottom"; }
+ align: 0.5 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "rew_btn_area";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; to: "button_area"; offset: 108 0;}
+ rel2 { relative: 0.0 0.5; to: "button_area"; offset: 108 0;}
+ min: BUTTON_SIZE_MIN_MAX;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ }
+ }
+ MC_PART_ICON_BTN("rew_btn", "rew_btn_area", MC_IMG_REW_NORMAL, MC_IMG_REW_PRESSED, BUTTON_SIZE_MIN_MAX)
+
+ MC_PART_AREA_FROM_LEFT("rew_right_padding", "rew_btn_area", 21, 102)
+
+ MC_PART_AREA_FROM_LEFT("play_pause_btn_area", "rew_right_padding", 102, 102)
+ MC_PART_ICON_BTN("play_btn", "play_pause_btn_area", MC_IMG_PLAY_NORMAL, MC_IMG_PLAY_PRESSED, BIG_BTN_SIZE_MIN_MAX)
+ MC_PART_ICON_BTN("pause_btn", "play_pause_btn_area", MC_IMG_PAUSE_PRESSED, MC_IMG_PAUSE_NORMAL, BIG_BTN_SIZE_MIN_MAX)
+
+ MC_PART_AREA_FROM_LEFT("play_pause_right_padding", "play_pause_btn_area", 21, 86)
+
+ MC_PART_AREA_FROM_LEFT("ff_btn_area", "play_pause_right_padding", 80, 80)
+ MC_PART_ICON_BTN("ff_btn", "ff_btn_area", MC_IMG_FF_NORMAL, MC_IMG_FF_PRESSED, BUTTON_SIZE_MIN_MAX)
+
+ }
+
+ programs {
+ MC_PROGRAM_BTN_ACTION("rew_btn", "rew_btn_down", "edje", "rew_btn_up", "edje", "rew_btn_clicked", "edje")
+
+ MC_PROGRAM_BTN_ACTION("play_btn", "play_btn_down", "edje", "play_btn_up", "edje", "play_btn_clicked", "edje")
+ MC_PROGRAM_BTN_VISIBLE("play_btn", "show_play_btn", "hide_play_btn")
+
+ MC_PROGRAM_BTN_ACTION("pause_btn", "pause_btn_down", "edje", "pause_btn_up", "edje", "pause_btn_clicked", "edje")
+ MC_PROGRAM_BTN_VISIBLE("pause_btn", "show_pause_btn", "hide_pause_btn")
+
+ MC_PROGRAM_BTN_ACTION("ff_btn", "ff_btn_down", "edje", "ff_btn_up", "edje", "rew_btn_clicked", "edje")
+
+ MC_PROGRAM_BTN_ACTION("close_btn", "close_btn_down", "edje", "close_btn_up", "edje", "close_btn_clicked", "edje")
+
+ program { name: "albumart_cb";
+ signal: "mouse,clicked,1";
+ source: "albumart_image";
+ script{
+ emit("albumart_clicked", "edje");
+ }
+ }
+ program{
+ name: "albumart_cb_after_down";
+ source: "albumart_image";
+ signal: "mouse,down,1";
+ transition: ACCELERATE 0.02;
+ }
+ program {
+ name: "albumart_cb_down";
+ source: "albumart_image";
+ signal: "mouse,down,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ after: "albumart_cb_after_down";
+ transition: ACCELERATE 0.02;
+ }
+ program { name: "set_pause_icon";
+ signal: "set_pause";
+ source: "*";
+ script{
+ emit("hide_play_btn", "edje");
+ emit("show_pause_btn", "edje");
+ }
+ }
+ program { name: "set_play_icon";
+ signal: "set_play";
+ source: "*";
+ script{
+ emit("show_play_btn", "edje");
+ emit("hide_pause_btn", "edje");
+ }
+ }
+ }
+
+}
+
+
+group {
+ name: "video-minicontroller-ld";
+ images {
+ image: MC_IMG_REW_NORMAL COMP;
+ image: MC_IMG_REW_PRESSED COMP;
+ image: MC_IMG_PLAY_NORMAL COMP;
+ image: MC_IMG_PLAY_PRESSED COMP;
+ image: MC_IMG_PAUSE_NORMAL COMP;
+ image: MC_IMG_PAUSE_PRESSED COMP;
+ image: MC_IMG_FF_NORMAL COMP;
+ image: MC_IMG_FF_PRESSED COMP;
+ image: MC_IMG_CLOSE_NORMAL COMP;
+ image: MC_IMG_CLOSE_PRESSED COMP;
+ image: MC_IMG_PROGRESS_BG COMP;
+ image: MC_IMG_PROGRESS_BAR COMP;
+ //image: MC_IMG_ALBUMART_MASK COMP;
+ }
+ parts {
+ part{ name: "bg";
+ type : RECT;
+ scale : 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min : 0 MINI_H;
+ fixed: 1 1;
+ rel1{ relative : 0 0;}
+ rel2{ relative : 1 1;}
+ color : MC_BG;
+ }
+ }
+
+ part { name: "padding.top";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 0; to: "bg"; }
+ rel2 { relative: 1 0; to: "bg"; }
+ min: 0 TOP_PADDING;
+ fixed: 0 1;
+ align: 0 0;
+ }
+ }
+
+ part { name: "padding.left";
+ type: SPACER; scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 0; to: "bg"; }
+ rel2 { relative: 0 1; to: "bg"; }
+ min: LEFT_PADDING 0;
+ fixed: 1 0;
+ align: 0 0;
+ }
+ }
+
+ part { name: "padding.right";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1 0; to: "bg"; }
+ rel2 { relative: 1 1; to: "bg"; }
+ min: RIGHT_PADDING 0;
+ fixed: 1 0;
+ align: 1 0;
+ }
+ }
+
+ part { name: "padding.bottom";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 1; to: "bg"; }
+ rel2 { relative: 1 1; to: "bg"; }
+ min: 0 BOTTOM_PADDING;
+ fixed: 0 1;
+ align: 0 1;
+ }
+ }
+
+ part { name: "padding_for_albumart.top";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel2 { relative: 1.0 0.0; }
+ min: 0 26;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "padding_for_albumart.bottom";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 1; to: "bg"; }
+ rel2 { relative: 1 1; to: "bg"; }
+ min: 0 24;
+ fixed: 0 1;
+ align: 0 1;
+ }
+ }
+
+ part { name: "albumarmt_bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "padding.left"; to_y: "padding_for_albumart.top"; }
+ rel2 { relative: 1.0 0.0; to_x: "padding.left"; to_y: "padding_for_albumart.bottom"; }
+ min: ALBUM_ART_LD_SIZE;
+ max: ALBUM_ART_LD_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "albumart_image";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.5 0.5; to: "albumarmt_bg"; }
+ rel2 { relative: 0.5 0.5; to: "albumarmt_bg"; }
+ min: ALBUM_ART_LD_SIZE;
+ max: ALBUM_ART_LD_SIZE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "mid_area";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1.0 0.0; to_x: "albumarmt_bg"; to_y: "bg"; offset: 34 0;}
+ rel2 { relative: 822/1280 1.0; to_x: "bg"; to_y: "bg"; }
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.text"; // title
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "mid_area"; to_y: "bg"; offset: 0 82;}
+ rel2 { relative: 1.0 0.0; to_x: "mid_area"; to_y: "bg"; offset: 0 82;}
+ min: 620 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "close_btn_left_padding";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 1200/1280 1.0; to_x: "bg"; to_y: "padding.top"; }
+ rel2 { relative: 0 1.0; to_x: "padding.right"; to_y: "padding.top"; }
+ min: BUTTON_CLOSE_SIZE_MAX;
+ max: BUTTON_CLOSE_SIZE_MAX;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ }
+ }
+ MC_PART_AREA_FROM_LEFT("close_btn_area", "close_btn_left_padding", BUTTON_CLOSE_SIZE_MAX, BUTTON_CLOSE_SIZE_MAX)
+ MC_PART_ICON_BTN("close_btn", "close_btn_area", MC_IMG_CLOSE_NORMAL, MC_IMG_CLOSE_PRESSED, BUTTON_CLOSE_SIZE_MAX)
+
+ /* progress bg image */
+ part {
+ name: "progress_bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0;
+ visible:1;
+ image { normal: MC_IMG_PROGRESS_BG; }
+ min: 642 8;
+ max: 642 8;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to_x: "mid_area"; to_y: "elm.text"; offset: 0 12; }
+ rel2 { relative: 1.0 1.0; to_x: "mid_area"; to_y: "elm.text";}
+ }
+ }
+ /* progress */
+ MC_PART_RECT("progress_area", "progress_bg", 0, 0, 1, 1)
+ MC_PART_SWALLOW("progress_box", "progress_area", 0, 0, 1, 1)
+
+ part { name: "button_area";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 1 0; to_x: "mid_area"; to_y: "bg"; offset: 68 60;}
+ rel2 { relative: 1 0; to_x: "mid_area"; to_y: "bg"; offset: 68 60;}
+ align: 0.5 0.0;
+ min: 0 108;
+ fixed: 0 1;
+ visible: 0;
+ }
+ }
+
+ part { name: "rew_btn_area";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; to: "button_area";}
+ rel2 { relative: 0.0 0.5; to: "button_area";}
+ min: BUTTON_SIZE_MIN_MAX;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ }
+ }
+ MC_PART_ICON_BTN("rew_btn", "rew_btn_area", MC_IMG_REW_NORMAL, MC_IMG_REW_PRESSED, BUTTON_SIZE_MIN_MAX)
+
+ MC_PART_AREA_FROM_LEFT("rew_right_padding", "rew_btn_area", 21, 102)
+
+ MC_PART_AREA_FROM_LEFT("play_pause_btn_area", "rew_right_padding", 102, 102)
+ MC_PART_ICON_BTN("play_btn", "play_pause_btn_area", MC_IMG_PLAY_NORMAL, MC_IMG_PLAY_PRESSED, BIG_BTN_SIZE_MIN_MAX)
+ MC_PART_ICON_BTN("pause_btn", "play_pause_btn_area", MC_IMG_PAUSE_NORMAL, MC_IMG_PAUSE_PRESSED, BIG_BTN_SIZE_MIN_MAX)
+
+ MC_PART_AREA_FROM_LEFT("play_pause_right_padding", "play_pause_btn_area", 21, 86)
+
+ MC_PART_AREA_FROM_LEFT("ff_btn_area", "play_pause_right_padding", 80, 80)
+ MC_PART_ICON_BTN("ff_btn", "ff_btn_area", MC_IMG_FF_NORMAL, MC_IMG_FF_PRESSED, BUTTON_SIZE_MIN_MAX)
+
+ }
+
+ programs {
+ MC_PROGRAM_BTN_ACTION("rew_btn", "rew_btn_down", "edje", "rew_btn_up", "edje", "rew_btn_clicked", "edje")
+
+ MC_PROGRAM_BTN_ACTION("play_btn", "play_btn_down", "edje", "play_btn_up", "edje", "play_btn_clicked", "edje")
+ MC_PROGRAM_BTN_VISIBLE("play_btn", "show_play_btn", "hide_play_btn")
+
+ MC_PROGRAM_BTN_ACTION("pause_btn", "pause_btn_down", "edje", "pause_btn_up", "edje", "pause_btn_clicked", "edje")
+ MC_PROGRAM_BTN_VISIBLE("pause_btn", "show_pause_btn", "hide_pause_btn")
+
+ MC_PROGRAM_BTN_ACTION("ff_btn", "ff_btn_down", "edje", "ff_btn_up", "edje", "rew_btn_clicked", "edje")
+
+ MC_PROGRAM_BTN_ACTION("close_btn", "close_btn_down", "edje", "close_btn_up", "edje", "close_btn_clicked", "edje")
+
+ program { name: "albumart_cb";
+ signal: "mouse,clicked,1";
+ source: "albumart_image";
+ script{
+ emit("albumart_clicked", "edje");
+ }
+ }
+ program{
+ name: "albumart_cb_after_down";
+ source: "albumart_image";
+ signal: "mouse,down,1";
+ transition: ACCELERATE 0.02;
+ }
+ program {
+ name: "albumart_cb_down";
+ source: "albumart_image";
+ signal: "mouse,down,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ after: "albumart_cb_after_down";
+ transition: ACCELERATE 0.02;
+ }
+ program { name: "set_pause_icon";
+ signal: "set_pause";
+ source: "*";
+ script{
+ emit("hide_play_btn", "edje");
+ emit("show_pause_btn", "edje");
+ }
+ }
+ program { name: "set_play_icon";
+ signal: "set_play";
+ source: "*";
+ script{
+ emit("show_play_btn", "edje");
+ emit("hide_pause_btn", "edje");
+ }
+ }
+
+ }
+
+}
+
+
+group {
+ name: "minicontroller_progress_box";
+ parts {
+ part { name: "bg";
+ type : RECT;
+ scale: 1;
+ mouse_events: 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;
+ }
+ }
+
+ MC_PART_RECT("progress_bar_area", "bg", 0, 0, 1, 1)
+
+ part {
+ name: "progress_bar";
+ mouse_events: 1;
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ visible: 1;
+ fixed: 1 1;
+ rel1 {
+ relative: 0 0;
+ to: "progress_bar_area";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "progress_bar_area";
+ }
+ color: 248 246 239 255;
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+ }
+}
+
+// prgress
+#define MC_PLAYER_PROGRESSBAR_H 8
+#define MC_PLAYER_CIRCLE_W 50
+#define MC_PLAYER_CIRCLE_H 50
+
+
+group { name: "mc_player_progressbar";
+
+ images {
+ image: MC_IMG_PROGRESS_BG COMP;
+ image: MC_IMG_PROGRESS_BAR COMP;
+ }
+
+ parts {
+ part { name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "progressbar_bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; to: "bg";}
+ rel2 { relative: 1.0 0.5; to: "bg";}
+ image { normal: MC_IMG_PROGRESS_BG; border: 5 5 0 0; }
+ min: 0 MC_PLAYER_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "progressbar_current";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; to: "progressbar_bg"; }
+ rel2 { relative: 0.5 0.5; to_x: "progressbar_playing"; to_y: "progressbar_bg"; }
+ image { normal: MC_IMG_PROGRESS_BAR; border: 5 5 0 0; }
+ min: 0 MC_PLAYER_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "progressbar_playing_confine_rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.5; offset: (-MC_PLAYER_CIRCLE_W/2) 0; to: "progressbar_bg"; }
+ rel2 { relative: 1.0 0.5; offset: (MC_PLAYER_CIRCLE_W/2) 0; to: "progressbar_bg"; }
+ min: 0 MC_PLAYER_CIRCLE_H;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "progressbar_playing";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: MC_PLAYER_CIRCLE_W MC_PLAYER_CIRCLE_H;
+ fixed: 1 1;
+ visible: 0;
+ }
+ dragable {
+ confine: "progressbar_playing_confine_rect";
+ x: 1 1 1;
+ }
+ }
+ }
+}
+} // collection
diff --git a/playview/res/edc/playview/pv-multi-main.edc b/playview/res/edc/playview/pv-multi-main.edc
new file mode 100644
index 0000000..4dcdb75
--- /dev/null
+++ b/playview/res/edc/playview/pv-multi-main.edc
@@ -0,0 +1,1037 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_REGULAR_TYPE "Tizen:style=Regular"
+
+#define FONT_COLOR 255 255 255 255
+
+collections {
+ group {
+ name: "pv.multi.main";
+
+ parts {
+ part {
+ name: "pv.multi.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ min: 3+60+342+3 3+60+342+3;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "pv.multi.rect.left.padding";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 1 0;
+ min: 3 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.bg"; }
+ rel2 { relative: 0.0 1.0; to: "pv.multi.bg"; }
+ color: 255 0 0 255;
+ }
+ }
+ part {
+ name: "pv.multi.rect.right.padding";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 1 0;
+ min: 3 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.multi.bg"; }
+ rel2 { relative: 1.0 1.0; to: "pv.multi.bg"; }
+ color: 255 0 0 255;
+ }
+ }
+ part {
+ name: "pv.multi.rect.top.padding";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 0 1;
+ min: 0 3;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.bg"; }
+ rel2 { relative: 1.0 0.0; to: "pv.multi.bg"; }
+ color: 255 0 0 255;
+ }
+ }
+ part {
+ name: "pv.multi.rect.bottom.padding";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 0 1;
+ min: 0 3;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.multi.bg"; }
+ rel2 { relative: 1.0 1.0; to: "pv.multi.bg"; }
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.frame";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.bg"; }
+ rel2 { relative: 1.0 1.0; to: "pv.multi.bg"; }
+ image { normal: "multi/mw_frame.png"; border: 73 73 73 73;}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.frame.title";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 60;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.rect"; }
+ rel2 { relative: 1.0 0.0; to: "pv.multi.rect"; }
+ image { normal: "multi/mw_title_bg_focus.#.png"; }
+ color: 21 108 148 255;
+ }
+ description {
+ state: "focus_out" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/mw_title_bg.#.png"; }
+ color: 21 108 148 255;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/mw_title_focus_bg_press.#.png"; }
+ color: 17 89 122 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.frame.title.ef";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 60;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.rect"; }
+ rel2 { relative: 1.0 0.0; to: "pv.multi.rect"; }
+ image { normal: "multi/mw_title_bg_focus_ef.#.png"; }
+ }
+ description {
+ state: "focus_out" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/mw_title_bg_ef.#.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "multi/mw_title_focus.#.png"; }
+ color: 36 186 255 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x : "pv.multi.rect.left.padding"; to_y : "pv.multi.rect.top.padding"; }
+ rel2 { relative: 0.0 0.0; to_x : "pv.multi.rect.right.padding"; to_y : "pv.multi.rect.bottom.padding"; }
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "pv.multi.image.buffer";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x : "pv.multi.rect.left.padding"; to_y: "pv.multi.frame.title"; }
+ rel2 { relative: 0.0 0.0; to_x : "pv.multi.rect.right.padding"; to_y : "pv.multi.rect.bottom.padding"; }
+ }
+ }
+
+ part {
+ name: "pv.multi.videosink";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x : "pv.multi.rect.left.padding"; to_y: "pv.multi.frame.title"; }
+ rel2 { relative: 0.0 0.0; to_x : "pv.multi.rect.right.padding"; to_y : "pv.multi.rect.bottom.padding"; }
+ }
+ }
+
+ part {
+ name: "pv.multi.close.icon.bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 94 58;
+ max: 94 58;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x: "pv.multi.rect"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 0.0; to_x: "pv.multi.rect"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/Mw_title_icon_press_bg.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.close.icon";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 54 54;
+ max: 54 54;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.close.icon.bg"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.multi.close.icon.bg"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/my_title_icon_delete.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "multi/my_title_icon_delete_press.png"; }
+ color: 21 108 148 77;
+ }
+ }
+
+ part {
+ name: "pv.multi.close.icon.ef";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 54 54;
+ max: 54 54;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.close.icon.bg"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.multi.close.icon.bg"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/my_title_icon_delete_ef_press.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.close";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 94 60;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.multi.rect"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 0.5; to_x: "pv.multi.rect"; to_y : "pv.multi.frame.title";}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.close.line";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 2 42;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.multi.close"; to_y: "pv.multi.frame.title"; }
+ rel2 { relative: 0.0 0.5; to_x: "pv.multi.close"; to_y: "pv.multi.frame.title"; }
+ image { normal: "multi/mw_title_divider.png"; }
+ }
+ }
+
+ part {
+ name: "pv.multi.full.size.icon.bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 94 58;
+ max: 94 58;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.close.line"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 0.0 0.0; to_x: "pv.multi.close.line"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/Mw_title_icon_press_bg.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.full.size.icon";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 54 54;
+ max: 54 54;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.full.size.icon.bg"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.multi.full.size.icon.bg"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/my_title_icon_maximize.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "multi/my_title_icon_maximize_press.png"; }
+ color: 21 108 148 77;
+ }
+ }
+
+ part {
+ name: "pv.multi.full.size.icon.ef";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 54 54;
+ max: 54 54;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.full.size.icon.bg"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.multi.full.size.icon.bg"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/my_title_icon_maximize_ef_press.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.full.size";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 94 60;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.multi.close.line"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 0.0 0.5; to_x: "pv.multi.close.line"; to_y : "pv.multi.frame.title";}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.full.size.line";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 2 42;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.multi.full.size"; to_y: "pv.multi.frame.title"; }
+ rel2 { relative: 0.0 0.5; to_x: "pv.multi.full.size"; to_y: "pv.multi.frame.title"; }
+ image { normal: "multi/mw_title_divider.png"; }
+ }
+ }
+
+ part {
+ name: "pv.multi.minimize.icon.bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 94 58;
+ max: 94 58;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.full.size.line"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 0.0 0.0; to_x: "pv.multi.full.size.line"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/Mw_title_icon_press_bg.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.minimize.icon";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 54 54;
+ max: 54 54;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.minimize.icon.bg"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.multi.minimize.icon.bg"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/my_title_icon_mimimize.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "multi/my_title_icon_mimimize_press.png"; }
+ color: 21 108 148 77;
+ }
+ }
+
+ part {
+ name: "pv.multi.minimize.icon.ef";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 54 54;
+ max: 54 54;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.minimize.icon.bg"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.multi.minimize.icon.bg"; to_y : "pv.multi.frame.title";}
+ image { normal: "multi/my_title_icon_mimimize_ef_press.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.minimize";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 94 60;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.multi.full.size.line"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 0.0 0.5; to_x: "pv.multi.full.size.line"; to_y : "pv.multi.frame.title";}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.title.txt.left.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 0 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.rect";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.multi.rect";}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.title.txt.right.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 3 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.multi.minimize";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.multi.minimize";}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.multi.title.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 60;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x : "pv.multi.title.txt.left.padding"; to_y : "pv.multi.frame.title";}
+ rel2 { relative: 0.0 0.5; to_x : "pv.multi.title.txt.right.padding"; to_y : "pv.multi.frame.title";}
+ color: FONT_COLOR;
+ text {
+ font: FONT_REGULAR_TYPE;
+ size: 40;
+ text: "";
+ align: 0.0 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.multi.event";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.videosink";}
+ rel2 { relative: 1.0 1.0; to: "pv.multi.videosink";}
+ }
+ }
+
+ part {
+ name: "pv.multi.main.subtitle";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.rect"; }
+ rel2 { relative: 1.0 0.0; to_x: "pv.multi.rect"; to_y : "pv.multi.control.rect"; }
+ }
+ }
+
+ part {
+ name: "pv.multi.control.bottom.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 1.0;
+ min: 0 16;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "pv.multi.rect"; }
+ rel2 { relative: 1.0 1.0; to: "pv.multi.rect"; }
+ color: 255 0 0 0;
+ }
+ }
+
+
+ part {
+ name: "pv.multi.control.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 312 68;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.0; to_y : pv.multi.control.bottom.padding;}
+ rel2 { relative: 0.5 0.0; to_y : pv.multi.control.bottom.padding;}
+ color: 128 128 128 128;
+ }
+
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 312 0;
+ }
+ }
+
+ part {
+ name: "pv.multi.control.rew";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 104 68;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to : "pv.multi.control.rect";}
+ rel2 { relative: 0.0 1.0; to : "pv.multi.control.rect";}
+ color: 255 0 0 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "pv.multi.control.play";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 104 68;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.0; to : "pv.multi.control.rect";}
+ rel2 { relative: 0.5 1.0; to : "pv.multi.control.rect";}
+ color: 0 255 0 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "pv.multi.control.play.focus";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to : "pv.multi.control.play";}
+ rel2 { relative: 1.0 1.0; to : "pv.multi.control.play";}
+ color: 0 255 0 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+
+ part {
+ name: "pv.multi.control.ff";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 104 68;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to : "pv.multi.control.rect";}
+ rel2 { relative: 1.0 1.0; to : "pv.multi.control.rect";}
+ color: 255 0 0 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+/*
+ part {
+ name: "pv.multi.control.rew.line";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ max: 2 42;
+ min: 2 42;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x : "pv.multi.control.rew"; to_y : "pv.multi.control.rect";}
+ rel2 { relative: 1.0 0.5; to_x : "pv.multi.control.rew"; to_y : "pv.multi.control.rect";}
+ color: 0 0 0 255;
+ }
+
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "pv.multi.control.ff.line";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ max: 2 42;
+ min: 2 42;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x : "pv.multi.control.ff"; to_y : "pv.multi.control.rect";}
+ rel2 { relative: 0.0 0.5; to_x : "pv.multi.control.ff"; to_y : "pv.multi.control.rect";}
+ color: 0 0 0 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+*/
+ part {
+ name: "pv.multi.main.loading";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.2; to: "pv.multi.rect"; }
+ rel2 { relative: 1.0 1.0; to: "pv.multi.rect"; }
+ }
+ }
+ part {
+ name: "pv.multi.resize.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 36 36;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to: "pv.multi.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.multi.bg";}
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "pv.multi.resize";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 36 36;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "pv.multi.resize.rect";}
+ rel2 { relative: 1.0 1.0; to: "pv.multi.resize.rect";}
+ }
+ }
+
+ part {
+ name: "pv.multi.nocontents";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 1 1;
+ min: 176 174;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "pv.multi.rect"; }
+ rel2 { relative: 0.5 0.5; to: "pv.multi.rect"; }
+ image { normal: "T01_no_video.png";}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.multi.nocontents.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 40;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y : pv.multi.nocontents;}
+ rel2 { relative: 1.0 1.0; to_y : pv.multi.nocontents;}
+ color: FONT_COLOR;
+ text {
+ font: FONT_REGULAR_TYPE;
+ size: 40;
+ text: "No Videos";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.multi.main.speed.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 160 40;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.0; to_y : "pv.multi.control.rect"; }
+ rel2 { relative: 0.5 0.0; to_y : "pv.multi.control.rect"; }
+ color: 0 0 0 102;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.multi.main.speed.txt";
+ type: TEXT;
+ effect: OUTLINE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to : "pv.multi.main.speed.rect";}
+ rel2 { relative: 1.0 1.0; to : "pv.multi.main.speed.rect";}
+ color: FONT_COLOR;
+ text {
+ font: FONT_REGULAR_TYPE;
+ size: 32;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ signal: "signal.pv.multi.show.control";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.control.rect", "default", 0.0);
+ set_state(PART:"pv.multi.control.play", "default", 0.0);
+ set_state(PART:"pv.multi.control.play.focus", "default", 0.0);
+ set_state(PART:"pv.multi.control.rew", "default", 0.0);
+ set_state(PART:"pv.multi.control.ff", "default", 0.0);
+ //set_state(PART:"pv.multi.control.rew.line", "default", 0.0);
+ //set_state(PART:"pv.multi.control.ff.line", "default", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.hide.control";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.control.rect", "hide", 0.0);
+ set_state(PART:"pv.multi.control.play", "hide", 0.0);
+ set_state(PART:"pv.multi.control.play.focus", "hide", 0.0);
+ set_state(PART:"pv.multi.control.rew", "hide", 0.0);
+ set_state(PART:"pv.multi.control.ff", "hide", 0.0);
+ //set_state(PART:"pv.multi.control.rew.line", "hide", 0.0);
+ //set_state(PART:"pv.multi.control.ff.line", "hide", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.pv.multi.show.nocontents";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.nocontents", "show", 0.0);
+ set_state(PART:"pv.multi.nocontents.txt", "show", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.hide.nocontents";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.nocontents", "default", 0.0);
+ set_state(PART:"pv.multi.nocontents.txt", "default", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.focus.in.control";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.frame.title", "default", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "default", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.focus.out.control";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.frame.title", "focus_out", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "focus_out", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.close.pressed";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.close.icon.bg", "pressed", 0.0);
+ set_state(PART:"pv.multi.close.icon.ef", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "pressed", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.close.released";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.close.icon.bg", "default", 0.0);
+ set_state(PART:"pv.multi.close.icon.ef", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title", "default", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "default", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.fullsize.pressed";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.full.size.icon.bg", "pressed", 0.0);
+ set_state(PART:"pv.multi.full.size.icon.ef", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "pressed", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.fullsize.released";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.full.size.icon.bg", "default", 0.0);
+ set_state(PART:"pv.multi.full.size.icon.ef", "default", 0.0);
+ set_state(PART:"pv.multi.frame.title", "default", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "default", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.minimize.pressed";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.minimize.icon.bg", "pressed", 0.0);
+ set_state(PART:"pv.multi.minimize.icon.ef", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title", "pressed", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "pressed", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.multi.minimize.released";
+ source: "*";
+ script {
+ set_state(PART:"pv.multi.minimize.icon.bg", "default", 0.0);
+ set_state(PART:"pv.multi.minimize.icon.ef", "default", 0.0);
+ set_state(PART:"pv.multi.frame.title", "default", 0.0);
+ set_state(PART:"pv.multi.frame.title.ef", "default", 0.0);
+ }
+ }
+ program {
+ name: "speed_on";
+ signal: "signal.pv.multi.main.speed.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.multi.main.speed.rect";
+ target: "pv.multi.main.speed.txt";
+ }
+
+ program {
+ name: "speed_off";
+ signal: "signal.pv.multi.main.speed.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.multi.main.speed.rect";
+ target: "pv.multi.main.speed.txt";
+ }
+ } /* programs */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-normal-control.edc b/playview/res/edc/playview/pv-normal-control.edc
new file mode 100644
index 0000000..f1816e0
--- /dev/null
+++ b/playview/res/edc/playview/pv-normal-control.edc
@@ -0,0 +1,560 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define PV_NORMAL_CONTROL_BG "control/T01-2_control_bg.png"
+#define PV_NORMAL_CONTROL_LANDSCAPE_BG "control/T01-2_control_bg_h.png"
+
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+
+collections {
+
+#define PV_PART_DESCRIPTION_HIDE \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+
+#define PV_PART_DESCRIPTION_SHOW \
+ description { \
+ state: "show" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+
+ plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
+
+ group {
+ name: "pv.normal.control";
+ images {
+ image: PV_NORMAL_CONTROL_BG COMP;
+ image: PV_NORMAL_CONTROL_LANDSCAPE_BG COMP;
+ }
+
+ parts {
+ part {
+ name: "pv.normal.control.bg";
+ type: RECT;
+ 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: "pv.normal.control.bottom.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 12;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to_y : "pv.normal.control.bg"; }
+ rel2 { relative: 1.0 1.0; to_y : "pv.normal.control.bg"; }
+ color: 0 255 0 50;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 6;
+ }
+ }
+ part {
+ name: "pv.normal.control.bg.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.control.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.control.bg";}
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "pv.normal.control.function.top";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ max: -1 0;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y: "pv.normal.control.bg";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.normal.control.bg";}
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "pv.normal.control.function";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 14;
+ max: -1 14;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pv.normal.control.function.top"; }
+ rel2 { relative: 1.0 1.0; to_y: "pv.normal.control.function.top"; }
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 14;
+ max: -1 14;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.normal.control.toolbar.volume"; to_y: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 0.0 0.5; to_x: "pv.normal.control.toolbar.screensize"; to_y: "pv.normal.control.toolbar.rect";}
+ }
+ }
+
+ part {
+ name: "pv.normal.control.progress";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 46;//(26+11+12+34);
+ max: -1 46;//(26+11+12+34);
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pv.normal.control.function";}
+ rel2 { relative: 1.0 1.0; to_y: "pv.normal.control.function";}
+ }
+
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 46;
+ rel1 { relative: 0.0 0.0; to_y: "pv.normal.control.bg.rect";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.normal.control.bg.rect";}
+ }
+ }
+
+ part {
+ name: "pv.normal.control.toolbar.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 70;//(12+70+26+11+12+(34/2));
+ max: -1 70;//(12+70+26+11+12+(34/2));
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y: "pv.normal.control.bg";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.normal.control.bg";}
+ color: 255 0 0 125;
+ }
+ }
+ part {
+ name: "pv.normal.control.toolbar.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 80;
+ max: -1 80;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.6; to_y: "pv.normal.control.toolbar.top";}
+ rel2 { relative: 1.0 0.6; to_y: "pv.normal.control.toolbar.top";}
+ color: 255 0 0 255;
+ }
+ description {
+ state: "landscape" 0.0;
+ visible: 0;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pv.normal.control.toolbar.top";}
+ rel2 { relative: 1.0 1.0; to_y: "pv.normal.control.toolbar.top";}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.control.toolbar.left.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 30 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 0.0 1.0; to: "pv.normal.control.toolbar.rect";}
+ color: 0 0 0 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 30 0;
+ }
+ }
+ part {
+ name: "pv.normal.control.toolbar.right.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 30 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.control.toolbar.rect";}
+ color: 0 0 0 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 30 0;
+ }
+ }
+ part {
+ name: "pv.normal.control.toolbar.volume";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 46 46;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.normal.control.toolbar.left.padding"; to_y: "pv.normal.control.toolbar.rect"; }
+ rel2 { relative: 1.0 0.5; to_x: "pv.normal.control.toolbar.left.padding"; to_y: "pv.normal.control.toolbar.rect"; }
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.toolbar.screensize";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 60 60;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.normal.control.bg"; to_y: "pv.normal.control.toolbar.rect"; offset: +18 0;}
+ rel2 { relative: 0.0 0.5; to_x: "pv.normal.control.bg"; to_y: "pv.normal.control.toolbar.rect"; offset: +78 0;}
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.toolbar.popupPlayer";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 60 60;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.normal.control.bg"; to_y: "pv.normal.control.toolbar.rect"; offset: -18 0;}
+ rel2 { relative: 1.0 0.5; to_x: "pv.normal.control.bg"; to_y: "pv.normal.control.toolbar.rect"; offset: -78 0;}
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.play";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 80;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.0; to_y: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 0.5 1.0; to_y: "pv.normal.control.toolbar.rect";}
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.play.focus";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to : "pv.normal.control.play";}
+ rel2 { relative: 1.0 1.0; to : "pv.normal.control.play";}
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.play.left.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 16 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.normal.control.play"; to_y: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.normal.control.play"; to_y: "pv.normal.control.toolbar.rect";}
+ color: 255 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.control.play.right.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 16 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to_x: "pv.normal.control.play"; to_y: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.normal.control.play"; to_y: "pv.normal.control.toolbar.rect";}
+ color: 255 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.control.rew";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 110 110;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.normal.control.play.left.padding"; to_y: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 0.0 0.5; to_x: "pv.normal.control.play.left.padding"; to_y: "pv.normal.control.toolbar.rect";}
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.ff";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 110 110;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.normal.control.play.right.padding"; to_y: "pv.normal.control.toolbar.rect";}
+ rel2 { relative: 1.0 0.5; to_x: "pv.normal.control.play.right.padding"; to_y: "pv.normal.control.toolbar.rect";}
+ color: 255 255 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.control.bookmark";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 (10+88+32+18);
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to_y: "pv.normal.control.bg";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.normal.control.bg";}
+ }
+ }
+
+ } /* parts */
+
+ programs {
+ program {
+ name: "portrait_mode";
+ signal: "signal.pv.normal.control.portrait.mode";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.control.toolbar.left.padding";
+ target: "pv.normal.control.toolbar.right.padding";
+ target: "pv.normal.control.bottom.padding";
+ target: "pv.normal.control.progress";
+ target: "pv.normal.control.function.top";
+ target: "pv.normal.control.function";
+ target: "pv.normal.control.toolbar.rect";
+ }
+
+ program {
+ name: "landscape_mode";
+ signal: "signal.pv.normal.control.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "pv.normal.control.toolbar.left.padding";
+ target: "pv.normal.control.toolbar.right.padding";
+ target: "pv.normal.control.bottom.padding";
+ target: "pv.normal.control.progress";
+ target: "pv.normal.control.function.top";
+ target: "pv.normal.control.function";
+ target: "pv.normal.control.toolbar.rect";
+ }
+
+ program {
+ name: "hide_volume_screensize";
+ signal: "signal.pv.normal.control.hide.v.s";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.normal.control.toolbar.volume";
+ target: "pv.normal.control.toolbar.screensize";
+ }
+
+ program {
+ name: "hide_volume_screensize_ff_rev";
+ signal: "signal.pv.normal.control.hide.v.s.f.r";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.normal.control.toolbar.volume";
+ target: "pv.normal.control.toolbar.screensize";
+ target: "pv.normal.control.rew";
+ target: "pv.normal.control.ff";
+ }
+
+ program {
+ name: "hide_all_button";
+ signal: "signal.pv.normal.control.hide.v.s.f.r.p";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.normal.control.toolbar.volume";
+ target: "pv.normal.control.toolbar.screensize";
+ target: "pv.normal.control.rew";
+ target: "pv.normal.control.ff";
+ target: "pv.normal.control.play";
+ }
+
+ program {
+ name: "show_play_button";
+ signal: "signal.pv.normal.control.show.p";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.control.play";
+ }
+
+ program {
+ name: "show_volume_screensize_ff_rev";
+ signal: "signal.pv.normal.control.show.r.f.p";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.control.rew";
+ target: "pv.normal.control.ff";
+ target: "pv.normal.control.play";
+ }
+
+ program {
+ name: "show_all_button";
+ signal: "signal.pv.normal.control.show.v.s.f.r.p";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.control.toolbar.volume";
+ target: "pv.normal.control.toolbar.screensize";
+ target: "pv.normal.control.rew";
+ target: "pv.normal.control.ff";
+ target: "pv.normal.control.play";
+ }
+ program{
+ name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.control.ff";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd1";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.control.rew";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd2";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.control.toolbar.screensize";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd3";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.control.play";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ } /* programs */
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-normal-function.edc b/playview/res/edc/playview/pv-normal-function.edc
new file mode 100644
index 0000000..fd471b7
--- /dev/null
+++ b/playview/res/edc/playview/pv-normal-function.edc
@@ -0,0 +1,219 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define FUNCTION_BUTTON_MIN_MAX_VALUE 70 70
+
+collections {
+
+#define PV_PART_DESCRIPTION_HIDE \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+
+#define PV_PART_DESCRIPTION_SHOW \
+ description { \
+ state: "show" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+
+ group {
+ name: "pv.normal.function";
+ parts {
+ part {
+ name: "pv.normal.function.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: "pv.normal.function.left.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.function.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.normal.function.bg";}
+ color: 0 255 0 255;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 42 0;
+ }
+ }
+
+ part {
+ name: "pv.normal.function.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.normal.function.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.function.bg";}
+ color: 0 255 0 255;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 42 0;
+ }
+ }
+ part {
+ name: "pv.normal.function.center.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 42 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.normal.function.button.3";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.normal.function.button.3";}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.function.button.1";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: FUNCTION_BUTTON_MIN_MAX_VALUE;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.normal.function.left.padding"; to_y: "pv.normal.function.bg";}
+ rel2 { relative: 1.0 0.5; to_x: "pv.normal.function.left.padding"; to_y: "pv.normal.function.bg";}
+ color: 0 0 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.function.button.2";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: FUNCTION_BUTTON_MIN_MAX_VALUE;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "pv.normal.function.bg";}
+ rel2 { relative: 0.5 0.5; to: "pv.normal.function.bg";}
+ color: 0 0 255 255;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to: "pv.normal.function.center.padding";}
+ rel2 { relative: 0.0 0.5; to: "pv.normal.function.center.padding";}
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+
+ part {
+ name: "pv.normal.function.button.3";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: FUNCTION_BUTTON_MIN_MAX_VALUE;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.normal.function.right.padding"; to_y: "pv.normal.function.bg";}
+ rel2 { relative: 0.0 0.5; to_x: "pv.normal.function.right.padding"; to_y: "pv.normal.function.bg";}
+ color: 0 0 255 255;
+ }
+ PV_PART_DESCRIPTION_HIDE
+ PV_PART_DESCRIPTION_SHOW
+ }
+ } /* parts */
+
+ programs {
+ program {
+ name: "portrait_mode";
+ signal: "signal.pv.normal.function.portrait.mode";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.function.right.padding";
+ target: "pv.normal.function.left.padding";
+ target: "pv.normal.function.button.2";
+ }
+
+ program {
+ name: "landscape_mode";
+ signal: "signal.pv.normal.function.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "pv.normal.function.right.padding";
+ target: "pv.normal.function.left.padding";
+ target: "pv.normal.function.button.2";
+ }
+
+ program {
+ name: "hide_button.1.3";
+ signal: "signal.pv.normal.function.hide.1.3";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.normal.function.button.1";
+ target: "pv.normal.function.button.3";
+ }
+
+ program {
+ name: "show_button.1.3";
+ signal: "signal.pv.normal.function.show.1.3";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.function.button.1";
+ target: "pv.normal.function.button.3";
+ }
+
+ } /* programs */
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-normal-main.edc b/playview/res/edc/playview/pv-normal-main.edc
new file mode 100644
index 0000000..cd5efa8
--- /dev/null
+++ b/playview/res/edc/playview/pv-normal-main.edc
@@ -0,0 +1,1738 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_BOLD_TYPE "Tizen:style=Bold"
+#define FONT_COLOR 255 255 255 255
+
+#define MICRO_CONTROL_IMG_UP_1 "micro_control/T01_2_micro_control_up_01.png"
+#define MICRO_CONTROL_IMG_UP_2 "micro_control/T01_2_micro_control_up_02.png"
+#define MICRO_CONTROL_IMG_UP_3 "micro_control/T01_2_micro_control_up_03.png"
+#define MICRO_CONTROL_IMG_BG "micro_control/T01-2_Control_detail_text_bg.png"
+#define JUMP_IMG_L_1 "jump/T01_2_jump_L_01.png"
+#define JUMP_IMG_L_2 "jump/T01_2_jump_L_02.png"
+#define JUMP_IMG_L_3 "jump/T01_2_jump_L_03.png"
+#define JUMP_IMG_R_1 "jump/T01_2_jump_R_01.png"
+#define JUMP_IMG_R_2 "jump/T01_2_jump_R_02.png"
+#define JUMP_IMG_R_3 "jump/T01_2_jump_R_03.png"
+#define LOCK_SCREEN_ICON_SIZE 46
+
+#define SUBTITLE_K_FEATURE
+
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+
+collections {
+ plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
+ group {
+ name: "pv.normal.main";
+
+ parts {
+ part {
+ name: "pv.normal.main.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: 8 8 8 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.no.contents.rect";
+ 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: 8 8 8 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.lockscreen.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 20 14 ;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; offset: -24 -10;}
+ rel2 { relative: 1.0 0.0; offset: -24 -10;}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.image.buffer.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ fixed: 0 1;
+ //min: 0 800;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ fixed: 0 1;
+ //min: 0 480;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ // _NATIVE_BUFFER_SYNC
+ part {
+ name: "pv.normal.videosink";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.main.image.buffer.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.main.image.buffer.bg";}
+ }
+ }
+
+ part {
+ name: "pv.normal.main.image.buffer";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.main.image.buffer.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.main.image.buffer.bg";}
+ }
+ }
+ part {
+ name: "pv.normal.main.no.contents";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 270 214;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.0; to_y: "pv.normal.main.no.contents.bottom";}
+ rel2 { relative: 0.5 0.0; to_y: "pv.normal.main.no.contents.bottom";}
+ image { normal: "dmc/T02_player_all_share.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.no.contents.bottom";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.5 0.5;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.5; }
+ rel2 { relative: 1.0 0.5; }
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 640;
+ align: 0.5 1.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 360;
+ align: 0.5 1.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.lockscreen.text.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 16 56 ;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x: "pv.normal.main.lockscreen";}
+ rel2 { relative: 0.0 0.0;}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.lockscreen.text";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 56;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "pv.normal.main.lockscreen.text.rect"; to_y: "pv.normal.main.lockscreen.padding"; }
+ rel2 { relative: 1.0 0.0; }
+ color: 255 255 255 255;
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 32;
+ text: "Press hold key to unlock";
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "pv.normal.allshare.dmc";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 414;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.4; }
+ rel2 { relative: 1.0 0.4; }
+ color: 255 255 255 255;
+ }
+ }
+
+
+ part {
+ name: "pv.normal.top.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ color: 0 0 0 0;
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 0 113;
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 0 113;
+ }
+ }
+
+ part {
+ name: "pv.allshare.voice.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 0;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ }
+ }
+
+ description {
+ state: "show" 0.0;
+ visible: 1;
+ min: 0 63;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.zoom.guide.top";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 1280-144-210; // total height - zoom guide height - top margin height(portrait)
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 0 255 0 255;
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 1280-144-210; // total height - zoom guide height - top margin height(portrait)
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 720-144-104; // total height - zoom guide height - top margin height(landscape)
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.zoom.guide.left";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 16 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 1.0; }
+ color: 0 0 255 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.zoom.guide.rect";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 256 144;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 1.0 0.0; to_x: "pv.normal.main.zoom.guide.left"; to_y: "pv.normal.main.zoom.guide.top"; }
+ rel2 { relative: 1.0 0.0; to_x: "pv.normal.main.zoom.guide.left"; to_y: "pv.normal.main.zoom.guide.top"; }
+ }
+ }
+
+#ifndef SUBTITLE_K_FEATURE
+ part {
+ name: "pv.normal.main.subtitle.top";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 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: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 290;
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 190;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.subtitle.bottom";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y : "pv.normal.main.subtitle.top"; }
+ rel2 { relative: 1.0 0.0; to_y : "pv.normal.main.subtitle.top"; }
+ color: 0 255 0 128;
+ }
+ description {
+ state: "bookmark.on" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 1.0;
+ fixed: 0 1;
+ min: 0 146;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.subtitle";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; to_y : "pv.normal.main.subtitle.bottom"; }
+ }
+ }
+#endif
+ part {
+ name: "pv.normal.main.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 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; }
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 110;
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 100;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.lockscreen";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: LOCK_SCREEN_ICON_SIZE LOCK_SCREEN_ICON_SIZE;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 1.0; to: "pv.normal.main.lockscreen.padding"; }
+ rel2 { relative: 0.0 1.0; to: "pv.normal.main.lockscreen.padding"; }
+ color: 255 0 0 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.rotate.icon";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 60 60;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ visible: 0;
+ rel1 { relative: 0.0 -0.02; to_y : "pv.normal.main.control";}
+ rel2 { relative: 0.1 -0.02; to_y : "pv.normal.main.control";}
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.volume.icon";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 60 60;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ visible: 0;
+ rel1 { relative: 1.0 -0.02; to_y : "pv.normal.main.control"; offset: -84 0;}
+ rel2 { relative: 1.0 -0.02; to_y : "pv.normal.main.control"; offset: -144 0;}
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.speed.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 320 80;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.0; to_y : "pv.normal.main.control"; }
+ rel2 { relative: 0.5 0.0; to_y : "pv.normal.main.control"; }
+ color: 0 0 0 102;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.speed.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 : "pv.normal.main.speed.rect";}
+ rel2 { relative: 1.0 1.0; to : "pv.normal.main.speed.rect";}
+ color: FONT_COLOR;
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 48;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.playingspeed.rect";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events : 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 100 25;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.4 0.0; to_y : "pv.normal.main.control"; offset : 0 -20; }
+ rel2 { relative: 0.6 0.0; to_y : "pv.normal.main.control"; offset : 0 -20; }
+ color: 0 0 0 102;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.playingspeed.txt";
+ type: TEXT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to : "pv.normal.main.playingspeed.rect";}
+ rel2 { relative: 1.0 1.0; to : "pv.normal.main.playingspeed.rect";}
+ color: FONT_COLOR;
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 24;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.portrait.bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 200;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.landscape.bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 100;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.portrait.line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 0.0; to_y: "pv.normal.main.screenshot.portrait.bottom";}
+ rel2 { relative: 0.5 0.0; to_y: "pv.normal.main.screenshot.portrait.bottom";}
+ color: 255 255 255 255;
+
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 324 244;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.portrait.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "pv.normal.main.screenshot.portrait.line";}
+ rel2 { relative: 0.5 0.5; to: "pv.normal.main.screenshot.portrait.line";}
+ color: 0 0 0 255;
+
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 320 240;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.landscape.line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.7 0.0; to_y: "pv.normal.main.screenshot.landscape.bottom";}
+ rel2 { relative: 0.7 0.0; to_y: "pv.normal.main.screenshot.landscape.bottom";}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 324 244;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.landscape.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "pv.normal.main.screenshot.landscape.line";}
+ rel2 { relative: 0.5 0.5; to: "pv.normal.main.screenshot.landscape.line";}
+ color: 0 0 0 255;
+ }
+
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 320 240;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.portrait";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 320 240;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.main.screenshot.portrait.rect";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.main.screenshot.portrait.rect";}
+
+ }
+ }
+
+ part {
+ name: "pv.normal.main.screenshot.landscape";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 320 240;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.normal.main.screenshot.landscape.rect";}
+ rel2 { relative: 1.0 1.0; to: "pv.normal.main.screenshot.landscape.rect";}
+ }
+ }
+
+ part {
+ name: "pv.normal.main.error.image";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 130 130;
+ max: 130 130;
+ visible: 1;
+ fixed: 1 1;
+ color: 255 255 255 255;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_y: "pv.normal.main.bg"; }
+ rel2 { relative: 1.0 0.0; to_y: "pv.normal.main.control"; }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.loading.top";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.5; }
+ rel2 { relative: 1.0 0.5; }
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 400;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 240;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+ part {
+ name: "pv.normal.main.loading.bottom";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y : "pv.normal.main.loading.top"; }
+ rel2 { relative: 1.0 0.0; to_y : "pv.normal.main.loading.top"; }
+ color: 0 255 0 128;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.loading";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to_y : "pv.normal.main.loading.bottom"; }
+ rel2 { relative: 1.0 0.0; to_y : "pv.normal.main.loading.bottom"; }
+ }
+ }
+
+ /*subtitle area*/
+ part {
+ name: "pv.normal.main.subtitle";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.5 1.0;
+ fixed: 1 1;
+ rel1 { relative: 0.1 0.0; }
+ rel2 { relative: 0.9 0.0; to_y: "pv.normal.main.control";}
+ }
+ description {
+ state: "portrait.show" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.1 0.0; }
+ rel2 { relative: 0.9 0.0; to_y: "pv.normal.main.volume.icon";}
+ visible: 1;
+ }
+ description {
+ state: "landscape.show" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.1 0.0; }
+ rel2 { relative: 0.9 0.0; to_y: "pv.normal.main.volume.icon";}
+ visible: 1;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ name: "video_off";
+ signal: "signal.pv.normal.main.video.off";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.bg";
+ }
+ program {
+ name: "video_on";
+ signal: "signal.pv.normal.main.video.on";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.bg";
+ }
+
+ program {
+ name: "control_portait_show";
+ signal: "signal.pv.normal.main.portrait.show";
+ source: "*";
+ action: STATE_SET "portrait.show" 0.0;
+ target: "pv.normal.main.control";
+ target: "pv.normal.top.control";
+#ifndef SUBTITLE_K_FEATURE
+ target: "pv.normal.main.subtitle.top";
+#endif
+ transition: LINEAR 0.2;
+ after: "control_show_finished";
+ }
+
+ program {
+ name: "control_landscape_show";
+ signal: "signal.pv.normal.main.landscape.show";
+ source: "*";
+ action: STATE_SET "landscape.show" 0.0;
+ target: "pv.normal.main.control";
+ target: "pv.normal.top.control";
+#ifdef SUBTITLE_K_FEATURE
+ target: "pv.normal.main.subtitle";
+#endif
+ transition: LINEAR 0.2;
+ after: "control_show_finished";
+ }
+
+ program {
+ name: "no_effect_portait_show";
+ signal: "signal.pv.normal.main.no.effect.portrait.show";
+ source: "*";
+ action: STATE_SET "portrait.show" 0.0;
+ target: "pv.normal.main.loading.top";
+ target: "pv.normal.main.zoom.guide.top";
+ target: "pv.normal.main.no.contents.bottom";
+ target: "pv.normal.main.image.buffer.bg";
+ }
+
+ program {
+ name: "no_effect_landscape_show";
+ signal: "signal.pv.normal.main.no.effect.landscape.show";
+ source: "*";
+ action: STATE_SET "landscape.show" 0.0;
+ target: "pv.normal.main.loading.top";
+ target: "pv.normal.main.zoom.guide.top";
+ target: "pv.normal.main.no.contents.bottom";
+ target: "pv.normal.main.image.buffer.bg";
+ }
+
+ program {
+ name: "no_effect_control_hide";
+ signal : "signal.pv.normal.main.no.effect.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.control";
+ target: "pv.normal.top.control";
+ target: "pv.normal.main.image.buffer";
+ transition: LINEAR 0.0;
+ after: "control_hide_finished";
+ }
+
+ program {
+ name: "control_hide";
+ signal: "signal.pv.normal.main.control.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.control";
+ target: "pv.normal.top.control";
+ transition: LINEAR 0.2;
+ after: "control_hide_finished";
+ }
+#ifdef SUBTITLE_K_FEATURE
+ program {
+ name: "subtitle_portrait_show";
+ signal: "signal.pv.normal.main.portrait.subtitle";
+ source: "*";
+ action: STATE_SET "portrait.show" 0.0;
+ target: "pv.normal.main.subtitle";
+ }
+ program {
+ name: "subtitle_landscape_show";
+ signal: "signal.pv.subtitle.main.landscape.show";
+ source: "*";
+ action: STATE_SET "landscape.show" 0.0;
+ target: "pv.normal.main.subtitle";
+ }
+ program {
+ name: "subtitle_normal_hide";
+ signal: "signal.pv.normal.main.subtitle.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.subtitle";
+ }
+#endif
+ program {
+ name: "voice_control_show";
+ signal: "signal.pv.allshare.voice.control.show";
+ source: "pv.allshare.voice.control";
+ action: STATE_SET "show" 0.0;
+ target: "pv.allshare.voice.control";
+ transition: LINEAR 0.6;
+ }
+
+ program {
+ name: "voice_control_hide";
+ signal: "signal.pv.allshare.voice.control.hide";
+ source: "pv.allshare.voice.control";
+ action: STATE_SET "default" 0.0;
+ target: "pv.allshare.voice.control";
+ transition: LINEAR 0.6;
+ }
+
+ program {
+ name: "no_effect_voice_control_hide";
+ signal: "signal.pv.allshare.noeffect.voice.control.hide";
+ source: "pv.allshare.voice.control";
+ action: STATE_SET "default" 0.0;
+ target: "pv.allshare.voice.control";
+ transition: LINEAR 0.0;
+ }
+ program {
+ name: "rotate_icon_show";
+ signal: "signal.pv.normal.main.rotate.icon.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.rotate.icon";
+ }
+ program {
+ name: "volume_icon_show";
+ signal: "signal.pv.normal.main.volume.icon.portrait.show";
+ source: "*";
+ action: STATE_SET "portrait.show" 0.0;
+ target: "pv.normal.main.volume.icon";
+ //target: "pv.normal.main.subtitle";
+ }
+ program {
+ name: "volume_icon_show_landscape";
+ signal: "signal.pv.normal.main.volume.icon.landscape.show";
+ source: "*";
+ action: STATE_SET "landscape.show" 0.0;
+ target: "pv.normal.main.volume.icon";
+ //target: "pv.normal.main.subtitle";
+ }
+ program {
+ name: "rotate_icon_hide";
+ signal: "signal.pv.normal.main.rotate.icon.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.rotate.icon";
+ }
+ program {
+ name: "volume_icon_hide";
+ signal: "signal.pv.normal.main.volume.icon.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.volume.icon";
+ //target: "pv.normal.main.subtitle";
+ }
+ program{
+ name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.main.rotate.icon";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd1";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.main.volume.icon";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd2";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.main.lockscreen";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program {
+ name: "speed_on";
+ signal: "signal.pv.normal.main.speed.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.speed.rect";
+ target: "pv.normal.main.speed.txt";
+ }
+
+ program {
+ name: "speed_off";
+ signal: "signal.pv.normal.main.speed.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.speed.rect";
+ target: "pv.normal.main.speed.txt";
+ }
+
+ program {
+ name: "speed_changed";
+ signal: "signal.pv.normal.main.playingspeed.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.playingspeed.rect";
+ target: "pv.normal.main.playingspeed.txt";
+ }
+
+ program {
+ name: "speed_normal";
+ signal: "signal.pv.normal.main.playingspeed.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.playingspeed.rect";
+ target: "pv.normal.main.playingspeed.txt";
+ }
+ program {
+ name: "clicked_event";
+ signal: "mouse,clicked,1";
+ source: "pv.normal.main.playingspeed.rect";
+ source: "pv.normal.main.playingspeed.txt";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+
+ program {
+ name: "screen_portrait_on";
+ signal: "signal.pv.normal.main.screenshot.portrait.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.screenshot.portrait.line";
+ target: "pv.normal.main.screenshot.portrait.rect";
+ }
+
+ program {
+ name: "screen_landscape_on";
+ signal: "signal.pv.normal.main.screenshot.landscape.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.screenshot.landscape.line";
+ target: "pv.normal.main.screenshot.landscape.rect";
+ }
+
+ program {
+ name: "screen_mode_off";
+ signal: "signal.pv.normal.main.screenshot.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.screenshot.landscape.line";
+ target: "pv.normal.main.screenshot.landscape.rect";
+ target: "pv.normal.main.screenshot.portrait.line";
+ target: "pv.normal.main.screenshot.portrait.rect";
+ }
+#ifndef SUBTITLE_K_FEATURE
+ program {
+ name: "bookmark_on";
+ signal: "signal.pv.normal.main.bookmark.on";
+ source: "*";
+ action: STATE_SET "bookmark.on" 0.0;
+ target: "pv.normal.main.subtitle.bottom";
+ }
+
+ program {
+ name: "bookmark_off";
+ signal: "signal.pv.normal.main.bookmark.off";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.subtitle.bottom";
+ }
+#endif
+ program {
+ name: "control_show_finished";
+ action: SIGNAL_EMIT "signal.pv.normal.main.control.show.finish" "*";
+ }
+
+ program {
+ name: "control_hide_finished";
+ action: SIGNAL_EMIT "signal.pv.normal.main.control.hide.finish" "*";
+ }
+
+ program {
+ signal: "signal.pv.normal.lockscreen.show";
+ source: "*";
+ script {
+ set_state(PART:"pv.normal.main.lockscreen", "show", 0.0);
+ set_state(PART:"pv.normal.main.lockscreen.text", "show", 0.0);
+
+ }
+ }
+ program {
+ signal: "signal.pv.normal.lockscreen.hide";
+ source: "*";
+ script {
+ set_state(PART:"pv.normal.main.lockscreen", "default", 0.0);
+ set_state(PART:"pv.normal.main.lockscreen.text", "default", 0.0);
+ }
+ }
+
+ program {
+ signal: "signal.pv.normal.no.contents.show";
+ source: "*";
+ script {
+ set_state(PART:"pv.normal.main.no.contents", "show", 0.0);
+ set_state(PART:"pv.normal.main.no.contents.rect", "show", 0.0);
+ }
+ }
+ program {
+ signal: "signal.pv.normal.no.contents.hide";
+ source: "*";
+ script {
+ set_state(PART:"pv.normal.main.no.contents", "default", 0.0);
+ set_state(PART:"pv.normal.main.no.contents.rect", "default", 0.0);
+ }
+ }
+ } /* programs */
+
+ } /* group */
+
+ group {
+ name: "pv.normal.main.microseek.text";
+ images {
+ image: MICRO_CONTROL_IMG_BG COMP;
+ }
+ parts {
+ part {
+ name: "pv.normal.main.microseek.text.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 1 46;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.microseek.speed.text.bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.normal.main.microseek.text.bg"; to_y: "pv.normal.main.microseek.speed.text.left.padding";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.normal.main.microseek.text.bg"; to_y: "pv.normal.main.microseek.speed.text.left.padding";}
+ image { normal: MICRO_CONTROL_IMG_BG; border: 9 9 0 0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.microseek.speed.text.left.padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 46;
+ align: 0.0 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to : "pv.normal.main.microseek.text.bg";}
+ rel2 { relative: 0.0 46/(46+6+70); to : "pv.normal.main.microseek.text.bg";}
+ }
+ }
+
+ part {
+ name: "pv.normal.main.microseek.speed.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 1.0 0.0; to : "pv.normal.main.microseek.speed.text.left.padding";}
+ rel2 { relative: 0.0 1.0; to : "pv.normal.main.microseek.speed.text.right.padding";}
+ color: 255 255 255 255;
+ text {
+ min: 1 0;
+ size: 32;
+ text: "";
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+
+ part {
+ name: "pv.normal.main.microseek.speed.text.right.padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 46;
+ align: 1.0 0.0;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to : "pv.normal.main.microseek.text.bg";}
+ rel2 { relative: 1.0 46/(46+6+70); to : "pv.normal.main.microseek.text.bg";}
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ name: "microseek_text_show";
+ signal: "signal.pv.normal.main.microseek.text.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.microseek.speed.text";
+ target: "pv.normal.main.microseek.speed.text.bg";
+ }
+ program {
+ name: "microseek_text_hide";
+ signal: "signal.pv.normal.main.microseek.text.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.microseek.speed.text";
+ target: "pv.normal.main.microseek.speed.text.bg";
+ }
+ } /* programs */
+ } /* group */
+
+ group {
+ name: "pv.normal.main.microseek.image";
+ images {
+ image: MICRO_CONTROL_IMG_UP_1 COMP;
+ image: MICRO_CONTROL_IMG_UP_2 COMP;
+ image: MICRO_CONTROL_IMG_UP_3 COMP;
+ }
+ parts {
+ part {
+ name: "pv.normal.main.microseek.image.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 46 70;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.microseek.image.1";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 46 24;
+ max: 46 24;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to : "pv.normal.main.microseek.image.bg";}
+ rel2 { relative: 1.0 0.0; to : "pv.normal.main.microseek.image.bg";}
+ image.normal: MICRO_CONTROL_IMG_UP_1;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.microseek.image.2";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 46 24;
+ max: 46 24;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x : "pv.normal.main.microseek.image.bg"; to_y : "pv.normal.main.microseek.image.1"; offset: 0 -1;}
+ rel2 { relative: 1.0 1.0; to_x : "pv.normal.main.microseek.image.bg"; to_y : "pv.normal.main.microseek.image.1"; offset: 0 -1;}
+ image.normal: MICRO_CONTROL_IMG_UP_2;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.microseek.image.3";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 46 24;
+ max: 46 24;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x : "pv.normal.main.microseek.image.bg"; to_y : "pv.normal.main.microseek.image.2"; offset: 0 -1;}
+ rel2 { relative: 1.0 1.0; to_x : "pv.normal.main.microseek.image.bg"; to_y : "pv.normal.main.microseek.image.2"; offset: 0 -1;}
+ image.normal: MICRO_CONTROL_IMG_UP_3;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ name: "microseek_image_show";
+ signal: "signal.pv.normal.main.microseek.image.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.normal.main.microseek.image.1";
+ target: "pv.normal.main.microseek.image.2";
+ target: "pv.normal.main.microseek.image.3";
+ }
+ program {
+ name: "microseek_image_hide";
+ signal: "signal.pv.normal.main.microseek.image.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.normal.main.microseek.image.1";
+ target: "pv.normal.main.microseek.image.2";
+ target: "pv.normal.main.microseek.image.3";
+ }
+ } /* programs */
+ } /* group */
+
+#ifdef FLICK_JUMP
+ group {
+ name: "pv.normal.main.flickjump.seek";
+ images {
+ image: JUMP_IMG_L_1 COMP;
+ image: JUMP_IMG_L_2 COMP;
+ image: JUMP_IMG_L_3 COMP;
+ image: JUMP_IMG_R_1 COMP;
+ image: JUMP_IMG_R_2 COMP;
+ image: JUMP_IMG_R_3 COMP;
+ }
+ parts {
+ part {
+ name: "pv.normal.main.flickjump.seek.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 80 60;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.normal.main.flickjump.seek.img";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to : "pv.normal.main.flickjump.seek.bg"; }
+ rel2 { relative: 1.0 1.0; to : "pv.normal.main.flickjump.seek.bg"; }
+ image.normal: JUMP_IMG_L_3;
+ }
+ description {
+ state: "ff_default" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ image.normal: JUMP_IMG_L_3;
+ }
+ description {
+ state: "rew_default" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ image.normal: JUMP_IMG_R_3;
+ }
+ description {
+ state: "ff.jump3" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_L_3;
+ }
+ description {
+ state: "ff.jump2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_L_2;
+ }
+ description {
+ state: "ff.jump1" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_L_1;
+ }
+ description {
+ state: "rew.jump3" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_R_3;
+ }
+ description {
+ state: "rew.jump3" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_R_3;
+ }
+ description {
+ state: "rew.jump2" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_R_2;
+ }
+ description {
+ state: "rew.jump1" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: JUMP_IMG_R_1;
+ }
+ }
+ part {
+ name: "pv.normal.main.flickjump.seek.rewtext";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 88 34;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 ((60-34)/2)/60; to_x : "pv.normal.main.flickjump.seek.img"; to_y : "pv.normal.main.flickjump.seek.bg";}
+ rel2 { relative: 0.0 (60-((60-34)/2))/60; to_x : "pv.normal.main.flickjump.seek.img"; to_y : "pv.normal.main.flickjump.seek.bg";}
+ color: 255 255 255 255;
+ text {
+ min: 1 0;
+ size: 32;
+ text: "";
+ }
+ }
+ description {
+ state: "rew_default" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.normal.main.flickjump.seek.fftext";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 88 34;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 ((60-34)/2)/60; to_x : "pv.normal.main.flickjump.seek.img"; to_y : "pv.normal.main.flickjump.seek.bg";}
+ rel2 { relative: 1.0 (60-((60-34)/2))/60; to_x : "pv.normal.main.flickjump.seek.img"; to_y : "pv.normal.main.flickjump.seek.bg";}
+ color: 255 255 255 255;
+ text {
+ min: 1 0;
+ size: 32;
+ text: "5 sec";
+ }
+ }
+ description {
+ state: "ff_default" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ name: "jump.ff.step3";
+ signal: "signal.jump.ff.step3";
+ source: "*";
+ action: STATE_SET "ff.jump3" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ transition: LINEAR 0.2;
+ after: "jump.ff.step2";
+ }
+ program {
+ name: "jump.ff.step2";
+ signal: "signal.jump.ff.step2";
+ source: "*";
+ action: STATE_SET "ff.jump2" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ transition: LINEAR 0.2;
+ after: "jump.ff.step1";
+ }
+ program {
+ name: "jump.ff.step1";
+ signal: "signal.jump.ff.step1";
+ source: "*";
+ action: STATE_SET "ff.jump1" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ transition: LINEAR 0.2;
+ after: "jump.ff.end";
+ }
+ program {
+ name: "jump.ff.end";
+ signal: "signal.jump.ff.end";
+ source: "*";
+ action: STATE_SET "ff_default" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ script{
+ emit("ff_animation_done", "edje");
+ }
+ }
+ program {
+ name: "pv.normal.main.flickjump.ff";
+ signal: "signal.pv.normal.main.flickjump.ff";
+ source: "*";
+ action: STATE_SET "ff_default" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ target: "pv.normal.main.flickjump.seek.fftext";
+ after: "jump.ff.step3";
+ }
+
+ program {
+ name: "jump.rew.step3";
+ signal: "signal.jump.rew.step3";
+ source: "*";
+ action: STATE_SET "rew.jump3" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ transition: LINEAR 0.2;
+ after: "jump.rew.step2";
+ }
+ program {
+ name: "jump.rew.step2";
+ signal: "signal.jump.rew.step2";
+ source: "*";
+ action: STATE_SET "rew.jump2" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ transition: LINEAR 0.2;
+ after: "jump.rew.step1";
+ }
+ program {
+ name: "jump.rew.step1";
+ signal: "signal.jump.rew.step1";
+ source: "*";
+ action: STATE_SET "rew.jump1" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ transition: LINEAR 0.2;
+ after: "jump.rew.end";
+ }
+ program {
+ name: "jump.rew.end";
+ signal: "signal.jump.rew.end";
+ source: "*";
+ action: STATE_SET "rew_default" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ script{
+ emit("rew_animation_done", "edje");
+ }
+ }
+ program {
+ name: "pv.normal.main.flickjump.rew";
+ signal: "signal.pv.normal.main.flickjump.rew";
+ source: "*";
+ action: STATE_SET "rew_default" 0.0;
+ target: "pv.normal.main.flickjump.seek.img";
+ target: "pv.normal.main.flickjump.seek.rewtext";
+ after: "jump.rew.step3";
+ }
+ } /* programs */
+ } /* group */
+#endif
+
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-normal-top-control.edc b/playview/res/edc/playview/pv-normal-top-control.edc
new file mode 100644
index 0000000..a9cff5b
--- /dev/null
+++ b/playview/res/edc/playview/pv-normal-top-control.edc
@@ -0,0 +1,136 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+collections {
+ group {
+ name: "pv.normal.top";
+
+ parts {
+ part {
+ name: "pv.normal.top.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 0;
+ }
+ }
+
+ part {
+ name: "pv.normal.top.capture";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 63 63;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.5 1.0; to_y: "pv.normal.top.bg";}
+ rel2 { relative: 0.5 1.0; to_y: "pv.normal.top.bg";}
+ }
+ }
+
+ part {
+ name: "pv.normal.top.capture.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 30 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x : "pv.normal.top.capture";}
+ rel2 { relative: 1.0 1.0; to_x : "pv.normal.top.capture";}
+ color: 0 255 0 255;
+ }
+ }
+ part {
+ name: "pv.normal.top.capture.left.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 30 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x : "pv.normal.top.capture";}
+ rel2 { relative: 0.0 1.0; to_x : "pv.normal.top.capture";}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.top.capture.rew";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 63 63;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x : "pv.normal.top.capture.left.padding"; to_y: "pv.normal.top.capture"; }
+ rel2 { relative: 0.0 0.5; to_x : "pv.normal.top.capture.left.padding"; to_y: "pv.normal.top.capture"; }
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.top.capture.ff";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 63 63;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x : "pv.normal.top.capture.right.padding"; to_y: "pv.normal.top.capture"; }
+ rel2 { relative: 1.0 0.5; to_x : "pv.normal.top.capture.right.padding"; to_y: "pv.normal.top.capture"; }
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.normal.top.rotate.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to_y: "pv.normal.top.bg";}
+ rel2 { relative: 1.0 1.0; to_y: "pv.normal.top.bg";}
+ color: 255 0 0 255;
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-popup.edc b/playview/res/edc/playview/pv-popup.edc
new file mode 100644
index 0000000..b15bfa0
--- /dev/null
+++ b/playview/res/edc/playview/pv-popup.edc
@@ -0,0 +1,391 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define PV_POPUP_PROGRESSVIEW_CONTENT_MIN 0 93
+#define PV_POPUP_PROGRESSVIEW_WIDTH_HEIGHT_MIN 0 163
+#define PV_POPUP_PROGRESSVIEW_TEXT_LEFT_RIGHT_MAX 120 60
+
+#define PV_POPUP_ENTRY_CONTENT_MIN 0 100
+
+#define PV_POPUP_CAPTION_WIDTH_HEIGHT_MIN 614 135
+#define PV_POPUP_CAPTION_WIN_WIDTH_HEIGHT_MIN 514 95
+#define PV_POPUP_BG_WIDTH_HEIGHT_MIN 270 60
+#define PV_POPUP_LANDSCAPE_BG_WIDTH_HEIGHT_MIN 760 60
+#define PV_POPUP_LINE_WIDTH_HEIGHT_MIN 0 1
+#define PV_POPUP_TITLE_WIDTH_HEIGHT_MIN 0 72
+#define PV_GENLIST_LIST_LINE1_POPUP_COLOR 211 209 203 255
+
+#define POPUP_BASE_DEFAULT_TEXT_FONT_SIZE_INC 20
+collections {
+ group {
+ name: "pv.popup.progress";
+ parts {
+ part {
+ name:"bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_PROGRESSVIEW_WIDTH_HEIGHT_MIN;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pad_l";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 20 0;
+ max: 20 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 0.0 1.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 20 0;
+ max: 20 0;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_PROGRESSVIEW_CONTENT_MIN;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 1.0 0.0; to_x: "pad_l"; to_y: "bg"; }
+ rel2 { relative: 0.0 0.0; to_x: "pad_r"; to_y: "bg"; }
+ }
+ }
+
+ part {
+ name: "elm.text.right";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_PROGRESSVIEW_TEXT_LEFT_RIGHT_MAX;
+ fixed: 1 1;
+ color: 0 0 0 255;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "elm.swallow.content"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "elm.swallow.content"; }
+ text {
+ font: "Tizen:style=Medium";
+ size: 36;
+ min: 0 0;
+ align: 1.0 0.0;
+ }
+
+ }
+ }
+
+ }
+ } /* group */
+
+ group {
+ name: "pv.popup.entry";
+ parts {
+ part {
+ name:"bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_PROGRESSVIEW_WIDTH_HEIGHT_MIN;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pad_l";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 26 0;
+ max: 32 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 0.0 1.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 26 0;
+ max: 26 0;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_PROGRESSVIEW_CONTENT_MIN;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pad_l"; to_y: "bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "pad_r"; to_y: "bg"; }
+ }
+ }
+
+ }
+ } /* group */
+
+ group {
+ name: "pv.popup.caption";
+ parts {
+ part {
+ name:"bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_BG_WIDTH_HEIGHT_MIN;
+ color: 0 0 0 0;
+ }
+ description {
+ state: "landscape" 0.0;
+ min: PV_POPUP_LANDSCAPE_BG_WIDTH_HEIGHT_MIN;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "elm.caption.preview.bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ //rel1 { relative: 1.0 0.0; to_x: "pad_l"; to_y: "bg"; }
+ //rel2 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "bg"; }
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ image { normal: "genlist/preview_settings_bg.png";}
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ //rel1 { relative: 1.0 0.0; to_x: "pad_l"; to_y: "bg"; }
+ //rel2 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "bg"; }
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ } /* parts*/
+ }
+ group
+ {
+ name: "navi_texts";
+ styles {
+ style { name: "navi_title_style";
+ base: "font=Tizen:style=Regular font_size=15 align=center color=#FFFFFF wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "tab" "\t";
+ }
+ }
+ parts{
+ part{
+ name: "navi_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 115 167 191 255;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ }
+ part { name: "navi_text";
+ type: TEXTBLOCK;
+ mouse_events: 1;
+ scale:1;
+ description { state: "default" 0.0;
+ text {
+ style: "navi_title_style";
+ align: 0.5 0.5;
+ }
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ align: 0.5 0.5;
+ }
+ }
+ } /* parts */
+ programs
+ {
+ program
+ {
+ name: "state_changer";
+ signal: "mouse,down,1";
+ source: "navi_text";
+ action: SIGNAL_EMIT "elm,action,click1" "navi_text";
+ }
+ } /* programs */
+ }
+ group {
+ name: "pv.popup.title";
+ styles {
+ style { name: "popup_title_style";
+ base: "font=Tizen:style=Regular align=center font_size="POPUP_BASE_DEFAULT_TEXT_FONT_SIZE_INC" color=#FFFFFF wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "tab" "\t";
+ }
+ }
+
+ parts {
+ part {
+ name:"elm.bg.title";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ max:440 50;
+ color: 61 185 204 255;
+ }
+ }
+ part {
+ name: "pad_l";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 0;
+ max: 8 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.bg.title";}
+ rel2 { relative: 0.0 1.0; to: "elm.bg.title";}
+ }
+ }
+
+ part {
+ name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 8 0;
+ max: 8 0;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 0.0; to: "elm.bg.title";}
+ rel2 { relative: 1.0 1.0; to: "elm.bg.title";}
+ }
+ }
+
+ part { name: "elm.swallow.title.left.icon";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 0; to: "elm.bg.title";}
+ rel2 { relative: 0.25 1; to: "elm.bg.title";}
+ min: 30 0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ }
+ }
+
+ part { name: "elm.swallow.title.right.icon";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.75 0; to: "elm.bg.title";}
+ rel2 { relative: 1 1; to: "elm.bg.title";}
+ min: 30 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ }
+ }
+
+ part { name: "elm.text.title";
+ type: TEXTBLOCK;
+ scale:1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ text {
+ style: "popup_title_style";
+ size: POPUP_BASE_DEFAULT_TEXT_FONT_SIZE_INC;
+ align: 0.5 0.5;
+ }
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.swallow.title.left.icon";
+ to_y: "elm.bg.title";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.swallow.title.right.icon";
+ to_y: "elm.bg.title";
+ }
+ align: 0.5 0.5;
+ }
+ }
+ } /* parts*/
+ }
+} /* collections */
diff --git a/playview/res/edc/playview/pv-progressbar.edc b/playview/res/edc/playview/pv-progressbar.edc
new file mode 100644
index 0000000..d780cb9
--- /dev/null
+++ b/playview/res/edc/playview/pv-progressbar.edc
@@ -0,0 +1,496 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_BOLD_TYPE "Tizen:style=Bold"
+#define FONT_MEDIUM_TYPE "Tizen:style=Medium"
+#define FONT_REGULAR_TYPE "Tizen:style=Regular"
+#define FONT_ROMAN_TYPE "Tizen:style=Roman"
+#define FONT_LIGHT_TYPE "Tizen:style=Light"
+
+/* chageable GUI
+#define FONT_START_COLOR 0 159 255 255
+#define FONT_END_COLOR 248 246 240 255
+*/
+
+#define PLAYER_PROGRESSBAR_H 4
+#define PLAYER_CIRCLE_W 26
+#define PLAYER_CIRCLE_H 26
+#define PLAYER_CIRCLE_PRESS_W 26
+#define PLAYER_CIRCLE_PRESS_H 26
+
+#define IMG_PLAYER_PROGRESSBAR_BG "progressbar/core_progress_bar.#.png"
+#define IMG_PLAYER_PROGRESSBAR_HANDLE "progressbar/T01_2_control_progress_handle.png"
+#define IMG_PLAYER_PROGRESSBAR_HANDLE_PRESS "progressbar/T01_2_control_progress_handle_press.png"
+
+collections {
+ group {
+ name: "pv.progress";
+
+ parts {
+ part {
+ name: "pv.progress.bg";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ 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: "pv.progress.playing.txt.left.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 12 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y : "pv.progress.bg";}
+ rel2 { relative: 0.0 1.0; to_y : "pv.progress.bg";}
+ color: 255 0 0 255;
+ }
+
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 12 0;
+ }
+ }
+
+ part {
+ name: "pv.progress.playing.txt.landscape.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 12 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to_x : "pv.progress.playing.txt"; to_y : "pv.progress.bg";}
+ rel2 { relative: 1.0 1.0; to_x : "pv.progress.playing.txt"; to_y : "pv.progress.bg";}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.progress.duration.txt.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 12 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to_y : "pv.progress.bg";}
+ rel2 { relative: 1.0 1.0; to_y : "pv.progress.bg";}
+ color: 255 0 0 255;
+ }
+
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 12 0;
+ }
+ }
+
+ part {
+ name: "pv.progress.duration.txt.landscape.left.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 12 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x : "pv.progress.duration.txt"; to_y : "pv.progress.bg";}
+ rel2 { relative: 0.0 1.0; to_x : "pv.progress.duration.txt"; to_y : "pv.progress.bg";}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.progress.bottom.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 8;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x : "pv.progress.bg";}
+ rel2 { relative: 1.0 1.0; to_x : "pv.progress.bg";}
+ color: 255 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.progress.playing.txt";
+ type: TEXT;
+ mouse_events: 1;
+ scale: 1;
+ effect: FAR_SHADOW BOTTOM;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 90 16;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 1.0 1.0; offset: 0 -40; to_x : "pv.progress.playing.txt.left.padding"; to_y : "pv.progress.bottom.padding";}
+ rel2 { relative: 1.0 1.0; offset: 0 -40; to_x : "pv.progress.playing.txt.left.padding"; to_y : "pv.progress.bottom.padding";}
+ color: 5 131 198 255;
+ text {
+ size: 12;
+ text: "00:00:00";
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; offset: 0 40; to_x : "pv.progress.playing.txt.left.padding"; to_y : "pv.progress.bg";}
+ rel2 { relative: 1.0 0.5; offset: 0 40; to_x : "pv.progress.playing.txt.left.padding"; to_y : "pv.progress.bg";}
+ }
+ }
+
+ part {
+ name: "pv.progress.duration.txt";
+ type: TEXT;
+ mouse_events: 1;
+ scale: 1;
+ effect: FAR_SHADOW BOTTOM;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 90 16;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 0.0 1.0; offset: 0 -40; to_x : "pv.progress.duration.txt.right.padding"; to_y : "pv.progress.bottom.padding";}
+ rel2 { relative: 0.0 1.0; offset: 0 -40; to_x : "pv.progress.duration.txt.right.padding"; to_y : "pv.progress.bottom.padding";}
+ color: 179 179 179 255;
+ text {
+ size: 12;
+ text: "--:--:--";
+ align: 1.0 0.5;
+ }
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; offset: 0 40; to_x : "pv.progress.duration.txt.right.padding"; to_y : "pv.progress.bg";}
+ rel2 { relative: 0.0 0.5; offset: 0 40; to_x : "pv.progress.duration.txt.right.padding"; to_y : "pv.progress.bg";}
+ }
+ }
+
+ part {
+ name: "pv.progress.bar.bg";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 PLAYER_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.02 0.0; to_x : "pv.progress.playing.txt"; to_y : "pv.progress.bg";}
+ rel2 { relative: 0.98 0.0; to_x : "pv.progress.duration.txt"; to_y : "pv.progress.bg";}
+ image { normal: IMG_PLAYER_PROGRESSBAR_BG;}
+ color: 179 179 179 255;
+ }
+
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.02 0.5; to_x : "pv.progress.playing.txt"; to_y : "pv.progress.bg";}
+ rel2 { relative: 0.98 0.5; to_x : "pv.progress.duration.txt"; to_y : "pv.progress.bg";}
+ }
+ }
+ part {
+ name: "pv.progress.step";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 PLAYER_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; offset : -2 -1; }
+ rel2 { relative: 0.5 1.0; to_x: "pv.progress.circle"; to_y: "pv.progress.bar.bg"; }
+ image { normal: IMG_PLAYER_PROGRESSBAR_BG;}
+ color: 0 166 191 255;
+ }
+
+ description {
+ state: "progress_opacity_60" 0.0;
+ inherit: "default" 0.0;
+ }
+
+ }
+ part {
+ name: "pv.progress.confine.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ rel2 { relative: 1.0 1.0; to: "pv.progress.bar.bg"; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "pv.progress.circle";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 14 11;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: "pv.progress.playing"; to_y: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.5 0.5; to_x: "pv.progress.playing"; to_y: "pv.progress.bar.bg"; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "pv.progress.playing";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 6;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ }
+ dragable {
+ confine: "pv.progress.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "pv.progress.buffering.step";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 2;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.5 1.0; to_x: "pv.progress.buffering.circle"; to_y: "pv.progress.bar.bg"; }
+ color: 102 102 102 77;// current opacity 30% .128 128 128 255;
+ }
+ }
+
+ part {
+ name: "pv.progress.buffering.circle";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 14 11;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: "pv.progress.buffering"; to_y: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.5 0.5; to_x: "pv.progress.buffering"; to_y: "pv.progress.bar.bg"; }
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.progress.buffering.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ rel2 { relative: 1.0 1.0; to: "pv.progress.bar.bg"; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "pv.progress.buffering";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 11;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.0 0.0; to: "pv.progress.bar.bg"; }
+ }
+ dragable {
+ confine: "pv.progress.buffering.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "pv.progress.point";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: PLAYER_CIRCLE_W PLAYER_CIRCLE_H;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: "pv.progress.circle"; to_y: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.5 0.5; to_x: "pv.progress.circle"; to_y: "pv.progress.bar.bg"; }
+ image { normal: IMG_PLAYER_PROGRESSBAR_HANDLE;}
+ color: 0 166 191 255;
+ }
+ }
+ part {
+ name: "pv.progress.press.point";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: PLAYER_CIRCLE_PRESS_W PLAYER_CIRCLE_PRESS_H;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to_x: "pv.progress.circle"; to_y: "pv.progress.bar.bg"; }
+ rel2 { relative: 0.5 0.5; to_x: "pv.progress.circle"; to_y: "pv.progress.bar.bg"; }
+ image { normal: IMG_PLAYER_PROGRESSBAR_HANDLE_PRESS;}
+ color: 0 166 191 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible : 1;
+ }
+ }
+ part {
+ name: "pv.progress.point.focus";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 31 31;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "pv.progress.point"; }
+ rel2 { relative: 1.0 1.0; to: "pv.progress.point"; }
+ color: 255 255 255 0;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ name: "portrait_mode";
+ signal: "signal.pv.normal.progress.portrait.mode";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.progress.playing.txt.left.padding";
+ target: "pv.progress.duration.txt.right.padding";
+ target: "pv.progress.playing.txt";
+ target: "pv.progress.duration.txt";
+ target: "pv.progress.bar.bg";
+ }
+
+ program {
+ name: "landscape_mode";
+ signal: "signal.pv.normal.progress.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "pv.progress.playing.txt.left.padding";
+ target: "pv.progress.duration.txt.right.padding";
+ target: "pv.progress.playing.txt";
+ target: "pv.progress.duration.txt";
+ target: "pv.progress.bar.bg";
+ }
+
+ program {
+ name: "progress_opacity_default";
+ signal: "signal.pv.normal.progress.opacity_default";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.progress.step";
+ }
+
+ program {
+ name: "progress_opacity_60";
+ signal: "signal.pv.normal.progress.opacity_60";
+ source: "*";
+ action: STATE_SET "progress_opacity_60" 0.0;
+ target: "pv.progress.step";
+ }
+
+ program {
+ name: "pv.progress.click.anim";
+ signal: "signal.pv.normal.progress.click";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.progress.press.point";
+ }
+ program {
+ name: "pv.progress.unclick.anim";
+ signal: "signal.pv.normal.progress.unclick";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.progress.press.point";
+ }
+ } /* programs */
+ } /* group */
+} /* collections */
+
+
diff --git a/playview/res/edc/playview/pv-resource.edc b/playview/res/edc/playview/pv-resource.edc
new file mode 100644
index 0000000..0d2aa1e
--- /dev/null
+++ b/playview/res/edc/playview/pv-resource.edc
@@ -0,0 +1,448 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-macro.edc"
+
+#define VP_PLAY_MULTI_VIEW_CLOSE "multi/my_title_icon_delete.png"
+#define VP_PLAY_MULTI_VIEW_FULLSIZE "multi/my_title_icon_maximize.png"
+#define VP_PLAY_MULTI_VIEW_RESIZE "multi/mw_frame_handler.png"
+#define VP_PLAY_MULTI_VIEW_RESIZE_PRESS "multi/mw_frame_handler_press.png"
+#define VP_PLAY_MULTI_VIEW_MINSIZE "multi/my_title_icon_mimimize.png"
+
+#define VP_PLAY_MULTI_VIEW_FF "multi/T01_2_mw_control_icon_ff.png"
+#define VP_PLAY_MULTI_VIEW_FF_PRESS "multi/T01_2_mw_control_icon_ff_press.png"
+#define VP_PLAY_MULTI_VIEW_REW "multi/T01_2_mw_control_icon_rew.png"
+#define VP_PLAY_MULTI_VIEW_REW_PRESS "multi/T01_2_mw_control_icon_rew_press.png"
+#define VP_PLAY_MULTI_VIEW_PLAY "multi/T01_2_mw_control_icon_play.png"
+#define VP_PLAY_MULTI_VIEW_PLAY_PRESS "multi/T01_2_mw_control_icon_play_press.png"
+#define VP_PLAY_MULTI_VIEW_PAUSE "multi/T01_2_mw_control_icon_pause.png"
+#define VP_PLAY_MULTI_VIEW_PAUSE_PRESS "multi/T01_2_mw_control_icon_pause_press.png"
+
+#define VP_PLAY_NORMAL_RES_CONTROL_BG "control/T01-2_control_bg.png"
+#define VP_PLAY_NORMAL_RES_RESUME "control/T01-2_control_circle_icon_play.png"
+#define VP_PLAY_NORMAL_RES_PAUSE "control/T01-2_control_circle_icon_pause.png"
+#define VP_PLAY_NORMAL_RES_PREV "control/T01-2_control_circle_icon_rewind.png"
+#define VP_PLAY_NORMAL_RES_NEXT "control/T01-2_control_circle_icon_next.png"
+
+#define VP_PLAY_NORMAL_RES_VOLUME "function/T01_2_control_icon_volume.png"
+#define VP_PLAY_NORMAL_RES_VOLUME_PRESS "function/T01_2_control_icon_volume_press.png"
+#define VP_PLAY_NORMAL_RES_VOLUME_DIM "function/T01_2_control_icon_volume_dim.png"
+
+#define VP_PLAY_NORMAL_RES_MUTE "function/T01-2_control_icon_mute.png"
+#define VP_PLAY_NORMAL_RES_MUTE_PRESS "function/T01-2_control_icon_mute_press.png"
+#define VP_PLAY_NORMAL_RES_MUTE_DIM "function/T01-2_control_icon_mute_dim.png"
+
+
+#define VP_PLAY_NORMAL_RES_BOOKMARK "function/T01_2_control_icon_bookmark.png"
+#define VP_PLAY_NORMAL_RES_BOOKMARK_PRESS "function/T01_2_control_icon_bookmark_press.png"
+#define VP_PLAY_NORMAL_RES_BOOKMARK_DIM "function/T01_2_control_icon_bookmark_dim.png"
+
+#define VP_PLAY_NORMAL_RES_POPUP_PLAYER "function/player_popup_view_icon_nomal.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_1_MODE "function/T01_2_control_icon_screenmode03.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_1_MODE_PRESS "function/T01_2_control_icon_screenmode03_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_1_MODE_DIM "function/T01_2_control_icon_screenmode03_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_2_MODE "function/T01_2_control_icon_screenmode02.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_2_MODE_PRESS "function/T01_2_control_icon_screenmode02_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_2_MODE_DIM "function/T01_2_control_icon_screenmode02_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_3_MODE "function/T01_2_control_icon_screenmode.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_3_MODE_PRESS "function/T01_2_control_icon_screenmode_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_3_MODE_DIM "function/T01_2_control_icon_screenmode_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_4_MODE "function/T01_2_control_icon_screenmode04.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_4_MODE_PRESS "function/T01_2_control_icon_screenmode04_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_4_MODE_DIM "function/T01_2_control_icon_screenmode04_dim.png"
+
+#define VP_PLAY_NORMAL_RES_MULTI_MODE "function/T01_2_control_icon_multi_window.png"
+#define VP_PLAY_NORMAL_RES_MULTI_MODE_PRESS "function/T01_2_control_icon_multi_window_press.png"
+#define VP_PLAY_NORMAL_RES_MULTI_MODE_DIM "function/T01_2_control_icon_multi_window_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SHARE "function/T01_2_control_icon_share.png"
+#define VP_PLAY_NORMAL_RES_SHARE_PRESS "function/T01_2_control_icon_share_press.png"
+#define VP_PLAY_NORMAL_RES_SHARE_DIM "function/T01_2_control_icon_share_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SOUND_ALIVE "function/T01_2_control_icon_soundalive.png"
+#define VP_PLAY_NORMAL_RES_SOUND_ALIVE_PRESS "function/T01_2_control_icon_soundalive_press.png"
+#define VP_PLAY_NORMAL_RES_SOUND_ALIVE_DIM "function/T01_2_control_icon_soundalive_dim.png"
+
+#define VP_PLAY_NORMAL_RES_REPEAT_OFF "function/T01_2_control_icon_repeat_mode.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_OFF_PRESS "function/T01_2_control_icon_repeat_mode_press.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_OFF_DIM "function/T01_2_control_icon_repeat_mode_dim.png"
+
+#define VP_PLAY_NORMAL_RES_REPEAT_ONE "function/T01_2_control_icon_repeat_once.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ONE_PRESS "function/T01_2_control_icon_repeat_once_press.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ONE_DIM "function/T01_2_control_icon_repeat_once_dim.png"
+
+#define VP_PLAY_NORMAL_RES_REPEAT_ALL "function/T01_2_control_icon_repeat_all.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ALL_PRESS "function/T01_2_control_icon_repeat_all_press.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ALL_DIM "function/T01_2_control_icon_repeat_all_dim.png"
+
+#define VP_PLAY_NORMAL_RES_TRIM "function/T01_2_control_icon_trim.png"
+#define VP_PLAY_NORMAL_RES_TRIM_PRESS "function/T01_2_control_icon_trim_press.png"
+#define VP_PLAY_NORMAL_RES_TRIM_DIM "function/T01_2_control_icon_trim_dim.png"
+
+#define VP_PLAY_NORMAL_RES_ROTATE "button/T01_2_icon_rotate.png"
+#define VP_PLAY_NORMAL_RES_ROTATE_PRESS "button/T01_2_icon_rotate_press.png"
+#define VP_PLAY_NORMAL_RES_ROTATE_DIM "button/T01_2_icon_rotate_dim.png"
+
+#define VP_PLAY_NAVIFRAME_RES_ALLSHARE "button/T01_2_icon_Near_by_device.png"
+#define VP_PLAY_NAVIFRAME_RES_ALLSHARE_PRESS "button/T01_2_icon_Near_by_device_press.png"
+#define VP_PLAY_NAVIFRAME_RES_ALLSHARE_DIM "button/T01_2_icon_Near_by_device_dim.png"
+
+#define VP_PLAY_NAVIFRAME_RES_SAVE "button/T01_2_icon_check.png"
+#define VP_PLAY_NAVIFRAME_RES_SAVE_PRESS "button/T01_2_icon_check_press.png"
+#define VP_PLAY_NAVIFRAME_RES_SAVE_DIM "button/T01_2_icon_check_dim.png"
+
+#define VP_PLAY_NAVIFRAME_RES_BACK "button/T01_2_icon_close.png"
+#define VP_PLAY_NAVIFRAME_RES_BACK_PRESS "button/T01_2_icon_close_press.png"
+#define VP_PLAY_NAVIFRAME_RES_BACK_DIM "button/T01_2_icon_close_dim.png"
+
+
+#define VP_PLAY_BOOKMARK_RES_ADD "bookmark/T01_2_icon_bookmark_add.png"
+#define VP_PLAY_BOOKMARK_RES_ADD_PRESS "bookmark/T01_2_icon_bookmark_add_press.png"
+#define VP_PLAY_BOOKMARK_RES_DEL "bookmark/T01_2_button_remove.png"
+#define VP_PLAY_BOOKMARK_RES_DEL_PRESS "bookmark/T01_2_button_remove_press.png"
+
+#define VP_PLAY_TRIM_RES_REW "control/T01_2_control_circle_icon_reverse.png"
+#define VP_PLAY_TRIM_RES_FF "control/T01_2_control_circle_icon_forward.png"
+
+#define VP_PLAY_SENSOR_RES_TRUN_OVER_01 "sensor/B15_turn_over_01.png"
+#define VP_PLAY_SENSOR_RES_TRUN_OVER_02 "sensor/B15_turn_over_02.png"
+#define VP_PLAY_SENSOR_RES_TRUN_OVER_03 "sensor/B15_turn_over_03.png"
+
+#define VP_PLAY_ALLSHARE_MY_DEVICE "nearby_device/T02_Player_Nearby_device_01.png"
+#define VP_PLAY_ALLSHARE_TV_DEVICE "nearby_device/T02_Player_Nearby_device_02.png"
+
+#define VP_PLAY_ALLSHARE_DEVICE_TV_POPUP "allshare/device/120x120/U04_device_TV.png"
+#define VP_PLAY_ALLSHARE_DEVICE_BD_POPUP "allshare/device/120x120/U04_device_BD.png"
+#define VP_PLAY_ALLSHARE_DEVICE_LFD_POPUP "allshare/device/120x120/U04_device_LFD.png"
+#define VP_PLAY_ALLSHARE_DEVICE_STB_POPUP "allshare/device/120x120/U04_device_STB.png"
+#define VP_PLAY_ALLSHARE_DEVICE_MOBILE_POPUP "allshare/device/120x120/U04_device_Mobile.png"
+#define VP_PLAY_ALLSHARE_DEVICE_TABLET_POPUP "allshare/device/120x120/U04_device_Tablet.png"
+#define VP_PLAY_ALLSHARE_DEVICE_DONGLE_POPUP "allshare/device/120x120/U04_device_Dongle.png"
+#define VP_PLAY_ALLSHARE_DEVICE_CAMERA_POPUP "allshare/device/120x120/U04_device_Camera.png"
+#define VP_PLAY_ALLSHARE_DEVICE_CAMCORDER_POPUP "allshare/device/120x120/U04_device_Camcorder.png"
+#define VP_PLAY_ALLSHARE_DEVICE_REF_POPUP "allshare/device/120x120/U04_device_REF.png"
+#define VP_PLAY_ALLSHARE_DEVICE_AC_WALL_POPUP "allshare/device/120x120/U04_device_AC_Wall.png"
+#define VP_PLAY_ALLSHARE_DEVICE_WM_POPUP "allshare/device/120x120/U04_device_WM.png"
+#define VP_PLAY_ALLSHARE_DEVICE_ROBOT_TV_POPUP "allshare/device/120x120/U04_device_ROBOT_VC.png"
+#define VP_PLAY_ALLSHARE_DEVICE_PC_POPUP "allshare/device/120x120/U04_device_PC.png"
+#define VP_PLAY_ALLSHARE_DEVICE_UNKNOWN_POPUP "allshare/device/120x120/U04_device_None_DNS.png"
+
+#define VP_PLAY_ALLSHARE_DEVICE_TV_ITEM "allshare/device/81x81/U04_device_TV.png"
+#define VP_PLAY_ALLSHARE_DEVICE_BD_ITEM "allshare/device/81x81/U04_device_BD.png"
+#define VP_PLAY_ALLSHARE_DEVICE_LFD_ITEM "allshare/device/81x81/U04_device_LFD.png"
+#define VP_PLAY_ALLSHARE_DEVICE_STB_ITEM "allshare/device/81x81/U04_device_STB.png"
+#define VP_PLAY_ALLSHARE_DEVICE_MOBILE_ITEM "allshare/device/81x81/U04_device_Mobile.png"
+#define VP_PLAY_ALLSHARE_DEVICE_TABLET_ITEM "allshare/device/81x81/U04_device_Tablet.png"
+#define VP_PLAY_ALLSHARE_DEVICE_DONGLE_ITEM "allshare/device/81x81/U04_device_Dongle.png"
+#define VP_PLAY_ALLSHARE_DEVICE_CAMERA_ITEM "allshare/device/81x81/U04_device_Camera.png"
+#define VP_PLAY_ALLSHARE_DEVICE_CAMCORDER_ITEM "allshare/device/81x81/U04_device_Camcorder.png"
+#define VP_PLAY_ALLSHARE_DEVICE_REF_ITEM "allshare/device/81x81/U04_device_REF.png"
+#define VP_PLAY_ALLSHARE_DEVICE_AC_WALL_ITEM "allshare/device/81x81/U04_device_AC_Wall.png"
+#define VP_PLAY_ALLSHARE_DEVICE_WM_ITEM "allshare/device/81x81/U04_device_WM.png"
+#define VP_PLAY_ALLSHARE_DEVICE_ROBOT_TV_ITEM "allshare/device/81x81/U04_device_ROBOT_VC.png"
+#define VP_PLAY_ALLSHARE_DEVICE_PC_ITEM "allshare/device/81x81/U04_device_PC.png"
+#define VP_PLAY_ALLSHARE_DEVICE_UNKNOWN_ITEM "allshare/device/81x81/U04_device_None_DNS.png"
+
+#define VP_PLAY_CTX_ADD_TO_HOME "more/icon_add_to_home.png"
+#define VP_PLAY_CTX_CHAPTER_PREVIEW "more/icon_chapter_preview.png"
+#define VP_PLAY_CTX_DETAIL "more/icon_detail.png"
+#define VP_PLAY_CTX_DOWNLOAD "more/icon_download.png"
+#define VP_PLAY_CTX_SETTING "more/icon_setting.png"
+#define VP_PLAY_CTX_SHARE_VIA "more/icon_share_via.png"
+#define VP_PLAY_CTX_TRIM "more/icon_trim.png"
+#define VP_PLAY_CTX_CONNECTION_INFO "more/icon_nearbydevices.png"
+
+#define VP_PLAY_NORMAL_RES_CAPTURE "capture/T01_2_icon_capture.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_PRESS "capture/T01_2_icon_capture_press.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_DIM "capture/T01_2_icon_capture_dim.png"
+
+#define VP_PLAY_NORMAL_RES_CAPTURE_REW "capture/T01-2_icon_left.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_REW_PRESS "capture/T01-2_icon_left_press.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_REW_DIM "capture/T01-2_icon_left_dim.png"
+
+#define VP_PLAY_NORMAL_RES_CAPTURE_FF "capture/T01-2_icon_right.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_FF_PRESS "capture/T01-2_icon_right_press.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_FF_DIM "capture/T01-2_icon_right_dim.png"
+
+#define VP_PLAY_RES_BUTTON_ADD "button/T01-2_play_popup_icon_plus.png"
+#define VP_PLAY_RES_BUTTON_ADD_PRESS "button/T01-2_play_popup_icon_plus_press.png"
+
+#define VP_PLAY_RES_BUTTON_DEL "button/T01-2_play_popup_icon_minus.png"
+#define VP_PLAY_RES_BUTTON_DEL_PRESS "button/T01-2_play_popup_icon_minus_press.png"
+
+#define VP_PLAY_TAG_BUDDY_DEAFULT "tag/T01-1_Tag_buddy_settings_bg.png"
+#define VP_PLAY_TAG_BUDDY_LOGO "tag/T01_2_icon_tag_buddy_cplogo.PNG"
+#define VP_PLAY_TAG_BUDDY_LOGO_JP "tag/U07_weather_logo.png"
+
+
+#define VP_PLAY_NORMAL_RES_LOCK "button/T01_2_icon_lock.png"
+#define VP_PLAY_NORMAL_RES_LOCK_PRESS "button/T01_2_icon_lock_press.png"
+
+#define VP_PLAY_NORMAL_RES_BLUETOOTH_HEADSET "button/T01_2_icon_bluetooth_headset.png"
+#define VP_PLAY_NORMAL_RES_EARPHONE "button/T02_icon_soundPath.png"
+#define VP_PLAY_NORMAL_RES_SPEAKER "button/T02_icon_speaker.png"
+#define VP_PLAY_NORMAL_RES_DMC_ICON "mini_controller/A01_15_popup_No_device.png"
+#define VP_PLAY_NORMAL_RES_AUDIO_ONLY "sound_only.png"
+#define VP_PLAY_NORMAL_RES_ERROR_IMAGE "player_error_screen.png"
+
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_00 "brightness/quick_icon_brightness_00.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_01 "brightness/quick_icon_brightness_01.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_02 "brightness/quick_icon_brightness_02.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_03 "brightness/quick_icon_brightness_03.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_04 "brightness/quick_icon_brightness_04.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_05 "brightness/quick_icon_brightness_05.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_06 "brightness/quick_icon_brightness_06.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_07 "brightness/quick_icon_brightness_07.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_08 "brightness/quick_icon_brightness_08.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_09 "brightness/quick_icon_brightness_09.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_10 "brightness/quick_icon_brightness_10.png"
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_11 "brightness/quick_icon_brightness_11.png"
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+group { \
+ name: FILE_NAME; \
+ images.image: FILE_NAME LOSSY 85; \
+ parts { \
+ part { \
+ name: "image"; \
+ description { \
+ state: "default" 0.0; \
+ image.normal: FILE_NAME; \
+ aspect: 1 1; \
+ aspect_preference: BOTH; \
+ } \
+ } \
+ } \
+}
+
+#define RESOURCE_IMAGE_COMP( FILE_NAME ) \
+ group { \
+ name: FILE_NAME; \
+ images.image: FILE_NAME COMP; \
+ parts { \
+ part { name: "image"; \
+ description { \
+ state: "default" 0.0; \
+ image.normal: FILE_NAME; \
+ aspect_preference: VERTICAL; \
+ } \
+ } \
+ } \
+ }
+
+
+collections {
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_CLOSE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_FULLSIZE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_RESIZE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_RESIZE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_MINSIZE);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_FF);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_FF_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_REW);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_REW_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_PLAY);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_PLAY_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_PAUSE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_MULTI_VIEW_PAUSE_PRESS);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_ALLSHARE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_ALLSHARE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_ALLSHARE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_SAVE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_SAVE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_SAVE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_BACK);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_BACK_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NAVIFRAME_RES_BACK_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_RESUME);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_PAUSE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_PREV);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_NEXT);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_VOLUME);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_VOLUME_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_VOLUME_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_MUTE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_MUTE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_MUTE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_BOOKMARK);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_BOOKMARK_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_BOOKMARK_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_POPUP_PLAYER);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_1_MODE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_1_MODE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_1_MODE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_2_MODE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_2_MODE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_2_MODE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_3_MODE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_3_MODE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_3_MODE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_4_MODE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_4_MODE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SCREEN_4_MODE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_MULTI_MODE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_MULTI_MODE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_MULTI_MODE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SHARE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SHARE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SHARE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SOUND_ALIVE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SOUND_ALIVE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_SOUND_ALIVE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_OFF);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_OFF_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_OFF_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_ONE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_ONE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_ONE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_ALL);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_ALL_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_REPEAT_ALL_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_TRIM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_TRIM_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_TRIM_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_ROTATE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_ROTATE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_ROTATE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BOOKMARK_RES_ADD);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BOOKMARK_RES_ADD_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BOOKMARK_RES_DEL);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BOOKMARK_RES_DEL_PRESS);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_TRIM_RES_REW);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_TRIM_RES_FF);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_SENSOR_RES_TRUN_OVER_01);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_SENSOR_RES_TRUN_OVER_02);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_SENSOR_RES_TRUN_OVER_03);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_MY_DEVICE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_TV_DEVICE);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_ADD_TO_HOME);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_CHAPTER_PREVIEW);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_DETAIL);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_DOWNLOAD);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_SETTING);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_SHARE_VIA);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_TRIM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_CTX_CONNECTION_INFO);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_TV_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_BD_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_LFD_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_STB_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_MOBILE_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_TABLET_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_DONGLE_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_CAMERA_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_CAMCORDER_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_REF_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_AC_WALL_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_WM_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_ROBOT_TV_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_PC_POPUP);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_UNKNOWN_POPUP);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_TV_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_BD_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_LFD_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_STB_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_MOBILE_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_TABLET_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_DONGLE_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_CAMERA_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_CAMCORDER_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_REF_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_AC_WALL_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_WM_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_ROBOT_TV_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_PC_ITEM);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_ALLSHARE_DEVICE_UNKNOWN_ITEM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_REW);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_REW_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_REW_DIM);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_FF);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_FF_PRESS);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_NORMAL_RES_CAPTURE_FF_DIM);
+
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_AUDIO_ONLY);
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_ERROR_IMAGE);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_RES_BUTTON_ADD);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_RES_BUTTON_ADD_PRESS);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_RES_BUTTON_DEL);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_RES_BUTTON_DEL_PRESS);
+
+ RESOURCE_IMAGE_COMP(VP_PLAY_TAG_BUDDY_DEAFULT);
+
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_LOCK);
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_LOCK_PRESS);
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_BLUETOOTH_HEADSET);
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_EARPHONE);
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_SPEAKER);
+ RESOURCE_IMAGE_COMP(VP_PLAY_TAG_BUDDY_LOGO);
+ RESOURCE_IMAGE_COMP(VP_PLAY_TAG_BUDDY_LOGO_JP);
+ RESOURCE_IMAGE_COMP(VP_PLAY_NORMAL_RES_DMC_ICON);
+
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_00);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_01);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_02);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_03);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_04);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_05);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_06);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_07);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_08);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_09);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_10);
+ RESOURCE_IMAGE_LOSSY(VP_PLAY_BRIGHTNESS_POPUP_ICON_11);
+}
+
diff --git a/playview/res/edc/playview/pv-sensor-popup.edc b/playview/res/edc/playview/pv-sensor-popup.edc
new file mode 100644
index 0000000..a23e6f0
--- /dev/null
+++ b/playview/res/edc/playview/pv-sensor-popup.edc
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+collections {
+ group {
+ name: "pv.sensor.popup";
+
+ parts {
+ part {
+ name: "pad_t";
+ type: SPACER;
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 0;
+ 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";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min : 0 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";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min : 0 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: 648 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";
+ type: SPACER;
+ scale : 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ min: 0 48;
+ 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.5;
+ min: 48 48;
+ max: 48 48;
+ fixed: 1 1;
+ rel1 { relative: 0.18 0.0; to: "pad_b"; }
+ rel2 { relative: 1.0 1.0; to: "pad_b"; }
+ }
+ }
+ part {
+ name: "pad_after_check";
+ type : RECT;
+ scale : 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 16 48;
+ fixed: 1 1;
+ visible: 0;
+ rel1 { relative: 1.0 0.0;to: "elm.swallow.end"; }
+ rel2 { relative: 1.0 1.0;to: "elm.swallow.end"; }
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 42;
+ min: 0 0;
+ align: 0.0 0.5;
+ }
+ color: 0 0 0 255;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to_x: "pad_after_check"; to_y: "elm.swallow.end"; }
+ rel2 { relative: 1.0 1.0; to_y: "elm.swallow.end"; }
+ }
+ }
+ } /* parts */
+ } /* group */
+ group {
+ name: "pv.sensor.popup.image";
+ inherit: "pv.sensor.popup";
+
+ parts {
+ part{
+ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 648 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: "elm.swallow.icon.bg"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon.bg";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ fixed: 1 1;
+ visible: 0;
+ min: 580 390;
+ rel1 { relative: 0.5 0.0; to: "pad_b"; }
+ rel2 { relative: 0.5 0.0; to: "pad_b"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ fixed: 0 1;
+ min: 580 390;
+ rel1 { relative: 0.0 0.5; to: "elm.swallow.icon.bg"; }
+ rel2 { relative: 1.0 0.5; to: "elm.swallow.icon.bg"; }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-speed-popup.edc b/playview/res/edc/playview/pv-speed-popup.edc
new file mode 100644
index 0000000..0bc1f7f
--- /dev/null
+++ b/playview/res/edc/playview/pv-speed-popup.edc
@@ -0,0 +1,205 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+
+
+#define SPEED_POPUP_WIDTH_HEIGHT_MIN 0 100
+#define SPEED_POPUP_CONTENT_MIN 0 50
+#define SPEED_POPUP_BUTTON_MIN 40 40
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+collections {
+ plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
+ group {
+ name: "pv.play.speed.popup";
+ parts {
+ part {
+ name:"bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: SPEED_POPUP_WIDTH_HEIGHT_MIN;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pad_l";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 10 0;
+ max: 10 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 0.0 1.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 10 0;
+ max: 10 0;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "pad_t";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 10;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 0.0 0.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "elm.text.title";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 54;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pad_t";}
+ rel2 { relative: 1.0 1.0; to_y: "pad_t";}
+ color: 0 0 0 255;
+ text {
+ font: "Tizen:style=Bold";
+ size: 25;
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "elm.swallow.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: SPEED_POPUP_BUTTON_MIN;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.2; to_x: "pad_l"; to_y: "elm.text.title"; }
+ rel2 { relative: 1.0 0.2; to_x: "pad_l"; to_y: "elm.text.title"; }
+ }
+ }
+
+ part {
+ name: "elm.swallow.icon.left";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 6 0;
+ max: 6 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 1.0; to_x: "elm.swallow.icon.1"; to_y: "elm.text.title"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.swallow.icon.1"; to_y: "elm.text.title"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon.right";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 6 0;
+ max: 6 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 1.0; to_x: "elm.swallow.icon.2"; to_y: "elm.text.title"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.swallow.icon.2"; to_y: "elm.text.title"; }
+ }
+ }
+
+ part {
+ name: "elm.swallow.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: SPEED_POPUP_BUTTON_MIN;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.2; to_x: "pad_r"; to_y: "elm.text.title"; }
+ rel2 { relative: 0.0 0.2; to_x: "pad_r"; to_y: "elm.text.title"; }
+ }
+ }
+
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: SPEED_POPUP_CONTENT_MIN;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ rel1 { relative: 1.0 1.0; to_x: "pad_l"; to_y: "elm.text.title"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "elm.text.title"; }
+ }
+ }
+ } /* parts */
+ programs {
+ program{
+ name: "touch_snd";
+ source: "elm.swallow.icon.1";
+ signal: "mouse,clicked,1";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd2";
+ source: "elm.swallow.icon.2";
+ signal: "mouse,clicked,1";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ } /* programs*/
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-subtitle-color-popup.edc b/playview/res/edc/playview/pv-subtitle-color-popup.edc
new file mode 100644
index 0000000..b37b63e
--- /dev/null
+++ b/playview/res/edc/playview/pv-subtitle-color-popup.edc
@@ -0,0 +1,306 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+#define SUBTITLE_TEXT_OFFSET 20
+collections {
+ group {
+ name: "pv.subtitle-color-popup";
+ parts{
+ part {
+ name: "pv.subtitle-color-popup.main.bg";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 750;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.title";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "pv.subtitle-color-popup.main.bg"; }
+ rel2 { relative: 1.0 0.0; to: "pv.subtitle-color-popup.main.bg"; }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.subject";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.title";}
+ rel2 { relative: 1.0 1.0; offset: SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.title";}
+ align: 0.0 0.0;
+ text {
+ align: 0.0 1.0;
+ min: 0 1;
+ size: 27;
+ }
+ color: 21 108 148 255;
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.divideline";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 3;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: -SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.subject";}
+ rel2 { relative: 1.0 1.0; offset: -SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.subject";}
+ align: 0.0 0.0;
+ color: 217 217 217 255;
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.colorpalette.top";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "pv.subtitle-color-popup.divideline";}
+ rel2 { relative: 1.0 1.0; to: "pv.subtitle-color-popup.divideline";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: "pv.subtitle-color-popup.colorpalette.swallow";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pv.subtitle-color-popup.colorpalette.top"; }
+ rel2 { relative: 1.0 1.0; to: "pv.subtitle-color-popup.colorpalette.top"; }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.opacity.text";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.colorpalette.swallow";}
+ rel2 { relative: 1.0 1.0; offset: SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.colorpalette.swallow";}
+ align: 0.0 0.0;
+ text {
+ align: 0.0 1.0;
+ min: 0 1;
+ size: 27;
+ }
+ color: 21 108 148 255;
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.opacity.divideline";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 3;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; offset: -SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.opacity.text";}
+ rel2 { relative: 1.0 1.0; offset: -SUBTITLE_TEXT_OFFSET 0; to: "pv.subtitle-color-popup.opacity.text";}
+ align: 0.0 0.0;
+ color: 217 217 217 255;
+ }
+ }
+ part {
+ name: "pv.subtitle-color-popup.opacity.percent";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 100;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "pv.subtitle-color-popup.opacity.divideline";}
+ rel2 { relative: 1.0 1.0; to: "pv.subtitle-color-popup.opacity.divideline";}
+ align: 0.0 0.0;
+ text {
+ align: 0.5 1.0;
+ min: 0 1;
+ size: 27;
+ }
+ color: 21 108 148 255;
+ }
+ }
+
+ part {
+ name: "pad_l";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 24 0;
+ max: 24 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.subtitle-color-popup.main.bg";}
+ rel2 { relative: 0.0 1.0; to: "pv.subtitle-color-popup.main.bg";}
+ }
+ }
+ part {
+ name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 24 0;
+ max: 24 0;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 0.0; to: "pv.subtitle-color-popup.main.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.subtitle-color-popup.main.bg";}
+ }
+ }
+
+ part {
+ name: "elm.swallow.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 63 78;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "pad_l"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ rel2 { relative: 1.0 1.0; to_x: "pad_l"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon.left";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 6 0;
+ max: 6 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 1.0; to_x: "elm.swallow.icon.1"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.swallow.icon.1"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon.right";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 6 0;
+ max: 6 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 1.0; to_x: "elm.swallow.icon.2"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.swallow.icon.2"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 63 78;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ rel2 { relative: 0.0 1.0; to_x: "pad_r"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 78;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 1.0 1.0; to_x: "elm.swallow.icon.left"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.swallow.icon.right"; to_y: "pv.subtitle-color-popup.opacity.percent"; }
+ }
+ }
+
+ /*part {
+ name: "colorpalette_bottom_padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 12;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_y: "colorpalette";
+ to_x: "bg";
+ }
+ rel2 {
+ to_x: "bg";
+ to_y: "colorpalette";
+ }
+ align: 0.0 0.0;
+ }
+ }*/
+
+ }//end parts
+ } //end group
+ group { name: "pv.subtitle.scroller.layout";
+ parts {
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ min: 0 800;
+ }
+ }
+ }
+ }
+ group { name: "pv.subtitle.scroller.layout.landscape";
+ parts {
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ min: 0 380;
+ }
+ }
+ }
+ }
+}
+
diff --git a/playview/res/edc/playview/pv-subtitle.edc b/playview/res/edc/playview/pv-subtitle.edc
new file mode 100644
index 0000000..4604d85
--- /dev/null
+++ b/playview/res/edc/playview/pv-subtitle.edc
@@ -0,0 +1,297 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_COLOR 255 255 255 255
+#define _SCREEN_SIZE_PROTRAIT_ 480 750
+#define _SCREEN_SIZE_LANDSCAPE_ 800 430
+#define SUBTITLE_K_FEATURE
+
+collections {
+ base_scale: 1.8;
+ styles {
+ style {
+ name: "textblock_style_small";
+ base: "font=Tizen:style=Roman font_size=28 color=#fff align=center wrap=word";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font=Tizen:style=Roman";
+ tag: "b" "+ font=Tizen:style=Roman";
+ tag: "tab" "\t";
+ }
+ style {
+ name: "textblock_style_medium";
+ base: "font=Tizen:style=Roman font_size=42 color=#fff align=center wrap=word";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font=Tizen:style=Roman";
+ tag: "b" "+ font=Tizen:style=Roman";
+ tag: "tab" "\t";
+ }
+
+ style {
+ name: "textblock_style_large";
+ base: "font=Tizen:style=Roman font_size=54 color=#fff align=center wrap=word";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font=Tizen:style=Roman";
+ tag: "b" "+ font=Tizen:style=Roman";
+ tag: "tab" "\t";
+ }
+ style {
+ name: "textblock_style_default";
+ base: "font=Tizen:style=Roman align=center wrap=word";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font=Tizen:style=Roman";
+ tag: "b" "+ font=Tizen:style=Roman";
+ tag: "tab" "\t";
+ }
+ }
+ group {
+ name: "pv.subtitle";
+
+ parts {
+ part {
+ name: "pv.subtitle.main.bg";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+#ifdef SUBTITLE_K_FEATURE
+ min: _SCREEN_SIZE_PROTRAIT_;
+ max: _SCREEN_SIZE_PROTRAIT_;
+ }
+ description {
+ state: "landscape.show" 0.0;
+ min: _SCREEN_SIZE_LANDSCAPE_;
+ max: _SCREEN_SIZE_LANDSCAPE_;
+#endif
+ }
+ }
+
+ part {
+ name: "pv.subtitle.main.bottom.padding";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 25;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.subtitle.main.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.subtitle.main.bg";}
+ }
+ }
+
+ part {
+ name: "pv.subtitle.grep.box";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; offset:0 5; to: "pv.subtitle.main.bg";}
+ rel2 { relative: 1.0 0.0; offset:0 5; to: "pv.subtitle.main.bg";}
+ min: 720 50;
+ max: 720 50;
+ color: 0 0 0 0;
+ }
+ description {
+ state: "grep.box.show" 0.0;
+ inherit: "default";
+ color: 80 80 150 150;
+ }
+ }
+
+ part {
+ name: "pv.subtitle.caption.window";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; offset:0 5 ;to: "pv.subtitle.main.bg";}
+ rel2 { relative: 1.0 0.0; offset:0 5 ;to: "pv.subtitle.main.bg";}
+ min: 720 50;
+ max: 720 50;
+ color: 0 0 0 0;
+ }
+ description {
+ state: "caption.window.show" 0.0;
+ inherit: "default";
+ align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: "pv.subtitle.swallow.txt";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ visible: 1;
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; offset:0 20;to: "pv.subtitle.main.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.subtitle.main.bottom.padding";}
+ }
+ }
+
+#ifdef SUBTITLE_K_FEATURE
+ programs {
+ program {
+ name: "subtitle_landscape_show";
+ signal: "signal.pv.subtitle.main.landscape.show";
+ source: "*";
+ action: STATE_SET "landscape.show" 0.0;
+ target: "pv.subtitle.main.bg";
+ }
+ program {
+ name: "subtitle_portrait_show";
+ signal: "signal.pv.subtitle.main.portrait.show";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.subtitle.main.bg";
+ }
+ program {
+ name: "subtitle_grep_box_show";
+ signal: "signal.pv.subtitle.grep.box.show";
+ source: "*";
+ action: STATE_SET "grep.box.show" 0.0;
+ target: "pv.subtitle.grep.box";
+ }
+ program {
+ name: "subtitle_grep_box_hide";
+ signal: "signal.pv.subtitle.grep.box.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.subtitle.grep.box";
+ }
+ program {
+ name: "subtitle_caption_window_hide";
+ signal: "signal.pv.subtitle.caption.window.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.subtitle.caption.window";
+ }
+ }/* programs */
+ script {
+ public message(Msg_Type:type, id, ...) {
+ if ((type == MSG_INT_SET) && (id == 1)) {
+ new w = getarg(2);
+ new h = getarg(3);
+
+ custom_state(PART:"pv.subtitle.grep.box", "grep.box.show", 0.0);
+ set_state_val(PART:"pv.subtitle.grep.box", STATE_MIN, w, h);
+ set_state_val(PART:"pv.subtitle.grep.box", STATE_MAX, w, h);
+ set_state(PART:"pv.subtitle.grep.box", "custom", 0.0);
+ }
+ else if ((type == MSG_INT_SET) && (id == 2)) {
+ new w = getarg(2);
+ new h = getarg(3);
+
+ custom_state(PART:"pv.subtitle.caption.window", "caption.window.show", 0.0);
+ set_state_val(PART:"pv.subtitle.caption.window", STATE_MIN, w, h);
+ set_state_val(PART:"pv.subtitle.caption.window", STATE_MAX, w, h);
+ set_state(PART:"pv.subtitle.caption.window", "custom", 0.0);
+ }
+ else if ((type == MSG_INT_SET) && (id == 3)) {
+ new r = getarg(2);
+ new g = getarg(3);
+ new b = getarg(4);
+ new a = getarg(5);
+
+ custom_state(PART:"pv.subtitle.caption.window", "caption.window.show", 0.0);
+ set_state_val(PART:"pv.subtitle.caption.window", STATE_COLOR, r, g, b, a);
+ set_state(PART:"pv.subtitle.caption.window", "custom", 0.0);
+ }
+ else if ((type == MSG_INT_SET) && (id == 4)) {
+ new left = getarg(2);
+ new top = getarg(3);
+
+ custom_state(PART:"pv.subtitle.caption.window", "caption.window.show", 0.0);
+ set_state_val(PART:"pv.subtitle.caption.window", STATE_REL1_OFFSET, left, top);
+ set_state(PART:"pv.subtitle.caption.window", "custom", 0.0);
+ }
+ }
+ }/* script */
+#endif
+ } /* parts */
+ } /* group */
+
+ group {
+ name: "pv.multi-subtitle";
+
+ parts {
+ part {
+ name: "pv.multi.subtitle.main.bg";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+
+ part {
+ name: "pv.multi.subtitle.main.bottom.padding";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 25;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "pv.multi.subtitle.label.txt";
+ type: TEXTBLOCK;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ multiline: 1;
+ description {
+ visible: 1;
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; to_y: "pv.multi.subtitle.main.bottom.padding";}
+ text {
+ style: "textblock_style_default";
+ align: 0.5 1.0;
+ }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-tag-buddy.edc b/playview/res/edc/playview/pv-tag-buddy.edc
new file mode 100644
index 0000000..61f091f
--- /dev/null
+++ b/playview/res/edc/playview/pv-tag-buddy.edc
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+collections {
+ group {
+ name: "pv.tag.buddy";
+ parts {
+ part {
+ name: "pv.tag.buddy.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: 248 246 239 255;//8 8 8 255
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "pv.tag.buddy.preview";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 328;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 {relative: 0.0 0.0;}
+ rel2 {relative: 1.0 0.0;}
+ }
+ }
+ part {
+ name: "pv.tag.buddy.list";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 {relative: 0.0 1.0; to : "pv.tag.buddy.preview";}
+ rel2 {relative: 1.0 1.0;}
+ }
+ }
+ }
+ }
+}
diff --git a/playview/res/edc/playview/pv-tag-preview.edc b/playview/res/edc/playview/pv-tag-preview.edc
new file mode 100644
index 0000000..04e8089
--- /dev/null
+++ b/playview/res/edc/playview/pv-tag-preview.edc
@@ -0,0 +1,218 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+collections {
+ group {
+ name: "pv.tag.preview";
+ parts {
+ part {
+ name: "pv.tag.preview.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: 125 125 125 255;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+
+ part {
+ name: "pv.tag.preview.image";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+
+ part {
+ name: "pv.tag.preview.accuweather.rect";
+ type: RECT;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 200 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 0 255 0 255;
+ }
+ description {
+ state: "weather_jp" 0.0;
+ inherit: "default" 0.0;
+ min: 160 60;
+ }
+ }
+ part {
+ name: "pv.tag.preview.accuweather";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 200 36;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ image { normal: "tag/T01-1_logo_accuweather.png"; }
+ }
+ description {
+ state: "weather_jp" 0.0;
+ inherit: "default" 0.0;
+ min: 160 60;
+ image { normal: "tag/U07_weather_logo.png"; }
+ }
+ }
+ part {
+ name: "pv.tag.preview.table.top";
+ type: RECT;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 20;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to: "pv.tag.preview.accuweather";}
+ rel2 { relative: 0.0 1.0; to: "pv.tag.preview.accuweather";}
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "pv.tag.preview.table.shadow";
+ type: SWALLOW;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.tag.preview.table"; offset: 0 2;}//2pix offset
+ rel2 { relative: 1.0 1.0; to: "pv.tag.preview.table"; offset: 0 2;}
+ }
+ }
+ part {
+ name: "pv.tag.preview.table";
+ type: SWALLOW;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 1.0; to_y: "pv.tag.preview.table.top";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.tag.preview.time";}
+ }
+ }
+ part {
+ name: "pv.tag.preview.time.shadow";
+ type: SWALLOW;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.tag.preview.time"; offset: 0 2;}//2pix offset
+ rel2 { relative: 1.0 0.0; to: "pv.tag.preview.time"; offset: 0 0;}
+ }
+ }
+ part {
+ name: "pv.tag.preview.time";
+ type: SWALLOW;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 20;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ name: "www.accuweather.com";
+ signal: "signal.pv.tag.accuweather";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.tag.preview.accuweather";
+ target: "pv.tag.preview.accuweather.rect";
+ }
+ program {
+ name: "weathernews.jp";
+ signal: "signal.pv.tag.weathernews";
+ source: "*";
+ action: STATE_SET "weather_jp" 0.0;
+ target: "pv.tag.preview.accuweather";
+ target: "pv.tag.preview.accuweather.rect";
+ }
+ } /* programs */
+ } /* group */
+ group {
+ name: "pv.tag.buddy.normal";
+ parts {
+ part {
+ name: "pv.tag.preview.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ color: 125 125 125 255;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "pv.tag.preview.table.shadow";
+ type: SWALLOW;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.tag.preview.table"; offset: 0 2;}//2pix offset
+ rel2 { relative: 1.0 0.0; to: "pv.tag.preview.table"; offset: 0 0;}
+ }
+ }
+ part {
+ name: "pv.tag.preview.table";
+ type: SWALLOW;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.tag.preview.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.tag.preview.bg";}
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-trim-control.edc b/playview/res/edc/playview/pv-trim-control.edc
new file mode 100644
index 0000000..348be9d
--- /dev/null
+++ b/playview/res/edc/playview/pv-trim-control.edc
@@ -0,0 +1,748 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+#ifndef _TRIME_VIEW_NEW_FEATURE
+#define _TRIME_VIEW_NEW_FEATURE
+#endif
+
+#define FONT_LIGHT_TYPE "Tizen:style=Light"
+#define FONT_COLOR 248 246 239 128
+#define TRIM_CONTROL_TOP_PADDING 9
+#define TRIM_CONTROL_BOTTOM_PADDING 4
+#define TRIM_CONTROL_GENGRID_HEIGHT 100
+#define TRIM_CONTROL_PICKER_HEIGHT 147
+#define TRIM_CONTROL_PICKER_WIDTH 37
+#define TRIM_CONTROL_LEFT_HEIGHT 118
+#define TRIM_CONTROL_LEFT_WIDTH 30
+
+#ifdef _TRIME_VIEW_NEW_FEATURE
+#define TRIM_CONTROL_INTERVAL 8
+#endif
+
+collections {
+ group {
+ name: "pv.trim.control";
+
+ parts {
+ part {
+ name: "pv.trim.control.bg";
+ type: RECT;
+ 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: "pv.trim.control.top.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 TRIM_CONTROL_TOP_PADDING;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y : "pv.trim.control.bg"; }
+ rel2 { relative: 1.0 0.0; to_y : "pv.trim.control.bg"; }
+ color: 0 0 255 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.bottom.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 TRIM_CONTROL_BOTTOM_PADDING;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to_y : "pv.trim.control.bg"; }
+ rel2 { relative: 1.0 1.0; to_y : "pv.trim.control.bg"; }
+ color: 0 255 0 50;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.bg.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "pv.trim.control.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.trim.control.bg";}
+ color: 45 45 45 255;
+ }
+ }
+#ifdef _TRIME_VIEW_NEW_FEATURE
+ part {
+ name: "pv.trim.control.progress.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 118;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to_y: "pv.trim.control.bottom.padding";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.trim.control.bottom.padding";}
+ color: 255 0 0 255;
+ }
+ }
+#else
+ part {
+ name: "pv.trim.control.progress.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 118;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y: "pv.trim.control.bg";}
+ rel2 { relative: 1.0 0.0; to_y: "pv.trim.control.bg";}
+ color: 255 0 0 255;
+ }
+ }
+#endif
+
+/*
+ part {
+ name: "pv.trim.control.progress.rect.playing.left";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 12 124;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pv.trim.control.top.padding";}
+ rel2 { relative: 0.0 1.0; to_y: "pv.trim.control.top.padding";}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.progress.rect.playing.right";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 12 124;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 1.0; to_y: "pv.trim.control.top.padding";}
+ rel2 { relative: 1.0 1.0; to_y: "pv.trim.control.top.padding";}
+ color: 255 0 0 255;
+ }
+ }
+*/
+#ifdef _TRIME_VIEW_NEW_FEATURE
+ part {
+ name: "pv.trim.control.gengrid.rect";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 TRIM_CONTROL_GENGRID_HEIGHT;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pv.trim.start.txt"; offset: 0 TRIM_CONTROL_INTERVAL;}
+ rel2 { relative: 1.0 1.0; to_y: "pv.trim.start.txt"; offset: 0 TRIM_CONTROL_INTERVAL;}
+ }
+ }
+#else
+ part {
+ name: "pv.trim.control.gengrid.rect";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 TRIM_CONTROL_GENGRID_HEIGHT;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "pv.trim.control.top.padding"; }
+ rel2 { relative: 1.0 1.0; to_y: "pv.trim.control.top.padding"; }
+ }
+ }
+#endif
+ part {
+ name: "pv.trim.control.txt.left.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y: "pv.trim.control.progress.rect";}
+ rel2 { relative: 0.0 1.0; to_y: "pv.trim.control.progress.rect";}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.txt.right.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 26 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0; to_y: "pv.trim.control.progress.rect";}
+ rel2 { relative: 1.0 1.0; to_y: "pv.trim.control.progress.rect";}
+ color: 255 0 0 255;
+ }
+ }
+#ifdef _TRIME_VIEW_NEW_FEATURE
+ part {
+ name: "pv.trim.start.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 127 30;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x : "pv.trim.control.txt.left.padding"; to_y : "pv.trim.control.top.padding";}
+ rel2 { relative: 1.0 1.0; to_x : "pv.trim.control.txt.left.padding"; to_y : "pv.trim.control.top.padding";}
+ color: FONT_COLOR;
+ text {
+ font: FONT_LIGHT_TYPE;
+ size: 28;
+ text: "00:00:00";
+ align: 0.0 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.trim.total.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 127 30;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x : "pv.trim.control.txt.right.padding"; to_y : "pv.trim.control.top.padding";}
+ rel2 { relative: 0.0 1.0; to_x : "pv.trim.control.txt.right.padding"; to_y : "pv.trim.control.top.padding";}
+ color: FONT_COLOR;
+ text {
+ font: FONT_LIGHT_TYPE;
+ size: 28;
+ text: "00:00:00";
+ align: 1.0 0.5;
+ }
+ }
+ }
+#else
+ part {
+ name: "pv.trim.start.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 127 30;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 1.0; to_x : "pv.trim.control.txt.left.padding"; to_y : "pv.trim.control.gengrid.rect"; offset: 0 17;}
+ rel2 { relative: 1.0 1.0; to_x : "pv.trim.control.txt.left.padding"; to_y : "pv.trim.control.gengrid.rect"; offset: 0 17;}
+ color: FONT_COLOR;
+ text {
+ font: FONT_LIGHT_TYPE;
+ size: 28;
+ text: "00:00:00";
+ align: 0.0 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "pv.trim.total.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 127 30;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 1.0; to_x : "pv.trim.control.txt.right.padding"; to_y : "pv.trim.control.gengrid.rect"; offset: 0 17;}
+ rel2 { relative: 0.0 1.0; to_x : "pv.trim.control.txt.right.padding"; to_y : "pv.trim.control.gengrid.rect"; offset: 0 17;}
+ color: FONT_COLOR;
+ text {
+ font: FONT_LIGHT_TYPE;
+ size: 28;
+ text: "00:00:00";
+ align: 1.0 0.5;
+ }
+ }
+ }
+#endif
+ part {
+ name: "pv.trim.control.confine.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 TRIM_CONTROL_PICKER_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.trim.control.progress.rect"; offset: 0 -14.5;}
+ rel2 { relative: 1.0 0.0; to: "pv.trim.control.progress.rect"; offset: 0 -14.5;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.confine.rect.picker";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: TRIM_CONTROL_PICKER_WIDTH TRIM_CONTROL_PICKER_HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.trim.control.playing"; to_y: "pv.trim.control.confine.rect";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.trim.control.playing"; to_y: "pv.trim.control.confine.rect";}
+ image { normal: "trim/T01_2_trim_picker.png"; }
+ }
+ #ifdef _TRIME_VIEW_NEW_FEATURE
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ #endif
+ }
+
+ part { name: "pv.trim.control.playing";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ //31 mean it is convenient to move played bar
+ min: TRIM_CONTROL_PICKER_WIDTH TRIM_CONTROL_PICKER_HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ dragable {
+ confine: "pv.trim.control.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "pv.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 : pv.trim.control.progress.rect;}
+ rel2 { relative: 0.0 1.0; to_y : pv.trim.control.progress.rect;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.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 : pv.trim.control.progress.rect;}
+ rel2 { relative: 1.0 1.0; to_y : pv.trim.control.progress.rect;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part { name: "pv.trim.control.confine.rect.start";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: TRIM_CONTROL_LEFT_WIDTH TRIM_CONTROL_LEFT_HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: pv.trim.control.start.rect; to_y: pv.trim.control.progress.rect; }
+ rel2 { relative: 1.0 0.5; to_x: pv.trim.control.end.rect; to_y: pv.trim.control.progress.rect; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part { name: "pv.trim.control.confine.rect.end";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: TRIM_CONTROL_LEFT_WIDTH TRIM_CONTROL_LEFT_HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: pv.trim.control.start.rect; to_y: pv.trim.control.progress.rect; }
+ rel2 { relative: 1.0 0.5; to_x: pv.trim.control.end.rect; to_y: pv.trim.control.progress.rect; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part { name: "pv.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: pv.trim.control.progress.rect; }
+ rel2 { relative: 0.5 0.5; to_x: pv.trim.control.confine.start.img; to_y: pv.trim.control.progress.rect; }
+ color: 0 0 0 153;
+ }
+ }
+
+ part { name: "pv.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: pv.trim.control.confine.end.img; to_y: pv.trim.control.progress.rect; }
+ rel2 { relative: 1.0 0.5; to_y: pv.trim.control.progress.rect; }
+ color: 0 0 0 153;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.confine.start.img";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: TRIM_CONTROL_LEFT_WIDTH TRIM_CONTROL_LEFT_HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ image { normal: "trim/T01_2_trim_left.png";}
+ rel1 { relative: 0.0 0.5; to: pv.trim.control.confine.start; }
+ rel2 { relative: 0.0 0.5; to: pv.trim.control.confine.start; }
+ }
+ }
+
+ part {
+ name: "pv.trim.control.confine.end.img";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: TRIM_CONTROL_LEFT_WIDTH TRIM_CONTROL_LEFT_HEIGHT;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ image { normal: "trim/T01_2_trim_right.png";}
+ rel1 { relative: 1.0 0.5; to: pv.trim.control.confine.end; }
+ rel2 { relative: 1.0 0.5; to: pv.trim.control.confine.end; }
+ }
+ }
+
+ part {
+ name: "pv.trim.control.confine.start";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: TRIM_CONTROL_LEFT_WIDTH TRIM_CONTROL_LEFT_HEIGHT;//48
+ fixed: 1 1;
+ align: 0.0 0.5;
+ color: 0 0 0 0;
+ }
+ dragable {
+ confine: "pv.trim.control.confine.rect.start";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.confine.end";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: TRIM_CONTROL_LEFT_WIDTH TRIM_CONTROL_LEFT_HEIGHT;//48
+ fixed: 1 1;
+ align: 0.0 0.5;
+ color: 0 0 0 0;
+ }
+ dragable {
+ confine: "pv.trim.control.confine.rect.end";
+ x: 1 1 1;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.toolbar.save.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 112 111;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to_y : "pv.trim.control.bg"; }
+ rel2 { relative: 0.0 1.0; to_y : "pv.trim.control.bg"; }
+ color: 0 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.toolbar.save";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 86 98;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.5; to: "pv.trim.control.toolbar.save.rect";}
+ rel2 { relative: 1.0 0.5; to: "pv.trim.control.toolbar.save.rect";}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.toolbar.back.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 112 111;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 1.0 1.0; to_y : "pv.trim.control.bg"; }
+ rel2 { relative: 1.0 1.0; to_y : "pv.trim.control.bg"; }
+ color: 0 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.toolbar.back";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 86 98;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.5; to: "pv.trim.control.toolbar.back.rect";}
+ rel2 { relative: 1.0 0.5; to: "pv.trim.control.toolbar.back.rect";}
+ color: 255 255 255 255;
+ }
+ }
+
+#ifndef _TRIME_VIEW_NEW_FEATURE
+ part {
+ name: "pv.trim.control.toolbar.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 132;
+ fixed: 0 1;
+ align: 1.0 1.0;
+ rel1 { relative: 0.0 0.0; to_x : "pv.trim.control.bg"; to_y : "pv.trim.control.bottom.padding"; }
+ rel2 { relative: 1.0 0.0; to_x : "pv.trim.control.bg"; to_y : "pv.trim.control.bottom.padding";}
+ color: 0 255 255 255;
+ }
+ }
+
+
+ part {
+ name: "pv.trim.control.play";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 132 132;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.0; to_y: "pv.trim.control.toolbar.rect";}
+ rel2 { relative: 0.5 1.0; to_y: "pv.trim.control.toolbar.rect";}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.play.left.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 27 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "pv.trim.control.play"; to_y: "pv.trim.control.toolbar.rect";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.trim.control.play"; to_y: "pv.trim.control.toolbar.rect";}
+ color: 255 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.play.right.padding";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 27 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to_x: "pv.trim.control.play"; to_y: "pv.trim.control.toolbar.rect";}
+ rel2 { relative: 1.0 1.0; to_x: "pv.trim.control.play"; to_y: "pv.trim.control.toolbar.rect";}
+ color: 255 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.rew";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 108 108;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.5; to_x: "pv.trim.control.play.left.padding"; to_y: "pv.trim.control.toolbar.rect";}
+ rel2 { relative: 0.0 0.5; to_x: "pv.trim.control.play.left.padding"; to_y: "pv.trim.control.toolbar.rect";}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.control.ff";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 108 108;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pv.trim.control.play.right.padding"; to_y: "pv.trim.control.toolbar.rect";}
+ rel2 { relative: 1.0 0.5; to_x: "pv.trim.control.play.right.padding"; to_y: "pv.trim.control.toolbar.rect";}
+ color: 255 255 255 255;
+ }
+ }
+#endif
+ } /* parts */
+#ifdef _TRIME_VIEW_NEW_FEATURE
+ programs {
+ program {
+ name: "hide_control_playing";
+ signal: "signal.pv.trim.control.hide.playing";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.trim.control.confine.rect.picker";
+ }
+ program {
+ name: "show_control_playing";
+ signal: "signal.pv.trim.control.show.playing";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.trim.control.confine.rect.picker";
+ }
+ }/* programs */
+#endif
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-trim-item.edc b/playview/res/edc/playview/pv-trim-item.edc
new file mode 100644
index 0000000..80e2ef3
--- /dev/null
+++ b/playview/res/edc/playview/pv-trim-item.edc
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define VP_TRIM_ITEM_RECT_MIN_MAX_INC 100 100
+
+collections {
+ group {
+ name: "pv.trim.item";
+ parts {
+ part {
+ name: "pv.trim.item.rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: VP_TRIM_ITEM_RECT_MIN_MAX_INC;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "pv.trim.item.icon";
+ scale: 1;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VP_TRIM_ITEM_RECT_MIN_MAX_INC;
+ max: VP_TRIM_ITEM_RECT_MIN_MAX_INC;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: pv.trim.item.rect;}
+ rel2 { relative: 1.0 1.0; to: pv.trim.item.rect;}
+ color: 255 255 255 255;
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */ \ No newline at end of file
diff --git a/playview/res/edc/playview/pv-trim-main.edc b/playview/res/edc/playview/pv-trim-main.edc
new file mode 100644
index 0000000..edace3e
--- /dev/null
+++ b/playview/res/edc/playview/pv-trim-main.edc
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+#ifndef _TRIME_VIEW_NEW_FEATURE
+#define _TRIME_VIEW_NEW_FEATURE
+#endif
+collections {
+ group {
+ name: "pv.trim.main";
+
+ parts {
+ part {
+ name: "pv.trim.main.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: 255 255 255 0;
+ }
+ }
+#ifndef _TRIME_VIEW_NEW_FEATURE
+ part {
+ name: "pv.trim.top.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 68;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.trim.main.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 292;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+#else
+ part {
+ name: "pv.trim.top.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 68;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.trim.main.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 160;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+#endif
+#ifdef _TRIME_VIEW_NEW_FEATURE
+ part {
+ name: "pv.trim.main.loading";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 1.0; to: "pv.trim.top.control";}
+ rel2 { relative: 1.0 0.0; to: "pv.trim.main.control";}
+ }
+ }
+
+ part {
+ name: "pv.trim.main.button";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 108 108;
+ max: 108 108;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 1.0; to: "pv.trim.top.control";}
+ rel2 { relative: 1.0 0.0; to: "pv.trim.main.control";}
+ }
+ }
+#else
+ part {
+ name: "pv.trim.main.loading";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+#endif
+ } /* parts */
+ } /* group */
+} /* collections */
diff --git a/playview/res/edc/playview/pv-trim-top-control.edc b/playview/res/edc/playview/pv-trim-top-control.edc
new file mode 100644
index 0000000..341d099
--- /dev/null
+++ b/playview/res/edc/playview/pv-trim-top-control.edc
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+collections {
+ group {
+ name: "pv.trim.top";
+
+ parts {
+ part {
+ name: "pv.trim.top.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 0;
+ }
+ }
+
+ part {
+ name: "pv.trim.top.right.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 26 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 255 0 255;
+ }
+ }
+
+ part {
+ name: "pv.trim.top.rotate";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 68 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "pv.trim.top.right.padding"; to_y: "pv.trim.top.bg";}
+ rel2 { relative: 0.0 1.0; to_x: "pv.trim.top.right.padding"; to_y: "pv.trim.top.bg";}
+ color: 255 0 0 255;
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */ \ No newline at end of file
diff --git a/playview/res/edc/playview/pv-volume-popup.edc b/playview/res/edc/playview/pv-volume-popup.edc
new file mode 100644
index 0000000..0311461
--- /dev/null
+++ b/playview/res/edc/playview/pv-volume-popup.edc
@@ -0,0 +1,310 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_BOLD_TYPE "Tizen:style=Bold"
+
+#define FONT_VOLUME_COLOR 255 255 255 255
+#define VOLUME_POPUP_BUTTON_HEIGHT 24
+#define VOLUME_POPUP_BUTTON_WIDTH 24
+
+collections {
+ group {
+ name: "pv.volume.popup";
+ parts {
+ part {
+ name: "pv.volume.popup.rect";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 58 286;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 58 286;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ color: 255 255 255 255;
+ image { normal: "volume/T01_2_volume_popup_bg.png"; border: 0 0 15 15;}
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.icon.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 12;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.popup.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.volume.popup.bg";}
+ color: 255 0 0 255;
+
+ }
+ }
+ part {
+ name: "pv.volume.popup.icon";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 22 22;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 1.0; to_x: "pv.volume.popup.bg"; to_y: "pv.volume.popup.icon.padding";}
+ rel2 { relative: 0.5 1.0; to_x: "pv.volume.popup.bg"; to_y: "pv.volume.popup.icon.padding";}
+ color: 255 255 255 255;
+ image { normal: "popup/T01-2_volume_popup_icon_volume01.png"; }
+ }
+ description {
+ state: "mute" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "popup/T01-2_volume_popup_icon_volume02.png"; }
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.top.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 11;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to: "pv.volume.popup.icon";}
+ rel2 { relative: 1.0 1.0; to: "pv.volume.popup.icon";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.bottom.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 18;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.volume.popup.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.volume.popup.bg";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ effect: FAR_SHADOW BOTTOM;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 0 23;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.popup.bottom.padding";}
+ rel2 { relative: 1.0 0.0; to: "pv.volume.popup.bottom.padding";}
+ color: FONT_VOLUME_COLOR;
+ color3: 51 57 72 255;
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 21;
+ text: "3";
+ align: 0.5 0.5;
+ }
+
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.txt.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 11;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.popup.txt";}
+ rel2 { relative: 1.0 0.0; to: "pv.volume.popup.txt";}
+ color: 255 0 0 255;
+
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.bar.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 6 0;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 1.0; to_x : "pv.volume.popup.bg"; to_y : "pv.volume.popup.top.padding";}
+ rel2 { relative: 0.5 0.0; to_x : "pv.volume.popup.bg"; to_y : "pv.volume.popup.txt.padding";}
+ image { normal: "volume/T01_2_volume_popup_progress_bg.png"; border: 0 0 10 10;}
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.step";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 6 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.5; to_x : "pv.volume.popup.bar.bg"; to_y: "pv.volume.popup.point";}
+ rel2 { relative: 1.0 1.0; to : "pv.volume.popup.bar.bg";offset: 0 2;}
+ color: 255 255 255 255;
+ image { normal: "volume/T01_2_volume_popup_progress_bar.png"; border: 0 0 10 10;}
+ }
+ }
+
+ part { name: "pv.volume.popup.dragable";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{ state: "default" 0.0;
+ rel1 { relative: 0.5 0.0; to: "pv.volume.popup.bar.bg";offset: 0 -11; }
+ rel2 { relative: 0.5 1.0; to: "pv.volume.popup.bar.bg";offset: 0 11;}
+ min: VOLUME_POPUP_BUTTON_WIDTH 0;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "pv.volume.popup.playing";
+ type: RECT;
+ scale: 1;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ min: VOLUME_POPUP_BUTTON_WIDTH VOLUME_POPUP_BUTTON_HEIGHT;
+ max: VOLUME_POPUP_BUTTON_WIDTH VOLUME_POPUP_BUTTON_HEIGHT;
+ fixed: 1 1;
+ align: 0 0;
+ color: 0 0 0 0;
+ }
+
+ dragable {
+ x: 0 0 0;
+ y: -1 1 0;
+ confine: "pv.volume.popup.dragable";
+ }
+ }
+
+ part {
+ name: "pv.volume.popup.point";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VOLUME_POPUP_BUTTON_WIDTH VOLUME_POPUP_BUTTON_HEIGHT;
+ max: VOLUME_POPUP_BUTTON_WIDTH VOLUME_POPUP_BUTTON_HEIGHT;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "pv.volume.popup.playing";}
+ rel2 { relative: 0.5 0.5; to: "pv.volume.popup.playing";}
+ image { normal: "volume/T01_2_volume_popup_progress_handle.png";}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "press" 0.0;
+ inherit: "default";
+ image { normal: "volume/T01_2_volume_popup_progress_handle_press.png";}
+ }
+ }
+ } /* parts */
+
+ programs {
+ program { name: "set_mute";
+ signal: "set,mute";
+ source: "volume.popup.icon";
+ action: STATE_SET "mute" 0.0;
+ target: "pv.volume.popup.icon";
+ }
+ program { name: "set_volume";
+ signal: "set,volume";
+ source: "volume.popup.icon";
+ action: STATE_SET "default" 0.0;
+ target: "pv.volume.popup.icon";
+ }
+ program {
+ name: "pv.volume.down";
+ source: "pv.volume.popup.point";
+ signal: "mouse,down,1";
+ action: STATE_SET "press" 0.0;
+ target: "pv.volume.popup.point";
+ }
+ program {
+ name: "pv.volume.up";
+ source: "pv.volume.popup.point";
+ signal: "mouse,up,1";
+ action: STATE_SET "default" 0.0;
+ target: "pv.volume.popup.point";
+ }
+ } /* programs */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-volume.edc b/playview/res/edc/playview/pv-volume.edc
new file mode 100644
index 0000000..0a156c6
--- /dev/null
+++ b/playview/res/edc/playview/pv-volume.edc
@@ -0,0 +1,322 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+#define FONT_BOLD_TYPE "Tizen:style=Bold"
+
+#define FONT_VOLUME_COLOR 255 255 255 255
+
+#define VOLUME_WIDGET_WIDTH 72
+#define VOLUME_WIDGET_PORTRAIT_HEIGHT 486
+#define VOLUME_WIDGET_LANDSCAPE_HEIGHT 264
+
+#define VOLUME_BUTTON_HEIGHT 40
+#define VOLUME_BUTTON_WIDTH 25
+#define VOLUME_PROGRESS_WIDTH 15
+
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+
+collections {
+ base_scale : 2.6;
+ plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
+ group {
+ name: "pv.volume";
+ parts {
+ part {
+ name: "pv.volume.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ repeat_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: VOLUME_WIDGET_WIDTH VOLUME_WIDGET_PORTRAIT_HEIGHT;
+ max: VOLUME_WIDGET_WIDTH VOLUME_WIDGET_PORTRAIT_HEIGHT;
+ fixed: 1 1;
+ align: 0.2 0.0;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ image { normal: "volume/T01_2_volume_popup_bg.png"; border: 0 0 15 15; }
+ }
+
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: VOLUME_WIDGET_WIDTH VOLUME_WIDGET_LANDSCAPE_HEIGHT;
+ max: VOLUME_WIDGET_WIDTH VOLUME_WIDGET_LANDSCAPE_HEIGHT;
+ image { normal: "volume/T01_2_volume_popup_bg.png"; border: 0 0 15 15; }
+ }
+ }
+
+ part {
+ name: "pv.volume.top.padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 32;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.bg";}
+ rel2 { relative: 1.0 0.0; to: "pv.volume.bg";}
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 16;
+ }
+ }
+
+ part {
+ name: "pv.volume.bottom.padding";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 21;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "pv.volume.bg";}
+ rel2 { relative: 1.0 1.0; to: "pv.volume.bg";}
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 12;
+ }
+ }
+
+ part {
+ name: "pv.volume.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ effect: FAR_SHADOW BOTTOM;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min: 0 16;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.bottom.padding";}
+ rel2 { relative: 1.0 0.0; to: "pv.volume.bottom.padding";}
+ text {
+ size: 43;
+ }
+
+ }
+ }
+
+ part {
+ name: "pv.volume.txt.padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min: 0 21;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.txt";}
+ rel2 { relative: 1.0 0.0; to: "pv.volume.txt";}
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 0 20;
+ }
+ }
+
+ part {
+ name: "pv.volume.touch.area";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.bar.bg"; offset: -10 0; }
+ rel2 { relative: 1.0 1.0; to: "pv.volume.bar.bg"; offset: 10 0; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pv.volume.bar.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VOLUME_PROGRESS_WIDTH 0;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 1.0; to_x : "pv.volume.bg"; to_y : "pv.volume.top.padding";}
+ rel2 { relative: 0.5 0.0; to_x : "pv.volume.bg"; to_y : "pv.volume.txt.padding";}
+ image { normal: "volume/T01_2_volume_popup_progress_bg.png"; border: 0 0 5 5;}
+ }
+ }
+
+ part {
+ name: "pv.volume.step";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VOLUME_PROGRESS_WIDTH 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.5; to_x : "pv.volume.bar.bg"; to_y: "pv.volume.point"; }
+ rel2 { relative: 1.0 1.0; to : "pv.volume.bar.bg"; offset: 0 1;}
+ image { normal: "volume/T01_2_volume_popup_progress_bar.png"; border: 0 0 5 5;}
+ }
+ }
+
+ part { name: "pv.volume.dragable";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{ state: "default" 0.0;
+ rel1 { relative: 0.5 0.0; to: "pv.volume.bar.bg"; offset: 0 -7; }
+ rel2 { relative: 0.5 1.0; to: "pv.volume.bar.bg"; offset: 0 7;}
+ min: VOLUME_BUTTON_WIDTH 0;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ visible: 0;
+ }
+ }
+
+ part { name: "pv.volume.playing";
+ type: RECT;
+ scale: 1;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ min: VOLUME_BUTTON_WIDTH VOLUME_BUTTON_HEIGHT;
+ max: VOLUME_BUTTON_WIDTH VOLUME_BUTTON_HEIGHT;
+ fixed: 1 1;
+ align: 0 0;
+ color: 0 0 0 0;
+ }
+
+ dragable {
+ x: 0 0 0;
+ y: -1 1 0;
+ confine: "pv.volume.dragable";
+ }
+ }
+
+ part {
+ name: "pv.volume.point";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VOLUME_BUTTON_WIDTH VOLUME_BUTTON_HEIGHT;
+ max: VOLUME_BUTTON_WIDTH VOLUME_BUTTON_HEIGHT;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "pv.volume.playing";}
+ rel2 { relative: 0.5 0.5; to: "pv.volume.playing";}
+ image { normal: "volume/T01_2_volume_popup_progress_handle.png";}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "press" 0.0;
+ inherit: "default";
+ image { normal: "volume/T01_2_volume_popup_progress_handle_press.png";}
+ }
+ }
+
+ part {
+ name: "pv.volume.point.focus";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: VOLUME_BUTTON_WIDTH VOLUME_BUTTON_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "pv.volume.point"; }
+ rel2 { relative: 1.0 1.0; to: "pv.volume.point"; }
+ color: 255 255 255 0;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ name: "portrait_mode";
+ signal: "signal.pv.volume.portrait.mode";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "pv.volume.bg";
+ target: "pv.volume.top.padding";
+ target: "pv.volume.bottom.padding";
+ target: "pv.volume.txt.padding";
+ }
+
+ program {
+ name: "landscape_mode";
+ signal: "signal.pv.volume.landscape.mode";
+ source: "*";
+ action: STATE_SET "landscape" 0.0;
+ target: "pv.volume.bg";
+ target: "pv.volume.top.padding";
+ target: "pv.volume.bottom.padding";
+ target: "pv.volume.txt.padding";
+ }
+ program {
+ name: "pv.volume.down";
+ source: "pv.volume.point";
+ signal: "mouse,down,1";
+ action: STATE_SET "press" 0.0;
+ target: "pv.volume.point";
+ }
+ program {
+ name: "pv.volume.up";
+ source: "pv.volume.point";
+ signal: "mouse,up,1";
+ action: STATE_SET "default" 0.0;
+ target: "pv.volume.point";
+ }
+ program{
+ name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "pv.volume.touch.area";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ } /* programs */
+ } /* group */
+} /* collections */
+
diff --git a/playview/res/edc/playview/pv-zoom-guide.edc b/playview/res/edc/playview/pv-zoom-guide.edc
new file mode 100644
index 0000000..3644c4d
--- /dev/null
+++ b/playview/res/edc/playview/pv-zoom-guide.edc
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "pv-image.edc"
+
+collections {
+ group {
+ name: "pv.zoom.guide";
+ parts {
+ part {
+ name: "pv.zoom.guide.bg";
+ type: RECT;
+ mouse_events: 1;
+ repeat_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: "pv.zoom.guide.left.shadow";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 1 0;
+ fixed : 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 1.0 0.0; to: "pv.zoom.guide.left"; }
+ rel2 { relative: 1.0 1.0; to: "pv.zoom.guide.left"; }
+ color: 0 0 0 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.zoom.guide.right.shadow";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 1 0;
+ fixed : 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "pv.zoom.guide.right"; }
+ rel2 { relative: 0.0 1.0; to: "pv.zoom.guide.right"; }
+ color: 0 0 0 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.zoom.guide.top.shadow";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 0 1;
+ fixed : 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to: "pv.zoom.guide.top"; }
+ rel2 { relative: 1.0 1.0; to: "pv.zoom.guide.top"; }
+ color: 0 0 0 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.zoom.guide.bottom.shadow";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 0 1;
+ fixed : 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "pv.zoom.guide.bottom"; }
+ rel2 { relative: 1.0 0.0; to: "pv.zoom.guide.bottom"; }
+ color: 0 0 0 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.zoom.guide.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 2 0;
+ fixed : 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 1.0;}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.zoom.guide.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 2 0;
+ fixed : 1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "pv.zoom.guide.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 0 2;
+ fixed : 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 0.0;}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "pv.zoom.guide.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 0;
+ min : 0 2;
+ fixed : 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+ programs {
+ program {
+ name: "zoom_guide_show";
+ signal: "signal.pv.zoom.guide.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "pv.zoom.guide.left.shadow";
+ target: "pv.zoom.guide.right.shadow";
+ target: "pv.zoom.guide.top.shadow";
+ target: "pv.zoom.guide.bottom.shadow";
+ target: "pv.zoom.guide.left";
+ target: "pv.zoom.guide.right";
+ target: "pv.zoom.guide.top";
+ target: "pv.zoom.guide.bottom";
+ }
+ program {
+ name: "zoom_guide_hide";
+ signal: "signal.pv.zoom.guide.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "pv.zoom.guide.left.shadow";
+ target: "pv.zoom.guide.right.shadow";
+ target: "pv.zoom.guide.top.shadow";
+ target: "pv.zoom.guide.bottom.shadow";
+ target: "pv.zoom.guide.left";
+ target: "pv.zoom.guide.right";
+ target: "pv.zoom.guide.top";
+ target: "pv.zoom.guide.bottom";
+
+ }
+ } /* programs */
+ } /* group */
+ group {
+ name: "pv.zoom.guide.item";
+ parts {
+ part {
+ name: "pv.zoom.guide.item.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 0;
+ }
+ }
+
+ part {
+ name: "pv.zoom.guide.item.left";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min : 2 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: "pv.zoom.guide.item.right";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min : 2 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: "pv.zoom.guide.item.top";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min : 0 2;
+ fixed : 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 0.0;}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "pv.zoom.guide.item.bottom";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ min : 0 2;
+ fixed : 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 0 0 255;
+ }
+ }
+ } /* parts */
+ } /* group */
+
+} /* collections */
+
diff --git a/playview/src/common/include/vp-play-config.h b/playview/src/common/include/vp-play-config.h
new file mode 100644
index 0000000..80d6e6f
--- /dev/null
+++ b/playview/src/common/include/vp-play-config.h
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+#include <vconf.h>
+#include <system_settings.h>
+#include <runtime_info.h>
+#include <wifi.h>
+
+
+typedef void (*KeyChangedCbFunc)(void *pNode, void* pUserData);
+typedef void (*NetworkChangedCb)(keynode_t *key, void *data);
+
+
+bool vp_play_config_get_rotate_lock_status(bool *bLocked);
+bool vp_play_config_get_subtitle_show_key(bool *bShow);
+bool vp_play_config_set_subtitle_show_key(bool bShow);
+bool vp_play_config_set_subtitle_font_name_key(const char *szFontName);
+bool vp_play_config_get_subtitle_font_name_key(char **szFontName);
+bool vp_play_config_get_subtitle_size_key(int *nSize);
+bool vp_play_config_set_subtitle_size_key(int nSize);
+bool vp_play_config_set_subtitle_edge_key(int nEdge);
+bool vp_play_config_get_subtitle_edge_key(int *nEdge);
+
+bool vp_play_config_get_subtitle_font_color_key(int *nColor);
+bool vp_play_config_set_subtitle_font_color_key(int nColor);
+bool vp_play_config_get_subtitle_bg_color_key(int *nColor);
+bool vp_play_config_set_subtitle_bg_color_key(int nColor);
+bool vp_play_config_set_subtitle_alignment_key(int nAlignment);
+bool vp_play_config_get_subtitle_alignment_key(int *nAlignment);
+bool vp_play_config_get_subtitle_font_color_hex_key(char **szColorHex);
+bool vp_play_config_set_subtitle_font_color_hex_key(const char *szColorHex);
+bool vp_play_config_set_subtitle_bg_color_hex_key(const char *szColorHex);
+bool vp_play_config_get_subtitle_bg_color_hex_key(char **szColorHex);
+bool vp_play_config_set_subtitle_caption_win_color_hex_key(const char *szColorHex);
+bool vp_play_config_get_subtitle_caption_win_color_hex_key(char **szColorHex);
+
+bool vp_play_config_get_repeat_mode_key(int *nMode);
+bool vp_play_config_set_repeat_mode_key(int nMode);
+bool vp_play_config_set_screen_mode_key(int nMode);
+bool vp_play_config_get_screen_mode_key(int *nMode);
+bool vp_play_config_get_capture_on_key(bool *bEnable);
+bool vp_play_config_set_capture_on_key(bool bEnable);
+bool vp_play_config_get_tag_active_key(bool *bEnable);
+bool vp_play_config_set_tag_active_key(bool bEnable);
+bool vp_play_config_get_tag_weather_key(bool *bEnable);
+bool vp_play_config_set_tag_weather_key(bool bEnable);
+bool vp_play_config_get_tag_location_key(bool *bEnable);
+bool vp_play_config_set_tag_location_key(bool bEnable);
+bool vp_play_config_get_tag_edit_weather_key(int *nWeather);
+bool vp_play_config_set_tag_edit_weather_key(int nWeather);
+
+bool vp_play_config_get_sort_type_key(int *nType);
+bool vp_play_config_set_preview_url_videos(const char *szMediaURL);
+bool vp_play_config_get_preview_url_videos(char **szMediaURL);
+bool vp_play_config_set_preview_url_records(const char *szMediaURL);
+bool vp_play_config_get_preview_url_records(char **szMediaURL);
+bool vp_play_config_set_preview_audio_track(int nAudioTrack);
+bool vp_play_config_get_preview_audio_track(int *nAudioTrack);
+
+bool vp_play_config_get_call_state(bool *bCallOn);
+bool vp_play_config_get_battery_charge_state(bool *bCharge);
+bool vp_play_config_get_wifi_direct_connect_status(bool *bConnect);
+bool vp_play_config_get_wifi_direct_active_status(bool *bConnect);
+bool vp_play_config_get_lcd_off_state(bool *bLCDOff);
+
+bool vp_play_config_set_rotate_state_key_changed_cb(system_settings_changed_cb pFunc, void *pUserData);
+bool vp_play_config_ignore_rotate_state_key_changed_cb(void);
+bool vp_play_config_set_battery_charge_state_key_changed_cb(runtime_info_changed_cb pFunc, void *pUserData);
+bool vp_play_config_ignore_battery_charge_state_key_changed_cb(void);
+bool vp_play_wifi_initialize();
+bool vp_play_config_set_wifi_state_key_changed_cb(wifi_connection_state_changed_cb pFunc, void *pUserData);
+bool vp_play_config_ignore_wifi_state_key_changed_cb(void);
+void vp_play_wifi_deinitialize();
+
+bool vp_play_config_get_allow_dock_connect_key(bool *bEnable);
+bool vp_play_config_get_extern_mode_key(bool *bEnable);
+bool vp_play_config_set_allow_dock_connect_key(bool bEnable);
+bool vp_play_config_set_extern_mode_key(bool bEnable);
+
+bool vp_play_config_set_multi_play_status(bool bMultiPlay);
+bool vp_play_config_get_multi_play_status(bool *bMultiPlay);
+bool vp_play_config_set_mirroring_warning_status(bool bMultiPlay);
+bool vp_play_config_get_mirroring_warning_status(bool *bMultiPlay);
+
+bool vp_play_config_get_sound_alive_status(int *nStatus);
+bool vp_play_config_set_sound_alive_status(int nStatus);
diff --git a/playview/src/common/include/vp-play-preference.h b/playview/src/common/include/vp-play-preference.h
new file mode 100644
index 0000000..68d3f39
--- /dev/null
+++ b/playview/src/common/include/vp-play-preference.h
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+void vp_play_preference_init();
+
+bool vp_play_preference_set_multi_play_status(bool bMultiPlay);
+bool vp_play_preference_get_multi_play_status(bool *bMultiPlay);
+bool vp_play_preference_set_mirroring_warning_status(bool bMultiPlay);
+bool vp_play_preference_get_mirroring_warning_status(bool *bWarning);
+bool vp_play_preference_get_subtitle_show_key(bool *bShow);
+bool vp_play_preference_set_subtitle_show_key(bool bShow);
+bool vp_play_preference_set_subtitle_font_name_key(const char *szFontName);
+bool vp_play_preference_get_subtitle_font_name_key(char **szFontName);
+bool vp_play_preference_get_subtitle_size_key(int *nSize);
+bool vp_play_preference_set_subtitle_size_key(int nSize);
+
+
+bool vp_play_preference_get_subtitle_edge_key(int *nEdge);
+bool vp_play_preference_set_subtitle_edge_key(int nEdge);
+bool vp_play_preference_set_subtitle_alignment_key(int nAlignment);
+bool vp_play_preference_get_subtitle_alignment_key(int *nAlignment);
+bool vp_play_preference_set_subtitle_font_color_key(int nColor);
+bool vp_play_preference_get_subtitle_font_color_key(int *nColor);
+bool vp_play_preference_set_subtitle_font_color_hex_key(const char *szColorHex);
+bool vp_play_preference_get_subtitle_font_color_hex_key(char **szColorHex);
+bool vp_play_preference_set_subtitle_bg_color_hex_key(const char *szColorHex);
+bool vp_play_preference_get_subtitle_bg_color_hex_key(char **szColorHex);
+bool vp_play_preference_set_subtitle_caption_win_color_hex_key(const char *szColorHex);
+bool vp_play_preference_get_subtitle_caption_win_color_hex_key(char **szColorHex);
+bool vp_play_preference_get_subtitle_bg_color_key(int *nColor);
+bool vp_play_preference_set_subtitle_bg_color_key(int nColor);
+bool vp_play_preference_get_repeat_mode_key(int *nMode);
+bool vp_play_preference_set_repeat_mode_key(int nMode);
+bool vp_play_preference_get_screen_mode_key(int *nMode);
+bool vp_play_preference_set_screen_mode_key(int nMode);
+bool vp_play_preference_get_capture_on_key(bool *bEnable);
+bool vp_play_preference_set_capture_on_key(bool bEnable);
+
+bool vp_play_preference_get_tag_active_key(bool *bEnable);
+bool vp_play_preference_set_tag_active_key(bool bEnable);
+
+bool vp_play_preference_get_tag_weather_key(bool *bEnable);
+bool vp_play_preference_set_tag_weather_key(bool bEnable);
+bool vp_play_preference_get_tag_location_key(bool *bEnable);
+bool vp_play_preference_set_tag_location_key(bool bEnable);
+bool vp_play_preference_get_tag_edit_weather_key(int *nWeather);
+bool vp_play_preference_set_tag_edit_weather_key(int nWeather);
+
+
+bool vp_play_preference_get_sort_type_key(int *nType);
+bool vp_play_preference_set_preview_url_videos(const char *szMediaURL);
+bool vp_play_preference_get_preview_url_videos(char **szMediaURL);
+bool vp_play_preference_set_preview_audio_track(int nAudioTrack);
+bool vp_play_preference_get_preview_audio_track(int *nAudioTrack);
+bool vp_play_preference_get_sensor_asked_state(bool *bAsked);
+bool vp_play_preference_set_sensor_asked_state(bool bAsked);
+bool vp_play_preference_get_easy_mode(bool *bEnable);
+bool vp_play_preference_get_allow_dock_connect_key(bool *bEnable);
+bool vp_play_preference_set_allow_dock_connect_key(bool bEnable);
+bool vp_play_preference_get_extern_mode_key(bool *bEnable);
+bool vp_play_preference_set_extern_mode_key(bool bEnable);
+bool vp_play_preference_get_sound_alive_status(int *nStatus);
+bool vp_play_preference_set_sound_alive_status(int nStatus);
+
diff --git a/playview/src/common/include/vp-play-ug.h b/playview/src/common/include/vp-play-ug.h
new file mode 100644
index 0000000..476f521
--- /dev/null
+++ b/playview/src/common/include/vp-play-ug.h
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+bool vp_play_app_launch_share_panel(Evas_Object *pWin, const char *szMediaURL, void *pUserData);
+bool vp_play_app_launch_videos(Evas_Object *pWin, bool bRaise, void *pUserData);
+
diff --git a/playview/src/common/include/vp-play-util.h b/playview/src/common/include/vp-play-util.h
new file mode 100644
index 0000000..3f42225
--- /dev/null
+++ b/playview/src/common/include/vp-play-util.h
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <glib.h>
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+char *vp_play_util_get_title_from_path(char *szFilePath);
+char *vp_play_util_get_filename_from_path(char *szFilePath);
+char *vp_play_util_get_folder_from_path(char *szFilePath);
+bool vp_play_util_key_grab(Elm_Win *pWin, const char *szKeyName);
+bool vp_play_util_key_ungrab(Elm_Win *pWin, const char *szKeyName);
+void vp_play_util_fb_visible_off(Evas_Object *pWin, bool bVisible);
+bool vp_play_util_get_landscape_check(int nRotateVal);
+//bool vp_play_util_add_to_home(const char *szMediaId, const char *szThumbnailURL);
+bool vp_play_util_local_file_check(char *szMediaURL);
+bool vp_play_util_get_subtitle_path(const char *szMediaURL, char **szSubtitle);
+double vp_play_util_get_sys_time(void);
+bool vp_play_util_status_noti_show(const char *szStr);
+char *vp_play_util_remove_prefix_to_url(char *szURL);
+void vp_play_util_convert_file_size(long long lSize, char **szSize);
+void vp_play_util_get_convert_time(double dtime, char **szFileDate);
+bool vp_play_util_get_file_info(const char *szMediaURL, char **szFileSize, char **szFileDate, char **szFileExtention);
+bool vp_play_util_check_streaming(const char *szURL);
+bool vp_play_util_rtsp_url_check(const char *szURL);
+bool vp_play_util_calculator_position(Evas_Coord_Rectangle rtSrc, Evas_Coord_Rectangle rtDst, Evas_Coord_Rectangle *rtResult, int nType);
+bool vp_play_util_check_sdp_url(const char *szUri);
+char *vp_play_util_get_sdp_url(const char *szUri);
+bool vp_play_util_save_file(const char *szFileName, char *szBuffer, int nSize);
+bool vp_play_util_get_network_status(void);
+bool vp_play_util_is_exist_subtitle_from_path(const char *szPath);
+bool vp_play_util_get_subtitles_from_path(const char *szPath, GList **pSubtitleList);
+bool vp_play_util_get_subtitle_path_list(GList **subtitleList);
+bool vp_play_util_check_personal_status(const char* szPreviewUrl);
+
+int vp_play_util_get_root_window_angle(Evas_Object *pWin);
+
+bool vp_play_util_app_resume(void);
+bool vp_play_util_check_white_space(char *szText);
+bool vp_play_util_check_valid_file_name(const char *szFileName);
+unsigned long long vp_play_util_get_disk_available_space(const char *szFilePath);
+unsigned long long vp_play_util_get_file_size(const char *szFilePath);
+
+bool vp_play_util_get_city(const char *szLocation, char **szCity);
+bool vp_play_util_is_Xwindow_focused(Ecore_X_Window nXwinID);
+
+char *vp_play_util_convert_rgba_to_hex(int r,int g,int b,int a);
+bool vp_play_util_convert_hex_to_rgba(char *pColorHex, int *r,int *g,int *b,int *a);
+void vp_play_util_set_object_size(Evas_Object *obj, int w, int h, int id);
+void vp_play_util_set_object_color(Evas_Object *obj, int r, int g, int b, int a, int id);
+void vp_play_util_set_object_offset(Evas_Object *obj, int left, int top, int id);
+
+void vp_play_util_set_lock_power_key();
+void vp_play_util_set_unlock_power_key();
+
+void vp_play_util_focus_next_object_set(Evas_Object *obj, Evas_Object *next, Elm_Focus_Direction dir);
+
diff --git a/playview/src/common/vp-play-config.c b/playview/src/common/vp-play-config.c
new file mode 100644
index 0000000..5ff9f9c
--- /dev/null
+++ b/playview/src/common/vp-play-config.c
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <system_settings.h>
+#include <runtime_info.h>
+#include <app_preference.h>
+#include <telephony.h>
+#include <wifi-direct.h>
+#include "vp-play-config.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+#define PREF_VP_VIDEO_PREVIEW_URL_VIDEOS "preference/org.tizen.videos/preview_url_videos"
+#define PREF_VP_SORT_TYPE "preference/org.tizen.videos/sort_type"
+#define PREF_VP_MULTI_PLAY_FLAG "preference/org.tizen.videos/multi_play"
+
+
+bool vp_play_config_set_multi_play_status(bool bMultiPlay)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(PREF_VP_MULTI_PLAY_FLAG, bMultiPlay);
+ if (nErr != 0) {
+ VideoLogError("failed to set MULTI PLAY FLAG [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_get_multi_play_status(bool *bMultiPlay)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(PREF_VP_MULTI_PLAY_FLAG, &nVal);
+ if (nErr != 0) {
+ VideoLogError("failed to get MULTI PLAY FLAG [0x%x]", nErr);
+ return FALSE;
+ }
+
+ *bMultiPlay = (nVal == 0)? FALSE:TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_config_get_rotate_lock_status(bool *bStatus)
+{
+ bool bLocked = FALSE;
+ int nErr = -1;
+ nErr = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &bLocked);
+ if (nErr != SYSTEM_SETTINGS_ERROR_NONE) {
+ VideoLogError("failed to get screen rotation status [0x%x]", nErr);
+ return FALSE;
+ }
+
+ *bStatus = bLocked;
+
+ return TRUE;
+}
+
+bool vp_play_config_get_sort_type_key(int *nType)
+{
+
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(PREF_VP_SORT_TYPE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("failed to get sort type details [0x%x]", nErr);
+ return FALSE;
+ }
+
+ *nType = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_config_set_preview_url_videos(const char *szMediaURL)
+{
+ if (!szMediaURL)
+ {
+ VideoLogError("szMediaURL is null");
+ return FALSE;
+ }
+
+ int nErr = 0;
+ const char *pStorePath = ".video-store";
+
+ if (strstr(szMediaURL, pStorePath) == NULL)
+ {
+ nErr = preference_set_string(PREF_VP_VIDEO_PREVIEW_URL_VIDEOS, szMediaURL);
+ if (nErr != 0) {
+ VideoLogError("failed to set preview url [0x%x]", nErr);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_get_preview_url_videos(char **szMediaURL)
+{
+ int nErr = preference_get_string(PREF_VP_VIDEO_PREVIEW_URL_VIDEOS, szMediaURL);
+ if (nErr != 0 || *szMediaURL == NULL) {
+ VideoLogError("failed to get preview url [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_get_wifi_direct_connect_status(bool *bConnect)
+{
+ int nErr = -1;
+ wifi_connection_state_e nwifistate = WIFI_CONNECTION_STATE_FAILURE;
+ wifi_direct_state_e nwifidirectstate = WIFI_DIRECT_STATE_DEACTIVATED;
+ bool bWifiState = FALSE;
+
+ nErr = wifi_get_connection_state(&nwifistate);
+ if (nErr != WIFI_ERROR_NONE) {
+ VideoLogError("failed to get connection details [0x%x]", nErr);
+ return FALSE;
+ }
+
+ if (nwifistate == WIFI_CONNECTION_STATE_CONNECTED) {
+ bWifiState = TRUE;
+ }
+
+ nErr = wifi_direct_get_state(&nwifidirectstate);
+ if (nErr != WIFI_DIRECT_ERROR_NONE) {
+ VideoLogError("failed to get wifi-direct state [0x%x]", nErr);
+ return FALSE;
+ }
+
+ if (nwifidirectstate >= WIFI_DIRECT_STATE_CONNECTED) {
+ bWifiState = TRUE;
+ }
+ VideoLogError(" == %d == ", nwifidirectstate);
+
+ *bConnect = bWifiState;
+
+ return TRUE;
+}
+
+bool vp_play_config_get_wifi_direct_active_status(bool *bConnect)
+{
+ int nErr = 0;
+ wifi_direct_state_e nVal = 0;
+ bool bWifiState = FALSE;
+
+ nErr = wifi_direct_get_state(&nVal);
+ if (nErr != WIFI_DIRECT_ERROR_NONE) {
+ VideoLogError("failed to get wifi direct state [0x%x]", nErr);
+ return FALSE;
+ }
+
+ if (nVal >= WIFI_DIRECT_STATE_ACTIVATED) {
+ bWifiState = TRUE;
+ }
+ VideoLogError(" == %d == ", nVal);
+
+ *bConnect = bWifiState;
+
+ return TRUE;
+
+}
+
+bool vp_play_config_get_call_state(bool *bCallOn)
+{
+ VideoLogInfo("start");
+ telephony_call_h *call_list_sim1, *call_list_sim2;
+ unsigned int count_sim1, count_sim2;
+ telephony_handle_list_s tel_list;
+ telephony_error_e ret_sim1, ret_sim2;
+
+ int tel_valid = telephony_init(&tel_list);
+ if (tel_valid != 0) {
+ VideoLogError("telephony is not initialized. ERROR Code is %d",tel_valid);
+ return false;
+ }
+
+ ret_sim1 = telephony_call_get_call_list(tel_list.handle[0], &count_sim1, &call_list_sim1);
+ if (ret_sim1 != TELEPHONY_ERROR_NONE) {
+ VideoLogError("Cannot get call list information for primary sim");
+ }
+
+ ret_sim2 = telephony_call_get_call_list(tel_list.handle[1], &count_sim2, &call_list_sim2);
+ if (ret_sim2 != TELEPHONY_ERROR_NONE) {
+ VideoLogError("Cannot get call list information for secondey sim");
+ }
+
+ telephony_call_release_call_list(count_sim1, &call_list_sim1);
+ telephony_call_release_call_list(count_sim2, &call_list_sim2);
+ telephony_deinit(&tel_list);
+
+ if (count_sim1 == 0 && count_sim2 == 0) {
+ *bCallOn = FALSE;
+ return false;
+ } else {
+ *bCallOn = TRUE;
+ return true;
+ }
+
+ return false;
+}
+
+bool vp_play_config_get_battery_charge_state(bool *bChargeState)
+{
+ int nErr = -1;
+ int nVal = 0;
+ nErr = runtime_info_get_value_int(RUNTIME_INFO_KEY_BATTERY_IS_CHARGING, &nVal);
+ if (nErr != RUNTIME_INFO_ERROR_NONE) {
+ VideoLogError("failed to get charging status [0x%x]", nErr);
+ return FALSE;
+ }
+
+ *bChargeState = (nVal == RUNTIME_INFO_KEY_CHARGER_CONNECTED)? TRUE:FALSE;
+ VideoLogInfo("bChargeState: %d", *bChargeState);
+ return TRUE;
+}
+
+
+bool vp_play_config_get_lcd_off_state(bool *bLCDOff)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = vconf_get_int(VCONFKEY_PM_STATE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VCONFKEY_PM_STATE is fail [0x%x]", nErr);
+ return FALSE;
+ }
+
+ if (nVal >= VCONFKEY_PM_STATE_LCDOFF) {
+ *bLCDOff = TRUE;
+ }
+ else {
+ *bLCDOff = FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_set_rotate_state_key_changed_cb(system_settings_changed_cb pFunc, void *pUserData)
+{
+ int nErr = -1;
+ nErr = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, pFunc, pUserData);
+ if (nErr != SYSTEM_SETTINGS_ERROR_NONE) {
+ VideoLogError("failed to register rotation callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_ignore_rotate_state_key_changed_cb()
+{
+ int nErr = -1;
+ nErr = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO);
+ if (nErr != SYSTEM_SETTINGS_ERROR_NONE) {
+ VideoLogError("failed to un-register rotation callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_set_battery_charge_state_key_changed_cb(runtime_info_changed_cb pFunc, void *pUserData)
+{
+ int nErr = -1;
+ nErr = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_BATTERY_IS_CHARGING, pFunc, pUserData);
+ if (nErr != RUNTIME_INFO_ERROR_NONE) {
+ VideoLogError("failed to register battery charging callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_wifi_initialize()
+{
+ int nErr = -1;
+ nErr = wifi_initialize();
+ if (nErr != WIFI_ERROR_NONE) {
+ VideoLogError("wifi_initialize is fail [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_set_wifi_state_key_changed_cb(wifi_connection_state_changed_cb pFunc, void *pUserData)
+{
+ int nErr = -1;
+ nErr = wifi_set_connection_state_changed_cb(pFunc, pUserData);
+ if (nErr != WIFI_ERROR_NONE) {
+ VideoLogError("failed to register wifi state changed callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_ignore_battery_charge_state_key_changed_cb()
+{
+ int nErr = -1;
+ nErr = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_BATTERY_IS_CHARGING);
+ if (nErr != RUNTIME_INFO_ERROR_NONE) {
+ VideoLogError("failed to un-register battery charging callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_config_ignore_wifi_state_key_changed_cb()
+{
+ int nErr = -1;
+ nErr = wifi_unset_connection_state_changed_cb();
+ if (nErr != WIFI_ERROR_NONE) {
+ VideoLogError("failed to un-register wifi state changed callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void vp_play_wifi_deinitialize()
+{
+ int nErr = -1;
+ nErr = wifi_deinitialize();
+ if (nErr != WIFI_ERROR_NONE) {
+ VideoLogError("wifi_deinitialize is fail [0x%x]", nErr);
+ }
+}
diff --git a/playview/src/common/vp-play-preference.c b/playview/src/common/vp-play-preference.c
new file mode 100644
index 0000000..af6bd57
--- /dev/null
+++ b/playview/src/common/vp-play-preference.c
@@ -0,0 +1,1348 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <app_preference.h>
+
+#include "vp-play-preference.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+#define VP_PREFERENCE_KEY_GENERAL_BACKGROUND_PLAYING "preference/org.tizen.videos/backgroud_playing"
+#define VP_PREFERENCE_KEY_SUBTILE_SHOW "preference/org.tizen.videos/show_subtitle"
+#define VP_PREFERENCE_KEY_SUBTILE_SIZE "preference/org.tizen.videos/subtitle_size"
+#define VP_PREFERENCE_KEY_SUBTILE_EDGE "preference/org.tizen.videos/subtitle_edge"
+
+#define VP_PREFERENCE_KEY_SUBTILE_FONT "preference/org.tizen.videos/subtitle_font"
+#define VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR "preference/org.tizen.videos/subtitle_font_color"
+#define VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX "preference/org.tizen.videos/subtitle_font_color_hex"
+#define VP_PREFERENCE_KEY_SUBTILE_BG_COLOR "preference/org.tizen.videos/subtitle_bg_color"
+#define VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX "preference/org.tizen.videos/subtitle_bg_color_hex"
+#define VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX "preference/org.tizen.videos/subtitle_caption_win_color_hex"
+#define VP_PREFERENCE_KEY_SUBTILE_ALIGNMENT "preference/org.tizen.videos/subtitle_alignment"
+
+//#define VP_PREFERENCE_KEY_DISPLAY_SHOW_INDICATOR "preference/org.tizen.videos/show_indicator"
+//#define VP_PREFERENCE_KEY_DISPLAY_SHOW_BORDER "preference/org.tizen.videos/show_border"
+#define VP_PREFERENCE_KEY_REPEAT_MODE "preference/org.tizen.videos/repeat_mode"
+#define VP_PREFERENCE_KEY_SCREEN_MODE "preference/org.tizen.videos/screen_mode"
+//#define VP_PREFERENCE_KEY_ZOOM_ENABLE "preference/setting/gallery/inline_video_state"
+#define VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS "preference/org.tizen.videos/preview_url_videos"
+#define VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK "preference/org.tizen.videos/preview_audio_track"
+
+#define VP_PREFERENCE_KEY_SENSOR_ASKED "preference/org.tizen.videos/motion_asked"
+#define VP_PREFERENCE_KEY_VIDEOS_SORT_TYPE "preference/org.tizen.videos/sort_type"
+#define VP_PREFERENCE_KEY_CAPTURE_MODE_ON "preference/org.tizen.videos/capture_on"
+
+#define VP_PREFERENCE_KEY_TAG_ACTIVE "preference/org.tizen.videos/tag_active"
+#define VP_PREFERENCE_KEY_TAG_WEATHER "preference/org.tizen.videos/tag_weather"
+#define VP_PREFERENCE_KEY_TAG_LOCATION "preference/org.tizen.videos/tag_location"
+#define VP_PREFERENCE_KEY_TAG_EDIT_WEATHER "preference/org.tizen.videos/tag_edit_weather"
+
+#define VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT "preference/org.tizen.videos/allow_dock_connect"
+#define VP_PREFERENCE_KEY_EXTERN_MODE "preference/org.tizen.videos/extern_mode"
+#define VP_PREFERENCE_KEY_MULTI_PLAY_FLAG "preference/org.tizen.videos/multi_play"
+#define VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING "preference/org.tizen.videos/mirroring_warning"
+
+
+/*for saving sound alive value*/
+#define VP_PREFERENCE_KEY_SOUND_ALIVE "preference/org.tizen.videos/sound_alive"
+
+void vp_play_preference_init()
+{
+ VideoLogInfo("");
+
+ int nErr = PREFERENCE_ERROR_NONE;
+ bool exist;
+
+ nErr =
+ preference_is_existing
+ (VP_PREFERENCE_KEY_GENERAL_BACKGROUND_PLAYING, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int
+ (VP_PREFERENCE_KEY_GENERAL_BACKGROUND_PLAYING, 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_GENERAL_BACKGROUND_PLAYING is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_SHOW, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_SUBTILE_SHOW, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_SHOW is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_SIZE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SUBTILE_SIZE, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_EDGE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SUBTILE_EDGE, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_EDGE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_FONT, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_string(VP_PREFERENCE_KEY_SUBTILE_FONT,
+ "Tizen");
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_FONT is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR,
+ 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_string
+ (VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX, "#ffffffff");
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_BG_COLOR is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_string
+ (VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX, "#00000000");
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing
+ (VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_string
+ (VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX,
+ "#00000000");
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_SUBTILE_ALIGNMENT,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_SUBTILE_ALIGNMENT,
+ 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SUBTILE_ALIGNMENT is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_REPEAT_MODE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr = preference_set_int(VP_PREFERENCE_KEY_REPEAT_MODE, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_REPEAT_MODE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SCREEN_MODE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SCREEN_MODE, 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SCREEN_MODE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_string
+ (VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS, "");
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK,
+ 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SENSOR_ASKED, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_SENSOR_ASKED, 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SENSOR_ASKED is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_VIDEOS_SORT_TYPE,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_VIDEOS_SORT_TYPE, 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_VIDEOS_SORT_TYPE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_CAPTURE_MODE_ON, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_CAPTURE_MODE_ON,
+ 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_CAPTURE_MODE_ON is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_TAG_ACTIVE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_TAG_ACTIVE, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_TAG_ACTIVE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_TAG_WEATHER, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_TAG_WEATHER, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_TAG_WEATHER is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_TAG_LOCATION, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_TAG_LOCATION, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_TAG_LOCATION is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_TAG_EDIT_WEATHER,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_TAG_EDIT_WEATHER, 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_TAG_EDIT_WEATHER is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean
+ (VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_EXTERN_MODE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_EXTERN_MODE, 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_EXTERN_MODE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_MULTI_PLAY_FLAG, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_MULTI_PLAY_FLAG,
+ 0);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_MULTI_PLAY_FLAG is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr =
+ preference_is_existing(VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING,
+ &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr =
+ preference_set_boolean
+ (VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING is fail [%d]",
+ nErr);
+ }
+ }
+ }
+
+ nErr = preference_is_existing(VP_PREFERENCE_KEY_SOUND_ALIVE, &exist);
+ if (nErr != 0) {
+ VideoLogError("preference_is_existing is fail [%d]", nErr);
+ } else {
+ if (!exist) {
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SOUND_ALIVE, 1);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SOUND_ALIVE is fail [%d]",
+ nErr);
+ }
+ }
+ }
+}
+
+bool vp_play_preference_set_multi_play_status(bool bMultiPlay)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_MULTI_PLAY_FLAG,
+ bMultiPlay);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_MULTI_PLAY_FLAG is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_multi_play_status(bool *bMultiPlay)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr =
+ preference_get_boolean(VP_PREFERENCE_KEY_MULTI_PLAY_FLAG, &nVal);
+ if (nErr != 0) {
+ VideoLogError("GET preference_get_boolean is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *bMultiPlay = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_mirroring_warning_status(bool bMultiPlay)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING,
+ bMultiPlay);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_mirroring_warning_status(bool *bWarning)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr =
+ preference_get_boolean(VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING,
+ &nVal);
+ if (nErr != 0) {
+ VideoLogError
+ ("GET VP_PREFERENCE_KEY_SCREEN_MIRRORING_WARNING is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *bWarning = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_show_key(bool *bShow)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(VP_PREFERENCE_KEY_SUBTILE_SHOW, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SHOW is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *bShow = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_subtitle_show_key(bool bShow)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(VP_PREFERENCE_KEY_SUBTILE_SHOW, bShow);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SHOW is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_subtitle_font_name_key(const char *szFontName)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_string(VP_PREFERENCE_KEY_SUBTILE_FONT, szFontName);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_FONT is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_font_name_key(char **szFontName)
+{
+ int nErr = 0;
+ nErr =
+ preference_get_string(VP_PREFERENCE_KEY_SUBTILE_FONT, szFontName);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_FONT is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_size_key(int *nSize)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_SUBTILE_SIZE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nSize = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_subtitle_size_key(int nSize)
+{
+ int nErr = 0;
+
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SUBTILE_SIZE, nSize);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_preference_get_subtitle_edge_key(int *nEdge)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_SUBTILE_EDGE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_EDGE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nEdge = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_subtitle_edge_key(int nEdge)
+{
+ int nErr = 0;
+
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SUBTILE_EDGE, nEdge);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_EDGE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_subtitle_alignment_key(int nAlignment)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_SUBTILE_ALIGNMENT,
+ nAlignment);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_alignment_key(int *nAlignment)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_SUBTILE_ALIGNMENT, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nAlignment = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_subtitle_font_color_key(int nColor)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR, nColor);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_font_color_key(int *nColor)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr =
+ preference_get_int(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_SIZE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nColor = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_subtitle_font_color_hex_key(const char
+ *szColorHex)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_string(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX,
+ szColorHex);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_font_color_hex_key(char **szColorHex)
+{
+ int nErr = 0;
+ nErr =
+ preference_get_string(VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX,
+ szColorHex);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_SUBTILE_FONT_COLOR_HEX is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_subtitle_bg_color_hex_key(const char
+ *szColorHex)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_string(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX,
+ szColorHex);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_bg_color_hex_key(char **szColorHex)
+{
+ int nErr = 0;
+ nErr =
+ preference_get_string(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX,
+ szColorHex);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_SUBTILE_BG_COLOR_HEX is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_subtitle_caption_win_color_hex_key(const char
+ *szColorHex)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_string
+ (VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX, szColorHex);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_caption_win_color_hex_key(char
+ **szColorHex)
+{
+ int nErr = 0;
+ nErr =
+ preference_get_string
+ (VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX, szColorHex);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_SUBTILE_CAPTION_WIN_COLOR_HEX is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_subtitle_bg_color_key(int *nColor)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_BG_COLOR is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nColor = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_subtitle_bg_color_key(int nColor)
+{
+ int nErr = 0;
+
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SUBTILE_BG_COLOR, nColor);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SUBTILE_BG_COLOR is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_repeat_mode_key(int *nMode)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_REPEAT_MODE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_REPEAT_MODE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *nMode = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_repeat_mode_key(int nMode)
+{
+ int nErr = 0;
+
+ nErr = preference_set_int(VP_PREFERENCE_KEY_REPEAT_MODE, nMode);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_REPEAT_MODE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_screen_mode_key(int *nMode)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_SCREEN_MODE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SCREEN_MODE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *nMode = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_screen_mode_key(int nMode)
+{
+ int nErr = 0;
+
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SCREEN_MODE, nMode);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SCREEN_MODE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ VideoLogInfo("== SCRENN MODE SET : %d", nMode);
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_capture_on_key(bool *bEnable)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr =
+ preference_get_boolean(VP_PREFERENCE_KEY_CAPTURE_MODE_ON, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_CAPTURE_MODE_ON is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *bEnable = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_capture_on_key(bool bEnable)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_CAPTURE_MODE_ON,
+ bEnable);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_CAPTURE_MODE_ON is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_preference_get_tag_active_key(bool *bEnable)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(VP_PREFERENCE_KEY_TAG_ACTIVE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_ACTIVE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *bEnable = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_tag_active_key(bool bEnable)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(VP_PREFERENCE_KEY_TAG_ACTIVE, bEnable);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_ACTIVE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_preference_get_tag_weather_key(bool *bEnable)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(VP_PREFERENCE_KEY_TAG_WEATHER, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_WEATHER is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *bEnable = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_tag_weather_key(bool bEnable)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(VP_PREFERENCE_KEY_TAG_WEATHER, bEnable);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_WEATHER is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_tag_location_key(bool *bEnable)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(VP_PREFERENCE_KEY_TAG_LOCATION, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_LOCATION is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *bEnable = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_tag_location_key(bool bEnable)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_TAG_LOCATION, bEnable);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_LOCATION is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_tag_edit_weather_key(int *nWeather)
+{
+
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_TAG_EDIT_WEATHER, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_EDIT_WEATHER is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nWeather = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_tag_edit_weather_key(int nWeather)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_TAG_EDIT_WEATHER, nWeather);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_TAG_EDIT_WEATHER is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_preference_get_sort_type_key(int *nType)
+{
+
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_VIDEOS_SORT_TYPE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_VIDEOS_SORT_TYPE is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *nType = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_preview_url_videos(const char *szMediaURL)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is null");
+ return FALSE;
+ }
+
+ int nErr = 0;
+ const char *pStorePath = ".video-store";
+
+ if (strstr(szMediaURL, pStorePath) == NULL) {
+ nErr =
+ preference_set_string(VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ szMediaURL);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_preview_url_videos(char **szMediaURL)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_get_string(VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ szMediaURL);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_PREVIEW_URL_VIDEOS is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_preview_audio_track(int nAudioTrack)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_int(VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK,
+ nAudioTrack);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK is fail [%d]", nErr);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+
+bool vp_play_preference_get_preview_audio_track(int *nAudioTrack)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr =
+ preference_get_int(VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK, &nVal);
+ if (nErr != 0) {
+ VideoLogError
+ ("VP_PREFERENCE_KEY_PREVIEW_AUDIO_TRACK is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *nAudioTrack = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_sensor_asked_state(bool *bAsked)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(VP_PREFERENCE_KEY_SENSOR_ASKED, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SENSOR_ASKED is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *bAsked = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_sensor_asked_state(bool bAsked)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(VP_PREFERENCE_KEY_SENSOR_ASKED, bAsked);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SENSOR_ASKED is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_allow_dock_connect_key(bool *bEnable)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr =
+ preference_get_boolean(VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT,
+ &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ *bEnable = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_allow_dock_connect_key(bool bEnable)
+{
+ int nErr = 0;
+
+ nErr =
+ preference_set_boolean(VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT,
+ bEnable);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_ALLOW_DOCK_CONNECT is fail [%d]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_extern_mode_key(bool *bEnable)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(VP_PREFERENCE_KEY_EXTERN_MODE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_EXTERN_MODE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *bEnable = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_preference_set_extern_mode_key(bool bEnable)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(VP_PREFERENCE_KEY_EXTERN_MODE, bEnable);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_EXTERN_MODE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_preference_get_sound_alive_status(int *nStatus)
+{
+ int nErr = 0;
+ int nVal = 0;
+
+ nErr = preference_get_int(VP_PREFERENCE_KEY_SOUND_ALIVE, &nVal);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SOUND_ALIVE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ *nStatus = nVal;
+
+ return TRUE;
+
+}
+
+bool vp_play_preference_set_sound_alive_status(int nStatus)
+{
+ int nErr = 0;
+
+ nErr = preference_set_int(VP_PREFERENCE_KEY_SOUND_ALIVE, nStatus);
+ if (nErr != 0) {
+ VideoLogError("VP_PREFERENCE_KEY_SOUND_ALIVE is fail [%d]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/common/vp-play-ug.c b/playview/src/common/vp-play-ug.c
new file mode 100644
index 0000000..26bbd4f
--- /dev/null
+++ b/playview/src/common/vp-play-ug.c
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+
+#include "vp-play-macro-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+
+#include "vp-play-util.h"
+
+#include "vp-play-ug.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-play-normal-view.h"
+
+
+#define MESSAGE_UG_NAME "msg-composer-efl"
+#define EMAIL_UG_NAME "email-composer-efl"
+#define BLUETOOTH_UG_NAME "setting-bluetooth-efl"
+#define FTM_UG_NAME "fileshare-efl"
+#define VIDEOS_APP_NAME "org.tizen.videos"
+#define BROWSER_APP_NAME "org.tizen.browser"
+#define VIDEO_STORE_DOWNLOAD_SVC "org.tizen.video-store-download-svc"
+
+
+#define VP_VIDEOS_VALUE_TRUE "true"
+#define VP_VIDEOS_VALUE_FALSE "false"
+
+#define VP_VIDEOS_ONLY_RAISE "raise"
+
+/* callback functions */
+static void __vp_play_ug_reply_cb(app_control_h pRequest,
+ app_control_h pReply,
+ app_control_result_e nResult,
+ void *pUserData)
+{
+ if (pRequest) {
+ char *appId;
+ app_control_get_app_id(pRequest, &appId);
+ VideoLogWarning("Request : %s", appId);
+ VP_FREE(appId);
+ }
+
+ if (pReply) {
+ char *appId;
+ app_control_get_app_id(pReply, &appId);
+ VideoLogWarning("Reply : %s", appId);
+ VP_FREE(appId);
+ }
+ vp_play_normal_view_set_share_panel_state(pUserData);
+}
+
+bool vp_play_app_launch_videos(Evas_Object *pWin, bool bRaise,
+ void *pUserData)
+{
+ app_control_h pService = NULL;
+
+ int nRet = 0;
+ nRet = app_control_create(&pService);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_create is fail [0x%x]", nRet);
+ goto Execption;
+ }
+
+ nRet =
+ app_control_set_operation(pService, APP_CONTROL_OPERATION_VIEW);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_set_operation is fail [0x%x]", nRet);
+ goto Execption;
+ }
+ if (bRaise) {
+ nRet =
+ app_control_add_extra_data(pService, VP_VIDEOS_ONLY_RAISE,
+ VP_VIDEOS_VALUE_TRUE);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]",
+ nRet);
+ goto Execption;
+ }
+ } else {
+ nRet =
+ app_control_add_extra_data(pService, VP_VIDEOS_ONLY_RAISE,
+ VP_VIDEOS_VALUE_FALSE);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]",
+ nRet);
+ goto Execption;
+ }
+ }
+
+ nRet = app_control_set_app_id(pService, VIDEOS_APP_NAME);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_set_app_id is fail [0x%x]", nRet);
+ goto Execption;
+ }
+
+ nRet =
+ app_control_send_launch_request(pService, __vp_play_ug_reply_cb,
+ pUserData);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_send_launch_request is fail [0x%x]",
+ nRet);
+ goto Execption;
+ }
+
+ app_control_destroy(pService);
+ pService = NULL;
+
+ return TRUE;
+
+Execption:
+ if (pService) {
+ app_control_destroy(pService);
+ pService = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_play_app_launch_share_panel(Evas_Object *pWin,
+ const char *szMediaURL,
+ void *pUserData)
+{
+ if (szMediaURL == NULL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ app_control_h pService = NULL;
+ char *szFileName = NULL;
+
+ int nRet = 0;
+ nRet = app_control_create(&pService);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_create is fail [0x%x]", nRet);
+ goto Execption;
+ }
+
+ nRet = app_control_set_operation(pService, VP_SHARE_OPERATION_SINGLE);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]", nRet);
+ goto Execption;
+ }
+ nRet = app_control_add_extra_data(pService, "http://tizen.org/appcontrol/data/path", szMediaURL);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]", nRet);
+ goto Execption;
+ }
+ if (!strstr(szMediaURL, VP_PLAY_FILE_PREFIX)) {
+ szFileName = g_strdup_printf("file://%s", szMediaURL);
+ } else {
+ szFileName = g_strdup_printf("%s", szMediaURL);
+ }
+
+ VideoSecureLogInfo("file : %s", szFileName);
+
+ nRet = app_control_set_uri(pService, szFileName);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]", nRet);
+ goto Execption;
+ }
+
+ nRet =
+ app_control_send_launch_request(pService, __vp_play_ug_reply_cb,
+ pUserData);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_send_launch_request is fail [0x%x]",
+ nRet);
+ goto Execption;
+ }
+ VP_FREE(szFileName);
+
+ app_control_destroy(pService);
+ pService = NULL;
+
+ return TRUE;
+
+Execption:
+ VP_FREE(szFileName);
+
+ if (pService) {
+ app_control_destroy(pService);
+ pService = NULL;
+ }
+ return FALSE;
+}
+
diff --git a/playview/src/common/vp-play-util.c b/playview/src/common/vp-play-util.c
new file mode 100644
index 0000000..92ef10b
--- /dev/null
+++ b/playview/src/common/vp-play-util.c
@@ -0,0 +1,1419 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <regex.h>
+#include <Ecore_X.h>
+#include <shortcut.h>
+#include <efl_extension.h>
+#include <errno.h>
+#include <notification.h>
+#include <mime_type.h>
+#include <net_connection.h>
+//#include <telephony_network.h>
+#include <app.h>
+#include <app_manager.h>
+#include <glib/gstdio.h>
+#include <metadata_extractor.h>
+#include <storage.h>
+#include <system_settings.h>
+
+#include <sys/statvfs.h>
+#include <unicode/udat.h>
+#include <unicode/ustring.h>
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udatpg.h>
+#include <unicode/utmscale.h>
+#include <runtime_info.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#ifdef ENABLE_DRM_FEATURE
+#include "vp-drm.h"
+#endif
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-media-contents.h"
+#include "vp-file-util.h"
+#include "utils_i18n.h"
+
+#define FILE_SIZE_LEN_MAX 64
+#define UG_DATE_FORMAT_12 "yMMMdhms"
+#define UG_DATE_FORMAT_24 "yMMMdHms"
+#define EXT_SIZE 128
+#define EXT_SPLITTER '.'
+#define VP_PLAY_NAME_PATTERN "[\\<>:;*\"|?/]"
+
+enum VP_FILE_SIZE_TYPE {
+ SIZE_BYTE = 0,
+ SIZE_KB,
+ SIZE_MB,
+ SIZE_GB
+};
+
+static char *_vp_play_util_convert_string(const char *szLocale,
+ const char *szCustomSkeleton,
+ const char *szTimezone,
+ UDate st_Date)
+{
+#define UG_ICU_ARR_LENGTH 256
+
+ // Copy a byte string encoded in the default codepage to a ustring.
+ // Copies at most n characters. The result will be null terminated if the length of src is less than n.
+ // Performs a host byte to UChar conversion.
+
+ i18n_uchar ucustomSkeleton[UG_ICU_ARR_LENGTH] = { 0, };
+
+ if (i18n_ustring_copy_ua_n
+ (ucustomSkeleton, szCustomSkeleton, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogInfo("i18n_ustring_copy_au_n() error.");
+ return NULL;
+ }
+
+ i18n_uchar utimezone[UG_ICU_ARR_LENGTH] = { 0, };
+
+ if (i18n_ustring_copy_ua_n(utimezone, szTimezone, UG_ICU_ARR_LENGTH)
+ == NULL) {
+ VideoLogInfo("i18n_ustring_copy_au_n() error.");
+ return NULL;
+ }
+
+ i18n_error_code_e status = I18N_ERROR_NONE;
+ i18n_udatepg_h generator;
+ i18n_udate_format_h formatter;
+
+ i18n_uchar bestPattern[UG_ICU_ARR_LENGTH] = { 0, };
+ i18n_uchar formatted[UG_ICU_ARR_LENGTH] = { 0, };
+ char formattedString[UG_ICU_ARR_LENGTH] = { 0, };
+ int32_t bestPatternLength, formattedLength;
+
+ status = i18n_ucalendar_set_default_timezone(utimezone);
+ if (status != I18N_ERROR_NONE) {
+ VideoLogInfo("i18n_timezone_set_default() is failed.");
+ return NULL;
+ }
+
+ status = i18n_ulocale_set_default(getenv("LC_TIME"));
+ if (status != I18N_ERROR_NONE) {
+ VideoLogInfo("i18n_ulocale_set_default() is failed.");
+ return NULL;
+ }
+
+ status = i18n_udatepg_create(szLocale, &generator);
+ if (generator == NULL || status != I18N_ERROR_NONE) {
+ return NULL;
+ }
+
+ status =
+ i18n_udatepg_get_best_pattern(generator, ucustomSkeleton,
+ i18n_ustring_get_length
+ (ucustomSkeleton), bestPattern,
+ UG_ICU_ARR_LENGTH,
+ &bestPatternLength);
+ if (bestPatternLength <= 0 || status != I18N_ERROR_NONE) {
+ i18n_udatepg_destroy(generator);
+ return NULL;
+ }
+
+ status =
+ i18n_udate_create(I18N_UDATE_MEDIUM, I18N_UDATE_MEDIUM, szLocale,
+ NULL, -1, bestPattern, -1, &formatter);
+ if (formatter == NULL || status != I18N_ERROR_NONE) {
+ i18n_udatepg_destroy(generator);
+ return NULL;
+ }
+
+ status =
+ i18n_udate_format_date(formatter, st_Date, formatted,
+ UG_ICU_ARR_LENGTH, NULL, &formattedLength);
+ if (formattedLength <= 0 || status != I18N_ERROR_NONE) {
+ VideoLogInfo("i18n_udate_format_date() is failed.");
+ i18n_udate_destroy(formatter);
+ i18n_udatepg_destroy(generator);
+ return NULL;
+ }
+
+ i18n_ustring_copy_au(formattedString, formatted);
+ status = i18n_udatepg_destroy(generator);
+ status = i18n_udate_destroy(formatter);
+
+ if (strlen(formattedString) == 0) {
+ return NULL;
+ }
+
+ return strdup(formattedString);
+}
+
+
+
+char *vp_play_util_get_title_from_path(char *szFilePath)
+{
+ if (szFilePath == NULL || strlen(szFilePath) <= 0) {
+ VideoLogError("File Path is NULL");
+ return NULL;
+ }
+
+ char *szTitle = NULL;
+ const char *filename = vp_file_get(szFilePath);
+ if (filename == NULL) {
+ return NULL;
+ }
+ szTitle = vp_strip_ext(filename);
+
+ return szTitle;
+}
+
+char *vp_play_util_get_filename_from_path(char *szFilePath)
+{
+ if (szFilePath == NULL || strlen(szFilePath) <= 0) {
+ VideoLogError("File Path is NULL");
+ return NULL;
+ }
+ const char *filename = vp_file_get(szFilePath);
+ if (filename) {
+ return g_strdup(filename);
+ }
+ return NULL;
+}
+
+char *vp_play_util_get_folder_from_path(char *szFilePath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("File Path is NULL");
+ return NULL;
+ }
+ char *szFile = NULL;
+ char *szTitleName = NULL;
+ int nLength = 0;
+
+ nLength = strlen(szFilePath);
+
+ if (nLength <= 0) {
+ VideoLogError("Invalid buffer length");
+ return NULL;
+ }
+
+ szTitleName = strrchr(szFilePath, '/');
+
+ if (szTitleName) {
+ szTitleName++;
+ } else {
+ szTitleName = szFilePath;
+ }
+
+ if (szTitleName == NULL) {
+ VideoLogError("Invalid buffer");
+ return NULL;
+
+ }
+ szFile = calloc(1, nLength - strlen(szTitleName));
+
+ if (szFile != NULL) {
+ strncpy(szFile, szFilePath, nLength - strlen(szTitleName) - 1);
+ }
+
+ return szFile;
+}
+
+bool vp_play_util_key_grab(Elm_Win *pWin, const char *szKeyName)
+{
+ if (!pWin) {
+ VideoLogInfo("Invalid window handle.");
+ return FALSE;
+ }
+
+ Eina_Bool ret = eext_win_keygrab_set(pWin, szKeyName);
+ VideoLogInfo("%s key grab retruns: %d", szKeyName, ret);
+
+ return TRUE;
+}
+
+bool vp_play_util_key_ungrab(Elm_Win *pWin, const char *szKeyName)
+{
+ if (!pWin) {
+ VideoLogInfo("Invalid window handle.");
+ return FALSE;
+ }
+
+ Eina_Bool ret = eext_win_keygrab_unset(pWin, szKeyName);
+ VideoLogInfo("%s key ungrab retruns: %d", szKeyName, ret);
+
+ return TRUE;
+}
+
+void vp_play_util_fb_visible_off(Evas_Object *pWin, bool bVisible)
+{
+ VideoLogInfo("");
+
+ if (pWin == NULL) {
+ VideoLogError("Window handle is NULL");
+ return;
+ }
+ const char *pProfile = elm_win_profile_get(pWin);
+ if (!pProfile) {
+ VideoLogError("pProfile is NULL");
+ return;
+ }
+
+ VideoLogWarning("Skip for open : %s", pProfile);
+
+ return;
+}
+
+
+bool vp_play_util_get_landscape_check(int nRotateVal)
+{
+ video_play_rotate_t nRotate = VIDEO_PLAY_ROTATE_NONE;
+
+ nRotate = (video_play_rotate_t) nRotateVal;
+
+ if (nRotate == VIDEO_PLAY_ROTATE_90 ||
+ nRotate == VIDEO_PLAY_ROTATE_270) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int vp_play_util_get_root_window_angle(Evas_Object *pWin)
+{
+
+ int nRet = 0;
+ int nAngle = 0;
+ int nCount = 0;
+ unsigned char *pProp_data = NULL;
+ if (pWin == NULL) {
+ VideoLogError("Window handle is NULL");
+ return nAngle;
+ }
+
+ Ecore_X_Window xwin = elm_win_xwindow_get(pWin);
+ Ecore_X_Window root = ecore_x_window_root_get(xwin);
+ nRet = ecore_x_window_prop_property_get(root,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32,
+ &pProp_data, &nCount);
+
+ if (nRet && pProp_data) {
+ memcpy(&nAngle, pProp_data, sizeof(int));
+ } else {
+ nAngle = 0;
+ }
+
+ VP_FREE(pProp_data);
+ return nAngle;
+}
+
+/*
+static int __vp_play_util_add_home_result_cb(int ret, int pid, void *data)
+{
+ VideoLogInfo("Client pid: %d, Return: %d", pid, ret);
+ if (ret == SHORTCUT_SUCCESS) {
+ vp_play_util_status_noti_show(VP_PLAY_STRING_COM_ADDED);
+ } else if (SHORTCUT_STATUS_IS_CARED(ret)) {
+ // In this case, the homescreen handles error case already.
+ // It launch the popup or status message for user.
+ VideoLogInfo("result code type: %d", SHORTCUT_ERROR_CODE(ret));
+ } else if (SHORTCUT_STATUS_IS_ERROR(ret)) {
+ VideoLogInfo("error code type: %d", SHORTCUT_ERROR_CODE(ret));
+ }
+ return 0;
+}*/
+/*
+bool vp_play_util_add_to_home(const char *szMediaId, const char *szThumbnailURL)
+{
+ if (szMediaId == NULL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ int nRet = 0;
+ char *szContentType = NULL;
+
+ szContentType = g_strdup_printf("video-player:%s", szMediaId);
+
+ nRet = add_to_home_livebox("org.tizen.videos", VP_VIDEO_PLAYER_TEXT, LIVEBOX_TYPE_2x2,
+ szContentType, szThumbnailURL, 30.0, 1,
+ __vp_play_util_add_home_result_cb, NULL);
+
+
+ if (nRet != SHORTCUT_SUCCESS) {
+ VideoLogError("add_to_home_livebox is Fail : %d", nRet);
+ VP_FREE(szContentType);
+ return FALSE;
+ }
+
+ VP_FREE(szContentType);
+
+ return TRUE;
+}
+*/
+bool vp_play_util_local_file_check(char *szMediaURL)
+{
+ if (szMediaURL == NULL) {
+ VideoLogError("Invalid path!!");
+ return FALSE;
+ }
+
+ char *path = szMediaURL;
+
+ if (strstr(szMediaURL, VP_PLAY_FILE_PREFIX) != NULL) {
+ path += strlen(VP_PLAY_FILE_PREFIX);
+ }
+
+ if (!g_file_test(path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+ g_access(path, R_OK);
+ char *error_msg = calloc(1, 1024);
+ if (error_msg) {
+ strerror_r(errno, error_msg, 1024);
+ VideoLogError("failed to access file: %d %s", errno, error_msg);
+ free(error_msg);
+ }
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_util_get_subtitle_path(const char *szMediaURL,
+ char **szSubtitle)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ if (strlen(szMediaURL) < 1) {
+ VideoLogError("szMediaURL is invalid Length");
+ return FALSE;
+ }
+
+ struct stat buf;
+ int nCount = 0;
+ int nStrLength = 0;
+ int nOutputLen = 0;
+
+ char *szExt = NULL;
+ char szExtWildkey[6][5] =
+ { ".srt", ".sub", ".smi", ".SRT", ".SUB", ".SMI" };
+ char *szCheckFilePath = NULL;
+
+ *szSubtitle = NULL;
+
+ nOutputLen = strlen(szMediaURL) + 5;
+ szCheckFilePath = calloc(1, sizeof(char) * nOutputLen);
+ if (!szCheckFilePath) {
+ VideoLogError("failed to allocate memory");
+ return FALSE;
+ }
+
+ szExt = strrchr(szMediaURL, '.');
+ if (szExt) {
+ nStrLength = strlen(szMediaURL) - strlen(szExt);
+ } else {
+ nStrLength = strlen(szMediaURL);
+ }
+
+ for (nCount = 0; nCount < 6; nCount++) {
+ memset(szCheckFilePath, 0, nOutputLen);
+ strncpy(szCheckFilePath, szMediaURL, nStrLength);
+ strncat(szCheckFilePath, szExtWildkey[nCount],
+ strlen(szExtWildkey[nCount]));
+
+ if (!stat(szCheckFilePath, &buf)) {
+ VideoLogWarning("Success finding subtitle file. - %d, %s",
+ nCount, szCheckFilePath);
+ VP_STRDUP(*szSubtitle, szCheckFilePath);
+ break;
+ }
+ }
+
+ VP_FREE(szCheckFilePath);
+
+ return TRUE;
+}
+
+double vp_play_util_get_sys_time(void)
+{
+ struct timeval tv;
+
+ gettimeofday(&tv, NULL);
+ return (double) tv.tv_sec + (double) tv.tv_usec / 1E6;
+}
+
+bool vp_play_util_status_noti_show(const char *szStr)
+{
+ if (!szStr) {
+ VideoLogError("szStr is NULL.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ int nRet = notification_status_message_post(szStr);
+ if (nRet != 0) {
+ VideoLogError("notification_status_message_post() : [0x%x]",
+ nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+char *vp_play_util_remove_prefix_to_url(char *szURL)
+{
+ if (szURL == NULL) {
+ VideoLogError("szURL is NULL");
+ return NULL;
+ }
+
+ if (strstr(szURL, VP_PLAY_FILE_PREFIX)) {
+ char *szTemp =
+ calloc(1, strlen(szURL) - strlen(VP_PLAY_FILE_PREFIX) + 1);
+ if (szTemp) {
+ snprintf(szTemp, strlen(szURL) - strlen(VP_PLAY_FILE_PREFIX) + 1,
+ "%s", szURL + strlen(VP_PLAY_FILE_PREFIX));
+ }
+ return szTemp;
+ }
+
+ return NULL;
+}
+
+bool vp_play_util_check_sdp_url(const char *szUri)
+{
+ if (!szUri) {
+ VideoLogInfo("szUri IS null");
+ return FALSE;
+ }
+ char *szResult = strstr(szUri, ".sdp");
+ if (szResult) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+char *vp_play_util_get_sdp_url(const char *szUri)
+{
+ if (!szUri) {
+ VideoLogInfo("szUri IS null");
+ return NULL;
+ }
+
+ char *szTokenUrl = g_strdup(szUri);
+ char **splited_str = eina_str_split(szTokenUrl, "?", 0);
+
+ int uri_idx = 0;
+ char *parsed_url = NULL;
+
+ for (uri_idx = 0; splited_str[uri_idx]; uri_idx++) {
+ VideoLogInfo("szUrl = %s", splited_str[uri_idx]);
+ if (eina_str_has_prefix(splited_str[uri_idx], "http")) // http(or https)
+ {
+ parsed_url = g_strdup(splited_str[uri_idx]);
+ VideoLogInfo("parsed_url = %s", parsed_url);
+ break;
+ }
+ }
+
+ VP_FREE(splited_str[0]);
+ VP_FREE(splited_str);
+ VP_FREE(szTokenUrl);
+
+ return parsed_url;
+}
+
+void vp_play_util_convert_file_size(long long lSize, char **szSize)
+{
+ unsigned long int size = (unsigned long int) lSize;
+
+ int nCount = 0;
+ while (size >= (BYTE_SIZE)) {
+ size /= BYTE_SIZE;
+ nCount++;
+ }
+
+ if (nCount == SIZE_BYTE) {
+ *szSize = g_strdup_printf("%ld %s", size, VP_COM_BODY_B);
+ } else if (nCount == SIZE_KB) {
+ *szSize = g_strdup_printf("%ld %s", size, VP_COM_BODY_KB);
+ } else if (nCount == SIZE_MB) {
+ *szSize = g_strdup_printf("%ld %s", size, VP_COM_BODY_MB);
+ } else if (nCount == SIZE_GB) {
+ *szSize = g_strdup_printf("%ld %s", size, VP_COM_BODY_GB);
+ }
+}
+
+void vp_play_util_get_convert_time(double dtime, char **szFileDate)
+{
+ char *szSkeleton = NULL;
+
+ szSkeleton = UG_DATE_FORMAT_24;
+
+ char *szLocale = NULL; // eg en_US.UTF-8
+ int retcode =
+ system_settings_get_value_string
+ (SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &szLocale);
+ if ((retcode != SYSTEM_SETTINGS_ERROR_NONE) || (szLocale == NULL)) {
+ VideoLogInfo("Cannot get region format.");
+ VP_STRDUP(szLocale, "en_US"); //// Default value.
+ } else {
+ char *find = strstr(szLocale, "UTF-8");
+ if (find) {
+ int diff = find - szLocale;
+ if (diff > 0) {
+ szLocale[diff - 1] = '\0';
+ }
+ }
+ }
+
+ char *szTimezone = NULL;
+ retcode =
+ system_settings_get_value_string
+ (SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &szTimezone);
+ if ((retcode != SYSTEM_SETTINGS_ERROR_NONE) || (szTimezone == NULL)) {
+ VideoLogWarning("Cannot get time zone.");
+ VP_STRDUP(szTimezone, VP_PLAY_STRING_COM_UNKNOWN);
+ }
+
+ *szFileDate =
+ _vp_play_util_convert_string(szLocale, szSkeleton, szTimezone,
+ (UDate) dtime * 1000);
+ if (*szFileDate == NULL) {
+ VideoLogWarning("Cannot get time string.");
+ VP_STRDUP(*szFileDate, VP_PLAY_STRING_COM_UNKNOWN);
+ }
+ VP_FREE(szTimezone);
+ VP_FREE(szLocale);
+}
+
+bool vp_play_util_get_file_info(const char *szMediaURL, char **szFileSize,
+ char **szFileDate, char **szFileExtention)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL.");
+ return FALSE;
+ }
+
+ struct stat statbuf;
+ if (stat(szMediaURL, &statbuf) == -1) {
+ VideoSecureLogError("%s file is NULL", szMediaURL);
+ return FALSE;
+ }
+
+ int nCount = 0;
+ size_t size = statbuf.st_size;
+ unsigned long int lsize = (unsigned long int) size;
+ //It is strange, when open below code, compile error, show could not find runtime_info_get_value_bool.
+ //bool hours_24 = true;
+ //int ret = -1;
+
+ /*ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &hours_24);
+ if (ret != RUNTIME_INFO_ERROR_NONE)
+ {
+ VideoLogError("Cannot get 24 hours format");
+ return NULL;
+ } */
+
+ vp_play_util_get_convert_time((double) statbuf.st_mtime, szFileDate);
+
+ while (size >= (BYTE_SIZE)) {
+ lsize = size;
+ size /= BYTE_SIZE;
+ nCount++;
+ }
+
+ if (nCount == SIZE_BYTE) {
+ *szFileSize = g_strdup_printf("%zu %s", size, VP_COM_BODY_B);
+ } else if (nCount == SIZE_KB) {
+ *szFileSize = g_strdup_printf("%zu %s", size, VP_COM_BODY_KB);
+ } else if (nCount == SIZE_MB) {
+ *szFileSize = g_strdup_printf("%zu %s", size, VP_COM_BODY_MB);
+ } else if (nCount == SIZE_GB) {
+ *szFileSize = g_strdup_printf("%zu %s", size, VP_COM_BODY_GB);
+ }
+
+ VideoLogInfo("Size = %lu, OrigSize=%zu", lsize, size);
+
+ char *szExt = NULL;
+#ifdef ENABLE_DRM_FEATURE
+ char *szMime = NULL;
+ char **dTempExt = NULL;
+
+ int nArrayLen = 0;
+ int nErr = 0;
+ if (vp_drm_get_file_mime_type(szMediaURL, &szMime)) {
+ nErr =
+ mime_type_get_file_extension(szMime, &dTempExt, &nArrayLen);
+
+ VP_FREE(szMime);
+
+ if (nErr == MIME_TYPE_ERROR_NONE && nArrayLen > 0) {
+ if (dTempExt[0] != NULL) {
+ szExt = strrchr(dTempExt[0], EXT_SPLITTER);
+ }
+
+ if (szExt == NULL) {
+ *szFileExtention =
+ g_strdup_printf(VP_PLAY_STRING_COM_UNKNOWN);
+ } else {
+ VP_STRDUP(*szFileExtention, (szExt + 1));
+ }
+
+ int i = 0;
+ for (; i < nArrayLen; i++) {
+ if (dTempExt[i] != NULL) {
+ free(dTempExt[i]);
+ }
+ }
+ } else {
+ *szFileExtention =
+ g_strdup_printf(VP_PLAY_STRING_COM_UNKNOWN);
+ }
+ VP_FREE(dTempExt);
+ } else
+#endif
+ {
+
+ szExt = strrchr(szMediaURL, EXT_SPLITTER);
+ if (szExt == NULL) {
+ *szFileExtention =
+ g_strdup_printf(VP_PLAY_STRING_COM_UNKNOWN);
+ } else {
+ VP_STRDUP(*szFileExtention, (szExt + 1));
+ }
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_util_check_streaming(const char *szURL)
+{
+ if (szURL == NULL) {
+ VideoLogInfo("szURL is NULL");
+ return FALSE;
+ }
+
+ VideoSecureLogInfo("szURL : %s", szURL);
+
+ if (strstr(szURL, "rtp") != NULL) {
+ return TRUE;
+ } else if (strstr(szURL, "rtsp") != NULL) {
+ return TRUE;
+ } else if (strstr(szURL, "http") != NULL) {
+ return TRUE;
+ } else if (strstr(szURL, "https") != NULL) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+bool vp_play_util_rtsp_url_check(const char *szURL)
+{
+ if (szURL == NULL) {
+ VideoLogInfo("szURL is NULL");
+ return FALSE;
+ }
+
+ VideoSecureLogInfo("szURL : %s", szURL);
+
+ static const char *rtsp_protocal_name[] = {
+ "rtsp://",
+ "rtp://",
+ NULL,
+ };
+
+ int i = 0;
+ while (rtsp_protocal_name[i] != NULL) {
+ if (strlen(szURL) > strlen(rtsp_protocal_name[i])) {
+ if (strncmp
+ (szURL, rtsp_protocal_name[i],
+ strlen(rtsp_protocal_name[i])) == 0) {
+ return true;
+ }
+ }
+
+ i++;
+ }
+
+ return FALSE;
+}
+
+
+bool vp_play_util_calculator_position(Evas_Coord_Rectangle rtSrc,
+ Evas_Coord_Rectangle rtDst,
+ Evas_Coord_Rectangle *rtResult,
+ int nType)
+{
+ video_play_display_mode_t nMode = (video_play_display_mode_t) nType;
+
+ double src_ratio = 0;
+ double dst_ratio = 0;
+
+ if (nMode == VIDEO_DISPLAY_LETTER_BOX) {
+ src_ratio = (double) rtSrc.w / rtSrc.h;
+ dst_ratio = (double) rtDst.w / rtDst.h;
+ if (src_ratio > dst_ratio) {
+ rtResult->w = rtDst.w;
+ rtResult->h = rtDst.w / src_ratio;
+ rtResult->x = 0;
+ rtResult->y = (rtDst.h - rtResult->h) / 2;
+ } else if (src_ratio < dst_ratio) {
+ rtResult->w = rtDst.h * src_ratio;
+ rtResult->h = rtDst.h;
+ rtResult->x = (rtDst.w - rtResult->w) / 2;
+ rtResult->y = 0;
+ } else {
+ rtResult->x = 0;
+ rtResult->y = 0;
+ rtResult->w = rtDst.w;
+ rtResult->h = rtDst.h;
+ }
+ } else if (nMode == VIDEO_DISPLAY_ORIGIN) {
+ rtResult->w = (((rtSrc.w) < (rtDst.w)) ? (rtSrc.w) : (rtDst.w));
+ rtResult->h = (((rtSrc.h) < (rtDst.h)) ? (rtSrc.h) : (rtDst.h));
+ rtResult->x = (rtDst.w - rtResult->w) / 2;
+ rtResult->y = (rtDst.h - rtResult->h) / 2;
+
+ } else if ((nMode == VIDEO_DISPLAY_FULL)
+ || (nMode == VIDEO_DISPLAY_CROPPED_FULL)) {
+ rtResult->w = rtDst.w;
+ rtResult->h = rtDst.h;
+ rtResult->x = 0;
+ rtResult->y = 0;
+
+ }
+
+ return TRUE;
+}
+
+bool vp_play_util_save_file(const char *szFileName, char *szBuffer,
+ int nSize)
+{
+ if (!szFileName) {
+ VideoLogError("szFileName is NULL");
+ return FALSE;
+ }
+
+ if (!szBuffer) {
+ VideoLogError("szBuffer is NULL");
+ return FALSE;
+ }
+ if (g_file_test(szFileName, G_FILE_TEST_EXISTS)) {
+ int flag = g_remove(szFileName);
+ if (flag != 0) {
+ VideoLogError("g_remove is fail");
+ }
+ }
+
+ if (!g_file_set_contents
+ (szFileName, (const char *) szBuffer, nSize, NULL)) {
+ VideoLogError("g_file_set_contents is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_util_get_network_status(void)
+{
+ connection_h connection;
+ connection_type_e net_state;
+ bool bSuccessful = true;
+
+ int err = 0;
+
+ err = connection_create(&connection);
+ if (err != CONNECTION_ERROR_NONE) {
+ VideoLogWarning("connection_create error. err is [%d]", err);
+ bSuccessful = false;
+ }
+
+ if (connection) {
+ err = connection_get_type(connection, &net_state);
+ connection_destroy(connection);
+
+ if (err != CONNECTION_ERROR_NONE) {
+ VideoLogWarning("connection_get_type error. err is [%d]",
+ err);
+ bSuccessful = false;
+ }
+
+ VideoLogInfo("net_state is [%d]", net_state);
+
+ if (net_state == CONNECTION_TYPE_DISCONNECTED) {
+ bSuccessful = false;
+ }
+ }
+
+
+ return bSuccessful;
+}
+
+bool vp_play_util_check_personal_status(const char *szPreviewUrl)
+{
+ Eina_Bool bRet = EINA_FALSE;
+ if (szPreviewUrl) {
+ bRet =
+ eina_str_has_prefix(szPreviewUrl, VP_PLAY_PERSONAL_HEAD_STR);
+ }
+ VideoSecureLogInfo("eina_str_has_prefix=%s:%d", szPreviewUrl,
+ (int) bRet);
+ return (bool) bRet;
+}
+
+
+bool vp_play_util_is_exist_subtitle_from_path(const char *szPath)
+{
+
+ if (szPath == NULL) {
+ VideoLogError("szPath is NULL");
+ return FALSE;
+ }
+
+ Eina_List *pFileList = NULL;
+ Eina_List *pItemList = NULL;
+ char *szFileName = NULL;
+ char szExtWildkey[6][5] =
+ { ".srt", ".sub", ".smi", ".SRT", ".SUB", ".SMI" };
+ int nCount = 0;
+
+
+ pFileList = vp_file_ls(szPath);
+
+ if (pFileList == NULL) {
+ VideoLogError("pFileList is NULL");
+ return FALSE;
+ }
+
+ EINA_LIST_FOREACH(pFileList, pItemList, szFileName) {
+ if (szFileName == NULL) {
+ continue;
+ } else {
+ char *szName = vp_strip_ext(szFileName);
+ char *szExt = NULL;
+
+ int nIdx = 0;
+ if (szName == NULL) {
+ continue;
+ }
+ szExt = szFileName + strlen(szName);
+ if (szExt == NULL) {
+ VP_FREE(szName);
+ continue;
+ }
+ for (nIdx = 0; nIdx < 6; nIdx++) {
+ if (strcmp(szExt, szExtWildkey[nIdx]) == 0) {
+ nCount++;
+ }
+ }
+ VP_FREE(szName);
+ }
+ }
+
+ eina_list_free(pFileList);
+
+ if (nCount > 0) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool vp_play_util_get_subtitles_from_path(const char *szPath,
+ GList **pSubtitleList)
+{
+ if (szPath == NULL) {
+ VideoLogError("szPath is NULL");
+ return FALSE;
+ }
+
+ Eina_List *pFileList = NULL;
+ Eina_List *pItemList = NULL;
+ char *szFileName = NULL;
+ char szExtWildkey[6][5] =
+ { ".srt", ".sub", ".smi", ".SRT", ".SUB", ".SMI" };
+
+
+ pFileList = vp_file_ls(szPath);
+
+ if (pFileList == NULL) {
+ VideoLogError("pFileList is NULL");
+ return FALSE;
+ }
+
+ EINA_LIST_FOREACH(pFileList, pItemList, szFileName) {
+ if (szFileName == NULL) {
+ continue;
+ } else {
+ char *szName = vp_strip_ext(szFileName);
+ char *szExt = NULL;
+
+ int nIdx = 0;
+ if (szName == NULL) {
+ continue;
+ }
+ szExt = szFileName + strlen(szName);
+ if (szExt == NULL) {
+ VP_FREE(szName);
+ continue;
+ }
+ for (nIdx = 0; nIdx < 6; nIdx++) {
+ if (strcmp(szExt, szExtWildkey[nIdx]) == 0) {
+ char *szSubtitleName = NULL;
+ szSubtitleName =
+ g_strdup_printf("%s/%s", szPath, szFileName);
+ *pSubtitleList =
+ g_list_append(*pSubtitleList, szSubtitleName);
+ }
+ }
+ VP_FREE(szName);
+ }
+ }
+
+ eina_list_free(pFileList);
+
+ return TRUE;
+}
+
+bool vp_play_util_get_subtitle_path_list(GList **subtitleList)
+{
+ if (NULL == subtitleList) {
+ VideoLogError("subtitleList is NULL");
+ return FALSE;
+ }
+
+ if (!vp_media_contents_subtitle_list_get(subtitleList)) {
+ VideoLogError("vp_media_contents_subtitle_list_get failed.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_util_app_resume(void)
+{
+ char *app_id = NULL;
+ int ret = app_get_id(&app_id);
+ if (ret != APP_ERROR_NONE || !app_id) {
+ VideoLogError("app_get_id().. [0x%x], app_id[%s]", ret, app_id);
+ return FALSE;
+ }
+
+ app_context_h context = NULL;
+ ret = app_manager_get_app_context(app_id, &context);
+ if (ret != APP_MANAGER_ERROR_NONE) {
+ VideoLogError("app_manager_get_app_context().. [0x%x]", ret);
+ VP_FREE(app_id);
+ return FALSE;
+ }
+
+ ret = app_manager_resume_app(context);
+ if (ret != APP_MANAGER_ERROR_NONE) {
+ VideoLogError("app_manager_resume_app().. [0x%x]", ret);
+ VP_FREE(app_id);
+ return FALSE;
+ }
+
+ VP_FREE(app_id);
+ app_context_destroy(context);
+
+ return TRUE;
+}
+
+
+bool vp_play_util_check_white_space(char *szText)
+{
+ if (szText == NULL) {
+ return TRUE;
+ }
+ bool bIsWhiteSpace = FALSE;
+
+ if (strlen(szText) == 2) {
+ if (szText[0] == 0xc2 && szText[1] == 0xa0) {
+ VideoLogError("== No Break Space ==");
+ bIsWhiteSpace = TRUE;
+ }
+ }
+
+ g_strstrip(szText);
+ if (strlen(szText) == 0) {
+ VideoLogError("== NULL String ==");
+ bIsWhiteSpace = TRUE;
+ }
+
+ return bIsWhiteSpace;
+}
+
+
+bool vp_play_util_check_valid_file_name(const char *szFileName)
+{
+ if (szFileName == NULL) {
+ VideoLogError("szFileName is NULL");
+ return FALSE;
+ }
+
+ char *pattern = NULL;
+ int z, cflags = 0;
+ bool bReturn = FALSE;
+ char ebuf[128];
+ regex_t reg;
+ regmatch_t pm[1];
+ const size_t nmatch = 1;
+
+ /*ToDo: ignore the file star with . */
+ if (strncmp(szFileName, ".", 1) == 0) {
+ return FALSE;
+ }
+
+ pattern = VP_PLAY_NAME_PATTERN;
+ z = regcomp(&reg, pattern, cflags);
+
+ if (z != 0) {
+ regerror(z, &reg, ebuf, sizeof(ebuf));
+ VideoLogError("%s: pattern '%s'", ebuf, pattern);
+ return FALSE;
+ }
+
+ z = regexec(&reg, szFileName, nmatch, pm, 0);
+ if (z == REG_NOMATCH) {
+ bReturn = TRUE;
+ } else {
+ bReturn = FALSE;
+ }
+ regfree(&reg);
+
+ return bReturn;
+}
+
+unsigned long long vp_play_util_get_disk_available_space(const char
+ *szFilePath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return 0;
+ }
+ int nRet = 0;
+ struct statvfs info;
+ if (szFilePath
+ && 0 == strncmp(szFilePath, VP_ROOT_PATH_MMC,
+ strlen(VP_ROOT_PATH_MMC))) {
+ if (-1 == statvfs(VP_ROOT_PATH_MMC, &info)) {
+ return 0;
+ }
+ } else {
+ if (vp_is_dir(szFilePath)) {
+ nRet = statvfs(szFilePath, &info);
+ VideoLogInfo("this is folder");
+ } else {
+ nRet = statvfs(VP_PLAY_MEDIA_DIR, &info);
+ }
+ if (nRet < 0) {
+ return 0;
+ }
+ }
+
+ return (info.f_bsize) * info.f_bavail;
+}
+
+unsigned long long vp_play_util_get_file_size(const char *szFilePath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return 0;
+ }
+
+ unsigned long long lSize = 0;
+
+ lSize = (unsigned long long) vp_file_size(szFilePath);
+
+ return lSize;
+}
+
+bool vp_play_util_get_city(const char *szLocation, char **szCity)
+{
+#define LOCATION_MAX_LEN 256
+
+ if (!szLocation) {
+ VideoLogError("szLocation is invalid");
+ return FALSE;
+ }
+
+ char *pTemp = strstr(szLocation, "CITY[");
+ if (!pTemp) {
+ VideoLogError("pTemp is invalid");
+ return FALSE;
+ }
+ int len = strlen("CITY[");
+ char *pTemp1 = strstr(pTemp + len, "]");
+ char city_temp[LOCATION_MAX_LEN] = { 0, };
+
+ if (pTemp1 - (pTemp + len) > 0) {
+ strncpy(city_temp, pTemp + len, pTemp1 - (pTemp + len));
+ *szCity = strdup(city_temp);
+ }
+
+ return true;
+}
+
+bool vp_play_util_is_Xwindow_focused(Ecore_X_Window nXwinID)
+{
+ Ecore_X_Window nXWindowFocus = 0;
+
+ nXWindowFocus = ecore_x_window_focus_get();
+
+ if (nXWindowFocus == nXwinID)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+char *vp_play_util_convert_rgba_to_hex(int r, int g, int b, int a)
+{
+ char *pColorHex;
+
+ pColorHex =
+ g_strdup_printf("#%08lx",
+ (long unsigned int)(r << 24 | g << 16 | b << 8 |
+ a));
+
+ return pColorHex;
+}
+
+bool vp_play_util_convert_hex_to_rgba(char *pColorHex, int *r, int *g,
+ int *b, int *a)
+{
+ if (pColorHex == NULL) {
+ return FALSE;
+ }
+
+ char *szColor = g_strndup(pColorHex + 1, 8);
+
+ unsigned long lColor = strtoul(szColor, NULL, 16);
+
+ int tr, tg, tb, ta;
+ tr = lColor >> 24;
+
+ if (tr < 0) {
+ tr += 0x100;
+ }
+ tg = (lColor >> 16) & 0xff;
+ tb = (lColor >> 8) & 0xff;
+ ta = lColor & 0xff;
+
+ *r = tr;
+ *g = tg;
+ *b = tb;
+ *a = ta;
+ free(szColor);
+
+ return TRUE;
+}
+
+void vp_play_util_set_object_size(Evas_Object *obj, int w, int h, int id)
+{
+ Edje_Message_Int_Set *msg =
+ (Edje_Message_Int_Set *) malloc(sizeof(Edje_Message_Int_Set) +
+ 3 * sizeof(int));
+ if (!msg) {
+ return;
+ }
+ msg->count = 2;
+ msg->val[0] = w;
+ msg->val[1] = h;
+ edje_object_message_send(obj, EDJE_MESSAGE_INT_SET, id, msg);
+ free(msg);
+}
+
+void vp_play_util_set_object_color(Evas_Object *obj, int r, int g, int b,
+ int a, int id)
+{
+ Edje_Message_Int_Set *msg =
+ (Edje_Message_Int_Set *) malloc(sizeof(Edje_Message_Int_Set) +
+ 4 * sizeof(int));
+ if (!msg) {
+ return;
+ }
+ msg->count = 4;
+ msg->val[0] = r;
+ msg->val[1] = g;
+ msg->val[2] = b;
+ msg->val[3] = a;
+
+ edje_object_message_send(obj, EDJE_MESSAGE_INT_SET, id, msg);
+ free(msg);
+}
+
+void vp_play_util_set_object_offset(Evas_Object *obj, int left, int top,
+ int id)
+{
+ Edje_Message_Int_Set *msg =
+ (Edje_Message_Int_Set *) malloc(sizeof(Edje_Message_Int_Set) +
+ 2 * sizeof(float));
+ if (!msg) {
+ return;
+ }
+ msg->count = 2;
+ msg->val[0] = left;
+ msg->val[1] = top;
+ edje_object_message_send(obj, EDJE_MESSAGE_INT_SET, id, msg);
+ free(msg);
+}
+
+static int __vp_play_util_append_variant(DBusMessageIter *iter, const char *sig, const char *param[])
+{
+ VideoLogInfo("");
+
+ char *ch;
+ int i;
+ int int_type;
+ uint64_t int64_type;
+
+ if (!sig || !param) {
+ VideoLogInfo("!sig || !param");
+ return 0;
+ }
+
+ for (ch = (char*)sig, i = 0; *ch != '\0'; ++i, ++ch) {
+ VideoLogInfo("i=%d, ch = %c param = %s", i, *ch, param[i]);
+
+ switch (*ch) {
+ case 'i':
+ int_type = atoi(param[i]);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_INT32, &int_type);
+ break;
+ case 'u':
+ int_type = atoi(param[i]);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &int_type);
+ break;
+ case 't':
+ int64_type = atoi(param[i]);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT64, &int64_type);
+ break;
+ case 's':
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &(param[i]));
+ break;
+ default:
+ return -EINVAL;
+ }
+ }
+
+ return 0;
+}
+
+#define DBUS_REPLY_TIMEOUT (120 * 1000)
+DBusMessage * vp_play_util_invoke_dbus_method(const char *dest, const char *path,
+ const char *interface, const char *method,
+ const char *sig, const char *param[])
+{
+ VideoLogInfo("");
+
+ DBusConnection *conn;
+ DBusMessage *msg;
+ DBusMessageIter iter;
+ DBusMessage *reply;
+ DBusError err;
+ int r;
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (!conn) {
+ VideoLogError( "dbus_bus_get error");
+ return NULL;
+ }
+
+ msg = dbus_message_new_method_call(dest, path, interface, method);
+ if (!msg) {
+ VideoLogError("dbus_message_new_method_call error!");
+ return NULL;
+ }
+
+ dbus_message_iter_init_append(msg, &iter);
+
+ r = __vp_play_util_append_variant(&iter, sig, param);
+ if (r < 0) {
+ VideoLogError("append_variant error(%d)", r);
+ dbus_message_unref(msg);
+ return NULL;
+ }
+
+ dbus_error_init(&err);
+
+ reply = dbus_connection_send_with_reply_and_block(conn, msg, DBUS_REPLY_TIMEOUT, &err);
+ if (!reply) {
+ VideoLogError("dbus_connection_send error(No reply)");
+ }
+
+ if (dbus_error_is_set(&err)) {
+ VideoLogError("dbus_connection_send error(%s:%s)", err.name, err.message);
+ reply = NULL;
+ }
+
+ dbus_message_unref(msg);
+ dbus_error_free(&err);
+
+ return reply;
+}
+
+void
+vp_play_util_set_lock_power_key()
+{
+ const char *arr[] = {"lcdon", "gotostatenow", "holdkeyblock", "0"};
+
+
+ DBusMessage *msg;
+
+ msg = vp_play_util_invoke_dbus_method("org.tizen.system.deviced", "/Org/Tizen/System/DeviceD/Display",
+ "org.tizen.system.deviced.display", "lockstate", "sssi", arr);
+
+ if (!msg) {
+ VideoLogError("vp_play_util_invoke_dbus_method failed");
+ return;
+ }
+
+}
+
+void
+vp_play_util_set_unlock_power_key()
+{
+ const char *arr[] = {"lcdon", "resettimer"};
+
+ DBusMessage *msg;
+
+ msg = vp_play_util_invoke_dbus_method("org.tizen.system.deviced", "/Org/Tizen/System/DeviceD/Display",
+ "org.tizen.system.deviced.display", "unlockstate", "ss", arr);
+
+ if (!msg) {
+ VideoLogError("vp_play_util_invoke_dbus_method failed");
+ return;
+ }
+}
+
+void vp_play_util_focus_next_object_set(Evas_Object *obj,
+ Evas_Object *next,
+ Elm_Focus_Direction dir)
+{
+ if (obj)
+ elm_object_focus_next_object_set(obj, next, dir);
+
+}
diff --git a/playview/src/core/include/vp-avrcp.h b/playview/src/core/include/vp-avrcp.h
new file mode 100644
index 0000000..44580d4
--- /dev/null
+++ b/playview/src/core/include/vp-avrcp.h
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+#include "vp-mm-player.h"
+
+
+bool vp_avrcp_initialize();
+bool vp_avrcp_deinitialize();
+bool vp_avrcp_noti_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int duration);
+bool vp_avrcp_noti_track_position(unsigned int position);
+bool vp_avrcp_noti_player_state(vp_mm_player_state_t nState);
+
diff --git a/playview/src/core/include/vp-device-language.h b/playview/src/core/include/vp-device-language.h
new file mode 100644
index 0000000..63735db
--- /dev/null
+++ b/playview/src/core/include/vp-device-language.h
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+void vp_language_list_create();
+void vp_language_list_destroy();
+
+char *vp_language_get_name(const char *szCode);
+
diff --git a/playview/src/core/include/vp-device.h b/playview/src/core/include/vp-device.h
new file mode 100644
index 0000000..9c39223
--- /dev/null
+++ b/playview/src/core/include/vp-device.h
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+
+//bool vp_device_display_init(int nColorTone, int nOutdoor);
+//bool vp_device_display_deinit();
+//bool vp_device_display_set_color_tone(int nColorTone);
+//bool vp_device_display_set_outdoor_visibility(int nOutdoor);
+bool vp_device_display_lcd_lock(void);
+bool vp_device_display_lcd_unlock(void);
+bool vp_device_set_frame_rate(int nRate);
+bool vp_device_set_brightness(int nVal);
+bool vp_device_get_brightness(int *nCurVal);
+bool vp_device_get_max_brightness(int *nMaxVal);
+bool vp_device_get_min_brightness(int *nMinVal);
+bool vp_device_set_screen_off(bool bLock);
+
+
+
diff --git a/playview/src/core/include/vp-hollic.h b/playview/src/core/include/vp-hollic.h
new file mode 100644
index 0000000..9a2df71
--- /dev/null
+++ b/playview/src/core/include/vp-hollic.h
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <stdbool.h>
+#include <Elementary.h>
+
+typedef void (*HollICEventCbFunc)(bool bCoverState, void* pUserData);
+
+typedef void *hollic_handle;
+
+
+hollic_handle vp_hollic_create_handle(HollICEventCbFunc pEventCb, void* pUserData);
+void vp_hollic_destroy_handle(hollic_handle pHollICHandle);
+
diff --git a/playview/src/core/include/vp-image-util.h b/playview/src/core/include/vp-image-util.h
new file mode 100644
index 0000000..3068f3a
--- /dev/null
+++ b/playview/src/core/include/vp-image-util.h
@@ -0,0 +1,28 @@
+ /*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+
+
+#pragma once
+
+#include <stdbool.h>
+#include <glib.h>
+
+bool vp_image_util_image_resize_save(const char *szFilePath, const unsigned char *pSrcBuf, int nSrcW, int nSrcH, int nDestW, int nDestH, int nQuality);
+bool vp_image_util_image_save(const char *szFilePath, const unsigned char *pSrcBuf, int nSrcW, int nSrcH, int nQuality);
+
diff --git a/playview/src/core/include/vp-media-contents.h b/playview/src/core/include/vp-media-contents.h
new file mode 100644
index 0000000..6b281ff
--- /dev/null
+++ b/playview/src/core/include/vp-media-contents.h
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+
+#pragma once
+
+#include <stdbool.h>
+#include <glib.h>
+#include <Elementary.h>
+
+
+typedef void (*MediaUpdateCb)(void* pUserData);
+
+
+
+bool vp_media_contents_connect();
+bool vp_media_contents_disconnect();
+
+/* common functions */
+bool vp_media_contents_get_video_id(const char *szFilePath, char **szVideoID);
+bool vp_media_contents_get_video_thumbnail_path(const char *szFilePath, char **szThumbnailPath);
+bool vp_media_contents_scan_file(const char *szFilePath);
+bool vp_media_contents_update_db(const char *szMediaURL);
+bool vp_media_contents_refresh_db(const char *szMediaID);
+
+bool vp_media_contents_set_played_position(const char *szFilePath, int nPosition);
+bool vp_media_contents_get_played_position(const char *szFilePath, int *nPosition);
+bool vp_media_contents_set_played_time(const char *szFilePath);
+
+bool vp_media_contents_get_content_info(const char *szFilePath, char **szTitle, int *nWidth, int *nHeight, int *nDuration, double *dLatitude, double *dLongitude, char **szTmpLastModified);
+bool vp_media_metadata_get_gps_info(const char *szFilePath, double *dLatitude, double *dLongitude);
+bool vp_media_metadata_get_duration(const char *szFilePath, int *nDuration);
+bool vp_media_metadata_get_width(const char *szFilePath, int *nWidth);
+bool vp_media_metadata_get_height(const char *szFilePath, int *nHeight);
+bool vp_media_contents_get_cloud_attribute(const char *szFilePath, bool *bCloud);
+
+/* bookmark functions */
+bool vp_media_contents_bookmark_list_get(const char *szMediaID, GList **list);
+bool vp_media_contents_bookmark_list_clear(GList *pList);
+bool vp_media_contents_bookmark_insert(const char *szMediaID, int nPosition, const char *szFilePath);
+bool vp_media_contents_bookmark_delete(const char *szMediaID, int nPosition);
+bool vp_media_contents_bookmark_get_item_info(void *pItem, char **szFilePath, int *nPosition);
+bool vp_media_contents_bookmark_delete_all(const char *szMediaID);
+
+bool vp_media_contents_get_video_items_to_folder(int nSortType, char *szFolder, GList **pList);
+bool vp_media_contents_get_video_items(int nSortType, GList **pList);
+bool vp_media_contents_free_video_items(GList *pList);
+
+bool vp_media_contents_get_next_file_path(const char *szMediaURL, char **szNextURL, bool bLoop, GList *pList);
+bool vp_media_contents_get_prev_file_path(const char *szMediaURL, char **szPrevURL, bool bLoop, GList *pList);
+
+bool vp_media_contents_set_update_cb(MediaUpdateCb pFunc, void *pUserData);
+void vp_media_contents_unset_update_cb();
+
+/*tag buddy */
+bool vp_media_contents_set_location_tag(const char *szFilePath, const char *city);
+bool vp_media_contents_get_location_tag(const char *szFilePath, char **szLocationTag);
+bool vp_media_contents_set_weahter_tag(const char *szFilePath, const char *weather);
+bool vp_media_contents_get_weahter_tag(const char *szFilePath, char **szWeatherTag);
+
+/*subtitle file*/
+bool vp_media_contents_subtitle_list_get(GList **list);
+
+bool vp_media_contents_file_is_exist(const char *szFilePath);
+bool vp_media_contents_del_video(const char *szFilePath);
+
diff --git a/playview/src/core/include/vp-media-key.h b/playview/src/core/include/vp-media-key.h
new file mode 100644
index 0000000..40c633b
--- /dev/null
+++ b/playview/src/core/include/vp-media-key.h
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+
+typedef enum {
+ VP_MEDIA_KEY_PLAY = 0x00,
+ VP_MEDIA_KEY_PAUSE,
+ VP_MEDIA_KEY_PLAYPAUSE,
+ VP_MEDIA_KEY_PREVIOUS,
+ VP_MEDIA_KEY_REWIND,
+ VP_MEDIA_KEY_NEXT,
+ VP_MEDIA_KEY_FASTFORWARD,
+ VP_MEDIA_KEY_STOP,
+}vp_media_key_event_t;
+
+
+typedef void (*MediaKeyEventCbFunc)(vp_media_key_event_t nKey, bool bRelease, void* pUserData);
+
+
+typedef void *media_key_handle;
+
+
+media_key_handle vp_media_key_create(Evas_Object *pWin, MediaKeyEventCbFunc pEventCb);
+void vp_media_key_destroy(media_key_handle pMediaKeyHandle);
+bool vp_media_key_realize(media_key_handle pMediaKeyHandle);
+bool vp_media_key_unrealize(media_key_handle pMediaKeyHandle);
+bool vp_media_key_set_user_data(media_key_handle pMediaKeyHandle, void *pUserData);
+
diff --git a/playview/src/core/include/vp-mm-player.h b/playview/src/core/include/vp-mm-player.h
new file mode 100644
index 0000000..571e56a
--- /dev/null
+++ b/playview/src/core/include/vp-mm-player.h
@@ -0,0 +1,344 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+#include <player.h>
+
+
+typedef void *mm_player_handle;
+
+typedef enum {
+ VP_MM_PLAYER_FILTER_NONE = 0x00,
+ VP_MM_PLAYER_FILTER_VOICE,
+ VP_MM_PLAYER_FILTER_MOVIE,
+ VP_MM_PLAYER_FILTER_VITUAL_71,
+}vp_mm_player_sound_filter_t;
+
+typedef enum {
+ VP_MM_PLAYER_VIDEO_TYPE_X11 = 0x00,
+ VP_MM_PLAYER_VIDEO_TYPE_EVAS
+}vp_mm_player_video_sink_t;
+
+typedef enum {
+ VP_MM_PLAYER_ROTATE_0 = 0x00,
+ VP_MM_PLAYER_ROTATE_90,
+ VP_MM_PLAYER_ROTATE_180,
+ VP_MM_PLAYER_ROTATE_270
+}vp_mm_player_rotate_t;
+
+typedef enum {
+ VP_MM_PLAYER_REALIZE_ASYNC_CB = 0x00,
+ VP_MM_PLAYER_SEEK_COMPLETE_CB,
+ VP_MM_PLAYER_END_OF_STREAM_CB,
+ VP_MM_PLAYER_INTERRUPT_CB,
+ VP_MM_PLAYER_ERROR_CB,
+ VP_MM_PLAYER_BUFFERING_CB,
+ VP_MM_PLAYER_SUBTITLE_UPDATE_CB,
+ VP_MM_PLAYER_PD_MESSAGE_CB,
+ VP_MM_PLAYER_CAPTURE_VIDEO_CB,
+ VP_MM_PLAYER_MISSED_PLUGIN_CB,
+ VP_MM_PLAYER_IMAGE_BUFFER_CB,
+}vp_mm_player_callback_t;
+
+
+typedef enum {
+ VP_MM_PLYAER_ERR_NONE = 0x00,
+ VP_MM_PLAYER_ERR_OUT_OF_MEMORY,
+ VP_MM_PLAYER_ERR_INVALID_PARAMETER,
+ VP_MM_PLAYER_ERR_NO_SUCH_FILE,
+ VP_MM_PLAYER_ERR_INVALID_OPERATION,
+ VP_MM_PLAYER_ERR_FILE_NO_SPACE_ON_DEVICE,
+ VP_MM_PLAYER_ERR_SEEK_FAILED,
+ VP_MM_PLAYER_ERR_INVALID_STATE,
+ VP_MM_PLAYER_ERR_NOT_SUPPORTED_FILE,
+ VP_MM_PLAYER_ERR_INVALID_URI,
+ VP_MM_PLAYER_ERR_SOUND_POLICY,
+ VP_MM_PLAYER_ERR_CONNECTION_FAILED,
+ VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED,
+ VP_MM_PLAYER_ERR_DRM_EXPIRED,
+ VP_MM_PLAYER_ERR_DRM_NO_LICENSE,
+ VP_MM_PLAYER_ERR_DRM_FUTURE_USE
+}vp_mm_player_error_t;
+
+typedef enum {
+ VP_MM_PLAYER_INTERRUPTED_COMPLETED = 0x00,
+ VP_MM_PLAYER_INTERRUPTED_BY_MEDIA,
+ VP_MM_PLAYER_INTERRUPTED_BY_CALL,
+ VP_MM_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG,
+ VP_MM_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT,
+ VP_MM_PLAYER_INTERRUPTED_BY_ALARM,
+ VP_MM_PLAYER_INTERRUPTED_BY_EMERGENCY,
+ VP_MM_PLAYER_INTERRUPTED_RESUMABLE_MEDIA,
+ VP_MM_PLAYER_INTERRUPTED_NOTIFICATION
+}vp_mm_player_interrupt_t;
+
+typedef enum {
+ VP_MM_PLAYER_PD_STARTED = 0x00,
+ VP_MM_PLAYER_PD_COMPLETED
+}vp_mm_player_pd_message_t;
+
+typedef enum {
+ VP_MM_PLAYER_STATE_NONE = 0x00,
+ VP_MM_PLAYER_STATE_IDLE,
+ VP_MM_PLAYER_STATE_READY,
+ VP_MM_PLAYER_STATE_PLAYING,
+ VP_MM_PLAYER_STATE_PAUSED,
+ VP_MM_PLAYER_STATE_STOP, // define for AVRCP
+}vp_mm_player_state_t;
+
+typedef enum {
+ VP_MM_PLAYER_DISPLAY_LETTER_BOX = 0x00,
+ VP_MM_PLAYER_DISPLAY_ORIGIN_OR_LETTER,
+ VP_MM_PLAYER_DISPLAY_FULL_SCREEN,
+ VP_MM_PLAYER_DISPLAY_CROPPED_FULL,
+ VP_MM_PLAYER_DISPLAY_ORIGIN_SIZE,
+}vp_mm_player_display_mode_t;
+
+typedef enum {
+ VP_MM_PLAYER_MISSED_PLUGIN_UNKNOWN = 0x00,
+ VP_MM_PLAYER_MISSED_PLUGIN_AUDIO,
+ VP_MM_PLAYER_MISSED_PLUGIN_VIDEO,
+}vp_mm_player_missed_plugin_t;
+
+typedef enum {
+ VP_MM_PLAYER_SUBTITLE_HALIGN_LEFT = 0x00,
+ VP_MM_PLAYER_SUBTITLE_HALIGN_CENTER,
+ VP_MM_PLAYER_SUBTITLE_HALIGN_RIGHT
+}vp_mm_player_subtitle_halign_t;
+
+typedef void(*vp_mm_player_prepare_cb)(void *pUserData);
+typedef void(*vp_mm_player_completed_cb )(void *pUserData);
+typedef void(*vp_mm_player_seek_completed_cb )(void *pUserData);
+typedef void(*vp_mm_player_interrupted_cb )(vp_mm_player_interrupt_t nCode, void *pUserData);
+typedef void(*vp_mm_player_error_cb )(vp_mm_player_error_t nError, void *pUserData);
+typedef void(*vp_mm_player_buffering_cb )(int nPercent, void *pUserData);
+typedef void(*vp_mm_player_subtitle_updated_cb )(unsigned long nDuration, char *text, void *pUserData);
+typedef void(*vp_mm_player_pd_message_cb )(vp_mm_player_pd_message_t nType, void *pUserData);
+typedef void(*vp_mm_player_video_captured_cb )(unsigned char *pFrame, int nWidth, int nHeight, unsigned int nSize, void *pUserData);
+typedef void(*vp_mm_player_missed_plugin_cb )(vp_mm_player_missed_plugin_t nMissedType, void *pUserData);
+typedef void(*vp_mm_player_image_buffer_updated_cb)(char *pBuffer, int nSize, void *pUserData);
+
+
+typedef struct _MMPlayerCbFunc {
+ vp_mm_player_prepare_cb pPrepareCb;
+ vp_mm_player_completed_cb pEndOfStreamCb;
+ vp_mm_player_seek_completed_cb pSeekCompleteCb;
+ vp_mm_player_interrupted_cb pInterruptedCb;
+ vp_mm_player_error_cb pErrorCb;
+ vp_mm_player_buffering_cb pBufferingCb;
+ vp_mm_player_subtitle_updated_cb pSubtitleUpdateCb;
+ vp_mm_player_pd_message_cb pPDMessageCb;
+ vp_mm_player_video_captured_cb pCapturedCb;
+ vp_mm_player_missed_plugin_cb pMissedPluginCb;
+ vp_mm_player_image_buffer_updated_cb pImageBufferCb;
+} MMPlayerCbFunc;
+
+
+typedef struct _MMPlayerCbPipe {
+ Ecore_Pipe *pPreparePipe;
+ Ecore_Pipe *pEndOfStreamPipe;
+ Ecore_Pipe *pSeekCompletePipe;
+ Ecore_Pipe *pInterruptedPipe;
+ Ecore_Pipe *pErrorPipe;
+ Ecore_Pipe *pBufferingPipe;
+ Ecore_Pipe *pSubtitleUpdatePipe;
+ Ecore_Pipe *pPDMessagePipe;
+ Ecore_Pipe *pCapturedPipe;
+ Ecore_Pipe *pMissedPluginPipe;
+ Ecore_Pipe *pImageBufferPipe;
+} MMPlayerCbPipe;
+
+
+typedef struct _MMPlayerCaptureParam {
+ unsigned char *pFrame;
+ int nWidth;
+ int nHeight;
+ unsigned int nSize;
+ void *pParam;
+} MMPlayerCaptureParam;
+
+typedef struct _MMPlayerSubtitleParam {
+ unsigned long nDuration;
+ char *txt;
+ void *pParam;
+} MMPlayerSubtitleParam;
+
+typedef struct _MMPlayerInterruptParam {
+ vp_mm_player_interrupt_t nInterrupt;
+ void *pParam;
+} MMPlayerInterruptParam;
+
+typedef struct _MMPlayerErrorParam {
+ vp_mm_player_interrupt_t nError;
+ void *pParam;
+} MMPlayerErrorParam;
+
+typedef struct _MMPlayerBufferingParam {
+ int nPercent;
+ void *pParam;
+} MMPlayerBufferingParam;
+
+
+typedef struct _MMPlayerPDParam {
+ vp_mm_player_pd_message_t nMessage;
+ void *pParam;
+} MMPlayerPDParam;
+
+typedef struct _MMPlayerMissedPluginParam {
+ vp_mm_player_missed_plugin_t nMissedType;
+ void *pParam;
+} MMPlayerMissedPluginParam;
+
+
+typedef struct _MMPlayerImageBufferParam {
+ char *pBuffer;
+ int nSize;
+ void *pParam;
+} MMPlayerImageBufferParam;
+
+typedef struct _MMPlayer {
+ player_h pPlayer;
+
+ char *szURL;
+ char *szSubtitleURL;
+ char *szCookie;
+ char *szProxy;
+
+ bool bIsRealize;
+ bool bDeactivateSubtitle;
+ bool bIsMute;
+ bool bIsScaling;
+ bool bIsLooping;
+ bool bIsClosedCaption;
+ bool bIsCapturing;
+
+ float fLeftVol;
+ float fRightVol;
+
+ vp_mm_player_sound_filter_t nSoundFilter;
+ vp_mm_player_video_sink_t nVideoSink;
+ vp_mm_player_rotate_t nRotate;
+ vp_mm_player_state_t nState;
+ vp_mm_player_display_mode_t nDisplayMode;
+
+ int nDuration;
+ int nVideoWidth;
+ int nVidehHeight;
+
+ MMPlayerCbFunc *pCbFunc;
+ MMPlayerCbPipe *pCbPipe;
+ void *pParam;
+
+ MMPlayerCaptureParam *pCaptureParam;
+ MMPlayerSubtitleParam *pSubtitleParam;
+ MMPlayerInterruptParam *pInterruptParam;
+ MMPlayerErrorParam *pErrorParam;
+ MMPlayerPDParam *pPDParam;
+ MMPlayerBufferingParam *pBufferingParam;
+ MMPlayerMissedPluginParam *pMissedParam;
+ MMPlayerImageBufferParam *pImageBufferParam;
+
+ int nZoomPosX;
+ int nZoomPosY;
+
+ void *pVideoSink;
+} MMPlayer;
+
+mm_player_handle vp_mm_player_create();
+void vp_mm_player_destroy(mm_player_handle pPlayerHandle);
+bool vp_mm_player_realize(mm_player_handle pPlayerHandle, char *szPath);
+bool vp_mm_player_realize_async(mm_player_handle pPlayerHandle, char *szPath);
+
+
+bool vp_mm_player_unrealize(mm_player_handle pPlayerHandle);
+bool vp_mm_player_is_realize(mm_player_handle pPlayerHandle);
+
+bool vp_mm_player_set_callback(mm_player_handle pPlayerHandle, vp_mm_player_callback_t nCallbackType, void *pCallback);
+bool vp_mm_player_set_user_param(mm_player_handle pPlayerHandle, void *pParam);
+
+bool vp_mm_player_play(mm_player_handle pPlayerHandle);
+bool vp_mm_player_stop(mm_player_handle pPlayerHandle);
+bool vp_mm_player_pause(mm_player_handle pPlayerHandle);
+bool vp_mm_player_get_state(mm_player_handle pPlayerHandle, vp_mm_player_state_t *nState);
+
+bool vp_mm_player_get_position(mm_player_handle pPlayerHandle, int *nPosition);
+bool vp_mm_player_set_position(mm_player_handle pPlayerHandle, int nPosition);
+bool vp_mm_player_set_position_by_key_frame(mm_player_handle pPlayerHandle, int nPosition);
+
+bool vp_mm_player_get_buffering_position(mm_player_handle pPlayerHandle, int *nPosition);
+
+
+bool vp_mm_player_set_scaling(mm_player_handle pPlayerHandle, bool bScale);
+bool vp_mm_player_set_loop(mm_player_handle pPlayerHandle, bool bLoop);
+
+bool vp_mm_player_set_mute(mm_player_handle pPlayerHandle, bool bMute);
+bool vp_mm_player_get_mute(mm_player_handle pPlayerHandle, bool *bMute);
+bool vp_mm_player_get_duration(mm_player_handle pPlayerHandle, int *nDuration);
+bool vp_mm_player_get_codecinfo(mm_player_handle pPlayerHandle, char **audio_codec, char **video_codec);
+
+bool vp_mm_player_set_video_sink(mm_player_handle pPlayerHandle, int nType, void *pSink);
+bool vp_mm_player_set_video_rotate(mm_player_handle pPlayerHandle, int nRotate);
+bool vp_mm_player_set_display_mode(mm_player_handle pPlayerHandle, vp_mm_player_display_mode_t nDisplayMode);
+
+bool vp_mm_player_get_resolution(mm_player_handle pPlayerHandle, int *nWidth, int *nHeight);
+
+bool vp_mm_player_set_subtitle_url(mm_player_handle pPlayerHandle, char *szSubtitlePath);
+bool vp_mm_player_get_subtitle_url(mm_player_handle pPlayerHandle, char **szSubtitlePath);
+bool vp_mm_player_set_subtitle_position(mm_player_handle pPlayerHandle, int nPosition);
+bool vp_mm_player_set_subtitle_font(mm_player_handle pPlayerHandle, char *szFamilyName, char *szStyle, int nSize);
+bool vp_mm_player_set_subtitle_font_color(mm_player_handle pPlayerHandle, unsigned int nForegroundColor, unsigned int nBGColor);
+bool vp_mm_player_subtitle_ignore_markup_tags(mm_player_handle pPlayerHandle, bool bIgnoreMarkup);
+bool vp_mm_player_subtitle_set_alignment_in_line(mm_player_handle pPlayerHandle, vp_mm_player_subtitle_halign_t type);
+bool vp_mm_player_subtitle_set_alignment_horizontal(mm_player_handle pPlayerHandle, vp_mm_player_subtitle_halign_t type);
+bool vp_mm_player_subtitle_apply_alignment_right_away(mm_player_handle pPlayerHandle);
+bool vp_mm_player_set_deactivate_subtitle(mm_player_handle pPlayerHandle, bool bDeactivate);
+
+bool vp_mm_player_set_volume(mm_player_handle pPlayerHandle, float fLeft, float fRight);
+bool vp_mm_player_get_volume(mm_player_handle pPlayerHandle, float *fLeft, float *fRight);
+
+bool vp_mm_player_set_sound_filter(mm_player_handle pPlayerHandle, vp_mm_player_sound_filter_t nFilter);
+bool vp_mm_player_get_sound_filter(mm_player_handle pPlayerHandle, vp_mm_player_sound_filter_t *nFilter);
+
+bool vp_mm_player_capture_start(mm_player_handle pPlayerHandle);
+bool vp_mm_player_is_closed_caption_exist(mm_player_handle pPlayerHandle);
+
+bool vp_mm_player_get_audio_track_count(mm_player_handle pPlayerHandle, int *nCount);
+bool vp_mm_player_get_audio_track_language_code(mm_player_handle pPlayerHandle, int nIndex, char **szCode);
+bool vp_mm_player_set_audio_track(mm_player_handle pPlayerHandle, int nIndex);
+
+bool vp_mm_player_get_subtitle_track_count(mm_player_handle pPlayerHandle, int *nCount);
+bool vp_mm_player_get_subtitle_track_language_code(mm_player_handle pPlayerHandle, int nIndex, char **szCode);
+bool vp_mm_player_set_subtitle_track(mm_player_handle pPlayerHandle, int nIndex);
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+bool vp_mm_player_add_subtitle_language(mm_player_handle pPlayerHandle, int nIndex);
+bool vp_mm_player_remove_subtitle_language(mm_player_handle pPlayerHandle, int nIndex);
+bool vp_mm_player_track_foreach_selected_subtitle_language(mm_player_handle pPlayerHandle, void *pCallback, void *pUserData);
+#endif
+bool vp_mm_player_set_cookie(mm_player_handle pPlayerHandle, const char *szCookie);
+bool vp_mm_player_set_proxy(mm_player_handle pPlayerHandle, const char *szProxy);
+
+bool vp_mm_player_set_hw_decoder(bool bEnable);
+bool vp_mm_player_set_rate(mm_player_handle pPlayerHandle, float fRate);
+
+
+bool vp_mm_player_set_zoom(mm_player_handle pPlayerHandle, float fZoom, int nPosX, int nPosY);
+bool vp_mm_player_get_zoom_start_position(mm_player_handle pPlayerHandle, int *nPosX, int *nPosY);
+bool vp_mm_player_set_visible(mm_player_handle pPlayerHandle, bool bVisible);
+bool vp_mm_player_set_hub_download_mode(mm_player_handle pPlayerHandle, bool bDownload);
+
diff --git a/playview/src/core/include/vp-multi-path.h b/playview/src/core/include/vp-multi-path.h
new file mode 100644
index 0000000..3c6a263
--- /dev/null
+++ b/playview/src/core/include/vp-multi-path.h
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+
+#pragma once
+
+#include <stdbool.h>
+#include <glib.h>
+
+
+bool vp_multi_path_add_item(GList **pList, const char *szURL, char *szTitle, char *szSubTitle, int nPosition, int nDuration, bool bIsSameAP);
+bool vp_multi_path_clear_item(GList *pList);
+bool vp_multi_path_set_item_subtitle(const char *szMediaURL, char *szSubtitleURL, GList *pList);
+bool vp_multi_path_set_item_position(const char *szMediaURL, int nPosition, GList *pList);
+bool vp_multi_path_get_current_item(const char *szMediaURL, char **szURL, char **szTitle, char **szSubtitle, int *nPosition, int *nDuration, bool *bIsSameAP, GList *pList);
+bool vp_multi_path_get_next_item(const char *szMediaURL, char **szURL, char **szSubtitle, int *nPosition, int *nDuration, bool bLoop, GList *pList);
+bool vp_multi_path_get_prev_item(const char *szMediaURL, char **szURL, char **szSubtitle, int *nPosition, int *nDuration, bool bLoop, GList *pList);
+
diff --git a/playview/src/core/include/vp-sensor.h b/playview/src/core/include/vp-sensor.h
new file mode 100644
index 0000000..9517303
--- /dev/null
+++ b/playview/src/core/include/vp-sensor.h
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#ifdef OLD_SENSOR_API
+
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+
+typedef enum {
+ VP_SENSOR_TYPE_NONE= 0x00,
+ VP_SENSOR_TYPE_FACEDOWN,
+ VP_SENSOR_TYPE_DOUBLETAP,
+}vp_sensor_type_t;
+
+
+typedef void (*SensorEventCbFunc)(vp_sensor_type_t nType, unsigned long long timestamp, void* pUserData);
+
+
+typedef void *sensor_handle;
+
+
+sensor_handle vp_sensor_create(SensorEventCbFunc pEventCb);
+void vp_sensor_destroy(sensor_handle pSensorHandle);
+bool vp_sensor_realize(sensor_handle pSensorHandle);
+bool vp_sensor_unrealize(sensor_handle pSensorHandle);
+bool vp_sensor_set_user_data(sensor_handle pSensorHandle, void *pUserData);
+
+#endif
diff --git a/playview/src/core/include/vp-sound.h b/playview/src/core/include/vp-sound.h
new file mode 100644
index 0000000..fcb0639
--- /dev/null
+++ b/playview/src/core/include/vp-sound.h
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+
+typedef enum {
+ VP_SOUND_DEVICE_NONE = 0x00,
+ VP_SOUND_DEVICE_SPEAKER,
+ VP_SOUND_DEVICE_EARJACK,
+ VP_SOUND_DEVICE_BLUETOOTH,
+ VP_SOUND_DEVICE_HDMI,
+ VP_SOUND_DEVICE_MIRRORING,
+ VP_SOUND_DEVICE_USB_AUDIO,
+ VP_SOUND_DEVICE_MAX,
+}video_sound_device_type_t;
+
+typedef void(*vp_sound_route_change_cb)(int nRoute, bool bAvailable, void *pUserData);
+typedef void(*vp_sound_volume_change_cb)(int nType, int nVolume, void *pUserData);
+
+bool vp_sound_init_session();
+bool vp_sound_deinit_session();
+bool vp_sound_get_volume(int *nValue);
+bool vp_sound_set_volume(int nValue);
+bool vp_sound_get_max_volume(int *nMaxValue);
+bool vp_sound_get_active_device(video_sound_device_type_t *nDeviceType);
+bool vp_sound_is_sound_path_enable(bool *bIsSoundPath);
+bool vp_sound_get_a2dp_name(char **szBTName);
+bool vp_sound_set_active_route(video_sound_device_type_t nDeviceType);
+bool vp_sound_set_route_change_cb(vp_sound_route_change_cb func, void *pUserData);
+bool vp_sound_set_volume_change_cb(vp_sound_volume_change_cb func, void *pUserData);
+bool vp_sound_device_is_enable(video_sound_device_type_t nDeviceType, void *pUserData);
+
diff --git a/playview/src/core/vp-avrcp.c b/playview/src/core/vp-avrcp.c
new file mode 100644
index 0000000..b9b7a3f
--- /dev/null
+++ b/playview/src/core/vp-avrcp.c
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <bluetooth.h>
+
+#include "vp-play-macro-define.h"
+
+#include "vp-avrcp.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+/* callback functions */
+
+/* internal functions */
+void _vp_avrcp_connection_state_changed_cb(bool connected,
+ const char *remote_address,
+ void *user_data)
+{
+ VideoLogInfo("");
+}
+
+/* external functions */
+bool vp_avrcp_initialize()
+{
+ VideoLogInfo("vp_avrcp_initialize start");
+
+ int nRet = bt_initialize();
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError("bt_initialize fail. nRet[%d]", nRet);
+ return FALSE;
+ }
+
+ nRet =
+ bt_avrcp_target_initialize(_vp_avrcp_connection_state_changed_cb,
+ NULL);
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError("bt_avrcp_target_initialize fail. nRet[%d]", nRet);
+ bt_deinitialize();
+ return FALSE;
+ }
+
+ VideoLogInfo("vp_avrcp_initialize end");
+
+ return TRUE;
+}
+
+bool vp_avrcp_deinitialize()
+{
+ VideoLogInfo("vp_avrcp_deinitialize start");
+
+ int nRet = BT_ERROR_NONE;
+
+ nRet = bt_avrcp_target_deinitialize();
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError("bt_avrcp_target_deinitialize fail. nRet[%d]",
+ nRet);
+ return FALSE;
+ }
+
+ nRet = bt_deinitialize();
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError("bt_deinitialize fail. nRet[%d]", nRet);
+ return FALSE;
+ }
+
+
+ VideoLogInfo("vp_avrcp_deinitialize end");
+
+ return TRUE;
+}
+
+bool vp_avrcp_noti_track(const char *title, const char *artist,
+ const char *album, const char *genre,
+ unsigned int duration)
+{
+ VideoLogInfo("vp_avrcp_noti_track start");
+
+ int nRet = BT_ERROR_NONE;
+ VideoLogWarning("set avrcp noti tack. title[%s]", title);
+ VideoLogWarning("set avrcp noti tack. duration[%d]", duration);
+
+ nRet =
+ bt_avrcp_target_notify_track(title, artist, album, genre, 1, 1,
+ duration);
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError("bt_avrcp_target_notify_track fail. nRet[%d]",
+ nRet);
+ return FALSE;
+ }
+
+ VideoLogInfo("vp_avrcp_noti_track end");
+
+ return TRUE;
+}
+
+bool vp_avrcp_noti_track_position(unsigned int position)
+{
+ VideoLogInfo("vp_avrcp_noti_track_position start");
+
+ int nRet = BT_ERROR_NONE;
+ VideoLogWarning("set avrcp noti track position. duration[%d]",
+ position);
+ nRet = bt_avrcp_target_notify_position(position);
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError("bt_avrcp_target_notify_position fail. nRet[%d]",
+ nRet);
+ return FALSE;
+ }
+
+ VideoLogInfo("vp_avrcp_noti_track_position end");
+
+ return TRUE;
+}
+
+bool vp_avrcp_noti_player_state(vp_mm_player_state_t nState)
+{
+ VideoLogInfo("vp_avrcp_noti_player_state start");
+ if (nState == VP_MM_PLAYER_STATE_NONE
+ || nState == VP_MM_PLAYER_STATE_IDLE) {
+ VideoLogWarning
+ ("player state : [%d]. don't need to send player state",
+ nState);
+ return TRUE;
+ }
+
+ bt_avrcp_player_state_e player_state = BT_AVRCP_PLAYER_STATE_STOPPED;
+ switch (nState) {
+ case VP_MM_PLAYER_STATE_PLAYING:
+ player_state = BT_AVRCP_PLAYER_STATE_PLAYING;
+ break;
+ case VP_MM_PLAYER_STATE_READY:
+ case VP_MM_PLAYER_STATE_PAUSED:
+ player_state = BT_AVRCP_PLAYER_STATE_PAUSED;
+ break;
+ case VP_MM_PLAYER_STATE_STOP:
+ player_state = BT_AVRCP_PLAYER_STATE_STOPPED;
+ break;
+ default:
+ break;
+ }
+ VideoLogWarning("set avrcp noti player state. player_state[%d]",
+ player_state);
+
+ int nRet = BT_ERROR_NONE;
+ nRet = bt_avrcp_target_notify_player_state(player_state);
+ if (nRet != BT_ERROR_NONE) {
+ VideoLogError
+ ("bt_avrcp_target_notify_player_state fail. nRet[%d]", nRet);
+ return FALSE;
+ }
+
+ VideoLogInfo("vp_avrcp_noti_player_state end");
+
+ return TRUE;
+}
diff --git a/playview/src/core/vp-device-language.c b/playview/src/core/vp-device-language.c
new file mode 100644
index 0000000..02a395d
--- /dev/null
+++ b/playview/src/core/vp-device-language.c
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <Elementary.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+#include "vp-device-language.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+#define VP_LANGLIST_FILE_PATH "/opt/usr/data/setting/langlist.xml"
+
+
+typedef struct {
+ char *szLanguageCode; // ex) "en_US.UTF"
+ char *szLanguageName; // "United Kingdom"
+ char *szMcc;
+} stLanguage;
+
+static Eina_List *g_pLanglist = NULL; // internal
+
+bool _vp_language_list_destroy(void)
+{
+ stLanguage *szNode = NULL;
+ if (!g_pLanglist) {
+ VideoLogError("g_pLanglist is NULL");
+ return FALSE;
+ }
+ EINA_LIST_FREE(g_pLanglist, szNode) {
+ if (szNode) {
+ VP_FREE(szNode->szLanguageCode);
+ VP_FREE(szNode->szLanguageName);
+ VP_FREE(szNode->szMcc);
+ VP_FREE(szNode);
+ }
+ }
+ g_pLanglist = NULL;
+
+ return TRUE;
+}
+
+static void _vp_language_get_list(xmlNodePtr cur)
+{
+ xmlNode *cur_node = NULL;
+ char *pId = NULL;
+ char *pName = NULL;
+ char *pMcc = NULL;
+
+ for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+ if (cur_node->type == XML_ELEMENT_NODE) {
+ pId =
+ (char *) g_strdup((char *)
+ xmlGetProp(cur_node,
+ (const xmlChar *) "id"));
+ pName =
+ (char *) g_strdup((char *)
+ xmlGetProp(cur_node,
+ (const xmlChar *) "string"));
+ pMcc =
+ (char *) g_strdup((char *)
+ xmlGetProp(cur_node,
+ (const xmlChar *) "mcc"));
+ stLanguage *szNode =
+ (stLanguage *) calloc(1, sizeof(stLanguage));
+ if (szNode) {
+ szNode->szLanguageCode = pId;
+ szNode->szLanguageName = pName;
+ szNode->szMcc = pMcc;
+ g_pLanglist = eina_list_append(g_pLanglist, szNode);
+ }
+ }
+ }
+}
+
+static void _vp_language_parse_XML(char *szPath)
+{
+ if (!szPath) {
+ VideoLogError("szPath is NULL");
+ return;
+ }
+ xmlDocPtr doc;
+ xmlNodePtr cur;
+
+ doc = xmlParseFile(szPath);
+
+ if (doc == NULL) {
+ VideoLogError("Document not parsed successfully");
+ return;
+ }
+
+ cur = xmlDocGetRootElement(doc);
+ if (cur == NULL) {
+ VideoLogError("empty document");
+ xmlFreeDoc(doc);
+ return;
+ }
+ // make sure root node is "langlist"
+ if (xmlStrcmp(cur->name, (const xmlChar *) "langlist")) {
+ VideoLogError
+ ("document of the wrong type, root node != langlist");
+ xmlFreeDoc(doc);
+ return;
+ }
+
+ cur = cur->xmlChildrenNode;
+ _vp_language_get_list(cur);
+
+ /* save tree to file */
+ if (doc != NULL) {
+ //xmlSaveFormatFile (docname, doc, 1);
+ xmlFreeDoc(doc);
+ }
+}
+
+bool _vp_language_list_load(char *szPath)
+{
+ if (!g_pLanglist) {
+ _vp_language_parse_XML(szPath);
+ }
+
+ return TRUE;
+}
+
+char *vp_language_get_name(const char *szCode)
+{
+ if (!g_pLanglist) {
+ VideoLogError("g_pLanglist IS null");
+ return NULL;
+ }
+
+ if (!szCode) {
+ VideoLogError("szCode IS null");
+ return NULL;
+ }
+ Eina_List *pIterateList = NULL;
+ stLanguage *szNode = NULL;
+
+ char *pLangCode = NULL;
+ char *pRealCode = NULL;
+ char *szName = NULL;
+ pLangCode = g_utf8_strup(szCode, -1);
+
+ EINA_LIST_FOREACH(g_pLanglist, pIterateList, szNode) {
+ if (szNode) {
+ pRealCode = g_utf8_strup(szNode->szLanguageCode, -1);
+
+ if (g_strrstr(pRealCode, pLangCode)) {
+ VP_STRDUP(szName, szNode->szLanguageName);
+ break;
+ }
+ VP_FREE(pRealCode);
+ }
+ }
+ VP_FREE(pLangCode);
+ VP_FREE(pRealCode);
+
+ return szName;
+}
+
+void vp_language_list_destroy()
+{
+ VideoLogInfo("");
+ _vp_language_list_destroy();
+}
+
+void vp_language_list_create()
+{
+ if (NULL == g_pLanglist) {
+ VideoLogInfo("");
+ _vp_language_list_load(VP_LANGLIST_FILE_PATH);
+ }
+}
diff --git a/playview/src/core/vp-device.c b/playview/src/core/vp-device.c
new file mode 100644
index 0000000..476fa87
--- /dev/null
+++ b/playview/src/core/vp-device.c
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <device/display.h>
+#include <device/power.h>
+
+
+#include "vp-device.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+bool vp_device_display_lcd_lock(void)
+{
+ int nRet = 0;
+ nRet = device_power_request_lock(POWER_LOCK_DISPLAY, 0);
+ if (nRet != 0) {
+ VideoLogError
+ ("device_power_request_lock(POWER_LOCK_DISPLAY, 0) set fail : %d",
+ nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_device_display_lcd_unlock(void)
+{
+ int nRet = 0;
+ nRet = device_power_release_lock(POWER_LOCK_DISPLAY);
+ if (nRet != 0) {
+ VideoLogError
+ ("device_power_release_lock(POWER_LOCK_DISPLAY) set fail : %d",
+ nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_device_set_frame_rate(int nRate)
+{
+ return TRUE;
+}
+
+bool vp_device_set_brightness(int nVal)
+{
+ int nRet = 0;
+ nRet = device_display_set_brightness(0, nVal); // 0 is main display, brightness
+ if (nRet != 0) {
+ VideoLogError("device_display_set_brightness set fail : %d",
+ nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_device_get_brightness(int *nCurVal)
+{
+ int nVal = 0;
+ int nRet = 0;
+ nRet = device_display_get_brightness(0, &nVal);
+ if (nVal < 0 || nRet != DEVICE_ERROR_NONE) {
+ VideoLogError("device_display_get_brightness set fail : %d",
+ nVal);
+ return FALSE;
+ }
+
+ *nCurVal = nVal;
+
+ return TRUE;
+}
+
+
+bool vp_device_get_max_brightness(int *nMaxVal)
+{
+ int nVal = 0;
+ int nRet = 0;
+ nRet = device_display_get_max_brightness(0, &nVal);
+ if (nVal < 0 || nRet != DEVICE_ERROR_NONE) {
+ VideoLogError("device_display_get_max_brightness get fail : %d",
+ nVal);
+ return FALSE;
+ }
+
+ *nMaxVal = nVal;
+
+ return TRUE;
+}
+
+bool vp_device_get_min_brightness(int *nMinVal)
+{
+ int nVal = 0;
+
+ *nMinVal = nVal;
+
+ return TRUE;
+}
+
+bool vp_device_set_screen_off(bool bLock)
+{
+ if (bLock) {
+ if (device_power_request_lock(POWER_LOCK_CPU, 0) !=
+ DEVICE_ERROR_NONE) {
+ VideoLogError("lock failed");
+ return FALSE;
+ }
+ } else {
+ if (device_power_release_lock(POWER_LOCK_CPU) !=
+ DEVICE_ERROR_NONE) {
+ VideoLogError("unlock failed");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/core/vp-hollic.c b/playview/src/core/vp-hollic.c
new file mode 100644
index 0000000..2c2765d
--- /dev/null
+++ b/playview/src/core/vp-hollic.c
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-hollic.h"
+#include "vp-play-macro-define.h"
+#include "vp-play-log.h"
+
+#define OBJECT_PATH "/Org/Tizen/System/DeviceD"
+#define DEVICED_PATH_HALL OBJECT_PATH"/Hall"
+#define SIGNAL_HALL_STATE "ChangeState"
+
+typedef struct _HollIC_handle {
+ void *pDbus_connection;
+ void *pSignal_handler;
+
+ void *pUserData;
+ HollICEventCbFunc pEventCb;
+} HollIC_handle;
+
+hollic_handle vp_hollic_create_handle(HollICEventCbFunc pEventCb,
+ void *pUserData)
+{
+ return NULL;
+}
+
+void vp_hollic_destroy_handle(hollic_handle pHollICHandle)
+{
+ if (pHollICHandle == NULL) {
+ VideoLogError("pHollICHandle is NULL");
+ return;
+ }
+
+ return;
+}
diff --git a/playview/src/core/vp-image-util.c b/playview/src/core/vp-image-util.c
new file mode 100644
index 0000000..d72c5d6
--- /dev/null
+++ b/playview/src/core/vp-image-util.c
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <image_util.h>
+#include <image_util_internal.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#include "vp-image-util.h"
+#include "vp-util.h"
+
+bool vp_image_util_image_resize_save(const char *szFilePath,
+ const unsigned char *pSrcBuf,
+ int nSrcW, int nSrcH, int nDestW,
+ int nDestH, int nQuality)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ if (pSrcBuf == NULL) {
+ VideoLogError("pSrcBuf is NULL");
+ return FALSE;
+ }
+
+ int nRet = IMAGE_UTIL_ERROR_NONE;
+ unsigned char *pSaveBuf = NULL;
+ unsigned int nResizBufSize = 0;
+ int nResizeW = nDestW + (nDestW) % 2;
+ int nResizeH = nDestH + (nDestH) % 2;
+
+ nRet =
+ image_util_calculate_buffer_size(nResizeW, nResizeH,
+ IMAGE_UTIL_COLORSPACE_RGB888,
+ &nResizBufSize);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ VideoLogWarning
+ ("image_util_calculate_buffer_size is fail : [0x%x]", nRet);
+ }
+
+ pSaveBuf = calloc(1, sizeof(unsigned char) * nResizBufSize);
+ if (pSaveBuf == NULL) {
+ VideoLogWarning("pSaveBuf alloc fail");
+ return FALSE;
+ }
+
+ nRet =
+ vp_util_image_resize(pSaveBuf, &nResizeW, &nResizeH, pSrcBuf,
+ nSrcW, nSrcH, IMAGE_UTIL_COLORSPACE_RGB888);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ VideoLogWarning("vp_util_image_resize is fail : [0x%x]", nRet);
+ VP_FREE(pSaveBuf);
+ return FALSE;
+ }
+
+ nRet =
+ image_util_encode_jpeg(pSaveBuf, nResizeW, nResizeH,
+ IMAGE_UTIL_COLORSPACE_RGB888, nQuality,
+ szFilePath);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ VideoLogWarning("image_util_encode_jpeg is fail : [0x%x]", nRet);
+ VP_FREE(pSaveBuf);
+ return FALSE;
+ }
+
+ VP_FREE(pSaveBuf);
+
+ return TRUE;
+}
+
+
+bool vp_image_util_image_save(const char *szFilePath,
+ const unsigned char *pSrcBuf, int nSrcW,
+ int nSrcH, int nQuality)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ if (pSrcBuf == NULL) {
+ VideoLogError("pSrcBuf is NULL");
+ return FALSE;
+ }
+
+ int nRet = IMAGE_UTIL_ERROR_NONE;
+
+ nRet =
+ image_util_encode_jpeg(pSrcBuf, nSrcW, nSrcH,
+ IMAGE_UTIL_COLORSPACE_RGB888, nQuality,
+ szFilePath);
+ if (nRet != IMAGE_UTIL_ERROR_NONE) {
+ VideoLogWarning("image_util_encode_jpeg is fail : [0x%x]", nRet);
+ return FALSE;
+ }
+ return TRUE;
+}
diff --git a/playview/src/core/vp-media-contents.c b/playview/src/core/vp-media-contents.c
new file mode 100644
index 0000000..7e07ecd
--- /dev/null
+++ b/playview/src/core/vp-media-contents.c
@@ -0,0 +1,2747 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <media_content.h>
+#include <metadata_extractor.h>
+
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-media-contents.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-file-util.h"
+
+
+static bool g_bMediaConnect = FALSE;
+static MediaUpdateCb g_media_update_cb = NULL;
+
+
+
+/* callback functions */
+static bool __vp_media_contents_info_cb(media_info_h pMediaHandle,
+ void *pUserData)
+{
+ media_info_h *pAssignItem = (media_info_h *) pUserData;
+
+ if (pMediaHandle != NULL) {
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ nRet = media_info_clone(pAssignItem, pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_clone is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ char *szTmpStr = NULL;
+ nRet = media_info_get_display_name(*pAssignItem, &szTmpStr);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_display_name is fail : 0x%x",
+ nRet);
+ return FALSE;
+ }
+
+ VideoLogInfo("Display name : %s", szTmpStr);
+ VP_FREE(szTmpStr);
+ } else {
+ VideoLogError("pMeidaHandle is NULL");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool __vp_media_contents_bookmark_iter_cb(media_bookmark_h
+ pBookmark,
+ void *pUserData)
+{
+ if (pBookmark == NULL) {
+ VideoLogError("pBookmark is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ media_bookmark_h pAssignBookmark = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ nRet = media_bookmark_clone(&pAssignBookmark, pBookmark);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_bookmark_clone is fail : 0x%x", nRet);
+ return FALSE;
+ }
+ VideoLogWarning("== list append ==");
+
+ GList **pList = (GList **) pUserData;
+ *pList = g_list_append(*pList, pAssignBookmark);
+
+ return TRUE;
+}
+
+
+static bool __vp_media_contents_video_iter_cb(media_info_h pMediaInfo,
+ void *pUserData)
+{
+ if (pMediaInfo == NULL) {
+ VideoLogError("pMediaInfo is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ media_info_h pAssignMedia = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
+
+ nRet = media_info_get_media_type(pMediaInfo, &nMediaType);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_media_type is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ if (nMediaType == MEDIA_CONTENT_TYPE_VIDEO) {
+ nRet = media_info_clone(&pAssignMedia, pMediaInfo);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_clone is fail : 0x%x", nRet);
+ return FALSE;
+ }
+ GList **pList = (GList **) pUserData;
+ *pList = g_list_append(*pList, pAssignMedia);
+ }
+
+ return TRUE;
+}
+
+static int __vp_media_contents_get_pid(void)
+{
+ return getpid();
+}
+
+static void __vp_media_contents_db_update_cb(media_content_error_e nError,
+ int nPid,
+ media_content_db_update_item_type_e
+ nUpdateItem,
+ media_content_db_update_type_e
+ nUpdateType,
+ media_content_type_e
+ nMediaType, char *szUuid,
+ char *szPath,
+ char *szMimeType,
+ void *pUserData)
+{
+ if (g_media_update_cb == NULL) {
+ VideoLogError("g_media_update_cb is NULL.");
+ return;
+ }
+
+ if (nError) {
+ VideoLogError("error occured! : %d", nError);
+ return;
+ }
+
+ if (nPid == __vp_media_contents_get_pid()) {
+ VideoLogError("It is same processor");
+ return;
+ }
+
+ g_media_update_cb(pUserData);
+}
+
+static bool __vp_media_contents_folder_iter_cb(media_folder_h pFolderItem,
+ void *pUserData)
+{
+ if (pFolderItem == NULL) {
+ VideoLogError("pFolderItem is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+ 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 TRUE;
+}
+
+static bool __vp_media_contents_subtitles_iter_cb(media_info_h pMediaInfo,
+ void *pUserData)
+{
+ if (pMediaInfo == NULL) {
+ VideoLogError("pMediaInfo is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ char *pszFilePath = NULL;
+
+ nRet = media_info_get_file_path(pMediaInfo, &pszFilePath);
+
+ VideoSecureLogInfo("pszFilePath is: %s", pszFilePath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_file_path is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ GList **pList = (GList **) pUserData;
+ *pList = g_list_append(*pList, pszFilePath);
+
+ return TRUE;
+}
+
+
+/* external functions */
+bool vp_media_contents_connect()
+{
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ if (g_bMediaConnect) {
+// VideoLogDebug("Already Media content connect");
+ return TRUE;
+ }
+
+ nRet = media_content_connect();
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_content_connect is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ g_bMediaConnect = TRUE;
+
+ return TRUE;
+}
+
+bool vp_media_contents_disconnect()
+{
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ if (g_bMediaConnect == FALSE) {
+ VideoLogWarning("Already Media content disconnect");
+ return TRUE;
+ }
+
+ nRet = media_content_disconnect();
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_content_connect is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ g_bMediaConnect = FALSE;
+
+ return TRUE;
+}
+
+
+bool vp_media_contents_get_video_id(const char *szFilePath,
+ char **szVideoID)
+{
+ if (szVideoID == NULL) {
+ VideoLogError("szVideoID is NULL");
+ return FALSE;
+ }
+
+ /* Initialize output value */
+ *szVideoID = NULL;
+
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ char *szMediaID = NULL;
+
+ char szTmpStr[4096] = {0,};
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_media_id(pMediaHandle, &szMediaID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_media_id is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ VP_STRDUP(*szVideoID, szMediaID);
+ VP_FREE(szMediaID);
+
+ return TRUE;
+
+Exception:
+
+ VP_FREE(szMediaID);
+ *szVideoID = NULL;
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_get_video_thumbnail_path(const char *szFilePath,
+ char **szThumbnailPath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ char *szThumbnail = NULL;
+
+ char szTmpStr[4096] = {0,};
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_thumbnail_path(pMediaHandle, &szThumbnail);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_thumbnail_path is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ VP_STRDUP(*szThumbnailPath, szThumbnail);
+ VP_FREE(szThumbnail);
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ VP_FREE(szThumbnail);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_scan_file(const char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("szFilePath is NULL.");
+ return FALSE;
+ }
+ media_content_scan_file(szFilePath);
+ return TRUE;
+}
+
+bool vp_media_contents_update_db(const char *szMediaURL)
+{
+ if (!szMediaURL) {
+ VideoLogError("No exist szMediaURL.");
+ return FALSE;
+ }
+
+ media_info_h info = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_insert_to_db(szMediaURL, &info);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_insert_to_db fail : %d", nRet);
+ if (info) {
+ media_info_destroy(info);
+ info = NULL;
+ }
+ return FALSE;
+ }
+
+ if (info) {
+ media_info_destroy(info);
+ info = NULL;
+ }
+
+ return TRUE;
+}
+
+bool vp_media_contents_refresh_db(const char *szMediaID)
+{
+ if (!szMediaID) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_refresh_metadata_to_db(szMediaID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_refresh_metadata_to_db fail : %d",
+ nRet);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool vp_media_contents_set_played_time(const char *szFilePath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+ video_meta_h pVideoHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_video(pMediaHandle, &pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_video is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pVideoHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ time_t tNowTime = 0;
+ time(&tNowTime);
+
+ nRet = video_meta_set_played_time(pVideoHandle, tNowTime);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError(" video_meta_set_played_time is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_update_to_db(pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_update_to_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_destroy(pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+
+ if (pVideoHandle) {
+ video_meta_destroy(pVideoHandle);
+ pVideoHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_set_played_position(const char *szFilePath,
+ int nPosition)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+ video_meta_h pVideoHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_video(pMediaHandle, &pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_video is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pVideoHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = video_meta_set_played_position(pVideoHandle, nPosition);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError(" video_meta_set_played_position is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_update_to_db(pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_update_to_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_destroy(pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+
+ if (pVideoHandle) {
+ video_meta_destroy(pVideoHandle);
+ pVideoHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_get_played_position(const char *szFilePath,
+ int *nPosition)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+ video_meta_h pVideoHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_video(pMediaHandle, &pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_video is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pVideoHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = video_meta_get_played_position(pVideoHandle, nPosition);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_get_played_position is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_destroy(pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+
+ if (pVideoHandle) {
+ video_meta_destroy(pVideoHandle);
+ pVideoHandle = NULL;
+ }
+ return FALSE;
+
+
+}
+
+int vp_media_contents_get_modified_time(media_info_h pMediaHandle,
+ char **szLastModified)
+{
+ if (!pMediaHandle) {
+ VideoLogInfo("pMediaHandle is NULL.");
+ return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
+ }
+
+ VideoLogInfo("");
+
+ media_info_h pVideoItem = (media_info_h) pMediaHandle;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ time_t pModifiedTime;
+ struct tm sModifiedTime;
+ char szModifiedTime[BYTE_SIZE] = {0,};
+
+ nRet = media_info_get_modified_time(pVideoItem, &pModifiedTime);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_modified_time failed : [%d]!!!",
+ nRet);
+ return nRet;
+ }
+
+ gmtime_r(&pModifiedTime, &sModifiedTime);
+ strftime(szModifiedTime, BYTE_SIZE - 1, "%d %b. %Y. %H:%M",
+ &sModifiedTime);
+ *szLastModified = g_strdup(szModifiedTime);
+
+ return nRet;
+}
+
+bool vp_media_contents_get_content_info(const char *szFilePath,
+ char **szTitle, int *nWidth,
+ int *nHeight, int *nDuration,
+ double *dLatitude,
+ double *dLongitude,
+ char **szTmpLastModified)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+ video_meta_h pVideoHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = {0,};
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_display_name(pMediaHandle, szTitle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_display_name is fail : 0x%x", nRet);
+ }
+
+ nRet = media_info_get_video(pMediaHandle, &pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_video is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ vp_media_contents_get_modified_time(pMediaHandle,
+ szTmpLastModified);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_modified_time is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_get_latitude(pMediaHandle, dLatitude);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_latitude is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_get_longitude(pMediaHandle, dLongitude);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_longitude is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pVideoHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = video_meta_get_width(pVideoHandle, nWidth);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_get_width is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_get_height(pVideoHandle, nHeight);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_get_height is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_get_duration(pVideoHandle, nDuration);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_get_duration is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = video_meta_destroy(pVideoHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("video_meta_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+
+ if (pVideoHandle) {
+ video_meta_destroy(pVideoHandle);
+ pVideoHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_metadata_get_gps_info(const char *szFilePath,
+ double *dLatitude, double *dLongitude)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata;
+ char *szVal = NULL;
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+
+ nRet = metadata_extractor_create(&pMetadata);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = metadata_extractor_set_path(pMetadata, szFilePath);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_set_path is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_LATITUDE,
+ &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ if (szVal) {
+ *dLatitude = atof(szVal);
+ } else {
+ *dLatitude = 0.0;
+ }
+ VP_FREE(szVal);
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_LONGITUDE,
+ &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ if (szVal) {
+ *dLongitude = atof(szVal);
+ } else {
+ *dLongitude = 0.0;
+ }
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return TRUE;
+Exception:
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return FALSE;
+}
+
+bool vp_media_metadata_get_duration(const char *szFilePath,
+ int *nDuration)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata;
+ char *szVal = NULL;
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+
+ nRet = metadata_extractor_create(&pMetadata);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = metadata_extractor_set_path(pMetadata, szFilePath);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_set_path is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_DURATION,
+ &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ if (szVal) {
+ *nDuration = atoi(szVal);
+ } else {
+ *nDuration = 0.0;
+ }
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return TRUE;
+Exception:
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return FALSE;
+
+}
+
+bool vp_media_metadata_get_width(const char *szFilePath, int *nWidth)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata;
+ char *szVal = NULL;
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+
+ nRet = metadata_extractor_create(&pMetadata);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = metadata_extractor_set_path(pMetadata, szFilePath);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_set_path is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_VIDEO_WIDTH,
+ &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ if (szVal) {
+ *nWidth = atoi(szVal);
+ } else {
+ *nWidth = 0;
+ }
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return TRUE;
+Exception:
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return FALSE;
+
+}
+
+bool vp_media_metadata_get_height(const char *szFilePath, int *nHeight)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata;
+ char *szVal = NULL;
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+
+ nRet = metadata_extractor_create(&pMetadata);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = metadata_extractor_set_path(pMetadata, szFilePath);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_set_path is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_VIDEO_HEIGHT,
+ &szVal);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ if (szVal) {
+ *nHeight = atoi(szVal);
+ } else {
+ *nHeight = 0;
+ }
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return TRUE;
+Exception:
+
+ VP_FREE(szVal);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return FALSE;
+
+}
+
+
+bool vp_media_contents_bookmark_list_get(const char *szMediaID,
+ GList **list)
+{
+ if (!szMediaID) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ if (!list) {
+ VideoLogError("No exist list.");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ filter_h pFilterHandle = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("pFilterHandle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_order(pFilterHandle, MEDIA_CONTENT_ORDER_ASC,
+ BOOKMARK_MARKED_TIME,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_order is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_bookmark_from_db(szMediaID, pFilterHandle,
+ __vp_media_contents_bookmark_iter_cb,
+ list);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError
+ ("media_info_foreach_bookmark_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ return FALSE;
+}
+
+
+bool vp_media_contents_bookmark_list_clear(GList *pList)
+{
+ VideoLogInfo("");
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pList);
+ for (i = 0; i < nCount; i++) {
+ media_bookmark_h pBookmarkItem = NULL;
+ pBookmarkItem = (media_bookmark_h)g_list_nth_data(pList, i);
+ if (pBookmarkItem) {
+ media_bookmark_destroy(pBookmarkItem);
+ pBookmarkItem = NULL;
+ }
+ }
+
+ g_list_free(pList);
+ pList = NULL;
+
+ return TRUE;
+}
+
+bool vp_media_contents_bookmark_insert(const char *szMediaID,
+ int nPosition,
+ const char *szFilePath)
+{
+
+ if (szMediaID == NULL) {
+ VideoLogError("szMediaID is NULL");
+ return FALSE;
+ }
+
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ if (nPosition < 0) {
+ VideoLogError("nPosition is Invalid");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ if (!vp_file_exists(szFilePath)) {
+ VideoLogError("(%s) file doesnot exist", szFilePath);
+ return FALSE;
+ }
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_bookmark_insert_to_db(szMediaID, nPosition, szFilePath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_bookmark_insert_to_db is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+
+bool vp_media_contents_bookmark_delete(const char *szMediaID,
+ int nPosition)
+{
+ if (szMediaID == NULL) {
+ VideoLogError("szMediaID is NULL");
+ return FALSE;
+ }
+
+ if (nPosition < 0) {
+ VideoLogError("nPosition is Invalid");
+ return FALSE;
+ }
+
+ GList *list = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ int nCount = 0;
+ int idx = 0;
+ int nDeleteBookmarkID = -1;
+ char *szDeletePath = NULL;
+
+ if (!vp_media_contents_bookmark_list_get(szMediaID, &list)) {
+ VideoLogError("vp_media_contents_bookmark_list_get is fail");
+ return FALSE;
+ }
+
+ nCount = g_list_length(list);
+ for (idx = 0; idx < nCount; idx++) {
+ media_bookmark_h pBookmarkItem = NULL;
+ pBookmarkItem = (media_bookmark_h)g_list_nth_data(list, idx);
+ if (pBookmarkItem) {
+ time_t nMarkedTime;
+ nRet =
+ media_bookmark_get_marked_time(pBookmarkItem,
+ &nMarkedTime);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning
+ ("media_bookmark_get_marked_time is fail : 0x%x",
+ nRet);
+ continue;
+ }
+
+ if (nPosition == nMarkedTime) {
+ nRet =
+ media_bookmark_get_bookmark_id(pBookmarkItem,
+ &nDeleteBookmarkID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning
+ ("media_bookmark_get_bookmark_id is fail : 0x%x",
+ nRet);
+ continue;
+ }
+
+ nRet =
+ media_bookmark_get_thumbnail_path(pBookmarkItem,
+ &szDeletePath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning
+ ("media_bookmark_get_thumbnail_path is fail : 0x%x",
+ nRet);
+ continue;
+ }
+ break;
+ }
+ }
+ }
+
+ vp_media_contents_bookmark_list_clear(list);
+ list = NULL;
+
+ if (nDeleteBookmarkID == -1 || szDeletePath == NULL) {
+ VideoLogError("Not match item : %d , %s", nDeleteBookmarkID,
+ szDeletePath);
+ VP_FREE(szDeletePath);
+ return FALSE;
+ }
+
+ nRet = media_bookmark_delete_from_db(nDeleteBookmarkID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_bookmark_delete_from_db is fail : 0x%x",
+ nRet);
+ VP_FREE(szDeletePath);
+ return FALSE;
+ }
+
+
+ if (vp_file_exists(szDeletePath)) {
+ if (!vp_file_unlink(szDeletePath)) {
+ VideoLogWarning("Remove Failed :%s", szDeletePath);
+ }
+ } else {
+ VideoLogWarning("%s doesnot exist", szDeletePath);
+ }
+
+ VP_FREE(szDeletePath);
+
+ return TRUE;
+}
+
+
+
+bool vp_media_contents_bookmark_delete_all(const char *szMediaID)
+{
+ if (szMediaID == NULL) {
+ VideoLogError("szMediaID is NULL");
+ return FALSE;
+ }
+
+ GList *list = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ int nCount = 0;
+ int idx = 0;
+
+ if (!vp_media_contents_bookmark_list_get(szMediaID, &list)) {
+ VideoLogError("vp_media_contents_bookmark_list_get is fail");
+ return FALSE;
+ }
+
+ nCount = g_list_length(list);
+ for (idx = 0; idx < nCount; idx++) {
+ media_bookmark_h pBookmarkItem = NULL;
+ int nDeleteBookmarkID = -1;
+ char *szDeletePath = NULL;
+
+ pBookmarkItem = (media_bookmark_h) g_list_nth_data(list, idx);
+ if (pBookmarkItem) {
+ nRet =
+ media_bookmark_get_bookmark_id(pBookmarkItem,
+ &nDeleteBookmarkID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning
+ ("media_bookmark_get_bookmark_id is fail : 0x%x",
+ nRet);
+ }
+
+ nRet =
+ media_bookmark_get_thumbnail_path(pBookmarkItem,
+ &szDeletePath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning
+ ("media_bookmark_get_thumbnail_path is fail : 0x%x",
+ nRet);
+ }
+
+ nRet = media_bookmark_delete_from_db(nDeleteBookmarkID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError
+ ("media_bookmark_delete_from_db is fail : 0x%x",
+ nRet);
+ }
+
+
+ if (vp_file_exists(szDeletePath)) {
+ if (!vp_file_unlink(szDeletePath)) {
+ VideoLogWarning("Remove Failed :%s", szDeletePath);
+ }
+ } else {
+ VideoLogWarning("The file not eixst :%s", szDeletePath);
+ }
+
+ VP_FREE(szDeletePath);
+ }
+ }
+
+ vp_media_contents_bookmark_list_clear(list);
+ list = NULL;
+
+ return TRUE;
+}
+
+
+bool vp_media_contents_bookmark_get_item_info(void *pItem,
+ char **szFilePath,
+ int *nPosition)
+{
+ if (pItem == NULL) {
+ VideoLogError("szMediaID is NULL");
+ return FALSE;
+ }
+
+ media_bookmark_h bookmark_h = (media_bookmark_h) pItem;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ nRet =
+ media_bookmark_get_marked_time(bookmark_h, (time_t *) nPosition);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_bookmark_get_marked_time is fail : 0x%x",
+ nRet);
+ return FALSE;
+ }
+
+ nRet = media_bookmark_get_thumbnail_path(bookmark_h, szFilePath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_bookmark_get_thumbnail_path is fail : 0x%x",
+ nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_media_contents_get_video_items_to_folder(int nSortType,
+ char *szFolder,
+ GList **pList)
+{
+ if (szFolder == NULL) {
+ VideoLogError("szFolder is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ filter_h pFilterHandle = NULL;
+ media_folder_h pFolderHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ video_play_sort_type_t nType = (video_play_sort_type_t) nSortType;
+ media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+
+ char *szOrder = NULL;
+ char *szCondition = NULL;
+ char *szFolderID = NULL;
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("pFilterHandle is NULL");
+ goto Exception;
+ }
+
+
+ switch (nType) {
+ case VIDEO_SORT_BY_NONE:
+ case VIDEO_SORT_BY_NAME_A_Z:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ VP_STRDUP(szOrder, MEDIA_TITLE);
+ break;
+
+ case VIDEO_SORT_BY_NAME_Z_A:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ VP_STRDUP(szOrder, MEDIA_TITLE);
+ break;
+
+ case VIDEO_SORT_BY_DATE_MOST_RECENT:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ VP_STRDUP(szOrder, MEDIA_MODIFIED_TIME);
+ break;
+
+ case VIDEO_SORT_BY_OLDEST:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ VP_STRDUP(szOrder, MEDIA_MODIFIED_TIME);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ VP_STRDUP(szOrder, MEDIA_TITLE);
+ }
+
+ szCondition =
+ g_strdup_printf
+ ("MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE IS NOT 101) and FOLDER_PATH = \"%s\"",
+ szFolder);
+ nRet =
+ media_filter_set_condition(pFilterHandle, szCondition,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_folder_foreach_folder_from_db(pFilterHandle,
+ __vp_media_contents_folder_iter_cb,
+ &pFolderHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError
+ ("media_folder_foreach_folder_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFolderHandle == NULL) {
+ VideoLogError("pFolderHandle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_folder_get_folder_id(pFolderHandle, &szFolderID);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_folder_get_folder_id is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ VP_FREE(szCondition);
+
+ szCondition = g_strdup_printf("MEDIA_TYPE = 1");
+ nRet =
+ media_filter_set_condition(pFilterHandle, szCondition,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_order(pFilterHandle, nOrderType, szOrder,
+ MEDIA_CONTENT_COLLATE_NOCASE);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_order is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_folder_foreach_media_from_db(szFolderID, pFilterHandle,
+ __vp_media_contents_video_iter_cb,
+ pList);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ VP_FREE(szFolderID);
+ VP_FREE(szCondition);
+ VP_FREE(szOrder);
+
+ return TRUE;
+
+Exception:
+
+ VP_FREE(szFolderID);
+ VP_FREE(szCondition);
+ VP_FREE(szOrder);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ return FALSE;
+}
+
+bool vp_media_contents_get_video_items(int nSortType, GList **pList)
+{
+ vp_media_contents_connect();
+
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ video_play_sort_type_t nType = (video_play_sort_type_t) nSortType;
+ media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ char *szOrder = NULL;
+ char *szCondition = NULL;
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("pFilterHandle is NULL");
+ goto Exception;
+ }
+ switch (nType) {
+ case VIDEO_SORT_BY_NONE:
+ case VIDEO_SORT_BY_NAME_A_Z:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ VP_STRDUP(szOrder, MEDIA_TITLE);
+ break;
+
+ case VIDEO_SORT_BY_NAME_Z_A:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ VP_STRDUP(szOrder, MEDIA_TITLE);
+ break;
+
+ case VIDEO_SORT_BY_DATE_MOST_RECENT:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ VP_STRDUP(szOrder, MEDIA_MODIFIED_TIME);
+ break;
+
+ case VIDEO_SORT_BY_OLDEST:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ VP_STRDUP(szOrder, MEDIA_MODIFIED_TIME);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ VP_STRDUP(szOrder, MEDIA_TITLE);
+ }
+
+ szCondition =
+ g_strdup_printf
+ ("MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE IS NOT 101)");
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szCondition,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_order(pFilterHandle, nOrderType, szOrder,
+ MEDIA_CONTENT_COLLATE_NOCASE);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_order is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_video_iter_cb,
+ pList);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ VP_FREE(szCondition);
+ VP_FREE(szOrder);
+
+ return TRUE;
+
+Exception:
+ VP_FREE(szCondition);
+ VP_FREE(szOrder);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ return FALSE;
+}
+
+bool vp_media_contents_free_video_items(GList *pList)
+{
+ VideoLogInfo("");
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pList);
+ for (i = 0; i < nCount; i++) {
+ media_info_h pMediaItem = NULL;
+ pMediaItem = (media_info_h) g_list_nth_data(pList, i);
+ if (pMediaItem) {
+ media_info_destroy(pMediaItem);
+ pMediaItem = NULL;
+ }
+ }
+
+ g_list_free(pList);
+ pList = NULL;
+
+ return TRUE;
+}
+
+bool vp_media_contents_get_next_file_path(const char *szMediaURL,
+ char **szNextURL, bool bLoop,
+ GList *pList)
+{
+ if (!szMediaURL) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ media_info_h pFirstMediaItem = NULL;
+ bool bCheck = FALSE;
+
+ nCount = g_list_length(pList);
+ for (i = 0; i < nCount; i++) {
+ media_info_h pMediaItem = NULL;
+ pMediaItem = (media_info_h) g_list_nth_data(pList, i);
+ if (pMediaItem == NULL) {
+ continue;
+ }
+
+ if (pFirstMediaItem == NULL) {
+ pFirstMediaItem = pMediaItem;
+ }
+
+ char *szPath = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_get_file_path(pMediaItem, &szPath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning("media_info_get_file_path is fail : 0x%x",
+ nRet);
+ continue;
+ }
+
+ if (szPath) {
+
+ if (bCheck) {
+ VP_STRDUP(*szNextURL, szPath);
+ VP_FREE(szPath);
+ return TRUE;
+ }
+
+ if (!strcmp(szMediaURL, szPath)) {
+ bCheck = TRUE;
+ }
+
+ VP_FREE(szPath);
+ }
+ }
+
+ if (bLoop) {
+ if (pFirstMediaItem) {
+ char *szPath = NULL;
+ media_info_get_file_path(pFirstMediaItem, &szPath);
+ if (szPath) {
+ VP_STRDUP(*szNextURL, szPath);
+ VP_FREE(szPath);
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_media_contents_get_prev_file_path(const char *szMediaURL,
+ char **szPrevURL, bool bLoop,
+ GList *pList)
+{
+ if (!szMediaURL) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ media_info_h pLastMediaItem = NULL;
+ bool bCheck = FALSE;
+
+ nCount = g_list_length(pList);
+ for (i = nCount - 1; i >= 0; i--) {
+ VideoLogWarning("-- %d --", i);
+ media_info_h pMediaItem = NULL;
+ pMediaItem = (media_info_h) g_list_nth_data(pList, i);
+ if (pMediaItem == NULL) {
+ continue;
+ }
+
+ if (pLastMediaItem == NULL) {
+ pLastMediaItem = pMediaItem;
+ }
+
+ char *szPath = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_get_file_path(pMediaItem, &szPath);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning("media_info_get_file_path is fail : 0x%x",
+ nRet);
+ continue;
+ }
+ if (szPath) {
+
+ if (bCheck) {
+ VP_STRDUP(*szPrevURL, szPath);
+ VP_FREE(szPath);
+ return TRUE;
+ }
+
+ if (!strcmp(szMediaURL, szPath)) {
+ bCheck = TRUE;
+ }
+
+ VP_FREE(szPath);
+ }
+ }
+
+ if (bLoop) {
+ if (pLastMediaItem) {
+ char *szPath = NULL;
+ media_info_get_file_path(pLastMediaItem, &szPath);
+ if (szPath) {
+ VP_STRDUP(*szPrevURL, szPath);
+ VP_FREE(szPath);
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+
+bool vp_media_contents_set_update_cb(MediaUpdateCb pFunc, void *pUserData)
+{
+ if (pFunc == NULL) {
+ return FALSE;
+ }
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ g_media_update_cb = pFunc;
+
+ nRet =
+ media_content_set_db_updated_cb((void *)
+ __vp_media_contents_db_update_cb,
+ pUserData);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning("media_content_set_db_updated_cb is fail : 0x%x", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void vp_media_contents_unset_update_cb()
+{
+ g_media_update_cb = NULL;
+ if (media_content_unset_db_updated_cb() != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to media_content_unset_db_updated_cb.");
+ }
+}
+
+bool vp_media_contents_get_cloud_attribute(const char *szFilePath,
+ bool *bCloud)
+{
+
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+// media_content_storage_ex_e storage_type = MEDIA_CONTENT_STORAGE_INTERNAL_EX;
+// media_info_get_storage_type_ex(pMediaHandle, &storage_type);
+// if (storage_type == MEDIA_CONTENT_STORAGE_DROPBOX_EX) {
+// *bCloud = TRUE;
+// }
+// else
+// {
+// *bCloud = FALSE;
+// }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_set_location_tag(const char *szFilePath,
+ const char *pLocation)
+{
+ if (szFilePath == NULL || pLocation == NULL) {
+ VideoLogError("szFilePath or city is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_set_location_tag(pMediaHandle, pLocation);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_set_location_tag is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_update_to_db(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Failed to update media db!");
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_get_location_tag(const char *szFilePath,
+ char **szLocationTag)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ char *szLocation = NULL;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_dbmedia_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_location_tag(pMediaHandle, &szLocation);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_location_tag is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ VP_STRDUP(*szLocationTag, szLocation);
+ VP_FREE(szLocation);
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ VP_FREE(szLocation);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_set_weahter_tag(const char *szFilePath,
+ const char *pWeather)
+{
+ if (szFilePath == NULL || pWeather == NULL) {
+ VideoLogError("szFilePath or pWeather is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ //char *szWeather = NULL;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_set_weather(pMediaHandle, pWeather);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_set_weather is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_update_to_db(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Failed to update media db!");
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_get_weahter_tag(const char *szFilePath,
+ char **szWeatherTag)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ media_info_h pMediaHandle = NULL;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ char *szWeather = NULL;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_info_cb,
+ &pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pMediaHandle == NULL) {
+ VideoLogError("media info handle is NULL");
+ goto Exception;
+ }
+
+ nRet = media_info_get_weather(pMediaHandle, &szWeather);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_weather is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ VP_STRDUP(*szWeatherTag, szWeather);
+ VP_FREE(szWeather);
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = media_info_destroy(pMediaHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ return TRUE;
+
+Exception:
+
+ VP_FREE(szWeather);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ if (pMediaHandle) {
+ media_info_destroy(pMediaHandle);
+ pMediaHandle = NULL;
+ }
+ return FALSE;
+}
+
+bool vp_media_contents_subtitle_list_get(GList **pList)
+{
+ char *szCondition = NULL;
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ filter_h pFilterHandle = NULL;
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("pFilterHandle is NULL");
+ goto Exception;
+ }
+ // media_type 4 : other file
+ szCondition =
+ (char *)
+ g_strdup_printf
+ ("MEDIA_TYPE = 4 AND (MEDIA_DISPLAY_NAME like \"%%%s\" OR MEDIA_DISPLAY_NAME like \"%%%s\" OR MEDIA_DISPLAY_NAME like \"%%%s\")",
+ ".smi", ".sub", ".srt");
+ if (szCondition == NULL) {
+ VideoLogError("szCondition NULL");
+ goto Exception;
+ }
+
+ VideoSecureLogInfo("szCondition is szCondition: %s", szCondition);
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szCondition,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_filter_set_order(pFilterHandle, MEDIA_CONTENT_ORDER_ASC,
+ MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_order is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_subtitles_iter_cb,
+ pList);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet = media_filter_destroy(pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_destroy is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ VP_FREE(szCondition);
+
+ return TRUE;
+
+Exception:
+ VP_FREE(szCondition);
+
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ return FALSE;
+}
+
+/* callback functions */
+static bool __vp_media_contents_file_is_exist_cb(media_info_h
+ pMediaHandle,
+ void *pUserData)
+{
+ bool *bExist = (bool *) pUserData;
+
+ if (pMediaHandle != NULL) {
+ VideoLogInfo("pMeidaHandle is %p", pMediaHandle);
+ *bExist = TRUE;
+ } else {
+ VideoLogError("pMeidaHandle is NULL");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_media_contents_file_is_exist(const char *szFilePath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ vp_media_contents_connect();
+
+ bool bExist = FALSE;
+ filter_h pFilterHandle = NULL;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+
+ char szTmpStr[4096] = { 0, };
+ snprintf(szTmpStr, 4096,
+ "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) AND MEDIA_PATH = \"%s\"",
+ szFilePath);
+
+ nRet = media_filter_create(&pFilterHandle);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_create is fail : 0x%x", nRet);
+ goto End;
+ }
+
+ if (pFilterHandle == NULL) {
+ VideoLogError("Filter handle is NULL");
+ goto End;
+ }
+
+ nRet =
+ media_filter_set_condition(pFilterHandle, szTmpStr,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_filter_set_condition is fail : 0x%x", nRet);
+ goto End;
+ }
+
+ nRet =
+ media_info_foreach_media_from_db(pFilterHandle,
+ __vp_media_contents_file_is_exist_cb,
+ &bExist);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_foreach_media_from_db is fail : 0x%x", nRet);
+ goto End;
+ }
+
+End:
+ if (pFilterHandle) {
+ media_filter_destroy(pFilterHandle);
+ pFilterHandle = NULL;
+ }
+
+ return bExist;
+}
+
+bool vp_media_contents_del_video(const char *szFilePath)
+{
+
+ if (!szFilePath) {
+ VideoLogError("szFilePath is NULL.");
+ return FALSE;
+ }
+
+ vp_file_unlink(szFilePath);
+
+ char *szVideoId = NULL;
+ vp_media_contents_get_video_id(szFilePath, &szVideoId);
+
+ if (!szVideoId) {
+ VideoLogError("szVideoId is NULL.");
+ return FALSE;
+ }
+
+ media_info_delete_from_db(szVideoId);
+ VideoSecureLogInfo("szFilePath:=%s,%s", szVideoId, szFilePath);
+ VP_FREE(szVideoId);
+
+ return TRUE;
+}
diff --git a/playview/src/core/vp-media-key.c b/playview/src/core/vp-media-key.c
new file mode 100644
index 0000000..e8f1996
--- /dev/null
+++ b/playview/src/core/vp-media-key.c
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <media_key.h>
+#include <Ecore_X.h>
+#include <efl_extension.h>
+
+#include "vp-play-macro-define.h"
+#include "vp-media-key.h"
+#include "vp-play-log.h"
+
+
+typedef struct _MediaKey {
+ Evas_Object *pWin;
+
+ void *pUserData;
+ MediaKeyEventCbFunc pEventCb;
+
+} MediaKey;
+
+static void _vp_media_key_destroy_handle(MediaKey *pMediaKey);
+
+
+/* callback functions */
+static void __vp_media_key_event_cb(media_key_e nKey,
+ media_key_event_e nEvent,
+ void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("User data is NULL.");
+ return;
+ }
+
+ bool bReleased = false;
+ if (nEvent == MEDIA_KEY_STATUS_RELEASED) {
+ bReleased = true;
+ }
+
+ if (nEvent == MEDIA_KEY_STATUS_UNKNOWN) {
+ VideoLogWarning("unknown key status");
+ return;
+ }
+
+ MediaKey *pMediaKey = (MediaKey *) pUserData;
+
+ if (pMediaKey->pEventCb == NULL) {
+ VideoLogWarning("pMediaKey->pEventCb is NULL");
+ return;
+ }
+
+ switch (nKey) {
+ case MEDIA_KEY_PLAY:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_PLAY, bReleased,
+ pMediaKey->pUserData);
+ break;
+ case MEDIA_KEY_PAUSE:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_PAUSE, bReleased,
+ pMediaKey->pUserData);
+ break;
+
+ case MEDIA_KEY_PLAYPAUSE:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_PLAYPAUSE, bReleased,
+ pMediaKey->pUserData);
+ break;
+ case MEDIA_KEY_PREVIOUS:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_PREVIOUS, bReleased,
+ pMediaKey->pUserData);
+ break;
+ case MEDIA_KEY_REWIND:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_REWIND, bReleased,
+ pMediaKey->pUserData);
+ break;
+ case MEDIA_KEY_NEXT:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_NEXT, bReleased,
+ pMediaKey->pUserData);
+ break;
+ case MEDIA_KEY_FASTFORWARD:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_FASTFORWARD, bReleased,
+ pMediaKey->pUserData);
+ break;
+ case MEDIA_KEY_STOP:
+ pMediaKey->pEventCb(VP_MEDIA_KEY_STOP, bReleased,
+ pMediaKey->pUserData);
+ break;
+ default:
+ VideoLogWarning("Undefined key : %d", nKey);
+ break;
+ }
+
+}
+
+/* internal functions */
+static void _vp_media_key_destroy_handle(MediaKey *pMediaKey)
+{
+ if (pMediaKey == NULL) {
+ VideoLogError("pMediaKey is NULL");
+ return;
+ }
+
+ VP_FREE(pMediaKey);
+}
+
+
+
+/* external functions */
+media_key_handle vp_media_key_create(Evas_Object *pWin,
+ MediaKeyEventCbFunc pEventCb)
+{
+ if (pWin == NULL) {
+ VideoLogError("pWin is NULL");
+ return NULL;
+ }
+
+ MediaKey *pMediaKey = NULL;
+
+ pMediaKey = calloc(1, sizeof(MediaKey));
+
+ if (pMediaKey == NULL) {
+ VideoLogError("pMediaKey alloc fail");
+ return NULL;
+ }
+
+ pMediaKey->pEventCb = pEventCb;
+
+ return (media_key_handle) pMediaKey;
+}
+
+
+void vp_media_key_destroy(media_key_handle pMediaKeyHandle)
+{
+ if (pMediaKeyHandle == NULL) {
+ VideoLogError("pMediaKeyHandle is NULL");
+ return;
+ }
+
+ MediaKey *pMediaKey = (MediaKey *) pMediaKeyHandle;
+
+ vp_media_key_unrealize(pMediaKeyHandle);
+
+ _vp_media_key_destroy_handle(pMediaKey);
+}
+
+bool vp_media_key_realize(media_key_handle pMediaKeyHandle)
+{
+ if (pMediaKeyHandle == NULL) {
+ VideoLogError("pMediaKeyHandle is NULL");
+ return FALSE;
+ }
+
+ MediaKey *pMediaKey = (MediaKey *)pMediaKeyHandle;
+ //Eina_Bool nret = eext_win_keygrab_set(pMediaKey->pWin, "XF86AudioMedia");
+ //VideoLogError("XF86AudioMedia key returns value: %d", nret);
+ int nErr = MEDIA_KEY_ERROR_NONE;
+ nErr = media_key_reserve(__vp_media_key_event_cb, (void *)pMediaKey);
+ if (nErr != MEDIA_KEY_ERROR_NONE) {
+ VideoLogError("media_key_reserve().. %d", nErr);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool vp_media_key_unrealize(media_key_handle pMediaKeyHandle)
+{
+ if (pMediaKeyHandle == NULL) {
+ VideoLogError("pMediaKeyHandle is NULL");
+ return FALSE;
+ }
+
+ media_key_release();
+ //MediaKey *pMediaKey = (MediaKey *) pMediaKeyHandle;
+
+ //Eina_Bool nret = eext_win_keygrab_unset(pMediaKey->pWin, "XF86AudioMedia");
+ //VideoLogError("XF86AudioMedia key returns value: %d", nret);
+
+ return TRUE;
+}
+
+bool vp_media_key_set_user_data(media_key_handle pMediaKeyHandle,
+ void *pUserData)
+{
+ if (pMediaKeyHandle == NULL) {
+ VideoLogError("pMediaKeyHandle is NULL");
+ return FALSE;
+ }
+
+ MediaKey *pMediaKey = (MediaKey *) pMediaKeyHandle;
+
+ pMediaKey->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/core/vp-mm-player.c b/playview/src/core/vp-mm-player.c
new file mode 100644
index 0000000..b70af94
--- /dev/null
+++ b/playview/src/core/vp-mm-player.c
@@ -0,0 +1,3102 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+#include <Ecore.h>
+#include <player.h>
+#include "vp-mm-player.h"
+#include "vp-play-macro-define.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+static void _vp_mm_player_print_err(int nErr)
+{
+ switch (nErr) {
+ case PLAYER_ERROR_NONE:
+ VideoLogError("PLAYER_ERROR_NONE");
+ break;
+ case PLAYER_ERROR_OUT_OF_MEMORY:
+ VideoLogError("PLAYER_ERROR_OUT_OF_MEMORY");
+ break;
+ case PLAYER_ERROR_INVALID_PARAMETER:
+ VideoLogError("PLAYER_ERROR_INVALID_PARAMETER");
+ break;
+ case PLAYER_ERROR_NO_SUCH_FILE:
+ VideoLogError("PLAYER_ERROR_NO_SUCH_FILE");
+ break;
+ case PLAYER_ERROR_INVALID_OPERATION:
+ VideoLogError("PLAYER_ERROR_INVALID_OPERATION");
+ break;
+ case PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE:
+ VideoLogError("PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE");
+ break;
+ case PLAYER_ERROR_SEEK_FAILED:
+ VideoLogError("PLAYER_ERROR_SEEK_FAILED");
+ break;
+ case PLAYER_ERROR_INVALID_STATE:
+ VideoLogError("PLAYER_ERROR_INVALID_STATE");
+ break;
+ case PLAYER_ERROR_NOT_SUPPORTED_FILE:
+ VideoLogError("PLAYER_ERROR_NOT_SUPPORTED_FILE");
+ break;
+ case PLAYER_ERROR_INVALID_URI:
+ VideoLogError("PLAYER_ERROR_INVALID_URI");
+ break;
+ case PLAYER_ERROR_SOUND_POLICY:
+ VideoLogError("PLAYER_ERROR_SOUND_POLICY");
+ break;
+ case PLAYER_ERROR_CONNECTION_FAILED:
+ VideoLogError("PLAYER_ERROR_CONNECTION_FAILED");
+ break;
+ case PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
+ VideoLogError("PLAYER_ERROR_VIDEO_CAPTURE_FAILED");
+ break;
+ case PLAYER_ERROR_DRM_EXPIRED:
+ VideoLogError("PLAYER_ERROR_DRM_EXPIRED");
+ break;
+ case PLAYER_ERROR_DRM_NO_LICENSE:
+ VideoLogError("PLAYER_ERROR_DRM_NO_LICENSE");
+ break;
+ case PLAYER_ERROR_DRM_FUTURE_USE:
+ VideoLogError("PLAYER_ERROR_DRM_FUTURE_USE");
+ break;
+ }
+}
+
+//static int _vp_mm_player_priv_convert_suond_filter(int nCode, bool bAppToFW)
+//{
+//
+///* if (bAppToFW) {
+// switch (nCode)
+// {
+// // case AUDIO_EFFECT_PRESET_NONE: return VP_MM_PLAYER_FILTER_NONE;
+//// case AUDIO_EFFECT_PRESET_VOICE: return VP_MM_PLAYER_FILTER_VOICE;
+// // case AUDIO_EFFECT_PRESET_MOVIE: return VP_MM_PLAYER_FILTER_MOVIE;
+// //case AUDIO_EFFECT_PRESET_VIRTUAL_5_1: return VP_MM_PLAYER_FILTER_VITUAL_71;
+// }
+// }
+// else {
+// switch (nCode)
+// {
+// // case VP_MM_PLAYER_FILTER_NONE: return AUDIO_EFFECT_PRESET_NONE;
+// // case VP_MM_PLAYER_FILTER_VOICE: return AUDIO_EFFECT_PRESET_VOICE;
+//// case VP_MM_PLAYER_FILTER_MOVIE: return AUDIO_EFFECT_PRESET_MOVIE;
+// // case VP_MM_PLAYER_FILTER_VITUAL_71: return AUDIO_EFFECT_PRESET_VIRTUAL_5_1;
+// }
+// }*/
+// return 0;
+//}
+
+
+static int _vp_mm_player_priv_convert_video_sink(int nCode, bool bAppToFW)
+{
+
+ if (bAppToFW) {
+ switch (nCode) {
+ case PLAYER_DISPLAY_TYPE_OVERLAY:
+ return VP_MM_PLAYER_VIDEO_TYPE_X11;
+ case PLAYER_DISPLAY_TYPE_EVAS:
+ return VP_MM_PLAYER_VIDEO_TYPE_EVAS;
+ }
+ } else {
+ switch (nCode) {
+ case VP_MM_PLAYER_VIDEO_TYPE_X11:
+ return PLAYER_DISPLAY_TYPE_OVERLAY;
+ case VP_MM_PLAYER_VIDEO_TYPE_EVAS:
+ return PLAYER_DISPLAY_TYPE_EVAS;
+ }
+ }
+ return 0;
+}
+
+#ifdef _NATIVE_BUFFER_SYNC
+#else
+static int _vp_mm_player_priv_convert_rotate(int nCode, bool bAppToFW)
+{
+
+ if (bAppToFW) {
+ switch (nCode) {
+ case PLAYER_DISPLAY_ROTATION_NONE:
+ return VP_MM_PLAYER_ROTATE_0;
+ case PLAYER_DISPLAY_ROTATION_90:
+ return VP_MM_PLAYER_ROTATE_90;
+ case PLAYER_DISPLAY_ROTATION_180:
+ return VP_MM_PLAYER_ROTATE_180;
+ case PLAYER_DISPLAY_ROTATION_270:
+ return VP_MM_PLAYER_ROTATE_270;
+ }
+ } else {
+ switch (nCode) {
+ case VP_MM_PLAYER_ROTATE_0:
+ return PLAYER_DISPLAY_ROTATION_NONE;
+ case VP_MM_PLAYER_ROTATE_90:
+ return PLAYER_DISPLAY_ROTATION_90;
+ case VP_MM_PLAYER_ROTATE_180:
+ return PLAYER_DISPLAY_ROTATION_180;
+ case VP_MM_PLAYER_ROTATE_270:
+ return PLAYER_DISPLAY_ROTATION_270;
+ }
+ }
+ return 0;
+}
+#endif
+
+static int _vp_mm_player_priv_convert_error(int nCode, bool bAppToFW)
+{
+
+ if (bAppToFW) {
+ switch (nCode) {
+ case PLAYER_ERROR_NONE:
+ return VP_MM_PLYAER_ERR_NONE;
+ case PLAYER_ERROR_OUT_OF_MEMORY:
+ return VP_MM_PLAYER_ERR_OUT_OF_MEMORY;
+ case PLAYER_ERROR_INVALID_PARAMETER:
+ return VP_MM_PLAYER_ERR_INVALID_PARAMETER;
+ case PLAYER_ERROR_NO_SUCH_FILE:
+ return VP_MM_PLAYER_ERR_NO_SUCH_FILE;
+ case PLAYER_ERROR_INVALID_OPERATION:
+ return VP_MM_PLAYER_ERR_INVALID_OPERATION;
+ case PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE:
+ return VP_MM_PLAYER_ERR_FILE_NO_SPACE_ON_DEVICE;
+ case PLAYER_ERROR_SEEK_FAILED:
+ return VP_MM_PLAYER_ERR_SEEK_FAILED;
+ case PLAYER_ERROR_INVALID_STATE:
+ return VP_MM_PLAYER_ERR_INVALID_STATE;
+ case PLAYER_ERROR_NOT_SUPPORTED_FILE:
+ return VP_MM_PLAYER_ERR_NOT_SUPPORTED_FILE;
+ case PLAYER_ERROR_INVALID_URI:
+ return VP_MM_PLAYER_ERR_INVALID_URI;
+ case PLAYER_ERROR_SOUND_POLICY:
+ return VP_MM_PLAYER_ERR_SOUND_POLICY;
+ case PLAYER_ERROR_CONNECTION_FAILED:
+ return VP_MM_PLAYER_ERR_CONNECTION_FAILED;
+ case PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
+ return VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED;
+ case PLAYER_ERROR_DRM_EXPIRED:
+ return VP_MM_PLAYER_ERR_DRM_EXPIRED;
+ case PLAYER_ERROR_DRM_NO_LICENSE:
+ return VP_MM_PLAYER_ERR_DRM_NO_LICENSE;
+ case PLAYER_ERROR_DRM_FUTURE_USE:
+ return VP_MM_PLAYER_ERR_DRM_FUTURE_USE;
+ }
+ } else {
+ switch (nCode) {
+ case VP_MM_PLYAER_ERR_NONE:
+ return PLAYER_ERROR_NONE;
+ case VP_MM_PLAYER_ERR_OUT_OF_MEMORY:
+ return PLAYER_ERROR_OUT_OF_MEMORY;
+ case VP_MM_PLAYER_ERR_INVALID_PARAMETER:
+ return PLAYER_ERROR_INVALID_PARAMETER;
+ case VP_MM_PLAYER_ERR_NO_SUCH_FILE:
+ return PLAYER_ERROR_NO_SUCH_FILE;
+ case VP_MM_PLAYER_ERR_INVALID_OPERATION:
+ return PLAYER_ERROR_INVALID_OPERATION;
+ case VP_MM_PLAYER_ERR_FILE_NO_SPACE_ON_DEVICE:
+ return PLAYER_ERROR_FILE_NO_SPACE_ON_DEVICE;
+ case VP_MM_PLAYER_ERR_SEEK_FAILED:
+ return PLAYER_ERROR_SEEK_FAILED;
+ case VP_MM_PLAYER_ERR_INVALID_STATE:
+ return PLAYER_ERROR_INVALID_STATE;
+ case VP_MM_PLAYER_ERR_NOT_SUPPORTED_FILE:
+ return PLAYER_ERROR_NOT_SUPPORTED_FILE;
+ case VP_MM_PLAYER_ERR_INVALID_URI:
+ return PLAYER_ERROR_INVALID_URI;
+ case VP_MM_PLAYER_ERR_SOUND_POLICY:
+ return PLAYER_ERROR_SOUND_POLICY;
+ case VP_MM_PLAYER_ERR_CONNECTION_FAILED:
+ return PLAYER_ERROR_CONNECTION_FAILED;
+ case VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED:
+ return PLAYER_ERROR_VIDEO_CAPTURE_FAILED;
+ case VP_MM_PLAYER_ERR_DRM_EXPIRED:
+ return PLAYER_ERROR_DRM_EXPIRED;
+ case VP_MM_PLAYER_ERR_DRM_NO_LICENSE:
+ return PLAYER_ERROR_DRM_NO_LICENSE;
+ case VP_MM_PLAYER_ERR_DRM_FUTURE_USE:
+ return PLAYER_ERROR_DRM_FUTURE_USE;
+ }
+ }
+ return 0;
+}
+
+static int _vp_mm_player_priv_convert_interrupt(int nCode, bool bAppToFW)
+{
+
+ if (bAppToFW) {
+ switch (nCode) {
+ case PLAYER_INTERRUPTED_COMPLETED:
+ return VP_MM_PLAYER_INTERRUPTED_COMPLETED;
+ case PLAYER_INTERRUPTED_BY_MEDIA:
+ return VP_MM_PLAYER_INTERRUPTED_BY_MEDIA;
+ case PLAYER_INTERRUPTED_BY_CALL:
+ return VP_MM_PLAYER_INTERRUPTED_BY_CALL;
+ case PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
+ return VP_MM_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG;
+ case PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
+ return VP_MM_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT;
+ case PLAYER_INTERRUPTED_BY_ALARM:
+ return VP_MM_PLAYER_INTERRUPTED_BY_ALARM;
+ case PLAYER_INTERRUPTED_BY_EMERGENCY:
+ return VP_MM_PLAYER_INTERRUPTED_BY_EMERGENCY;
+ //case PLAYER_INTERRUPTED_BY_RESUMABLE_MEDIA: return VP_MM_PLAYER_INTERRUPTED_RESUMABLE_MEDIA;
+ case PLAYER_INTERRUPTED_BY_NOTIFICATION:
+ return VP_MM_PLAYER_INTERRUPTED_NOTIFICATION;
+ }
+ } else {
+ switch (nCode) {
+ case VP_MM_PLAYER_INTERRUPTED_COMPLETED:
+ return PLAYER_INTERRUPTED_COMPLETED;
+ case VP_MM_PLAYER_INTERRUPTED_BY_MEDIA:
+ return PLAYER_INTERRUPTED_BY_MEDIA;
+ case VP_MM_PLAYER_INTERRUPTED_BY_CALL:
+ return PLAYER_INTERRUPTED_BY_CALL;
+ case VP_MM_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
+ return PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG;
+ case VP_MM_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
+ return PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT;
+ case VP_MM_PLAYER_INTERRUPTED_BY_ALARM:
+ return PLAYER_INTERRUPTED_BY_ALARM;
+ case VP_MM_PLAYER_INTERRUPTED_BY_EMERGENCY:
+ return PLAYER_INTERRUPTED_BY_EMERGENCY;
+ //case VP_MM_PLAYER_INTERRUPTED_RESUMABLE_MEDIA: return PLAYER_INTERRUPTED_BY_RESUMABLE_MEDIA;
+ case VP_MM_PLAYER_INTERRUPTED_NOTIFICATION:
+ return PLAYER_INTERRUPTED_BY_NOTIFICATION;
+ }
+ }
+ return 0;
+}
+
+static int _vp_mm_player_priv_convert_player_state(int nCode,
+ bool bAppToFW)
+{
+
+ if (bAppToFW) {
+ switch (nCode) {
+ case PLAYER_STATE_NONE:
+ return VP_MM_PLAYER_STATE_NONE;
+ case PLAYER_STATE_IDLE:
+ return VP_MM_PLAYER_STATE_IDLE;
+ case PLAYER_STATE_READY:
+ return VP_MM_PLAYER_STATE_READY;
+ case PLAYER_STATE_PLAYING:
+ return VP_MM_PLAYER_STATE_PLAYING;
+ case PLAYER_STATE_PAUSED:
+ return VP_MM_PLAYER_STATE_PAUSED;
+ }
+ } else {
+ switch (nCode) {
+ case VP_MM_PLAYER_STATE_NONE:
+ return PLAYER_STATE_NONE;
+ case VP_MM_PLAYER_STATE_IDLE:
+ return PLAYER_STATE_IDLE;
+ case VP_MM_PLAYER_STATE_READY:
+ return PLAYER_STATE_READY;
+ case VP_MM_PLAYER_STATE_PLAYING:
+ return PLAYER_STATE_PLAYING;
+ case VP_MM_PLAYER_STATE_PAUSED:
+ return PLAYER_STATE_PAUSED;
+ }
+ }
+ return 0;
+}
+
+
+static int _vp_mm_player_priv_convert_display_mode(int nCode,
+ bool bAppToFW)
+{
+ if (bAppToFW) {
+ switch (nCode) {
+ case PLAYER_DISPLAY_MODE_LETTER_BOX:
+ return VP_MM_PLAYER_DISPLAY_LETTER_BOX;
+ case PLAYER_DISPLAY_MODE_ORIGIN_SIZE:
+ return VP_MM_PLAYER_DISPLAY_ORIGIN_SIZE;
+ case PLAYER_DISPLAY_MODE_FULL_SCREEN:
+ return VP_MM_PLAYER_DISPLAY_FULL_SCREEN;
+ case PLAYER_DISPLAY_MODE_CROPPED_FULL:
+ return VP_MM_PLAYER_DISPLAY_CROPPED_FULL;
+ case PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER:
+ return VP_MM_PLAYER_DISPLAY_ORIGIN_OR_LETTER;
+ }
+ } else {
+ switch (nCode) {
+ case VP_MM_PLAYER_DISPLAY_LETTER_BOX:
+ return PLAYER_DISPLAY_MODE_LETTER_BOX;
+ case VP_MM_PLAYER_DISPLAY_ORIGIN_SIZE:
+ return PLAYER_DISPLAY_MODE_ORIGIN_SIZE;
+ case VP_MM_PLAYER_DISPLAY_FULL_SCREEN:
+ return PLAYER_DISPLAY_MODE_FULL_SCREEN;
+ case VP_MM_PLAYER_DISPLAY_CROPPED_FULL:
+ return PLAYER_DISPLAY_MODE_CROPPED_FULL;
+ case VP_MM_PLAYER_DISPLAY_ORIGIN_OR_LETTER:
+ return PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER;
+ }
+ }
+ return 0;
+}
+
+
+//static int _vp_mm_player_priv_convert_missed_plugin_type(int nCode, bool bAppToFW)
+//{
+///* if (bAppToFW) {
+// switch (nCode)
+// {
+//// case PLAYER_MISSED_PLUGIN_UNKNOWN: return VP_MM_PLAYER_MISSED_PLUGIN_UNKNOWN;
+// // case PLAYER_MISSED_PLUGIN_VIDEO_DECODER: return VP_MM_PLAYER_MISSED_PLUGIN_VIDEO;
+// // case PLAYER_MISSED_PLUGIN_AUDIO_DECODER: return VP_MM_PLAYER_MISSED_PLUGIN_AUDIO;
+// }
+// }
+// else {
+// switch (nCode)
+// {
+// // case VP_MM_PLAYER_MISSED_PLUGIN_UNKNOWN: return PLAYER_MISSED_PLUGIN_UNKNOWN;
+// // case VP_MM_PLAYER_MISSED_PLUGIN_VIDEO: return PLAYER_MISSED_PLUGIN_VIDEO_DECODER;
+//// case VP_MM_PLAYER_MISSED_PLUGIN_AUDIO: return PLAYER_MISSED_PLUGIN_AUDIO_DECODER;
+// }
+// }*/
+// return 0;
+//}
+
+
+
+/* callback functions */
+static void __vp_mm_player_pipe_prepare_cb(void *pUserData, void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ pMMPlayer->bIsRealize = TRUE;
+
+ if (pMMPlayer->pCbFunc->pPrepareCb) {
+ pMMPlayer->pCbFunc->pPrepareCb(pMMPlayer->pParam);
+ }
+
+ return;
+}
+
+static void __vp_mm_player_pipe_end_of_stream_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pEndOfStreamCb) {
+ pMMPlayer->pCbFunc->pEndOfStreamCb(pMMPlayer->pParam);
+ }
+
+
+ return;
+}
+
+static void __vp_mm_player_pipe_seek_complete_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pSeekCompleteCb) {
+ pMMPlayer->pCbFunc->pSeekCompleteCb(pMMPlayer->pParam);
+ }
+
+ return;
+}
+
+static void __vp_mm_player_pipe_interrupted_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pInterruptedCb) {
+ int nInterruptCode = 0;
+ if (pMMPlayer->pInterruptParam) {
+ nInterruptCode =
+ _vp_mm_player_priv_convert_interrupt(pMMPlayer->
+ pInterruptParam->
+ nInterrupt, TRUE);
+ }
+
+ pMMPlayer->pCbFunc->pInterruptedCb(nInterruptCode,
+ pMMPlayer->pParam);
+ }
+
+ return;
+}
+
+static void __vp_mm_player_pipe_error_cb(void *pUserData, void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbFunc->pErrorCb) {
+ int nErr = 0;
+ if (pMMPlayer->pErrorParam) {
+ nErr =
+ _vp_mm_player_priv_convert_error(pMMPlayer->pErrorParam->
+ nError, TRUE);
+ }
+
+ pMMPlayer->pCbFunc->pErrorCb(nErr, pMMPlayer->pParam);
+ }
+ return;
+}
+
+static void __vp_mm_player_pipe_buffering_cb(void *pUserData, void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbFunc->pBufferingCb) {
+ int nPercent = 0;
+ if (pMMPlayer->pBufferingParam) {
+ nPercent = pMMPlayer->pBufferingParam->nPercent;
+ }
+
+ pMMPlayer->pCbFunc->pBufferingCb(nPercent, pMMPlayer->pParam);
+ }
+ return;
+}
+
+static void __vp_mm_player_pipe_subtitle_update_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pSubtitleUpdateCb) {
+ char *szSubtitleText = NULL;
+ unsigned long nDuration = 0;
+ if (pMMPlayer->pSubtitleParam) {
+ if (pMMPlayer->pSubtitleParam->txt) {
+ szSubtitleText = strdup(pMMPlayer->pSubtitleParam->txt);
+ free(pMMPlayer->pSubtitleParam->txt);
+ pMMPlayer->pSubtitleParam->txt = NULL;
+ }
+ nDuration = pMMPlayer->pSubtitleParam->nDuration;
+ }
+
+ if (szSubtitleText && strlen(szSubtitleText) > 0)
+ pMMPlayer->pCbFunc->pSubtitleUpdateCb(nDuration,
+ szSubtitleText,
+ pMMPlayer->pParam);
+ VP_FREE(szSubtitleText);
+ }
+
+ return;
+
+}
+
+static void __vp_mm_player_pipe_pd_message_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pPDMessageCb) {
+ int nMsg = 0;
+ if (pMMPlayer->pPDParam) {
+ nMsg = pMMPlayer->pPDParam->nMessage;
+ }
+
+ pMMPlayer->pCbFunc->pPDMessageCb(nMsg, pMMPlayer->pParam);
+ }
+ return;
+
+}
+
+static void __vp_mm_player_pipe_captured_cb(void *pUserData, void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pCapturedCb) {
+ unsigned char *pFrame = NULL;
+ int nWidth = 0;
+ int nHeight = 0;
+ unsigned int nSize = 0;
+
+ if (pMMPlayer->pCaptureParam) {
+ pFrame = pMMPlayer->pCaptureParam->pFrame;
+ nWidth = pMMPlayer->pCaptureParam->nWidth;
+ nHeight = pMMPlayer->pCaptureParam->nHeight;
+ nSize = pMMPlayer->pCaptureParam->nSize;
+ }
+
+ pMMPlayer->pCbFunc->pCapturedCb(pFrame, nWidth, nHeight, nSize,
+ pMMPlayer->pParam);
+ }
+
+ return;
+}
+
+static void __vp_mm_player_pipe_missed_plugin_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pMissedPluginCb) {
+
+ vp_mm_player_missed_plugin_t nMissedType =
+ VP_MM_PLAYER_MISSED_PLUGIN_UNKNOWN;
+
+ if (pMMPlayer->pMissedParam) {
+ nMissedType = pMMPlayer->pMissedParam->nMissedType;
+ }
+
+ pMMPlayer->pCbFunc->pMissedPluginCb(nMissedType,
+ pMMPlayer->pParam);
+ }
+
+ return;
+}
+
+
+
+static void __vp_mm_player_pipe_image_buffer_cb(void *pUserData,
+ void *pBuff,
+ unsigned int nByte)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbFunc->pImageBufferCb) {
+ char *pBuffer = NULL;
+ int nSize = 0;
+
+ if (pMMPlayer->pImageBufferParam) {
+ pBuffer = pMMPlayer->pImageBufferParam->pBuffer;
+ nSize = pMMPlayer->pImageBufferParam->nSize;
+ }
+
+ pMMPlayer->pCbFunc->pImageBufferCb(pBuffer, nSize,
+ pMMPlayer->pParam);
+ }
+
+ return;
+}
+
+
+
+/* player api local cb functions */
+static void __vp_mm_player_prepare_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbPipe->pPreparePipe) {
+ Eina_Bool bRet = EINA_FALSE;
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pPreparePipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+}
+
+static void __vp_mm_player_completed_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->pCbPipe->pEndOfStreamPipe) {
+ Eina_Bool bRet = EINA_FALSE;
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pEndOfStreamPipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+
+}
+
+static void __vp_mm_player_seek_completed_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbPipe->pSeekCompletePipe) {
+ Eina_Bool bRet = EINA_FALSE;
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pSeekCompletePipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+
+}
+
+static void __vp_mm_player_interrupted_cb(player_interrupted_code_e nCode,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbPipe->pInterruptedPipe) {
+ Eina_Bool bRet = EINA_FALSE;
+
+ if (pMMPlayer->pInterruptParam) {
+ pMMPlayer->pInterruptParam->nInterrupt = nCode;
+ pMMPlayer->pInterruptParam->pParam = pMMPlayer->pParam;
+ }
+
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pInterruptedPipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+
+}
+
+static void __vp_mm_player_error_cb(int nError, void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbPipe->pErrorPipe) {
+ Eina_Bool bRet = EINA_FALSE;
+
+ if (pMMPlayer->pErrorParam) {
+ pMMPlayer->pErrorParam->nError = nError;
+ pMMPlayer->pErrorParam->pParam = pMMPlayer->pParam;
+ }
+
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pErrorPipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+
+}
+
+static void __vp_mm_player_buffering_cb(int nPercent, void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbPipe->pBufferingPipe) {
+ Eina_Bool bRet = EINA_FALSE;
+
+ if (pMMPlayer->pBufferingParam) {
+ pMMPlayer->pBufferingParam->nPercent = nPercent;
+ pMMPlayer->pBufferingParam->pParam = pMMPlayer->pParam;
+ }
+
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pBufferingPipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+
+}
+
+static void __vp_mm_player_subtitle_updated_cb(unsigned long nDuration,
+ char *text,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+
+ if (pMMPlayer->bDeactivateSubtitle)
+ return;
+
+ if (pMMPlayer->pCbPipe->pSubtitleUpdatePipe) {
+ if (pMMPlayer->pSubtitleParam) {
+ pMMPlayer->pSubtitleParam->nDuration = nDuration;
+
+ if (text) {
+ if (pMMPlayer->pSubtitleParam->txt) {
+ free(pMMPlayer->pSubtitleParam->txt);
+ pMMPlayer->pSubtitleParam->txt = NULL;
+ }
+ pMMPlayer->pSubtitleParam->txt = strdup(text);
+ }
+
+ pMMPlayer->pSubtitleParam->pParam = pMMPlayer->pParam;
+ }
+
+ if (pMMPlayer->pSubtitleParam && pMMPlayer->pSubtitleParam->txt
+ && strlen(pMMPlayer->pSubtitleParam->txt) > 0) {
+ Eina_Bool bRet = EINA_FALSE;
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pSubtitleUpdatePipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+ }
+ return;
+
+}
+
+static void __vp_mm_player_video_captured_cb(unsigned char *pFrame,
+ int nWidth, int nHeight,
+ unsigned int nSize,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pUserData;
+ if (pMMPlayer->pCbPipe->pCapturedPipe) {
+ Eina_Bool bRet = EINA_FALSE;
+
+ if (pMMPlayer->pCaptureParam) {
+
+ if (pMMPlayer->pCaptureParam->pFrame) {
+ free(pMMPlayer->pCaptureParam->pFrame);
+ pMMPlayer->pCaptureParam->pFrame = NULL;
+ }
+
+ pMMPlayer->pCaptureParam->pFrame = calloc(1, nSize);
+ if (pMMPlayer->pCaptureParam->pFrame == NULL) {
+ return;
+ }
+
+ memcpy(pMMPlayer->pCaptureParam->pFrame, pFrame, nSize);
+
+ pMMPlayer->pCaptureParam->nWidth = nWidth;
+ pMMPlayer->pCaptureParam->nHeight = nHeight;
+ pMMPlayer->pCaptureParam->nSize = nSize;
+ pMMPlayer->pCaptureParam->pParam = pMMPlayer->pParam;
+ }
+ bRet =
+ ecore_pipe_write(pMMPlayer->pCbPipe->pCapturedPipe,
+ (void *) pMMPlayer, sizeof(MMPlayer));
+ if (bRet != EINA_TRUE) {
+ VideoLogError(" : ecore pipe write fail");
+ }
+ }
+
+ return;
+}
+
+
+//static void __vp_mm_player_missed_plugin_cb(player_missed_plugin_type_e type, char *message, void *pUserData)
+//{
+// if (pUserData == NULL) {
+// VideoLogError("pUserData is NULL");
+// return;
+// }
+//
+// MMPlayer *pMMPlayer = (MMPlayer *)pUserData;
+// if (pMMPlayer->pCbPipe->pMissedPluginPipe) {
+//
+// if (pMMPlayer->pMissedParam) {
+//
+// pMMPlayer->pMissedParam->nMissedType = 0;//_vp_mm_player_priv_convert_missed_plugin_type(type, TRUE);
+// pMMPlayer->pMissedParam->pParam = pMMPlayer->pParam;
+// }
+//
+// Eina_Bool bRet = EINA_FALSE;
+// bRet = ecore_pipe_write(pMMPlayer->pCbPipe->pMissedPluginPipe, (void *)pMMPlayer, sizeof(MMPlayer));
+// if (bRet != EINA_TRUE) {
+// VideoLogError(" : ecore pipe write fail");
+// }
+// }
+//
+// return;
+//
+//}
+
+//static void __vp_mm_player_image_buffer_cb(char *pBuffer, int nSize, void *pUserData)
+//{
+// if (pUserData == NULL) {
+// VideoLogError("pUserData is NULL");
+// return;
+// }
+//
+// if (pBuffer == NULL) {
+// VideoLogError("pBuffer is NULL");
+// return;
+// }
+// MMPlayer *pMMPlayer = (MMPlayer *)pUserData;
+// if (pMMPlayer->pCbPipe->pImageBufferPipe) {
+// if (pMMPlayer->pImageBufferParam) {
+// if (pMMPlayer->pImageBufferParam->pBuffer) {
+// free(pMMPlayer->pImageBufferParam->pBuffer);
+// pMMPlayer->pImageBufferParam->pBuffer = NULL;
+// }
+//
+// pMMPlayer->pImageBufferParam->pBuffer = calloc(1, nSize);
+// if (pMMPlayer->pImageBufferParam->pBuffer == NULL) {
+// VideoLogError("Alloc Fail");
+// return;
+// }
+//
+// memcpy(pMMPlayer->pImageBufferParam->pBuffer, pBuffer, nSize);
+//
+// pMMPlayer->pImageBufferParam->nSize = nSize;
+// pMMPlayer->pImageBufferParam->pParam = pMMPlayer->pParam;
+// }
+//
+// Eina_Bool bRet = EINA_FALSE;
+// bRet = ecore_pipe_write(pMMPlayer->pCbPipe->pImageBufferPipe, (void *)pMMPlayer, sizeof(MMPlayer));
+// if (bRet != EINA_TRUE) {
+// VideoLogError(" : ecore pipe write fail");
+// }
+//
+// }
+//
+// return;
+//
+//}
+
+
+/* internal functions */
+
+
+
+static void _vp_mm_callback_param_free(vp_mm_player_callback_t nType,
+ void *pParam)
+{
+ if (pParam == NULL) {
+ VideoLogError("Param data is NULL");
+ return;
+ }
+
+ if (nType == VP_MM_PLAYER_CAPTURE_VIDEO_CB) {
+ MMPlayerCaptureParam *pCaptureParam =
+ (MMPlayerCaptureParam *) pParam;
+ if (pCaptureParam->pFrame) {
+ free(pCaptureParam->pFrame);
+ pCaptureParam->pFrame = NULL;
+ }
+
+ free(pCaptureParam);
+ pCaptureParam = NULL;
+ } else if (nType == VP_MM_PLAYER_SUBTITLE_UPDATE_CB) {
+ MMPlayerSubtitleParam *pSubtitleParam =
+ (MMPlayerSubtitleParam *) pParam;
+ if (pSubtitleParam->txt) {
+ free(pSubtitleParam->txt);
+ pSubtitleParam->txt = NULL;
+ }
+ free(pSubtitleParam);
+ pSubtitleParam = NULL;
+ } else if (nType == VP_MM_PLAYER_IMAGE_BUFFER_CB) {
+ MMPlayerImageBufferParam *pImageBufferParam =
+ (MMPlayerImageBufferParam *) pParam;
+ if (pImageBufferParam->pBuffer) {
+ free(pImageBufferParam->pBuffer);
+ pImageBufferParam->pBuffer = NULL;
+ }
+ free(pImageBufferParam);
+ pImageBufferParam = NULL;
+ }
+
+ return;
+}
+
+static void _vp_mm_ecore_pipe_create(MMPlayer *pMMPlayer)
+{
+ if (pMMPlayer == NULL) {
+ VideoLogError("pMMPlayer is NULL");
+ return;
+ }
+
+ MMPlayerCbPipe *pCbPipe = pMMPlayer->pCbPipe;
+ if (pCbPipe == NULL) {
+ VideoLogError("pCbPipe is NULL");
+ return;
+ }
+
+ pCbPipe->pPreparePipe =
+ ecore_pipe_add((Ecore_Pipe_Cb) __vp_mm_player_pipe_prepare_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pPreparePipe == NULL) {
+ VideoLogWarning("pPreparePipe create fail");
+ }
+
+ pCbPipe->pEndOfStreamPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb)
+ __vp_mm_player_pipe_end_of_stream_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pEndOfStreamPipe == NULL) {
+ VideoLogWarning("pEndOfStreamPipe create fail");
+ }
+
+ pCbPipe->pSeekCompletePipe =
+ ecore_pipe_add((Ecore_Pipe_Cb)
+ __vp_mm_player_pipe_seek_complete_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pSeekCompletePipe == NULL) {
+ VideoLogWarning("pSeekCompletePipe create fail");
+ }
+
+ pCbPipe->pInterruptedPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb) __vp_mm_player_pipe_interrupted_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pInterruptedPipe == NULL) {
+ VideoLogWarning("pInterruptedPipe create fail");
+ }
+
+ pCbPipe->pErrorPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb) __vp_mm_player_pipe_error_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pErrorPipe == NULL) {
+ VideoLogWarning("pErrorPipe create fail");
+ }
+
+ pCbPipe->pBufferingPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb) __vp_mm_player_pipe_buffering_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pBufferingPipe == NULL) {
+ VideoLogWarning("pBufferingPipe create fail");
+ }
+
+ pCbPipe->pSubtitleUpdatePipe =
+ ecore_pipe_add((Ecore_Pipe_Cb)
+ __vp_mm_player_pipe_subtitle_update_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pSubtitleUpdatePipe == NULL) {
+ VideoLogWarning("pSubtitleUpdatePipe create fail");
+ }
+
+ pCbPipe->pPDMessagePipe =
+ ecore_pipe_add((Ecore_Pipe_Cb) __vp_mm_player_pipe_pd_message_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pPDMessagePipe == NULL) {
+ VideoLogWarning("pPDMessagePipe create fail");
+ }
+
+ pCbPipe->pCapturedPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb) __vp_mm_player_pipe_captured_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pCapturedPipe == NULL) {
+ VideoLogWarning("pCapturedPipe create fail");
+ }
+
+ pCbPipe->pMissedPluginPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb)
+ __vp_mm_player_pipe_missed_plugin_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pMissedPluginPipe == NULL) {
+ VideoLogWarning("pMissedPluginPipe create fail");
+ }
+
+ pCbPipe->pImageBufferPipe =
+ ecore_pipe_add((Ecore_Pipe_Cb)
+ __vp_mm_player_pipe_image_buffer_cb,
+ (void *) pMMPlayer);
+ if (pCbPipe->pImageBufferPipe == NULL) {
+ VideoLogWarning("pImageBufferPipe create fail");
+ }
+
+ return;
+}
+
+static void _vp_mm_ecore_pipe_del(Ecore_Pipe *pPipe)
+{
+ if (pPipe == NULL) {
+ VideoLogError("pPipe is NULL");
+ return;
+ }
+
+ ecore_pipe_del(pPipe);
+ pPipe = NULL;
+
+ return;
+}
+
+static void _vp_mm_register_default_callback(MMPlayer *pMMPlayer)
+{
+ if (pMMPlayer == NULL) {
+ VideoLogError("pMMPlayer is NULL");
+ return;
+ }
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return;
+ }
+ int nRet = PLAYER_ERROR_NONE;
+ nRet =
+ player_set_completed_cb(pMMPlayer->pPlayer,
+ __vp_mm_player_completed_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_completed_cb fail : %d", nRet);
+ }
+
+ nRet =
+ player_set_interrupted_cb(pMMPlayer->pPlayer,
+ __vp_mm_player_interrupted_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_interrupted_cb fail : %d", nRet);
+ }
+
+ nRet =
+ player_set_error_cb(pMMPlayer->pPlayer, __vp_mm_player_error_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_error_cb fail : %d", nRet);
+ }
+
+ nRet =
+ player_set_buffering_cb(pMMPlayer->pPlayer,
+ __vp_mm_player_buffering_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_buffering_cb fail : %d", nRet);
+ }
+
+ nRet =
+ player_set_subtitle_updated_cb(pMMPlayer->pPlayer,
+ __vp_mm_player_subtitle_updated_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_subtitle_updated_cb fail : %d", nRet);
+ }
+// nRet = player_set_missed_plugin_info_cb(pMMPlayer->pPlayer, __vp_mm_player_missed_plugin_cb, (void *)pMMPlayer);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_missed_plugin_info_cb fail : %d", nRet);
+// }
+
+// nRet = player_set_image_buffer_updated_cb(pMMPlayer->pPlayer, __vp_mm_player_image_buffer_cb, (void *)pMMPlayer);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_image_buffer_updated_cb fail : %d", nRet);
+// }
+
+
+ return;
+
+}
+
+static void _vp_mm_unregister_default_callback(MMPlayer *pMMPlayer)
+{
+ if (pMMPlayer == NULL) {
+ VideoLogError("pMMPlayer is NULL");
+ return;
+ }
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return;
+ }
+ int nRet = PLAYER_ERROR_NONE;
+ nRet = player_unset_completed_cb(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_unset_completed_cb fail : %d", nRet);
+ }
+ nRet = player_unset_interrupted_cb(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_unset_interrupted_cb fail : %d", nRet);
+ }
+ nRet = player_unset_error_cb(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_unset_error_cb fail : %d", nRet);
+ }
+ nRet = player_unset_buffering_cb(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_unset_buffering_cb fail : %d", nRet);
+ }
+ nRet = player_unset_subtitle_updated_cb(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_unset_subtitle_updated_cb fail : %d", nRet);
+ }
+// nRet = player_unset_image_buffer_updated_cb(pMMPlayer->pPlayer);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_unset_image_buffer_updated_cb fail : %d", nRet);
+// }
+
+ return;
+}
+
+
+
+/* external functions */
+mm_player_handle vp_mm_player_create()
+{
+ MMPlayer *pMMPlayer = NULL;
+ pMMPlayer = calloc(1, sizeof(MMPlayer));
+
+ if (pMMPlayer == NULL) {
+ VideoLogError("MMPlayer alloc fail");
+ return NULL;
+ }
+
+ VideoLogInfo(">> player create");
+
+ int nRet = 0;
+ nRet = player_create(&pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ vp_mm_player_destroy((mm_player_handle) pMMPlayer);
+ return NULL;
+ }
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("player handle is NULL");
+ vp_mm_player_destroy((mm_player_handle) pMMPlayer);
+ return NULL;
+ }
+
+
+ nRet = player_set_sound_type(pMMPlayer->pPlayer, SOUND_TYPE_MEDIA);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ }
+// nRet = player_set_rich_audio(pMMPlayer->pPlayer);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// }
+
+ pMMPlayer->pCbFunc = calloc(1, sizeof(MMPlayerCbFunc));
+ if (pMMPlayer->pCbFunc == NULL) {
+ VideoLogError("MMPlayer callback func alloc fail");
+ vp_mm_player_destroy((mm_player_handle) pMMPlayer);
+ return NULL;
+ }
+
+ pMMPlayer->pCbPipe = calloc(1, sizeof(MMPlayerCbPipe));
+ if (pMMPlayer->pCbPipe == NULL) {
+ VideoLogError("MMPlayer Pipe alloc fail");
+ vp_mm_player_destroy((mm_player_handle) pMMPlayer);
+ return NULL;
+ }
+
+ pMMPlayer->pCaptureParam = calloc(1, sizeof(MMPlayerCaptureParam));
+ if (pMMPlayer->pCaptureParam == NULL) {
+ VideoLogError("MMPlayer pCaptureParam alloc fail");
+ }
+
+ pMMPlayer->pSubtitleParam = calloc(1, sizeof(MMPlayerSubtitleParam));
+ if (pMMPlayer->pSubtitleParam == NULL) {
+ VideoLogError("MMPlayer pSubtitleParam alloc fail");
+ }
+
+ pMMPlayer->pInterruptParam =
+ calloc(1, sizeof(MMPlayerInterruptParam));
+ if (pMMPlayer->pInterruptParam == NULL) {
+ VideoLogError("MMPlayer pInterruptParam alloc fail");
+ }
+
+ pMMPlayer->pErrorParam = calloc(1, sizeof(MMPlayerErrorParam));
+ if (pMMPlayer->pErrorParam == NULL) {
+ VideoLogError("MMPlayer pErrorParam alloc fail");
+ }
+ pMMPlayer->pBufferingParam =
+ calloc(1, sizeof(MMPlayerBufferingParam));
+ if (pMMPlayer->pBufferingParam == NULL) {
+ VideoLogError("MMPlayer pBufferingParam alloc fail");
+ }
+
+ pMMPlayer->pPDParam = calloc(1, sizeof(MMPlayerPDParam));
+ if (pMMPlayer->pPDParam == NULL) {
+ VideoLogError("MMPlayer pPDParam alloc fail");
+ }
+
+ pMMPlayer->pMissedParam =
+ calloc(1, sizeof(MMPlayerMissedPluginParam));
+ if (pMMPlayer->pMissedParam == NULL) {
+ VideoLogError("MMPlayer pMissedParam alloc fail");
+ }
+
+ pMMPlayer->pImageBufferParam =
+ calloc(1, sizeof(MMPlayerImageBufferParam));
+ if (pMMPlayer->pImageBufferParam == NULL) {
+ VideoLogError("MMPlayer pImageBufferParam alloc fail");
+ }
+
+ _vp_mm_ecore_pipe_create(pMMPlayer);
+
+ return (mm_player_handle) pMMPlayer;
+}
+
+void vp_mm_player_destroy(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+ int nRet = 0;
+
+ if (!vp_mm_player_unrealize(pPlayerHandle)) {
+ VideoLogWarning("vp_mm_player_unrealize fail");
+ }
+
+
+ nRet = player_destroy(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ }
+ pMMPlayer->pPlayer = NULL;
+
+ pMMPlayer->fLeftVol = 0.0;
+ pMMPlayer->fRightVol = 0.0;
+
+ pMMPlayer->nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+ pMMPlayer->nVideoSink = VP_MM_PLAYER_VIDEO_TYPE_X11;
+ pMMPlayer->nRotate = VP_MM_PLAYER_ROTATE_0;
+ pMMPlayer->bIsScaling = FALSE;
+
+ _vp_mm_callback_param_free(VP_MM_PLAYER_CAPTURE_VIDEO_CB,
+ (void *) pMMPlayer->pCaptureParam);
+ _vp_mm_callback_param_free(VP_MM_PLAYER_SUBTITLE_UPDATE_CB,
+ (void *) pMMPlayer->pSubtitleParam);
+ _vp_mm_callback_param_free(VP_MM_PLAYER_IMAGE_BUFFER_CB,
+ (void *) pMMPlayer->pImageBufferParam);
+
+ if (pMMPlayer->pInterruptParam) {
+ free(pMMPlayer->pInterruptParam);
+ pMMPlayer->pInterruptParam = NULL;
+ }
+
+ if (pMMPlayer->pErrorParam) {
+ free(pMMPlayer->pErrorParam);
+ pMMPlayer->pErrorParam = NULL;
+ }
+
+ if (pMMPlayer->pBufferingParam) {
+ free(pMMPlayer->pBufferingParam);
+ pMMPlayer->pBufferingParam = NULL;
+ }
+
+ if (pMMPlayer->pPDParam) {
+ free(pMMPlayer->pPDParam);
+ pMMPlayer->pPDParam = NULL;
+ }
+
+ if (pMMPlayer->pMissedParam) {
+ free(pMMPlayer->pMissedParam);
+ pMMPlayer->pMissedParam = NULL;
+ }
+
+ if (pMMPlayer->pCbFunc) {
+ pMMPlayer->pCbFunc->pBufferingCb = NULL;
+ pMMPlayer->pCbFunc->pPrepareCb = NULL;
+ pMMPlayer->pCbFunc->pEndOfStreamCb = NULL;
+ pMMPlayer->pCbFunc->pSeekCompleteCb = NULL;
+ pMMPlayer->pCbFunc->pInterruptedCb = NULL;
+ pMMPlayer->pCbFunc->pErrorCb = NULL;
+ pMMPlayer->pCbFunc->pBufferingCb = NULL;
+ pMMPlayer->pCbFunc->pSubtitleUpdateCb = NULL;
+ pMMPlayer->pCbFunc->pPDMessageCb = NULL;
+ pMMPlayer->pCbFunc->pCapturedCb = NULL;
+ pMMPlayer->pCbFunc->pMissedPluginCb = NULL;
+ pMMPlayer->pCbFunc->pImageBufferCb = NULL;
+
+ free(pMMPlayer->pCbFunc);
+ pMMPlayer->pCbFunc = NULL;
+ }
+
+ if (pMMPlayer->pCbPipe) {
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pPreparePipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pEndOfStreamPipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pSeekCompletePipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pInterruptedPipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pErrorPipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pBufferingPipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pSubtitleUpdatePipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pPDMessagePipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pCapturedPipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pMissedPluginPipe);
+ _vp_mm_ecore_pipe_del(pMMPlayer->pCbPipe->pImageBufferPipe);
+
+ free(pMMPlayer->pCbPipe);
+ pMMPlayer->pCbPipe = NULL;
+ }
+
+ pMMPlayer->pParam = NULL;
+ pMMPlayer->pVideoSink = NULL;
+
+ free(pMMPlayer);
+ pMMPlayer = NULL;
+}
+
+bool vp_mm_player_realize(mm_player_handle pPlayerHandle, char *szPath)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (szPath == NULL) {
+ VideoLogError("szPath is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->bIsRealize) {
+ VideoLogError("Already realized");
+ return FALSE;
+ }
+
+
+ int nRet = player_set_uri(pMMPlayer->pPlayer, szPath);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_uri is fail : %d", nRet);
+ return FALSE;
+ }
+// nRet = player_set_safety_volume(pMMPlayer->pPlayer);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_safety_volume is fail : %d", nRet);
+// }
+
+ _vp_mm_register_default_callback(pMMPlayer);
+
+// nRet = player_enable_sync_handler(pMMPlayer->pPlayer, TRUE);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_enable_sync_handler is fail : %d", nRet);
+// return FALSE;
+// }
+
+ nRet = player_prepare(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_prepare is fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->bIsRealize = TRUE;
+
+ return TRUE;
+}
+
+bool vp_mm_player_realize_async(mm_player_handle pPlayerHandle,
+ char *szPath)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->bIsRealize) {
+ VideoLogError("Already realized");
+ return FALSE;
+ }
+
+ int nRet = player_set_uri(pMMPlayer->pPlayer, szPath);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_uri is fail : %d", nRet);
+ return FALSE;
+ }
+// nRet = player_set_safety_volume(pMMPlayer->pPlayer);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_safety_volume is fail : %d", nRet);
+// }
+
+ _vp_mm_register_default_callback(pMMPlayer);
+
+// nRet = player_enable_sync_handler(pMMPlayer->pPlayer, TRUE);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_enable_sync_handler is fail : %d", nRet);
+// return FALSE;
+// }
+
+ nRet =
+ player_prepare_async(pMMPlayer->pPlayer,
+ __vp_mm_player_prepare_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_prepare is fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_mm_player_unrealize(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ _vp_mm_unregister_default_callback(pMMPlayer);
+
+ int nRet = player_unprepare(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ VideoLogError("player_unprepare fail : %d", nRet);
+ return FALSE;
+ }
+
+ if (pMMPlayer->szURL) {
+ free(pMMPlayer->szURL);
+ pMMPlayer->szURL = NULL;
+ }
+
+ if (pMMPlayer->szSubtitleURL) {
+ free(pMMPlayer->szSubtitleURL);
+ pMMPlayer->szSubtitleURL = NULL;
+ }
+
+ if (pMMPlayer->szCookie) {
+ free(pMMPlayer->szCookie);
+ pMMPlayer->szCookie = NULL;
+ }
+
+ if (pMMPlayer->szProxy) {
+ free(pMMPlayer->szProxy);
+ pMMPlayer->szProxy = NULL;
+ }
+
+ pMMPlayer->bIsRealize = FALSE;
+ pMMPlayer->bDeactivateSubtitle = FALSE;
+ pMMPlayer->bIsMute = FALSE;
+ pMMPlayer->bIsClosedCaption = FALSE;
+ pMMPlayer->bIsCapturing = FALSE;
+
+ pMMPlayer->nState = VP_MM_PLAYER_STATE_NONE;
+ pMMPlayer->nDisplayMode = VP_MM_PLAYER_DISPLAY_LETTER_BOX;
+
+ pMMPlayer->nDuration = 0;
+ pMMPlayer->nVideoWidth = 0;
+ pMMPlayer->nVidehHeight = 0;
+
+ return TRUE;
+}
+
+bool vp_mm_player_is_realize(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ return pMMPlayer->bIsRealize;
+
+}
+
+bool vp_mm_player_set_callback(mm_player_handle pPlayerHandle,
+ vp_mm_player_callback_t nCallbackType,
+ void *pCallback)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (pCallback == NULL) {
+ VideoLogError("pCallback is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ switch (nCallbackType) {
+ case VP_MM_PLAYER_REALIZE_ASYNC_CB:
+ pMMPlayer->pCbFunc->pPrepareCb =
+ (vp_mm_player_prepare_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_SEEK_COMPLETE_CB:
+ pMMPlayer->pCbFunc->pSeekCompleteCb =
+ (vp_mm_player_seek_completed_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_END_OF_STREAM_CB:
+ pMMPlayer->pCbFunc->pEndOfStreamCb =
+ (vp_mm_player_completed_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_INTERRUPT_CB:
+ pMMPlayer->pCbFunc->pInterruptedCb =
+ (vp_mm_player_interrupted_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_ERROR_CB:
+ pMMPlayer->pCbFunc->pErrorCb = (vp_mm_player_error_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_BUFFERING_CB:
+ pMMPlayer->pCbFunc->pBufferingCb =
+ (vp_mm_player_buffering_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_SUBTITLE_UPDATE_CB:
+ pMMPlayer->pCbFunc->pSubtitleUpdateCb =
+ (vp_mm_player_subtitle_updated_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_PD_MESSAGE_CB:
+ pMMPlayer->pCbFunc->pPDMessageCb =
+ (vp_mm_player_pd_message_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_CAPTURE_VIDEO_CB:
+ pMMPlayer->pCbFunc->pCapturedCb =
+ (vp_mm_player_video_captured_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_MISSED_PLUGIN_CB:
+ pMMPlayer->pCbFunc->pMissedPluginCb =
+ (vp_mm_player_missed_plugin_cb) pCallback;
+ break;
+ case VP_MM_PLAYER_IMAGE_BUFFER_CB:
+ pMMPlayer->pCbFunc->pImageBufferCb =
+ (vp_mm_player_image_buffer_updated_cb) pCallback;
+ break;
+ default:
+ VideoLogError("Unknown Callback type : %d", nCallbackType);
+ return FALSE;
+
+ }
+ return TRUE;
+}
+
+bool vp_mm_player_set_user_param(mm_player_handle pPlayerHandle,
+ void *pParam)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (pParam == NULL) {
+ VideoLogError("pCallback is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ pMMPlayer->pParam = pParam;
+
+ return TRUE;
+}
+
+bool vp_mm_player_play(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ VideoLogWarning("");
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ VideoLogWarning("[player_start start]");
+ int nRet = player_start(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_start fail : %d", nRet);
+ return FALSE;
+ }
+ VideoLogWarning("[player_start end]");
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_stop(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ VideoLogWarning("[player_stop start]");
+ int nRet = player_stop(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_stop fail : %d", nRet);
+ return FALSE;
+ }
+ VideoLogWarning("[player_stop end]");
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_pause(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ VideoLogWarning("[player_pause start]");
+ int nRet = player_pause(pMMPlayer->pPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_pause fail : %d", nRet);
+ return FALSE;
+ }
+ VideoLogWarning("[player_pause end]");
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_get_state(mm_player_handle pPlayerHandle,
+ vp_mm_player_state_t *nState)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+ player_state_e nPlayerState = PLAYER_STATE_NONE;
+
+ int nRet = player_get_state(pMMPlayer->pPlayer, &nPlayerState);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("PLAYER_ERROR_NONE fail : %d", nRet);
+ return FALSE;
+ }
+
+ *nState = _vp_mm_player_priv_convert_player_state(nPlayerState, TRUE);
+
+ return TRUE;
+}
+
+bool vp_mm_player_get_position(mm_player_handle pPlayerHandle,
+ int *nPosition)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ int nPos = 0;
+
+ int nRet = player_get_play_position(pMMPlayer->pPlayer, &nPos);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_get_play_position fail : %d", nRet);
+ return FALSE;
+ }
+ *nPosition = nPos;
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_set_position(mm_player_handle pPlayerHandle,
+ int nPosition)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ if (nPosition < 0) {
+ VideoLogError("Invalid position value");
+ return FALSE;
+ }
+#if 1 //#ifdef USE_I_FRAMESEKK //fix. because of changing API
+ int nRet =
+ player_set_play_position(pMMPlayer->pPlayer, nPosition, TRUE,
+ __vp_mm_player_seek_completed_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_position fail : %d", nRet);
+ return FALSE;
+ }
+#else
+ int nRet =
+ player_set_position(pMMPlayer->pPlayer, nPosition,
+ __vp_mm_player_seek_completed_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_position fail : %d", nRet);
+ return FALSE;
+ }
+#endif
+ return TRUE;
+
+}
+
+bool vp_mm_player_set_position_by_key_frame(mm_player_handle
+ pPlayerHandle, int nPosition)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ if (nPosition < 0) {
+ VideoLogError("Invalid position value");
+ return FALSE;
+ }
+#if 1 //#ifdef USE_I_FRAMESEKK //fix. because of changing API
+ int nRet =
+ player_set_play_position(pMMPlayer->pPlayer, nPosition, FALSE,
+ __vp_mm_player_seek_completed_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_position fail : %d", nRet);
+ return FALSE;
+ }
+#else
+ int nRet =
+ player_set_position(pMMPlayer->pPlayer, nPosition,
+ __vp_mm_player_seek_completed_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_position fail : %d", nRet);
+ return FALSE;
+ }
+#endif
+ return TRUE;
+}
+
+
+bool vp_mm_player_get_buffering_position(mm_player_handle pPlayerHandle,
+ int *nPosition)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+ int nStart = 0;
+ int nCurrent = 0;
+ int nRet =
+ player_get_streaming_download_progress(pMMPlayer->pPlayer,
+ &nStart, &nCurrent);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_get_streaming_download_progress fail : %d",
+ nRet);
+ return FALSE;
+ }
+
+ *nPosition = nCurrent;
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_set_scaling(mm_player_handle pPlayerHandle, bool bScale)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+// int nRet = player_enable_evas_display_scaling(pMMPlayer->pPlayer, bScale);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_enable_evas_display_scaling fail : %d", nRet);
+// return FALSE;
+// }
+
+ pMMPlayer->bIsScaling = bScale;
+ return TRUE;
+
+}
+
+bool vp_mm_player_set_loop(mm_player_handle pPlayerHandle, bool bLoop)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ int nRet = player_set_looping(pMMPlayer->pPlayer, bLoop);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_looping fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->bIsLooping = bLoop;
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_mute(mm_player_handle pPlayerHandle, bool bMute)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ int nRet = player_set_mute(pMMPlayer->pPlayer, bMute);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_mute fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->bIsMute = bMute;
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_get_mute(mm_player_handle pPlayerHandle, bool *bMute)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+ bool bIsMute = FALSE;
+ int nRet = player_is_muted(pMMPlayer->pPlayer, &bIsMute);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_is_muted fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->bIsMute = bIsMute;
+ *bMute = bIsMute;
+
+ return TRUE;
+}
+
+bool vp_mm_player_get_duration(mm_player_handle pPlayerHandle,
+ int *nDuration)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ int nDur = 0;
+ int nRet = player_get_duration(pMMPlayer->pPlayer, &nDur);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_get_duration fail : %d", nRet);
+ return FALSE;
+ }
+
+ *nDuration = nDur;
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_get_codecinfo(mm_player_handle pPlayerHandle,
+ char **audio_codec, char **video_codec)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ int nRet =
+ player_get_codec_info(pMMPlayer->pPlayer, audio_codec,
+ video_codec);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_get_codec_info fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_video_sink(mm_player_handle pPlayerHandle,
+ int nType, void *pSink)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ int nSinkType = _vp_mm_player_priv_convert_video_sink(nType, FALSE);
+ int nRet = player_set_display(pMMPlayer->pPlayer, nSinkType, pSink);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_display fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->nVideoSink = nType;
+ pMMPlayer->pVideoSink = pSink;
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_video_rotate(mm_player_handle pPlayerHandle,
+ int nRotate)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+#ifdef _NATIVE_BUFFER_SYNC
+ int nRot = PLAYER_DISPLAY_ROTATION_NONE;
+#else
+ int nRot = _vp_mm_player_priv_convert_rotate(nRotate, FALSE);
+#endif
+
+ int nRet = player_set_display_rotation(pMMPlayer->pPlayer, nRot);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_display_rotation fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->nRotate = nRotate;
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_display_mode(mm_player_handle pPlayerHandle,
+ vp_mm_player_display_mode_t
+ nDisplayMode)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+ int nMode =
+ _vp_mm_player_priv_convert_display_mode(nDisplayMode, FALSE);
+ int nRet = player_set_display_mode(pMMPlayer->pPlayer, nMode);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_display_mode fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->nDisplayMode = nDisplayMode;
+
+ return TRUE;
+}
+
+bool vp_mm_player_get_resolution(mm_player_handle pPlayerHandle,
+ int *nWidth, int *nHeight)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ int nRet = player_get_video_size(pMMPlayer->pPlayer, nWidth, nHeight);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_subtitle_path fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_subtitle_url(mm_player_handle pPlayerHandle,
+ char *szSubtitlePath)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (szSubtitlePath == NULL) {
+ VideoLogError("Invalid subtitle path info");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->szSubtitleURL) {
+ free(pMMPlayer->szSubtitleURL);
+ pMMPlayer->szSubtitleURL = NULL;
+ }
+
+ int nRet =
+ player_set_subtitle_path(pMMPlayer->pPlayer, szSubtitlePath);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_subtitle_path fail : %d", nRet);
+ return FALSE;
+ }
+
+ pMMPlayer->szSubtitleURL = strdup(szSubtitlePath);
+
+ return TRUE;
+}
+
+bool vp_mm_player_get_subtitle_url(mm_player_handle pPlayerHandle,
+ char **szSubtitlePath)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->szSubtitleURL == NULL) {
+ VideoLogError("pMMPlayer->szSubtitleURL is NULL");
+ return FALSE;
+ }
+
+ *szSubtitlePath = strdup(pMMPlayer->szSubtitleURL);
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_subtitle_font(mm_player_handle pPlayerHandle,
+ char *szFamilyName, char *szStyle,
+ int nSize)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (szFamilyName == NULL) {
+ VideoLogError("Invalid szFamilyName info");
+ return FALSE;
+ }
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+// char *szFontConfig = NULL;
+//
+// if (szStyle) {
+// szFontConfig = g_strdup_printf("%s %s %d", szFamilyName, szStyle, nSize);
+// }
+// else {
+// szFontConfig = g_strdup_printf("%s %d", szFamilyName, nSize);
+// }
+//#if 1
+
+
+ //int nRet = PLAYER_ERROR_NONE;
+
+// nRet = player_set_external_subtitle_font(pMMPlayer->pPlayer, szFontConfig);
+// if (szFontConfig) {
+// free(szFontConfig);
+// szFontConfig = NULL;
+// }
+ /*
+ //
+ // if (nRet != PLAYER_ERROR_NONE) {
+ // _vp_mm_player_print_err(nRet);
+ // VideoLogError("player_set_external_subtitle_font fail : %d", nRet);
+ // return FALSE;
+ // }
+ */
+//#endif
+ return TRUE;
+}
+
+bool vp_mm_player_set_subtitle_font_color(mm_player_handle pPlayerHandle,
+ unsigned int nForegroundColor,
+ unsigned int nBGColor)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+#if 1
+// int nRet = PLAYER_ERROR_NONE;
+
+// nRet = player_set_external_subtitle_font_color(pMMPlayer->pPlayer, nForegroundColor, nBGColor);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_external_subtitle_font_color fail : %d", nRet);
+// return FALSE;
+// }
+#endif
+ return TRUE;
+
+}
+
+bool vp_mm_player_subtitle_ignore_markup_tags(mm_player_handle
+ pPlayerHandle,
+ bool bIgnoreMarkup)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+bool vp_mm_player_subtitle_set_alignment_in_line(mm_player_handle
+ pPlayerHandle,
+ vp_mm_player_subtitle_halign_t
+ type)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+bool vp_mm_player_subtitle_set_alignment_horizontal(mm_player_handle
+ pPlayerHandle,
+ vp_mm_player_subtitle_halign_t
+ type)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+bool vp_mm_player_subtitle_apply_alignment_right_away(mm_player_handle
+ pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+bool vp_mm_player_set_subtitle_position(mm_player_handle pPlayerHandle,
+ int nPosition)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ int nRet =
+ player_set_subtitle_position_offset(pMMPlayer->pPlayer,
+ nPosition);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_subtitle_position fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+
+}
+
+bool vp_mm_player_set_deactivate_subtitle(mm_player_handle pPlayerHandle,
+ bool bDeactivate)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ pMMPlayer->bDeactivateSubtitle = bDeactivate;
+
+ return TRUE;
+}
+
+
+
+bool vp_mm_player_set_volume(mm_player_handle pPlayerHandle, float fLeft,
+ float fRight)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ int nRet = player_set_volume(pMMPlayer->pPlayer, fLeft, fRight);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_volume fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_mm_player_get_volume(mm_player_handle pPlayerHandle, float *fLeft,
+ float *fRight)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+ float fLeftVal = 0.0;
+ float fRightVal = 0.0;
+
+ int nRet =
+ player_get_volume(pMMPlayer->pPlayer, &fLeftVal, &fRightVal);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_get_volume fail : %d", nRet);
+ return FALSE;
+ }
+
+ *fLeft = fLeftVal;
+ *fRight = fRightVal;
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_sound_filter(mm_player_handle pPlayerHandle,
+ vp_mm_player_sound_filter_t nFilter)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+// audio_effect_preset_e nPreset = AUDIO_EFFECT_PRESET_NONE;
+// audio_effect_preset_e nPreset = NULL;
+// bool bIsAvailable = FALSE;
+
+// nPreset = _vp_mm_player_priv_convert_suond_filter(nFilter, FALSE);
+//
+// int nRet =player_audio_effect_preset_is_available (pMMPlayer->pPlayer, nPreset, &bIsAvailable);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_audio_effect_preset_is_available fail : %d", nRet);
+// return FALSE;
+// }
+//
+// if (bIsAvailable == false) {
+// VideoLogError("unavailable to [%d] effect.", nPreset);
+// return FALSE;
+// }
+//
+// nRet =player_audio_effect_set_preset (pMMPlayer->pPlayer, nPreset);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_audio_effect_set_preset fail : %d", nRet);
+// return FALSE;
+// }
+// pMMPlayer->nSoundFilter = nFilter;
+
+ return FALSE;
+}
+
+bool vp_mm_player_get_sound_filter(mm_player_handle pPlayerHandle,
+ vp_mm_player_sound_filter_t *nFilter)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ *nFilter = pMMPlayer->nSoundFilter;
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_capture_start(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+
+ int nRet =
+ player_capture_video(pMMPlayer->pPlayer,
+ __vp_mm_player_video_captured_cb,
+ (void *) pMMPlayer);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_capture_video fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_mm_player_is_closed_caption_exist(mm_player_handle pPlayerHandle)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (pMMPlayer->pPlayer == NULL) {
+ VideoLogError("Player Handle is NULL");
+ return FALSE;
+ }
+
+ if (pMMPlayer->bIsRealize == FALSE) {
+ VideoLogError("Not realized");
+ return FALSE;
+ }
+
+// int nRet = player_has_closed_caption(pMMPlayer->pPlayer, &bExist);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_has_closed_caption fail : %d", nRet);
+// return FALSE;
+// }
+
+ return FALSE;
+}
+
+bool vp_mm_player_get_audio_track_count(mm_player_handle pPlayerHandle,
+ int *nCount)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+ int nCnt = 0;
+ //int nRet = player_get_track_count(pMMPlayer->pPlayer, PLAYER_TRACK_TYPE_AUDIO, &nCnt);
+// int nRet = player_get_track_count(pMMPlayer->pPlayer, NULL, &nCnt);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_get_track_count fail : %d", nRet);
+// return FALSE;
+// }
+
+ *nCount = nCnt;
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_get_audio_track_language_code(mm_player_handle
+ pPlayerHandle, int nIndex,
+ char **szCode)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ //MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// char *szVal = NULL;
+// //int nRet = player_get_track_language_code(pMMPlayer->pPlayer, PLAYER_TRACK_TYPE_AUDIO, nIndex, &szVal);
+// int nRet = player_get_track_language_code(pMMPlayer->pPlayer,NULL, nIndex, &szVal);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_get_track_language_code fail : %d", nRet);
+// return FALSE;
+// }
+
+// VP_STRDUP(*szCode, szVal);
+// VP_FREE(szVal);
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_audio_track(mm_player_handle pPlayerHandle,
+ int nIndex)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ //MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+ //int nRet = player_select_track(pMMPlayer->pPlayer, PLAYER_TRACK_TYPE_AUDIO, nIndex);
+// int nRet = player_select_track(pMMPlayer->pPlayer, NULL, nIndex);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_select_track fail : %d", nRet);
+// return FALSE;
+// }
+
+ return TRUE;
+}
+
+bool vp_mm_player_get_subtitle_track_count(mm_player_handle pPlayerHandle,
+ int *nCount)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+//
+// int nCnt = 0;
+ //int nRet = player_get_track_count(pMMPlayer->pPlayer, PLAYER_TRACK_TYPE_TEXT, &nCnt);
+
+// int nRet = player_get_track_count(pMMPlayer->pPlayer, NULL, &nCnt);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_get_track_count fail : %d", nRet);
+// return FALSE;
+// }
+
+ *nCount = 0;
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_get_subtitle_track_language_code(mm_player_handle
+ pPlayerHandle,
+ int nIndex,
+ char **szCode)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ //MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// char *szVal = NULL;
+// //int nRet = player_get_track_language_code(pMMPlayer->pPlayer, PLAYER_TRACK_TYPE_TEXT, nIndex, &szVal);
+//
+// int nRet = player_get_track_language_code(pMMPlayer->pPlayer, NULL, nIndex, &szVal);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_get_track_language_code fail : %d", nRet);
+// return FALSE;
+// }
+//
+// VP_STRDUP(*szCode, szVal);
+// VP_FREE(szVal);
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_subtitle_track(mm_player_handle pPlayerHandle,
+ int nIndex)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+//
+// //int nRet = player_select_track(pMMPlayer->pPlayer, PLAYER_TRACK_TYPE_TEXT, nIndex);
+// int nRet = player_select_track(pMMPlayer->pPlayer, NULL, nIndex);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_select_track fail : %d", nRet);
+// return FALSE;
+// }
+
+ return TRUE;
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+bool vp_mm_player_add_subtitle_language(mm_player_handle pPlayerHandle,
+ int nIndex)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// int nRet = player_track_add_subtitle_language(pMMPlayer->pPlayer, nIndex);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_track_add_subtitle_language fail : %d", nRet);
+// return FALSE;
+// }
+
+ return TRUE;
+}
+
+bool vp_mm_player_remove_subtitle_language(mm_player_handle pPlayerHandle,
+ int nIndex)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// int nRet = player_track_remove_subtitle_language(pMMPlayer->pPlayer, nIndex);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_track_remove_subtitle_language fail : %d", nRet);
+// return FALSE;
+// }
+//
+ return TRUE;
+}
+
+bool
+vp_mm_player_track_foreach_selected_subtitle_language(mm_player_handle
+ pPlayerHandle,
+ void *pCallback,
+ void *pUserData)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// int nRet = player_track_foreach_selected_subtitle_language(pMMPlayer->pPlayer, (player_track_selected_subtitle_language_cb)pCallback, pUserData);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_track_foreach_selected_subtitle_language fail : %d", nRet);
+ return FALSE;
+// }
+
+ return TRUE;
+}
+#endif
+bool vp_mm_player_set_cookie(mm_player_handle pPlayerHandle,
+ const char *szCookie)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (szCookie == NULL) {
+ VideoLogError("szCookie is NULL");
+ return FALSE;
+ }
+
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ int nRet =
+ player_set_streaming_cookie(pMMPlayer->pPlayer, szCookie,
+ strlen(szCookie));
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_select_track fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_proxy(mm_player_handle pPlayerHandle,
+ const char *szProxy)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (szProxy == NULL) {
+ VideoLogError("szCookie is NULL");
+ return FALSE;
+ }
+ /*
+ MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+ */
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_hw_decoder(bool bEnable)
+{
+ if (bEnable) {
+ setenv("MM_PLAYER_HW_CODEC_DISABLE", "no", 1);
+ } else {
+ setenv("MM_PLAYER_HW_CODEC_DISABLE", "yes", 1);
+ }
+
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_rate(mm_player_handle pPlayerHandle, float fRate)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ if (fRate < 0.5 || fRate > 1.5) {
+ VideoLogError("Invalid Param : %f", fRate);
+ return FALSE;
+ }
+
+ VideoLogDebug("== SET RATE : %f", fRate);
+
+ int nRet = player_set_playback_rate(pMMPlayer->pPlayer, fRate);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_playback_rate_ex fail : %d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_mm_player_set_zoom(mm_player_handle pPlayerHandle, float fZoom,
+ int nPosX, int nPosY)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+// MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// int nRet = player_set_x11_display_zoom (pMMPlayer->pPlayer, fZoom, nPosX, nPosY);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_x11_display_zoom fail : %d", nRet);
+ return FALSE;
+// }
+// return TRUE;
+}
+
+bool vp_mm_player_get_zoom_start_position(mm_player_handle pPlayerHandle,
+ int *nPosX, int *nPosY)
+{
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ *nPosX = pMMPlayer->nZoomPosX;
+ *nPosY = pMMPlayer->nZoomPosY;
+ return TRUE;
+}
+
+
+bool vp_mm_player_set_visible(mm_player_handle pPlayerHandle,
+ bool bVisible)
+{
+
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ MMPlayer *pMMPlayer = (MMPlayer *) pPlayerHandle;
+
+ int nRet = player_set_display_visible(pMMPlayer->pPlayer, bVisible);
+ if (nRet != PLAYER_ERROR_NONE) {
+ _vp_mm_player_print_err(nRet);
+ VideoLogError("player_set_display_visible fail : %d", nRet);
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+
+
+bool vp_mm_player_set_hub_download_mode(mm_player_handle pPlayerHandle,
+ bool bDownload)
+{
+
+ if (pPlayerHandle == NULL) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+ //MMPlayer *pMMPlayer = (MMPlayer *)pPlayerHandle;
+
+// int nRet = player_set_video_hub_donwload_mode (pMMPlayer->pPlayer, bDownload);
+// if (nRet != PLAYER_ERROR_NONE) {
+// _vp_mm_player_print_err(nRet);
+// VideoLogError("player_set_video_hub_donwload_mode fail : %d", nRet);
+ return FALSE;
+// }
+//
+// return TRUE;
+}
diff --git a/playview/src/core/vp-multi-path.c b/playview/src/core/vp-multi-path.c
new file mode 100644
index 0000000..86e56f3
--- /dev/null
+++ b/playview/src/core/vp-multi-path.c
@@ -0,0 +1,379 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-util.h"
+
+
+#include "vp-multi-path.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+typedef struct _MultiPath {
+ char *szURL;
+ char *szTitle;
+ char *szSubTitle;
+ int nStartPosition;
+ int nDuration;
+ bool bIsSameAP;
+} MultiPath;
+
+
+
+/* internal functions */
+static bool _vp_multi_path_write_multi_path_set_position(char *szURL,
+ int nPosition)
+{
+ FILE *fp = fopen(VP_PLAY_MULTIPATH_INI_PATH, "w");
+
+ if (fp == NULL) {
+ VideoLogError("%s is NULL.", VP_PLAY_MULTIPATH_INI_PATH);
+ return FALSE;
+ }
+
+ fprintf(fp, "#saveposition\n");
+ fprintf(fp, "uri=%s\n", szURL);
+ fprintf(fp, "position=%d\n", nPosition);
+ fclose(fp);
+
+ return TRUE;
+}
+
+
+
+/* external functions */
+bool vp_multi_path_add_item(GList **pList,
+ const char *szURL,
+ char *szTitle,
+ char *szSubTitle,
+ int nPosition, int nDuration, bool bIsSameAP)
+{
+ if (!szURL) {
+ VideoLogError("szURL is NULL");
+ return FALSE;
+ }
+
+ MultiPath *pPath = NULL;
+
+ pPath = calloc(1, sizeof(MultiPath));
+ if (pPath == NULL) {
+ VideoLogError("pPath alloc fail");
+ return FALSE;
+ }
+
+ char *szConvert = vp_play_util_remove_prefix_to_url((char *) szURL);
+ if (szConvert) {
+ VP_STRDUP(pPath->szURL, szConvert);
+ } else {
+ VP_STRDUP(pPath->szURL, szURL);
+ }
+ VP_FREE(szConvert);
+
+
+ szConvert = vp_play_util_remove_prefix_to_url(szSubTitle);
+ if (szConvert) {
+ VP_STRDUP(pPath->szSubTitle, szConvert);
+ } else {
+ VP_STRDUP(pPath->szSubTitle, szSubTitle);
+ }
+ VP_FREE(szConvert);
+
+ VP_STRDUP(pPath->szTitle, szTitle);
+ pPath->bIsSameAP = bIsSameAP;
+
+ pPath->nStartPosition = nPosition;
+ pPath->nDuration = nDuration;
+ *pList = g_list_append(*pList, pPath);
+
+ return TRUE;
+}
+
+bool vp_multi_path_clear_item(GList *pList)
+{
+ if (!pList) {
+ VideoLogError("pList is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int nIdx = 0;
+
+ nCount = g_list_length(pList);
+ for (nIdx = 0; nIdx < nCount; nIdx++) {
+ MultiPath *pPath = NULL;
+ pPath = (MultiPath *) g_list_nth_data(pList, nIdx);
+ if (pPath) {
+ VP_FREE(pPath->szURL);
+ VP_FREE(pPath->szSubTitle);
+ VP_FREE(pPath->szTitle);
+
+ VP_FREE(pPath);
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_multi_path_set_item_subtitle(const char *szMediaURL,
+ char *szSubtitleURL, GList *pList)
+{
+ if (!pList) {
+ VideoLogError("pList is NULL");
+ return FALSE;
+ }
+
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int nIdx = 0;
+
+ nCount = g_list_length(pList);
+ for (nIdx = 0; nIdx < nCount; nIdx++) {
+ MultiPath *pPath = NULL;
+ pPath = (MultiPath *) g_list_nth_data(pList, nIdx);
+ if (pPath == NULL) {
+ continue;
+ }
+ if (pPath->szURL == NULL) {
+ continue;
+ }
+ if (!strcmp(szMediaURL, pPath->szURL)) {
+ VP_FREE(pPath->szSubTitle);
+ VP_STRDUP(pPath->szSubTitle, szSubtitleURL);
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_multi_path_set_item_position(const char *szMediaURL,
+ int nPosition, GList *pList)
+{
+ if (!pList) {
+ VideoLogError("pList is NULL");
+ return FALSE;
+ }
+
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int nIdx = 0;
+
+ nCount = g_list_length(pList);
+ for (nIdx = 0; nIdx < nCount; nIdx++) {
+ MultiPath *pPath = NULL;
+ pPath = (MultiPath *) g_list_nth_data(pList, nIdx);
+ if (pPath == NULL) {
+ continue;
+ }
+ if (pPath->szURL == NULL) {
+ continue;
+ }
+ if (!strcmp(szMediaURL, pPath->szURL)) {
+ pPath->nStartPosition = nPosition;
+ _vp_multi_path_write_multi_path_set_position((char *)
+ szMediaURL,
+ nPosition);
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_multi_path_get_current_item(const char *szMediaURL, char **szURL,
+ char **szTitle, char **szSubtitle,
+ int *nPosition, int *nDuration,
+ bool *bIsSameAP, GList *pList)
+{
+ if (!szMediaURL) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pList);
+ for (i = 0; i < nCount; i++) {
+ MultiPath *pPath = NULL;
+ pPath = (MultiPath *) g_list_nth_data(pList, i);
+ if (pPath == NULL) {
+ continue;
+ }
+ if (pPath->szURL == NULL) {
+ continue;
+ }
+
+ if (!strcmp(szMediaURL, pPath->szURL)) {
+ VP_STRDUP(*szURL, pPath->szURL);
+ VP_STRDUP(*szSubtitle, pPath->szSubTitle);
+ VP_STRDUP(*szTitle, pPath->szTitle);
+ *bIsSameAP = pPath->bIsSameAP;
+ *nPosition = pPath->nStartPosition;
+ *nDuration = pPath->nDuration;
+
+ return TRUE;
+
+ }
+ }
+
+ return FALSE;
+}
+
+
+bool vp_multi_path_get_next_item(const char *szMediaURL, char **szURL,
+ char **szSubtitle, int *nPosition,
+ int *nDuration, bool bLoop,
+ GList *pList)
+{
+ if (!szMediaURL) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ MultiPath *pFirstPathItem = NULL;
+ bool bCheck = FALSE;
+
+ nCount = g_list_length(pList);
+ for (i = 0; i < nCount; i++) {
+ MultiPath *pPath = NULL;
+ pPath = (MultiPath *) g_list_nth_data(pList, i);
+ if (pPath == NULL) {
+ continue;
+ }
+ if (pPath->szURL == NULL) {
+ continue;
+ }
+
+ if (pFirstPathItem == NULL) {
+ pFirstPathItem = pPath;
+ }
+
+ if (bCheck) {
+ VP_STRDUP(*szURL, pPath->szURL);
+ VP_STRDUP(*szSubtitle, pPath->szSubTitle);
+ *nPosition = pPath->nStartPosition;
+
+ return TRUE;
+ }
+
+ if (!strcmp(szMediaURL, pPath->szURL)) {
+ bCheck = TRUE;
+ }
+
+ }
+
+ if (bLoop) {
+ if (pFirstPathItem) {
+ VP_STRDUP(*szURL, pFirstPathItem->szURL);
+ VP_STRDUP(*szSubtitle, pFirstPathItem->szSubTitle);
+ *nPosition = pFirstPathItem->nStartPosition;
+ *nDuration = pFirstPathItem->nDuration;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_multi_path_get_prev_item(const char *szMediaURL, char **szURL,
+ char **szSubtitle, int *nPosition,
+ int *nDuration, bool bLoop,
+ GList *pList)
+{
+ if (!szMediaURL) {
+ VideoLogError("No exist szMediaID.");
+ return FALSE;
+ }
+
+ if (pList == NULL) {
+ VideoLogError("list is NULL");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+
+ MultiPath *pLastPathItem = NULL;
+ bool bCheck = FALSE;
+
+
+ nCount = g_list_length(pList);
+ for (i = nCount - 1; i >= 0; i--) {
+ MultiPath *pPath = NULL;
+ pPath = (MultiPath *) g_list_nth_data(pList, i);
+ if (pPath == NULL) {
+ continue;
+ }
+ if (pPath->szURL == NULL) {
+ continue;
+ }
+
+ if (pLastPathItem == NULL) {
+ pLastPathItem = pPath;
+ }
+
+ if (bCheck) {
+ VP_STRDUP(*szURL, pPath->szURL);
+ VP_STRDUP(*szSubtitle, pPath->szSubTitle);
+ *nPosition = pPath->nStartPosition;
+ *nDuration = pPath->nDuration;
+ return TRUE;
+ }
+
+ if (!strcmp(szMediaURL, pPath->szURL)) {
+ bCheck = TRUE;
+ }
+ }
+
+ if (bLoop) {
+ if (pLastPathItem) {
+ VP_STRDUP(*szURL, pLastPathItem->szURL);
+ VP_STRDUP(*szSubtitle, pLastPathItem->szSubTitle);
+ *nPosition = pLastPathItem->nStartPosition;
+ *nDuration = pLastPathItem->nDuration;
+ }
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/core/vp-sensor.c b/playview/src/core/vp-sensor.c
new file mode 100644
index 0000000..eab795e
--- /dev/null
+++ b/playview/src/core/vp-sensor.c
@@ -0,0 +1,292 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#ifdef OLD_SENSOR_API
+
+#include <sensor.h>
+
+#include "vp-play-macro-define.h"
+
+#include "vp-sensor.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+typedef struct _SensorHandle {
+ sensor_h pSensorH;
+ bool bIsRealize;
+ bool bFaceDownEnable;
+ bool bDoubleTabEnable;
+
+ void *pUserData;
+ SensorEventCbFunc pEventCb;
+
+} SensorHandle;
+
+static void _vp_sensor_destroy_handle(SensorHandle *pSensorHandle);
+
+
+/* callback functions */
+static void __vp_sensor_motion_doubletap_event_cb(unsigned long long
+ timestamp,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SensorHandle *pSensor = (SensorHandle *) pUserData;
+ if (pSensor->pEventCb) {
+ pSensor->pEventCb(VP_SENSOR_TYPE_DOUBLETAP, timestamp,
+ pSensor->pUserData);
+ }
+
+}
+
+static void __vp_sensor_motion_facedown_event_cb(unsigned long long
+ timestamp,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SensorHandle *pSensor = (SensorHandle *) pUserData;
+
+ if (pSensor->pEventCb) {
+ pSensor->pEventCb(VP_SENSOR_TYPE_FACEDOWN, timestamp,
+ pSensor->pUserData);
+ }
+}
+
+
+
+
+/* internal functions */
+static void _vp_sensor_destroy_handle(SensorHandle *pSensorHandle)
+{
+ if (pSensorHandle == NULL) {
+ VideoLogError("pSensorHandle is NULL");
+ return;
+ }
+
+ int nRet = sensor_destroy(pSensorHandle->pSensorH);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_destroy is fail : 0x%x", nRet);
+ }
+
+
+ VP_FREE(pSensorHandle);
+}
+
+
+
+/* external functions */
+sensor_handle vp_sensor_create(SensorEventCbFunc pEventCb)
+{
+ SensorHandle *pSensor = NULL;
+
+ pSensor = calloc(1, sizeof(SensorHandle));
+
+ if (pSensor == NULL) {
+ VideoLogError("pSensorHandle alloc fail");
+ return NULL;
+ }
+
+ pSensor->pEventCb = pEventCb;
+
+ VideoLogInfo(">> sensor create");
+
+ int nRet = sensor_create(&pSensor->pSensorH);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_create is fail : 0x%x", nRet);
+ _vp_sensor_destroy_handle(pSensor);
+ return NULL;
+ }
+ VideoLogInfo("<< sensor create");
+
+ if (pSensor->pSensorH == NULL) {
+ VideoLogInfo("pSensorHandle->pSensorH is NULL");
+ _vp_sensor_destroy_handle(pSensor);
+ return NULL;
+ }
+
+ return (sensor_handle) pSensor;
+}
+
+void vp_sensor_destroy(sensor_handle pSensorHandle)
+{
+ if (pSensorHandle == NULL) {
+ VideoLogError("pSensorHandle is NULL");
+ return;
+ }
+
+ SensorHandle *pSensor = (SensorHandle *) pSensorHandle;
+
+ vp_sensor_unrealize(pSensorHandle);
+
+ _vp_sensor_destroy_handle(pSensor);
+}
+
+bool vp_sensor_realize(sensor_handle pSensorHandle)
+{
+ if (pSensorHandle == NULL) {
+ VideoLogError("pSensorHandle is NULL");
+ return FALSE;
+ }
+
+ VideoLogInfo(">> Sensor realize");
+
+ SensorHandle *pSensor = (SensorHandle *) pSensorHandle;
+ bool bReturn = TRUE;
+ int nRet = SENSOR_ERROR_NONE;
+ bool bEnableSensor = FALSE;
+ if (pSensor->bIsRealize) {
+ VideoLogWarning("Already Realize");
+ return TRUE;
+ }
+
+ nRet = sensor_is_supported(SENSOR_MOTION_DOUBLETAP, &bEnableSensor);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_is_supported is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ }
+
+ if (bEnableSensor) {
+ nRet =
+ sensor_motion_doubletap_set_cb(pSensor->pSensorH,
+ __vp_sensor_motion_doubletap_event_cb,
+ (void *) pSensor);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_motion_doubletap_set_cb is fail : 0x%x",
+ nRet);
+ bReturn = FALSE;
+ }
+
+ nRet = sensor_start(pSensor->pSensorH, SENSOR_MOTION_DOUBLETAP);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_start is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ }
+ }
+ pSensor->bFaceDownEnable = bEnableSensor;
+
+ nRet = sensor_is_supported(SENSOR_MOTION_FACEDOWN, &bEnableSensor);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_is_supported is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ }
+ if (bEnableSensor) {
+ nRet =
+ sensor_motion_facedown_set_cb(pSensor->pSensorH,
+ __vp_sensor_motion_facedown_event_cb,
+ (void *) pSensor);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_motion_facedown_set_cb is fail : 0x%x",
+ nRet);
+ bReturn = FALSE;
+ }
+
+ nRet = sensor_start(pSensor->pSensorH, SENSOR_MOTION_FACEDOWN);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_start is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ }
+ }
+ pSensor->bDoubleTabEnable = bEnableSensor;
+
+ pSensor->bIsRealize = TRUE;
+
+ VideoLogInfo("<< Sensor realize");
+
+ return bReturn;
+}
+
+bool vp_sensor_unrealize(sensor_handle pSensorHandle)
+{
+ if (pSensorHandle == NULL) {
+ VideoLogError("pSensorHandle is NULL");
+ return FALSE;
+ }
+
+ SensorHandle *pSensor = (SensorHandle *) pSensorHandle;
+ bool bReturn = TRUE;
+ int nRet = SENSOR_ERROR_NONE;
+
+ if (pSensor->bIsRealize == FALSE) {
+ VideoLogWarning("Not yet Realize");
+ return TRUE;
+ }
+
+ if (pSensor->bDoubleTabEnable) {
+ nRet = sensor_motion_doubletap_unset_cb(pSensor->pSensorH);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo
+ ("sensor_motion_doubletap_unset_cb is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ }
+
+ nRet = sensor_stop(pSensor->pSensorH, SENSOR_MOTION_DOUBLETAP);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_stop is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ } else {
+ pSensor->bDoubleTabEnable = FALSE;
+ }
+
+ }
+ if (pSensor->bFaceDownEnable) {
+ nRet = sensor_motion_facedown_unset_cb(pSensor->pSensorH);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_motion_facedown_unset_cb is fail : 0x%x",
+ nRet);
+ bReturn = FALSE;
+ }
+
+ nRet = sensor_stop(pSensor->pSensorH, SENSOR_MOTION_FACEDOWN);
+ if (nRet != SENSOR_ERROR_NONE) {
+ VideoLogInfo("sensor_stop is fail : 0x%x", nRet);
+ bReturn = FALSE;
+ } else {
+ pSensor->bFaceDownEnable = FALSE;
+ }
+
+ }
+
+ pSensor->bIsRealize = FALSE;
+
+ return bReturn;
+}
+
+bool vp_sensor_set_user_data(sensor_handle pSensorHandle, void *pUserData)
+{
+ if (pSensorHandle == NULL) {
+ VideoLogError("pSensorHandle is NULL");
+ return FALSE;
+ }
+
+ SensorHandle *pSensor = (SensorHandle *) pSensorHandle;
+
+ pSensor->pUserData = pUserData;
+
+ return TRUE;
+}
+
+#endif
diff --git a/playview/src/core/vp-sound.c b/playview/src/core/vp-sound.c
new file mode 100644
index 0000000..70d09c0
--- /dev/null
+++ b/playview/src/core/vp-sound.c
@@ -0,0 +1,450 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <sound_manager.h>
+#include "vp-play-macro-define.h"
+#include "vp-play-normal-view.h"
+#include "vp-sound.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+/* callback functions */
+
+/* internal functions */
+
+/* external functions */
+bool vp_sound_init_session()
+{
+ VideoLogInfo(">> Sound Session : Init");
+
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+ nRet = sound_manager_set_session_type(SOUND_SESSION_TYPE_MEDIA);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_session_type fail");
+ return FALSE;
+ }
+
+ nRet =
+ sound_manager_set_media_session_option
+ (SOUND_SESSION_OPTION_PAUSE_OTHERS_WHEN_START,
+ SOUND_SESSION_OPTION_INTERRUPTIBLE_DURING_PLAY);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_media_session_option fail");
+ return FALSE;
+ }
+
+ nRet = sound_manager_set_current_sound_type(SOUND_TYPE_MEDIA);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_current_sound_type fail");
+ return FALSE;
+ }
+// nRet = sound_manager_set_safety_volume(SOUND_SAFETY_VOL_TYPE_APP_VIDEO);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_safety_volume fail");
+ return FALSE;
+ }
+
+ VideoLogInfo("<< Sound Session : Init");
+
+ return TRUE;
+}
+
+bool vp_sound_deinit_session()
+{
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+
+// nRet = sound_manager_unset_safety_volume();
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_unset_safety_volume fail");
+// return FALSE;
+// }
+
+ nRet = sound_manager_unset_current_sound_type();
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_unset_current_sound_type fail");
+ return FALSE;
+ }
+// sound_manager_unset_available_route_changed_cb();
+ sound_manager_unset_volume_changed_cb();
+ /*
+ nRet = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_session_type fail");
+ return FALSE;
+ }
+ */
+ return TRUE;
+}
+
+bool vp_sound_get_volume(int *nValue)
+{
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+ int nVal = 0;
+ nRet = sound_manager_get_volume(SOUND_TYPE_MEDIA, &nVal);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_session_type fail");
+ return FALSE;
+ }
+
+ *nValue = nVal;
+
+ return TRUE;
+}
+
+bool vp_sound_set_volume(int nValue)
+{
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+
+ nRet = sound_manager_set_volume(SOUND_TYPE_MEDIA, nValue);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_volume fail");
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool vp_sound_get_max_volume(int *nMaxValue)
+{
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+ int nVal = 0;
+ nRet = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &nVal);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_session_type fail");
+ return FALSE;
+ }
+
+ *nMaxValue = nVal;
+
+ return TRUE;
+}
+
+bool vp_sound_get_active_device(video_sound_device_type_t *nDeviceType)
+{
+ sound_device_h device;
+ sound_device_type_e type = SOUND_DEVICE_BUILTIN_SPEAKER;
+ sound_device_list_h g_device_list = NULL;
+ sound_device_mask_e g_device_mask =
+ SOUND_DEVICE_IO_DIRECTION_OUT_MASK;
+// WARN_TRACE("Enter sound_manager_get_active_device");
+ int ret;
+ if ((ret =
+ sound_manager_get_current_device_list(g_device_mask,
+ &g_device_list)))
+// ERROR_TRACE("sound_manager_get_active_device()... [0x%x]", ret);
+
+
+ if (!
+ (ret =
+ sound_manager_get_next_device(g_device_list, &device))) {
+// ERROR_TRACE("success to get next device\n");
+ if ((ret = sound_manager_get_device_type(device, &type)))
+ return FALSE;
+ }
+
+
+ switch (type) {
+ case SOUND_DEVICE_BUILTIN_SPEAKER:
+ *nDeviceType = VP_SOUND_DEVICE_SPEAKER;
+ break;
+
+ case SOUND_DEVICE_AUDIO_JACK:
+ *nDeviceType = VP_SOUND_DEVICE_EARJACK;
+ break;
+
+ case SOUND_DEVICE_BLUETOOTH:
+ *nDeviceType = VP_SOUND_DEVICE_BLUETOOTH;
+ break;
+
+ case SOUND_DEVICE_HDMI:
+ *nDeviceType = VP_SOUND_DEVICE_HDMI;
+ break;
+
+ case SOUND_DEVICE_MIRRORING:
+ *nDeviceType = VP_SOUND_DEVICE_MIRRORING;
+ break;
+
+ case SOUND_DEVICE_USB_AUDIO:
+ *nDeviceType = VP_SOUND_DEVICE_USB_AUDIO;
+ break;
+
+ default:
+ *nDeviceType = VP_SOUND_DEVICE_SPEAKER;
+ break;
+ }
+
+ return TRUE;
+}
+
+
+bool vp_sound_is_sound_path_enable(bool *bIsSoundPath)
+{
+ bool bConnected = FALSE;
+
+ int nPathCount = 1; //speaker or headphone
+
+ sound_device_h device;
+ sound_device_type_e type;
+ sound_device_list_h g_device_list = NULL;
+ sound_device_mask_e g_device_mask =
+ SOUND_DEVICE_IO_DIRECTION_OUT_MASK;
+
+ int ret;
+ if ((ret =
+ sound_manager_get_current_device_list(g_device_mask,
+ &g_device_list)))
+ return bConnected;
+
+ while (!(ret = sound_manager_get_next_device(g_device_list, &device))) {
+ if ((ret = sound_manager_get_device_type(device, &type))) {
+ nPathCount++;
+ goto COUNT_CHECK;
+ }
+ }
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable);
+// if (bRouteAvailable)
+// {
+// nPathCount ++;
+// goto COUNT_CHECK;
+// }
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable);
+// if (bRouteAvailable)
+// {
+// nPathCount ++;
+// goto COUNT_CHECK;
+// }
+//
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable);
+// if (bRouteAvailable)
+// {
+// nPathCount ++;
+// goto COUNT_CHECK;
+// }
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable);
+// if (bRouteAvailable)
+// {
+// nPathCount ++;
+// goto COUNT_CHECK;
+// }
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable);
+// if (bRouteAvailable)
+// {
+// nPathCount ++;
+// goto COUNT_CHECK;
+// }
+
+COUNT_CHECK:
+ if (nPathCount > 1) {
+ bConnected = TRUE;
+ }
+
+ *bIsSoundPath = bConnected;
+
+ return bConnected;
+}
+
+sound_device_connected_cb vp_audio_jack_connected_cb(sound_device_h
+ device,
+ bool is_connected,
+ void *user_data)
+{
+ if (!user_data) {
+ return NULL;
+ }
+ sound_device_type_e type;
+ void *pPlayview = NULL;
+ pPlayview = user_data;
+ if (sound_manager_get_device_type(device, &type) ==
+ SOUND_MANAGER_ERROR_NONE) {
+ if (type == SOUND_DEVICE_AUDIO_JACK) {
+ vp_play_normal_view_show_volume_popup(pPlayview);
+ if (!is_connected)
+ vp_play_normal_view_pause_player(pPlayview);
+ }
+ }
+ return NULL;
+}
+
+bool vp_sound_device_is_enable(video_sound_device_type_t nDeviceType,
+ void *pUserdata)
+{
+ if (!pUserdata) {
+ return FALSE;
+ }
+ void *pPlayview = NULL;
+ pPlayview = pUserdata;
+ sound_device_h device;
+ sound_device_type_e type;
+ sound_device_list_h g_device_list = NULL;
+ sound_device_mask_e g_device_mask =
+ SOUND_DEVICE_IO_DIRECTION_OUT_MASK;
+
+ if (sound_manager_get_current_device_list
+ (g_device_mask, &g_device_list) != SOUND_MANAGER_ERROR_NONE)
+ return FALSE;
+
+ sound_manager_set_device_connected_cb
+ (SOUND_DEVICE_IO_DIRECTION_OUT_MASK,
+ (sound_device_connected_cb) vp_audio_jack_connected_cb,
+ (void *) pPlayview);
+
+ while (sound_manager_get_next_device(g_device_list, &device) ==
+ SOUND_MANAGER_ERROR_NONE) {
+ if (sound_manager_get_device_type(device, &type) ==
+ SOUND_MANAGER_ERROR_NONE) {
+ if (type == SOUND_DEVICE_AUDIO_JACK)
+ return TRUE;
+ }
+ }
+
+// switch (nDeviceType)
+// {
+// case VP_SOUND_DEVICE_SPEAKER:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+//
+// case VP_SOUND_DEVICE_EARJACK:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+//
+// case VP_SOUND_DEVICE_BLUETOOTH:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+//
+// case VP_SOUND_DEVICE_HDMI:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+//
+// case VP_SOUND_DEVICE_MIRRORING:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+//
+// case VP_SOUND_DEVICE_USB_AUDIO:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+//
+// default:
+// sound_manager_is_route_available(NULL, NULL, &bRouteAvailable); return bRouteAvailable;
+// }
+
+ return FALSE;
+
+}
+
+bool vp_sound_get_a2dp_name(char **szBTName)
+{
+// int nRet = SOUND_MANAGER_ERROR_NONE;
+ bool bIsConnect = FALSE;
+// nRet = sound_manager_get_a2dp_status (&bIsConnect, szBTName);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_get_a2dp_status fail");
+// VP_FREE(*szBTName);
+// return FALSE;
+// }
+
+ if (bIsConnect == FALSE) {
+ VideoLogError("Not connected BT");
+ VP_FREE(*szBTName);
+ }
+
+ return FALSE;
+// return TRUE;
+}
+
+bool vp_sound_set_active_route(video_sound_device_type_t nDeviceType)
+{
+ //int nRet = SOUND_MANAGER_ERROR_NONE;
+
+ if (nDeviceType == VP_SOUND_DEVICE_NONE) {
+ VideoLogError("Invalid device type");
+ return FALSE;
+ }
+// else if (nDeviceType == VP_SOUND_DEVICE_SPEAKER) {
+// nRet = sound_manager_set_active_route(NULL, NULL);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_set_active_route NULL fail");
+// return FALSE;
+// }
+// }
+// else if (nDeviceType == VP_SOUND_DEVICE_EARJACK) {
+// nRet = sound_manager_set_active_route(NULL, NULL);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_set_active_route SOUND_ROUTE_OUT_WIRED_ACCESSORY fail");
+// return FALSE;
+// }
+// }
+// else if (nDeviceType == VP_SOUND_DEVICE_BLUETOOTH) {
+// nRet = sound_manager_set_active_route(NULL, NULL);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_set_active_route NULL fail");
+// return FALSE;
+// }
+// }
+//
+// else if (nDeviceType == VP_SOUND_DEVICE_HDMI) {
+// nRet = sound_manager_set_active_route(NULL, NULL);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_set_active_route NULL fail");
+// return FALSE;
+// }
+// }
+// else if (nDeviceType == VP_SOUND_DEVICE_MIRRORING) {
+// nRet = sound_manager_set_active_route(NULL, NULL);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_set_active_route SOUND_ROUTE_OUT_MIRRORING fail");
+// return FALSE;
+// }
+// }
+// else if (nDeviceType == VP_SOUND_DEVICE_USB_AUDIO) {
+// nRet = sound_manager_set_active_route(NULL, NULL);
+// if (nRet != SOUND_MANAGER_ERROR_NONE) {
+// VideoLogError("sound_manager_set_active_route SOUND_ROUTE_OUT_USB_AUDIO fail");
+// return FALSE;
+// }
+// }
+
+ return TRUE;
+}
+
+bool vp_sound_set_route_change_cb(vp_sound_route_change_cb func,
+ void *pUserData)
+{
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+
+ //nRet = sound_manager_set_available_route_changed_cb((sound_available_route_changed_cb), pUserData);
+
+ sound_device_mask_e g_device_mask =
+ SOUND_DEVICE_IO_DIRECTION_OUT_MASK;
+
+ nRet =
+ sound_manager_set_device_information_changed_cb(g_device_mask,
+ NULL, pUserData);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError
+ ("sound_manager_set_available_route_changed_cb fail");
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool vp_sound_set_volume_change_cb(vp_sound_volume_change_cb func,
+ void *pUserData)
+{
+ int nRet = SOUND_MANAGER_ERROR_NONE;
+
+ nRet =
+ sound_manager_set_volume_changed_cb((sound_manager_volume_changed_cb) func, pUserData);
+ if (nRet != SOUND_MANAGER_ERROR_NONE) {
+ VideoLogError("sound_manager_set_volume_changed_cb fail");
+ return FALSE;
+ }
+ return TRUE;
+}
diff --git a/playview/src/feature/include/vp-audio-track.h b/playview/src/feature/include/vp-audio-track.h
new file mode 100644
index 0000000..68ef621
--- /dev/null
+++ b/playview/src/feature/include/vp-audio-track.h
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *audio_track_handle;
+
+
+audio_track_handle vp_audio_track_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, int nDefaultIndex);
+void vp_audio_track_destroy(audio_track_handle pAudioTrackHandle);
+bool vp_audio_track_realize(audio_track_handle pAudioTrackHandle);
+bool vp_audio_track_unrealize(audio_track_handle pAudioTrackHandle);
+bool vp_audio_track_add_Item(audio_track_handle pAudioTrackHandle, char *szCode, int nIndex);
+bool vp_audio_track_set_user_data(audio_track_handle pAudioTrackHandle, void *pUserData);
+bool vp_audio_track_get_name(char *szCode, char **szName);
+
diff --git a/playview/src/feature/include/vp-capture.h b/playview/src/feature/include/vp-capture.h
new file mode 100644
index 0000000..cfec85a
--- /dev/null
+++ b/playview/src/feature/include/vp-capture.h
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *capture_popup_handle;
+
+capture_popup_handle vp_capture_popup_create(Evas_Object *pParent, bool bCaptureOn, PopupCloseCbFunc pCloseCb);
+void vp_capture_popup_destroy(capture_popup_handle pCapturePopupHandle);
+bool vp_capture_popup_realize(capture_popup_handle pCapturePopupHandle);
+bool vp_capture_popup_unrealize(capture_popup_handle pCapturePopupHandle);
+bool vp_capture_popup_set_user_data(capture_popup_handle pCapturePopupHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-detail.h b/playview/src/feature/include/vp-detail.h
new file mode 100644
index 0000000..b73769b
--- /dev/null
+++ b/playview/src/feature/include/vp-detail.h
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *detail_handle;
+
+typedef struct _vp_detail_info{
+ char *szTitle;
+ char *szFormat;
+ char *szDate;
+ char *szSize;
+ char *szLastModified;
+ char *szResolution;
+ char *szLocation;
+ char *szLatitude;
+ char *szLongitude;
+
+ bool bDrm;
+ bool bForwardLock;
+ bool bPlayready;
+}vp_detail_info;
+
+
+detail_handle vp_detail_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, vp_detail_info *pDetailInfo);
+void vp_detail_destroy(detail_handle pDetailHandle);
+bool vp_detail_realize(detail_handle pDetailHandle);
+bool vp_detail_unrealize(detail_handle pDetailHandle);
+bool vp_detail_set_user_data(detail_handle pDetailHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-play-speed.h b/playview/src/feature/include/vp-play-speed.h
new file mode 100644
index 0000000..e71283e
--- /dev/null
+++ b/playview/src/feature/include/vp-play-speed.h
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *play_speed_popup;
+
+typedef void (*PlaySpeedUpdateCbFunc)(double fValue, void* pUserData);
+typedef void (*PlaySpeedDoneCbFunc)(double fValue, bool bSetValue, void* pUserData);
+
+
+play_speed_popup vp_play_speed_popup_create(Evas_Object *pParent, double fSpeedVal, PlaySpeedUpdateCbFunc pUpdateCb, PlaySpeedDoneCbFunc pDoneCb);
+void vp_play_speed_popup_destroy(play_speed_popup pPlaySpeedHandle);
+bool vp_play_speed_popup_realize(play_speed_popup pPlaySpeedHandle);
+bool vp_play_speed_popup_unrealize(play_speed_popup pPlaySpeedHandle);
+bool vp_play_speed_popup_set_user_data(play_speed_popup pPlaySpeedHandle, void *pUserData);
diff --git a/playview/src/feature/include/vp-repeat.h b/playview/src/feature/include/vp-repeat.h
new file mode 100644
index 0000000..b228f8b
--- /dev/null
+++ b/playview/src/feature/include/vp-repeat.h
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *repeat_handle;
+
+
+repeat_handle vp_repeat_create(Evas_Object *pParent, char *pMediaUrl, PopupCloseCbFunc pCloseCb);
+void vp_repeat_destroy(repeat_handle pRepeatHandle);
+bool vp_repeat_realize(repeat_handle pRepeatHandle);
+bool vp_repeat_unrealize(repeat_handle pRepeatHandle);
+bool vp_repeat_set_user_data(repeat_handle pRepeatHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-setting.h b/playview/src/feature/include/vp-setting.h
new file mode 100644
index 0000000..0892b4c
--- /dev/null
+++ b/playview/src/feature/include/vp-setting.h
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *setting_popup_handle;
+
+typedef enum {
+ VP_SETTING_MODE_NONE = 0x00,
+ VP_SETTING_MODE_PLAY_SPEED,
+ VP_SETTING_MODE_SOUND_ALIVE,
+ VP_SETTING_MODE_AUDIO_TRACK,
+ VP_SETTING_MODE_REPEAT_MODE,
+ VP_SETTING_MODE_CAPTURE,
+}vp_setting_mode_t;
+
+typedef struct _SettingInfo{
+ float fSpeed;
+ int nSoundAlive;
+ bool bSelectSubtitle;
+ char *szAudioTrack;
+ int nRepeatMode;
+ bool bCapture;
+ bool bTagBuddy;
+ bool bEditWeatherTag;
+ bool bStreaming;
+ bool bRepeat;
+ bool bDrm;
+ bool bExternalMode;
+ bool bShowEditWeather;
+}SettingInfo;
+
+setting_popup_handle vp_setting_create(Evas_Object *pParent, SettingInfo *pSettingInfo, PopupCloseCbFunc pCloseCb);
+void vp_setting_destroy(setting_popup_handle pSettingHandle);
+bool vp_setting_realize(setting_popup_handle pSettingHandle);
+bool vp_setting_unrealize(setting_popup_handle pSettingHandle);
+bool vp_setting_set_user_data(setting_popup_handle pSettingHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-share.h b/playview/src/feature/include/vp-share.h
new file mode 100644
index 0000000..883052a
--- /dev/null
+++ b/playview/src/feature/include/vp-share.h
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *share_handle;
+
+typedef enum {
+ VP_SHARE_NONE = 0x00,
+ VP_SHARE_MESSAGE,
+ VP_SHARE_EMAIL,
+ VP_SHARE_BLUETOOTH,
+ VP_SHARE_FTM,
+ VP_SHARE_FACEBOOK,
+ VP_SHARE_YOUTUBE,
+ VP_SHARE_NFC,
+ VP_SHARE_FILE_TRANSFER,
+ VP_SHARE_DROP_BOX,
+}video_share_type_t;
+
+share_handle vp_share_create(Evas_Object *pParent, char *pMediaUrl, PopupCloseCbFunc pCloseCb);
+void vp_share_destroy(share_handle pShareHandle);
+bool vp_share_realize(share_handle pShareHandle);
+bool vp_share_unrealize(share_handle pShareHandle);
+bool vp_share_set_user_data(share_handle pShareHandle, void *pUserData);
+
+
diff --git a/playview/src/feature/include/vp-sound-alive.h b/playview/src/feature/include/vp-sound-alive.h
new file mode 100644
index 0000000..4a84589
--- /dev/null
+++ b/playview/src/feature/include/vp-sound-alive.h
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *sound_alive_handle;
+
+sound_alive_handle vp_sound_alive_create(Evas_Object *pParent, char *pMediaUrl, PopupCloseCbFunc pCloseCb, video_sound_alive_t nType);
+void vp_sound_alive_destroy(sound_alive_handle pSAHandle);
+bool vp_sound_alive_realize(sound_alive_handle pSAHandle);
+bool vp_sound_alive_unrealize(sound_alive_handle pSAHandle);
+bool vp_sound_alive_set_user_data(sound_alive_handle pSAHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-sound-path.h b/playview/src/feature/include/vp-sound-path.h
new file mode 100644
index 0000000..35a2073
--- /dev/null
+++ b/playview/src/feature/include/vp-sound-path.h
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <glib.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *sound_path_handle;
+
+sound_path_handle vp_sound_path_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb);
+void vp_sound_path_destroy(sound_path_handle pSoundPathHandle);
+bool vp_sound_path_realize(sound_path_handle pSoundPathHandle);
+bool vp_sound_path_unrealize(sound_path_handle pSoundPathHandle);
+bool vp_sound_path_set_user_data(sound_path_handle pSoundPathHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-alignment.h b/playview/src/feature/include/vp-subtitle-alignment.h
new file mode 100644
index 0000000..74845f5
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-alignment.h
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_alignment_handle;
+
+typedef void (*SubtitleAlignmentUpdateCbFunc)(double fValue, void* pUserData);
+
+subtitle_alignment_handle vp_subtitle_alignment_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, int nDefaultAlign);
+void vp_subtitle_alignment_destroy(subtitle_alignment_handle pSubtitleAlignmentHandle);
+bool vp_subtitle_alignment_realize(subtitle_alignment_handle pSubtitleAlignmentHandle);
+bool vp_subtitle_alignment_unrealize(subtitle_alignment_handle pSubtitleAlignmentHandle);
+bool vp_subtitle_alignment_set_user_data(subtitle_alignment_handle pSubtitleAlignmentHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-bg-color.h b/playview/src/feature/include/vp-subtitle-bg-color.h
new file mode 100644
index 0000000..5f13b2c
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-bg-color.h
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_bg_color_handle;
+
+
+subtitle_bg_color_handle vp_subtitle_bg_color_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, int nDefaultColor);
+void vp_subtitle_bg_color_destroy(subtitle_bg_color_handle pSubtitleBGColorHandle);
+bool vp_subtitle_bg_color_realize(subtitle_bg_color_handle pSubtitleBGColorHandle);
+bool vp_subtitle_bg_color_unrealize(subtitle_bg_color_handle pSubtitleBGColorHandle);
+bool vp_subtitle_bg_color_set_user_data(subtitle_bg_color_handle pSubtitleBGColorHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-color.h b/playview/src/feature/include/vp-subtitle-color.h
new file mode 100644
index 0000000..661b9b3
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-color.h
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_color_handle;
+
+typedef void (*SubtitleColorUpdateCbFunc)(double fValue, void* pUserData);
+
+#ifndef SUBTITLE_K_FEATURE
+typedef void (*SubtitlePopupCloseCbFunc)(int nType, bool bPause, void* pUserData);
+#else
+typedef void (*SubtitlePopupCloseCbFunc)(char *pColorHex, bool bSetValue, void* pUserData);
+#endif
+
+#ifndef SUBTITLE_K_FEATURE
+subtitle_color_handle vp_subtitle_color_create(Evas_Object *pParent, SubtitlePopupCloseCbFunc pCloseCb, int nDefaultColor);
+#else
+subtitle_color_handle vp_subtitle_color_hex_create(Evas_Object *pParent, SubtitlePopupCloseCbFunc pCloseCb, char *pDefaultColor);
+#endif
+void vp_subtitle_color_destroy(subtitle_color_handle pSubtitleFontColorHandle);
+bool vp_subtitle_color_realize(subtitle_color_handle pSubtitleFontColorHandle);
+bool vp_subtitle_color_unrealize(subtitle_color_handle pSubtitleFontColorHandle);
+bool vp_subtitle_color_set_user_data(subtitle_color_handle pSubtitleFontColorHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-edge.h b/playview/src/feature/include/vp-subtitle-edge.h
new file mode 100644
index 0000000..ce9b76d
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-edge.h
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_edge_handle;
+
+
+subtitle_edge_handle vp_subtitle_edge_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, int nDefaultSize);
+void vp_subtitle_edge_destroy(subtitle_edge_handle pSubtitleSizeHandle);
+bool vp_subtitle_edge_realize(subtitle_edge_handle pSubtitleSizeHandle);
+bool vp_subtitle_edge_unrealize(subtitle_edge_handle pSubtitleSizeHandle);
+bool vp_subtitle_edge_set_user_data(subtitle_edge_handle pSubtitleSizeHandle, void *pUserData);
+
+
diff --git a/playview/src/feature/include/vp-subtitle-font.h b/playview/src/feature/include/vp-subtitle-font.h
new file mode 100644
index 0000000..44c2b89
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-font.h
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_font_handle;
+
+typedef void (*SubtitleFontCbFunc)(char *szSelectURL, void* pUserData);
+
+subtitle_font_handle vp_subtitle_font_create(Evas_Object *pParent, SubtitleFontCbFunc pCloseCb, char *szCurrentFont);
+void vp_subtitle_font_destroy(subtitle_font_handle pSubtitleFontHandle);
+bool vp_subtitle_font_realize(subtitle_font_handle pSubtitleFontHandle);
+bool vp_subtitle_font_unrealize(subtitle_font_handle pSubtitleFontHandle);
+bool vp_subtitle_font_set_user_data(subtitle_font_handle pSubtitleFontHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-select.h b/playview/src/feature/include/vp-subtitle-select.h
new file mode 100644
index 0000000..0e2d102
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-select.h
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <glib.h>
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_select_handle;
+
+typedef void (*SubtitleCloseCbFunc)(char *szSelectURL, void* pUserData);
+
+subtitle_select_handle vp_subtitle_select_create(Evas_Object *pParent, SubtitleCloseCbFunc pCloseCb, SubtitleCloseCbFunc pButtonCb, GList *pFileList, char *szCurrentPath, bool isSubtitleOff);
+void vp_subtitle_select_destroy(subtitle_select_handle pSubtitleSelectHandle);
+bool vp_subtitle_select_realize(subtitle_select_handle pSubtitleSelectHandle);
+bool vp_subtitle_select_unrealize(subtitle_select_handle pSubtitleSelectHandle);
+bool vp_subtitle_select_set_user_data(subtitle_select_handle pSubtitleSelectHandle, void *pUserData);
diff --git a/playview/src/feature/include/vp-subtitle-size.h b/playview/src/feature/include/vp-subtitle-size.h
new file mode 100644
index 0000000..a399c4d
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-size.h
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_size_handle;
+
+
+subtitle_size_handle vp_subtitle_size_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, int nDefaultSize);
+void vp_subtitle_size_destroy(subtitle_size_handle pSubtitleSizeHandle);
+bool vp_subtitle_size_realize(subtitle_size_handle pSubtitleSizeHandle);
+bool vp_subtitle_size_unrealize(subtitle_size_handle pSubtitleSizeHandle);
+bool vp_subtitle_size_set_user_data(subtitle_size_handle pSubtitleSizeHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-sync.h b/playview/src/feature/include/vp-subtitle-sync.h
new file mode 100644
index 0000000..7f19651
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-sync.h
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_sync_popup;
+
+typedef void (*SubtitleSyncUpdateCbFunc)(float fValue, void* pUserData);
+typedef void (*SubtitleSyncDoneCbFunc)(float fValue, bool bSetValue, void* pUserData);
+
+
+subtitle_sync_popup vp_subtitle_sync_popup_create(Evas_Object *pParent, float fSyncVal, SubtitleSyncUpdateCbFunc pUpdateCb, SubtitleSyncDoneCbFunc pDoneCb);
+void vp_subtitle_sync_popup_destroy(subtitle_sync_popup pSubtitleSync);
+bool vp_subtitle_sync_popup_realize(subtitle_sync_popup pSubtitleSync);
+bool vp_subtitle_sync_popup_unrealize(subtitle_sync_popup pSubtitleSync);
+bool vp_subtitle_sync_popup_set_user_data(subtitle_sync_popup pSubtitleSync, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-subtitle-track.h b/playview/src/feature/include/vp-subtitle-track.h
new file mode 100644
index 0000000..6396da4
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle-track.h
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+typedef void (*SubtitleLanguageChangeCbFunc)(int index, void* pUserData);
+#endif
+typedef void *subtitle_track_handle;
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+subtitle_track_handle vp_subtitle_track_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb);
+#else
+subtitle_track_handle vp_subtitle_track_create(Evas_Object *pParent, PopupCloseCbFunc pCloseCb, int nDefaultIndex);
+#endif
+void vp_subtitle_track_destroy(subtitle_track_handle pSubtitleTrackHandle);
+bool vp_subtitle_track_realize(subtitle_track_handle pSubtitleTrackHandle);
+bool vp_subtitle_track_unrealize(subtitle_track_handle pSubtitleTrackHandle);
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+bool vp_subtitle_track_add_Item(subtitle_track_handle pSubtitleTrackHandle, char *szCode, int nIndex, bool bCheck);
+#else
+bool vp_subtitle_track_add_Item(subtitle_track_handle pSubtitleTrackHandle, char *szCode, int nIndex);
+#endif
+bool vp_subtitle_track_set_user_data(subtitle_track_handle pSubtitleTrackHandle, void *pUserData);
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+bool vp_subtitle_track_set_add_language_cb(subtitle_track_handle pSubtitleTrackHandle, SubtitleLanguageChangeCbFunc pCallback);
+bool vp_subtitle_track_set_remove_language_cb(subtitle_track_handle pSubtitleTrackHandle, SubtitleLanguageChangeCbFunc pCallback);
+#endif
+bool vp_subtitle_track_get_name(char *szCode, char **szName);
+
diff --git a/playview/src/feature/include/vp-subtitle.h b/playview/src/feature/include/vp-subtitle.h
new file mode 100644
index 0000000..f7ab0f1
--- /dev/null
+++ b/playview/src/feature/include/vp-subtitle.h
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include <vp-play-popup.h>
+
+typedef void *subtitle_popup_handle;
+
+typedef enum {
+ VP_SUBTITLE_MODE_NONE = 0x00,
+ VP_SUBTITLE_MODE_ACTIVATION,
+ VP_SUBTITLE_MODE_SYNC,
+ VP_SUBTITLE_MODE_SELECT,
+ VP_SUBTITLE_MODE_LANGUAGE,
+#ifdef SUBTITLE_K_FEATURE
+ VP_SUBTITLE_MODE_ALIGNMENT,
+#endif
+ VP_SUBTITLE_MODE_FONT,
+ VP_SUBTITLE_MODE_SIZE,
+ VP_SUBTITLE_MODE_TEXT,
+ VP_SUBTITLE_MODE_BG_COLOR,
+#ifdef SUBTITLE_K_FEATURE
+ VP_SUBTITLE_MODE_CAPTION_WINDOW,
+#endif
+ VP_SUBTITLE_MODE_EDGE,
+ VP_SUBTITLE_MODE_CLOSE
+}vp_subtitle_mode_t;
+
+typedef enum {
+ VP_SUBTITLE_EDGE_NO_EDGE = 0x00,
+ VP_SUBTITLE_EDGE_RAISED,
+ VP_SUBTITLE_EDGE_DEPRESSED,
+ VP_SUBTITLE_EDGE_UNIFORM,
+ VP_SUBTITLE_EDGE_DROP_SHADOW
+}vp_subtitle_edge_t;
+
+
+typedef struct _SubtitleInfo{
+ bool bClosedCaption;
+ bool original_activation;
+ float fSync;
+ char *szURL;
+ char *szText;
+ char *szLanguage;
+#ifdef SUBTITLE_K_FEATURE
+ video_play_subtitle_alignment_t eAlignment;
+ video_play_subtitle_alignment_t original_eAlignment;
+#endif
+ char *szFontName;
+ float fZoom;
+ int nFontSize;
+ int original_nFontSize;
+ int nEdge;
+#ifndef SUBTITLE_K_FEATURE
+ int nTextColor;
+ int nBGColor;
+#else
+ char *pTextColorHex;
+ char *pBGColorHex;
+ char *pCaptionWinColorHex;
+#endif
+ bool bSupportSelect;
+}SubtitleInfo;
+
+
+subtitle_popup_handle vp_subtitle_create(Evas_Object *pParent, SubtitleInfo *pSubtitleInfo, PopupCloseCbFunc pCloseCb);
+void vp_subtitle_destroy(subtitle_popup_handle pSubtitleHandle);
+bool vp_subtitle_realize(subtitle_popup_handle pSubtitleHandle);
+bool vp_subtitle_unrealize(subtitle_popup_handle pSubtitleHandle);
+bool vp_subtitle_update(subtitle_popup_handle pSubtitleHandle, SubtitleInfo *pSubtitleInfo);
+bool vp_subtitle_set_user_data(subtitle_popup_handle pSubtitleHandle, void *pUserData);
+
diff --git a/playview/src/feature/include/vp-zoom-guide.h b/playview/src/feature/include/vp-zoom-guide.h
new file mode 100644
index 0000000..0c39b37
--- /dev/null
+++ b/playview/src/feature/include/vp-zoom-guide.h
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *zoom_guide_handle;
+
+zoom_guide_handle vp_zoom_guide_create(Evas_Object *pParent);
+void vp_zoom_guide_destroy(zoom_guide_handle pWidgetHandle);
+bool vp_zoom_guide_realize(zoom_guide_handle pWidgetHandle);
+bool vp_zoom_guide_unrealize(zoom_guide_handle pWidgetHandle);
+Evas_Object *vp_zoom_guide_get_object(zoom_guide_handle pWidgetHandle);
+bool vp_zoom_guide_set_zoom_value(zoom_guide_handle pWidgetHandle, double fZoomVal);
+bool vp_zoom_guide_get_zoom_value(zoom_guide_handle pWidgetHandle, double *fZoomVal);
+bool vp_zoom_guide_set_move_position(zoom_guide_handle pWidgetHandle, double fPosX, double fPosY);
+bool vp_zoom_guide_get_move_position(zoom_guide_handle pWidgetHandle, double *fPosX, double *fPosY);
+bool vp_zoom_guide_get_real_position(zoom_guide_handle pWidgetHandle, double *fPosX, double *fPosY);
+bool vp_zoom_guide_update(zoom_guide_handle pWidgetHandle);
+
+
diff --git a/playview/src/feature/vp-audio-track.c b/playview/src/feature/vp-audio-track.c
new file mode 100644
index 0000000..772858a
--- /dev/null
+++ b/playview/src/feature/vp-audio-track.c
@@ -0,0 +1,649 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-audio-track.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_AUDIO_TRACK_GENLIST_DATA_KEY "vp.audio.track.genlist"
+
+typedef struct _RegionCode {
+ char *szCode;
+ char *szName;
+} RegionCode;
+
+
+static RegionCode st_RegionCode[] = {
+ {"az", "Azerbaijani"},
+ {"ca", "Catalan"},
+ {"cs", "Czech"},
+ {"sr", "Serbian"},
+ {"da", "Danish"},
+ {"de", "German"},
+ {"et", "Estonian"},
+ {"en", "English"},
+ {"es", "Spanish"},
+ {"eu", "Basque"},
+ {"fr", "French"},
+ {"gl", "Galician"},
+ {"hr", "Croatian"},
+ {"is", "Icelandic"},
+ {"it", "Italian"},
+ {"lv", "Latvian"},
+ {"lt", "Lithuanian"},
+ {"hu", "Hungarian"},
+ {"nl", "Dutch"},
+ {"nb", "Norwegian"},
+ {"uz", "Uzbek"},
+ {"pl", "Polish"},
+ {"pt", "Portuguese"},
+ {"ru", "Russian"},
+ {"ro", "Romanian"},
+ {"sk", "Slovak"},
+ {"sl", "Slovenian"},
+ {"fi", "Finnish"},
+ {"sv", "Swedish"},
+ {"tr", "Turkish"},
+ {"el", "Greek"},
+ {"bg", "Bulgarian"},
+ {"kk", "Kazakh"},
+ {"uk", "Ukrainian"},
+ {"hy", "Armenian"},
+ {"ka", "Georgian"},
+ {"ko", "Korean"},
+ {"ja", "Japanese"},
+};
+
+
+typedef struct _AudioTrackItem {
+ Elm_Object_Item *pItem;
+ char *szName;
+ int nIndex;
+} AudioTrackItem;
+
+
+typedef struct _AudioTrackPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_AudioTrack_Itc;
+
+ int nDefaultIndex;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+
+ GList *pItemList;
+ int nAudoTrackIdx;
+} AudioTrackPopup;
+
+
+
+static void _vp_audio_track_destroy_handle(AudioTrackPopup *pAudioTrack);
+static void __vp_audio_track_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info);
+static void __vp_audio_track_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info);
+static void __vp_audio_track_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+
+/* callback functions */
+static char *__vp_audio_track_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+ AudioTrackItem *pItem = (AudioTrackItem *) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ if (pItem->szName) {
+ return strdup(pItem->szName);
+ }
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_audio_track_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ AudioTrackItem *pItem = (AudioTrackItem *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ Evas_Object *pRadioObj = NULL;
+
+ AudioTrackPopup *pAudioTrack =
+ (AudioTrackPopup *) evas_object_data_get(pObj,
+ VP_AUDIO_TRACK_GENLIST_DATA_KEY);
+ if (pAudioTrack == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ if (pAudioTrack->pItemList == NULL) {
+ VideoLogWarning("pItemList is NULL");
+ return NULL;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, pItem->nIndex);
+ elm_radio_group_add(pRadioObj, pAudioTrack->pRadio);
+ elm_radio_value_set(pAudioTrack->pRadio,
+ pAudioTrack->nAudoTrackIdx);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_audio_track_genlist_item_selected_cb,
+ pAudioTrack);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_audio_track_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pElmItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ AudioTrackItem *pItem =
+ (AudioTrackItem *) elm_object_item_data_get(pElmItem);
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pUserData;
+
+ if (pItem == NULL) {
+ VideoLogError("pItem is NULL");
+ return;
+ }
+
+ pAudioTrack->nAudoTrackIdx = pItem->nIndex;
+ if (pAudioTrack->pCloseCb) {
+ pAudioTrack->pCloseCb(pItem->nIndex, FALSE,
+ (void *) pAudioTrack->pUserData);
+ }
+}
+
+static void __vp_audio_track_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pUserData;
+
+ if (pAudioTrack->pCloseCb) {
+ pAudioTrack->pCloseCb(-1, FALSE, (void *) pAudioTrack->pUserData);
+ }
+}
+
+static void __vp_audio_track_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pUserData;
+
+ if (pAudioTrack->pCloseCb) {
+ pAudioTrack->pCloseCb(-1, FALSE,
+ (void *) pAudioTrack->pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_audio_track_clear_item_list(AudioTrackPopup *pAudioTrack)
+{
+ if (pAudioTrack == NULL) {
+ VideoLogError("pAudioTrack is NULL");
+ return;
+ }
+
+ if (pAudioTrack->pItemList == NULL) {
+ VideoLogError("pAudioTrack->pItemList is NULL");
+ return;
+ }
+
+
+ int len = g_list_length(pAudioTrack->pItemList);
+ int idx = 0;
+ for (idx = 0; idx < len; idx++) {
+ AudioTrackItem *pItem = NULL;
+
+ pItem =
+ (AudioTrackItem *) g_list_nth_data(pAudioTrack->pItemList,
+ idx);
+ if (pItem) {
+ VP_EVAS_ITEM_DEL(pItem->pItem);
+ VP_FREE(pItem->szName);
+ VP_FREE(pItem);
+ }
+ }
+
+ g_list_free(pAudioTrack->pItemList);
+ pAudioTrack->pItemList = NULL;
+}
+
+static void _vp_audio_track_destroy_handle(AudioTrackPopup *pAudioTrack)
+{
+ if (pAudioTrack == NULL) {
+ VideoLogError("pAudioTrack is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pAudioTrack->pGenList, "realized",
+ __vp_audio_track_genlist_realized);
+ evas_object_smart_callback_del(pAudioTrack->pParent,
+ "rotation,changed",
+ __vp_audio_track_popup_rotate_cb);
+
+ _vp_audio_track_clear_item_list(pAudioTrack);
+
+
+ VP_EVAS_DEL(pAudioTrack->pRadio);
+ VP_EVAS_DEL(pAudioTrack->pGenList);
+ VP_EVAS_DEL(pAudioTrack->pButton);
+ VP_EVAS_DEL(pAudioTrack->pBox);
+
+ if (pAudioTrack->st_AudioTrack_Itc) {
+ elm_genlist_item_class_free(pAudioTrack->st_AudioTrack_Itc);
+ pAudioTrack->st_AudioTrack_Itc = NULL;
+ }
+
+
+ VP_EVAS_DEL(pAudioTrack->pPopup);
+
+ VP_FREE(pAudioTrack);
+}
+
+static Evas_Object *_vp_audio_track_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_audio_track_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pUserData;
+
+ if (pAudioTrack->st_AudioTrack_Itc) {
+ elm_genlist_item_class_free(pAudioTrack->st_AudioTrack_Itc);
+ pAudioTrack->st_AudioTrack_Itc = NULL;
+ }
+
+ pAudioTrack->st_AudioTrack_Itc = elm_genlist_item_class_new();
+ if (pAudioTrack->st_AudioTrack_Itc == NULL) {
+ VideoLogError("failed to create genlist class");
+ return FALSE;
+ }
+
+ pAudioTrack->st_AudioTrack_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pAudioTrack->st_AudioTrack_Itc->item_style = "1text.1icon.3/popup";
+ pAudioTrack->st_AudioTrack_Itc->func.text_get =
+ (void *) __vp_audio_track_genlist_text_get_cb;
+ pAudioTrack->st_AudioTrack_Itc->func.content_get =
+ (void *) __vp_audio_track_genlist_content_get_cb;
+ pAudioTrack->st_AudioTrack_Itc->func.state_get = NULL;
+ pAudioTrack->st_AudioTrack_Itc->func.del = NULL;
+ int len = g_list_length(pAudioTrack->pItemList);
+ int idx = 0;
+ pAudioTrack->nListCount = 0;
+
+ for (idx = 0; idx < len; idx++) {
+ AudioTrackItem *pItem = NULL;
+
+ pItem =
+ (AudioTrackItem *) g_list_nth_data(pAudioTrack->pItemList,
+ idx);
+ if (pItem) {
+ pItem->pItem =
+ elm_genlist_item_append(pObj,
+ pAudioTrack->st_AudioTrack_Itc,
+ (void *) pItem, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_audio_track_genlist_item_selected_cb,
+ pUserData);
+ pAudioTrack->nListCount++;
+ }
+ }
+
+
+
+ return TRUE;
+}
+
+static void __vp_audio_track_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_audio_track_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) data;
+ if (!pAudioTrack) {
+ VideoLogError("pAudioTrack IS null");
+ return;
+ }
+ if (pAudioTrack->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pAudioTrack->pParent, pAudioTrack->pBox,
+ pAudioTrack->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* external functions */
+audio_track_handle vp_audio_track_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb,
+ int nDefaultIndex)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ AudioTrackPopup *pAudioTrack = NULL;
+
+ pAudioTrack = calloc(1, sizeof(AudioTrackPopup));
+
+ if (pAudioTrack == NULL) {
+ VideoLogError("pAudioTrack alloc fail");
+ return NULL;
+ }
+
+ pAudioTrack->pParent = pParent;
+ pAudioTrack->pCloseCb = pCloseCb;
+
+ pAudioTrack->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_POPUP_AUDIO_TRACK, NULL, 0.0, NULL,
+ __vp_audio_track_popup_key_event_cb,
+ __vp_audio_track_popup_mouse_event_cb,
+ (void *) pAudioTrack);
+ if (pAudioTrack->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_audio_track_destroy_handle(pAudioTrack);
+ return NULL;
+ }
+
+ pAudioTrack->pGenList =
+ _vp_audio_track_create_genlist(pAudioTrack->pPopup);
+ if (pAudioTrack->pGenList == NULL) {
+ VideoLogError("_vp_audio_track_create_genlist fail");
+ _vp_audio_track_destroy_handle(pAudioTrack);
+ return NULL;
+ }
+ evas_object_smart_callback_add(pAudioTrack->pGenList, "realized",
+ __vp_audio_track_genlist_realized,
+ NULL);
+ evas_object_smart_callback_add(pAudioTrack->pParent,
+ "rotation,changed",
+ __vp_audio_track_popup_rotate_cb,
+ pAudioTrack);
+
+ evas_object_data_set(pAudioTrack->pGenList,
+ VP_AUDIO_TRACK_GENLIST_DATA_KEY,
+ (void *) pAudioTrack);
+ pAudioTrack->nDefaultIndex = nDefaultIndex;
+
+ pAudioTrack->pRadio = elm_radio_add(pAudioTrack->pGenList);
+ pAudioTrack->pBox = elm_box_add(pAudioTrack->pPopup);
+
+
+ return pAudioTrack;
+}
+
+void vp_audio_track_destroy(audio_track_handle pAudioTrackHandle)
+{
+ if (pAudioTrackHandle == NULL) {
+ VideoLogError("pAudioTrackHandle is NULL");
+ return;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pAudioTrackHandle;
+
+ _vp_audio_track_destroy_handle(pAudioTrack);
+
+}
+
+bool vp_audio_track_realize(audio_track_handle pAudioTrackHandle)
+{
+ if (pAudioTrackHandle == NULL) {
+ VideoLogError("pAudioTrackHandle is NULL");
+ return FALSE;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pAudioTrackHandle;
+
+ int len = g_list_length(pAudioTrack->pItemList);
+ pAudioTrack->nListCount = len;
+ if (len == 1) {
+ vp_popup_set_popup_min_size(pAudioTrack->pParent,
+ pAudioTrack->pBox,
+ pAudioTrack->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ elm_scroller_policy_set(pAudioTrack->pGenList,
+ ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+ } else {
+ vp_popup_set_popup_min_size(pAudioTrack->pParent,
+ pAudioTrack->pBox,
+ pAudioTrack->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ }
+
+ elm_box_pack_end(pAudioTrack->pBox, pAudioTrack->pGenList);
+ elm_object_content_set(pAudioTrack->pPopup, pAudioTrack->pBox);
+
+ if (!_vp_audio_track_add_genlist_item
+ (pAudioTrack->pGenList, (void *) pAudioTrack)) {
+ VideoLogError("_vp_audio_track_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pAudioTrack->pRadio, pAudioTrack->nDefaultIndex);
+ pAudioTrack->nAudoTrackIdx = pAudioTrack->nDefaultIndex;
+
+ evas_object_show(pAudioTrack->pPopup);
+
+ return TRUE;
+}
+
+bool vp_audio_track_unrealize(audio_track_handle pAudioTrackHandle)
+{
+ if (pAudioTrackHandle == NULL) {
+ VideoLogError("pAudioTrackHandle is NULL");
+ return FALSE;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pAudioTrackHandle;
+
+ _vp_audio_track_clear_item_list(pAudioTrack);
+
+ evas_object_hide(pAudioTrack->pPopup);
+
+ return TRUE;
+}
+
+bool vp_audio_track_add_Item(audio_track_handle pAudioTrackHandle,
+ char *szCode, int nIndex)
+{
+ if (pAudioTrackHandle == NULL) {
+ VideoLogError("pAudioTrackHandle is NULL");
+ return FALSE;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pAudioTrackHandle;
+
+ AudioTrackItem *pItem = calloc(1, sizeof(AudioTrackItem));
+ if (pItem == NULL) {
+ VideoLogError("AudioTrackItem alloc fail");
+ return FALSE;
+ }
+
+ pItem->nIndex = nIndex;
+
+ int nCount = sizeof(st_RegionCode) / sizeof(RegionCode);
+
+ int nSelectIdex = -1;
+ int nIdx = 0;
+ for (nIdx = 0; nIdx < nCount; nIdx++) {
+ if (!strcmp(st_RegionCode[nIdx].szCode, szCode)) {
+ nSelectIdex = nIdx;
+ break;
+ }
+ }
+
+ if (nSelectIdex == -1) {
+ char *szDefaultTrack =
+ g_strdup_printf("%s %d", VP_PLAY_STRING_AUDIO_TRACK, 0);
+
+ if (!strcmp(szDefaultTrack, szCode)) {
+ VP_STRDUP(pItem->szName, szCode);
+ } else {
+ VP_STRDUP(pItem->szName, VP_PLAY_STRING_COM_UNKNOWN);
+ }
+ VP_FREE(szDefaultTrack);
+ } else {
+ VP_STRDUP(pItem->szName, st_RegionCode[nSelectIdex].szName);
+ }
+
+ pAudioTrack->pItemList = g_list_append(pAudioTrack->pItemList, pItem);
+
+ return TRUE;
+}
+
+bool vp_audio_track_set_user_data(audio_track_handle pAudioTrackHandle,
+ void *pUserData)
+{
+ if (pAudioTrackHandle == NULL) {
+ VideoLogError("pAudioTrackHandle is NULL");
+ return FALSE;
+ }
+
+ AudioTrackPopup *pAudioTrack = (AudioTrackPopup *) pAudioTrackHandle;
+
+ pAudioTrack->pUserData = pUserData;
+
+ return TRUE;
+}
+
+bool vp_audio_track_get_name(char *szCode, char **szName)
+{
+ if (szCode == NULL) {
+ VideoLogError("szCode is NULL");
+ return FALSE;
+ }
+ int nCount = sizeof(st_RegionCode) / sizeof(RegionCode);
+
+ int nIdx = 0;
+ for (nIdx = 0; nIdx < nCount; nIdx++) {
+ if (!strcmp(st_RegionCode[nIdx].szCode, szCode)) {
+ VP_STRDUP(*szName, st_RegionCode[nIdx].szName);
+ return TRUE;
+ }
+ }
+
+ if (*szName == NULL) {
+ VP_STRDUP(*szName, VP_PLAY_STRING_COM_UNKNOWN);
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-capture.c b/playview/src/feature/vp-capture.c
new file mode 100644
index 0000000..a53c3a6
--- /dev/null
+++ b/playview/src/feature/vp-capture.c
@@ -0,0 +1,455 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+#include "vp-capture.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_CAPTURE_POPUP_GENLIST_DATA_KEY "vp.capture.popup.genlist"
+
+typedef struct _CapturePopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_Capture_Itc;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ bool bCaptureOn;
+} CapturePopup;
+
+
+
+static void _vp_capture_popup_destroy_handle(CapturePopup *
+ pCapturePopup);
+static void __vp_capture_popup_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+static void __vp_capture_genlist_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_capture_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ CapturePopup *pCapture = (CapturePopup *) data;
+ if (!pCapture) {
+ VideoLogError("pCapture IS null");
+ return;
+ }
+ if (pCapture->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pCapture->pParent, pCapture->pBox,
+ pCapture->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_capture_popup_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_capture_popup_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ Evas_Object *pRadioObj = NULL;
+
+ CapturePopup *pCapture =
+ (CapturePopup *) evas_object_data_get(pObj,
+ VP_CAPTURE_POPUP_GENLIST_DATA_KEY);
+ if (pCapture == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ int nVal = 0;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_COM_ON)) {
+ nVal = 1;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_COM_OFF)) {
+ nVal = 0;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nVal);
+ elm_radio_group_add(pRadioObj, pCapture->pRadio);
+ elm_radio_value_set(pCapture->pRadio, (int) pCapture->bCaptureOn);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_capture_popup_genlist_item_selected_cb,
+ pCapture);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_capture_popup_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ int nVal = 0;
+ bool bCapture = FALSE;
+ if (!strcmp(szTxt, VP_PLAY_STRING_COM_ON)) {
+ bCapture = TRUE;
+ nVal = 1;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_COM_OFF)) {
+ nVal = 0;
+ bCapture = FALSE;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pUserData;
+ pCapture->bCaptureOn = bCapture;
+ if (pCapture->pCloseCb) {
+ pCapture->pCloseCb(nVal, FALSE, (void *) pCapture->pUserData);
+ }
+}
+
+static void __vp_capture_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pUserData;
+
+ if (pCapture->pCloseCb) {
+ pCapture->pCloseCb(-1, FALSE, (void *) pCapture->pUserData);
+ }
+}
+
+static void __vp_capture_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ CapturePopup *pCapture = (CapturePopup *) pUserData;
+
+ if (pCapture->pCloseCb) {
+ pCapture->pCloseCb(-1, FALSE, (void *) pCapture->pUserData);
+ }
+ }
+}
+
+
+/* internal functions */
+static void _vp_capture_popup_destroy_handle(CapturePopup *pCapture)
+{
+ if (pCapture == NULL) {
+ VideoLogError("pCapture is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pCapture->pGenList, "realized",
+ __vp_capture_genlist_realized);
+ evas_object_smart_callback_del(pCapture->pParent, "rotation,changed",
+ __vp_capture_popup_rotate_cb);
+
+ VP_EVAS_DEL(pCapture->pRadio);
+ VP_EVAS_DEL(pCapture->pGenList);
+ VP_EVAS_DEL(pCapture->pButton);
+ VP_EVAS_DEL(pCapture->pBox);
+
+ if (pCapture->st_Capture_Itc) {
+ elm_genlist_item_class_free(pCapture->st_Capture_Itc);
+ pCapture->st_Capture_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pCapture->pPopup);
+
+ VP_FREE(pCapture);
+}
+
+static Evas_Object *_vp_capture_popup_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_capture_popup_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pUserData;
+ if (pCapture->st_Capture_Itc) {
+ elm_genlist_item_class_free(pCapture->st_Capture_Itc);
+ pCapture->st_Capture_Itc = NULL;
+ }
+
+ pCapture->st_Capture_Itc = elm_genlist_item_class_new();
+ if (pCapture->st_Capture_Itc == NULL) {
+ VideoLogError("failed to create genlist class");
+ return FALSE;
+ }
+
+ pCapture->st_Capture_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pCapture->st_Capture_Itc->item_style = "1text.1icon.3/popup";
+ pCapture->st_Capture_Itc->func.text_get =
+ (void *) __vp_capture_popup_genlist_text_get_cb;
+ pCapture->st_Capture_Itc->func.content_get =
+ (void *) __vp_capture_popup_genlist_content_get_cb;
+ pCapture->st_Capture_Itc->func.state_get = NULL;
+ pCapture->st_Capture_Itc->func.del = NULL;
+ pCapture->nListCount = 0;
+
+ elm_genlist_item_append(pObj, pCapture->st_Capture_Itc,
+ (void *) VP_PLAY_STRING_COM_ON, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_capture_popup_genlist_item_selected_cb,
+ pUserData);
+ pCapture->nListCount++;
+ elm_genlist_item_append(pObj, pCapture->st_Capture_Itc,
+ (void *) VP_PLAY_STRING_COM_OFF, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_capture_popup_genlist_item_selected_cb,
+ pUserData);
+ pCapture->nListCount++;
+
+ return TRUE;
+}
+
+/* external functions */
+capture_popup_handle vp_capture_popup_create(Evas_Object *pParent,
+ bool bCaptureOn,
+ PopupCloseCbFunc pCloseCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ CapturePopup *pCapture = NULL;
+
+ pCapture = calloc(1, sizeof(CapturePopup));
+
+ if (pCapture == NULL) {
+ VideoLogError("pCapture alloc fail");
+ return NULL;
+ }
+
+ pCapture->pParent = pParent;
+ pCapture->pCloseCb = pCloseCb;
+
+ pCapture->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_POPUP_CAPTURE, NULL, 0.0, NULL,
+ __vp_capture_popup_key_event_cb,
+ __vp_capture_popup_mouse_event_cb,
+ (void *) pCapture);
+ if (pCapture->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_capture_popup_destroy_handle(pCapture);
+ return NULL;
+ }
+
+ pCapture->pGenList =
+ _vp_capture_popup_create_genlist(pCapture->pPopup);
+ if (pCapture->pGenList == NULL) {
+ VideoLogError("_vp_capture_popup_create_genlist fail");
+ _vp_capture_popup_destroy_handle(pCapture);
+ return NULL;
+ }
+ evas_object_data_set(pCapture->pGenList,
+ VP_CAPTURE_POPUP_GENLIST_DATA_KEY,
+ (void *) pCapture);
+ evas_object_smart_callback_add(pCapture->pGenList, "realized",
+ __vp_capture_genlist_realized, NULL);
+
+ pCapture->pRadio = elm_radio_add(pCapture->pGenList);
+
+ if (!_vp_capture_popup_add_genlist_item
+ (pCapture->pGenList, (void *) pCapture)) {
+ VideoLogError("_vp_capture_popup_add_genlist_item fail");
+ _vp_capture_popup_destroy_handle(pCapture);
+ return NULL;
+ }
+ evas_object_smart_callback_add(pCapture->pParent, "rotation,changed",
+ __vp_capture_popup_rotate_cb,
+ pCapture);
+
+ //elm_radio_value_set(pCapture->pRadio, (int)bCaptureOn);
+ pCapture->bCaptureOn = bCaptureOn;
+
+ pCapture->pBox = elm_box_add(pCapture->pPopup);
+ vp_popup_set_popup_min_size(pCapture->pParent, pCapture->pBox,
+ pCapture->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pCapture->pBox, pCapture->pGenList);
+
+ elm_object_content_set(pCapture->pPopup, pCapture->pBox);
+
+ return pCapture;
+}
+
+void vp_capture_popup_destroy(capture_popup_handle pCapturePopupHandle)
+{
+ if (pCapturePopupHandle == NULL) {
+ VideoLogError("pCapturePopupHandle is NULL");
+ return;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pCapturePopupHandle;
+
+ _vp_capture_popup_destroy_handle(pCapture);
+
+}
+
+bool vp_capture_popup_realize(capture_popup_handle pCapturePopupHandle)
+{
+ if (pCapturePopupHandle == NULL) {
+ VideoLogError("pCapturePopupHandle is NULL");
+ return FALSE;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pCapturePopupHandle;
+
+ evas_object_show(pCapture->pPopup);
+
+ return TRUE;
+}
+
+bool vp_capture_popup_unrealize(capture_popup_handle pCapturePopupHandle)
+{
+ if (pCapturePopupHandle == NULL) {
+ VideoLogError("pCapturePopupHandle is NULL");
+ return FALSE;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pCapturePopupHandle;
+
+ evas_object_hide(pCapture->pPopup);
+
+ return TRUE;
+}
+
+bool vp_capture_popup_set_user_data(capture_popup_handle
+ pCapturePopupHandle, void *pUserData)
+{
+ if (pCapturePopupHandle == NULL) {
+ VideoLogError("pCapturePopupHandle is NULL");
+ return FALSE;
+ }
+
+ CapturePopup *pCapture = (CapturePopup *) pCapturePopupHandle;
+
+
+ pCapture->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-detail.c b/playview/src/feature/vp-detail.c
new file mode 100644
index 0000000..f01fe83
--- /dev/null
+++ b/playview/src/feature/vp-detail.c
@@ -0,0 +1,538 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-util.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-detail.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_DETAIL_GENLIST_DATA_KEY "vp.detail.genlist"
+
+
+typedef struct _DetailPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_Detail_Itc;
+ vp_detail_info *pDetailInfo;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+
+} DetailPopup;
+
+
+static void _vp_detail_destroy_handle(DetailPopup *pDetailPopup);
+
+
+/* callback functions */
+
+static void __vp_detail_genlist_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_detail_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ DetailPopup *pDetailPopup = (DetailPopup *) data;
+ if (!pDetailPopup) {
+ VideoLogError("pDetailPopup IS null");
+ return;
+ }
+ if (pDetailPopup->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pDetailPopup->pParent, pDetailPopup->pBox,
+ pDetailPopup->nListCount,
+ VIDEO_POPUP_2_TEXT);
+ elm_popup_orient_set(pDetailPopup->pPopup, ELM_POPUP_ORIENT_CENTER);
+}
+
+static char *__vp_detail_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ VideoLogWarning("%s : %s", pPart, szTxt);
+
+ if (!strcmp(pPart, "elm.text.main.left.top")) {
+ return strdup(szTxt);
+ } else if (!strcmp(pPart, "elm.text.sub.left.bottom")) {
+
+ DetailPopup *pDetailPopup =
+ (DetailPopup *) evas_object_data_get(pObj,
+ VP_DETAIL_GENLIST_DATA_KEY);
+ if (pDetailPopup == NULL) {
+ return NULL;
+ }
+
+ vp_detail_info *pDetailInfo = pDetailPopup->pDetailInfo;
+ if (pDetailInfo == NULL) {
+ return NULL;
+ }
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_TITLE)) {
+ if (pDetailInfo->szTitle)
+ return elm_entry_utf8_to_markup(pDetailInfo->szTitle);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_FORMAT)) {
+ if (pDetailInfo->szFormat)
+ return elm_entry_utf8_to_markup(pDetailInfo->szFormat);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_DATE)) {
+ if (pDetailInfo->szDate)
+ return elm_entry_utf8_to_markup(pDetailInfo->szDate);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_SIZE)) {
+ if (pDetailInfo->szSize)
+ return elm_entry_utf8_to_markup(pDetailInfo->szSize);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_LAST_MODIFIED)) {
+ if (pDetailInfo->szLastModified)
+ return elm_entry_utf8_to_markup(pDetailInfo->
+ szLastModified);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_RESOLUTION)) {
+ if (pDetailInfo->szResolution)
+ return elm_entry_utf8_to_markup(pDetailInfo->
+ szResolution);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_LOCATION)) {
+ if (pDetailInfo->szLocation)
+ return elm_entry_utf8_to_markup(pDetailInfo->szLocation);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_LATITUDE)) {
+ if (pDetailInfo->szLatitude) {
+ if (atof(pDetailInfo->szLatitude) !=
+ VP_DETAIL_VALUE_GPS_DEFAULT)
+ return elm_entry_utf8_to_markup(pDetailInfo->
+ szLatitude);
+ else
+ return g_strdup(VP_PLAY_STRING_DETAIL_VALUE_UNKNOWN);
+ }
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_DETAIL_LONGITUDE)) {
+ if (pDetailInfo->szLongitude) {
+ if (atof(pDetailInfo->szLongitude) !=
+ VP_DETAIL_VALUE_GPS_DEFAULT)
+ return elm_entry_utf8_to_markup(pDetailInfo->
+ szLongitude);
+ else
+ return g_strdup(VP_PLAY_STRING_DETAIL_VALUE_UNKNOWN);
+ }
+ }
+ }
+
+ return NULL;
+}
+
+static void __vp_detail_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ DetailPopup *pDetailPopup = (DetailPopup *) pUserData;
+
+ if (pDetailPopup->pCloseCb) {
+ pDetailPopup->pCloseCb(-1, FALSE,
+ (void *) pDetailPopup->pUserData);
+ }
+}
+
+static void __vp_detail_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ DetailPopup *pDetailPopup = (DetailPopup *) pUserData;
+
+ if (pDetailPopup->pCloseCb) {
+ pDetailPopup->pCloseCb(-1, FALSE,
+ (void *) pDetailPopup->pUserData);
+ }
+ }
+}
+
+
+/* internal functions */
+
+static void _vp_detail_destroy_handle(DetailPopup *pDetailPopup)
+{
+ if (pDetailPopup == NULL) {
+ VideoLogError("pDetailPopup is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pDetailPopup->pGenList, "realized",
+ __vp_detail_genlist_realized);
+ evas_object_smart_callback_del(pDetailPopup->pParent,
+ "rotation,changed",
+ __vp_detail_popup_rotate_cb);
+
+
+ VP_EVAS_DEL(pDetailPopup->pGenList);
+ VP_EVAS_DEL(pDetailPopup->pButton);
+ VP_EVAS_DEL(pDetailPopup->pBox);
+
+ VP_FREE(pDetailPopup->pDetailInfo->szTitle);
+ VP_FREE(pDetailPopup->pDetailInfo->szDate);
+ VP_FREE(pDetailPopup->pDetailInfo->szSize);
+ VP_FREE(pDetailPopup->pDetailInfo->szFormat);
+ VP_FREE(pDetailPopup->pDetailInfo->szResolution);
+ VP_FREE(pDetailPopup->pDetailInfo->szLatitude);
+ VP_FREE(pDetailPopup->pDetailInfo->szLongitude);
+ VP_FREE(pDetailPopup->pDetailInfo->szLocation);
+
+ VP_FREE(pDetailPopup->pDetailInfo);
+
+ if (pDetailPopup->st_Detail_Itc) {
+ elm_genlist_item_class_free(pDetailPopup->st_Detail_Itc);
+ pDetailPopup->st_Detail_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pDetailPopup->pPopup);
+
+ VP_FREE(pDetailPopup);
+}
+
+static Evas_Object *_vp_detail_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_detail_add_genlist_item(Evas_Object *pObj,
+ void *pUserData,
+ int *added_item_cnt)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ DetailPopup *pDetailPopup = (DetailPopup *) pUserData;
+ if (pDetailPopup->st_Detail_Itc) {
+ elm_genlist_item_class_free(pDetailPopup->st_Detail_Itc);
+ pDetailPopup->st_Detail_Itc = NULL;
+ }
+
+ int item_cnt = 0;
+
+ pDetailPopup->st_Detail_Itc = elm_genlist_item_class_new();
+ if (pDetailPopup->st_Detail_Itc == NULL) {
+ VideoLogError("failed to create genlist class");
+ return FALSE;
+ }
+
+ pDetailPopup->st_Detail_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pDetailPopup->st_Detail_Itc->item_style = "2line.top";
+ pDetailPopup->st_Detail_Itc->func.text_get =
+ (void *) __vp_detail_genlist_text_get_cb;
+ pDetailPopup->st_Detail_Itc->func.content_get = NULL;
+ pDetailPopup->st_Detail_Itc->func.state_get = NULL;
+ pDetailPopup->st_Detail_Itc->func.del = NULL;
+
+ Elm_Object_Item *pItem = NULL;
+
+ pItem =
+ elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc,
+ (void *) VP_PLAY_STRING_DETAIL_TITLE,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ (void *) pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+
+ pItem =
+ elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc,
+ (void *) VP_PLAY_STRING_DETAIL_SIZE, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ (void *) pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+
+ if (pDetailPopup->pDetailInfo->bPlayready == FALSE) {
+ pItem =
+ elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc,
+ (void *) VP_PLAY_STRING_DETAIL_FORMAT,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ (void *) pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+ }
+
+ /*pItem = elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc, (void *)VP_PLAY_STRING_DETAIL_DATE, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void *)pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++; */
+
+ if (pDetailPopup->pDetailInfo->bPlayready == FALSE) {
+ pItem =
+ elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc,
+ (void *)
+ VP_PLAY_STRING_DETAIL_RESOLUTION,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ (void *) pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+ }
+
+ pItem =
+ elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc,
+ (void *)
+ VP_PLAY_STRING_DETAIL_LAST_MODIFIED, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ (void *) pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+
+ if (pDetailPopup->pDetailInfo->bPlayready == FALSE) {
+ pItem =
+ elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc,
+ (void *)
+ VP_PLAY_STRING_DETAIL_LOCATION, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ (void *) pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+
+ /*pItem = elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc, (void *)VP_PLAY_STRING_DETAIL_LATITUDE, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void *)pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++;
+
+ pItem = elm_genlist_item_append(pObj, pDetailPopup->st_Detail_Itc, (void *)VP_PLAY_STRING_DETAIL_LONGITUDE, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void *)pDetailPopup);
+ elm_genlist_item_select_mode_set(pItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ item_cnt++; */
+ }
+
+ *added_item_cnt = item_cnt;
+
+
+ return TRUE;
+}
+
+/* external functions */
+detail_handle vp_detail_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb,
+ vp_detail_info *pDetailInfo)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (pDetailInfo == NULL) {
+ VideoLogError("pDetailInfo is NULL");
+ return NULL;
+ }
+
+ DetailPopup *pDetailPopup = NULL;
+
+ pDetailPopup = calloc(1, sizeof(DetailPopup));
+
+ if (pDetailPopup == NULL) {
+ VideoLogError("pDetailPopup alloc fail");
+ return NULL;
+ }
+
+ pDetailPopup->pDetailInfo = calloc(1, sizeof(vp_detail_info));
+ if (pDetailPopup->pDetailInfo == NULL) {
+ VideoLogError("pDetailPopup alloc fail");
+ _vp_detail_destroy_handle(pDetailPopup);
+ return NULL;
+ }
+ VP_STRDUP(pDetailPopup->pDetailInfo->szTitle, pDetailInfo->szTitle);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szDate, pDetailInfo->szDate);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szFormat, pDetailInfo->szFormat);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szSize, pDetailInfo->szSize);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szLastModified,
+ pDetailInfo->szLastModified);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szResolution,
+ pDetailInfo->szResolution);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szLatitude,
+ pDetailInfo->szLatitude);
+ VP_STRDUP(pDetailPopup->pDetailInfo->szLongitude,
+ pDetailInfo->szLongitude);
+ pDetailPopup->pDetailInfo->szLocation =
+ vp_util_convert_file_location(pDetailInfo->szLocation);
+
+ pDetailPopup->pDetailInfo->bDrm = pDetailInfo->bDrm;
+ pDetailPopup->pDetailInfo->bForwardLock = pDetailInfo->bForwardLock;
+ pDetailPopup->pDetailInfo->bPlayready = pDetailInfo->bPlayready;
+
+
+ pDetailPopup->pParent = pParent;
+ pDetailPopup->pCloseCb = pCloseCb;
+
+ pDetailPopup->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_DETAILS, NULL, 0.0, NULL,
+ __vp_detail_popup_key_event_cb,
+ __vp_detail_popup_mouse_event_cb,
+ (void *) pDetailPopup);
+
+ if (pDetailPopup->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_detail_destroy_handle(pDetailPopup);
+ return NULL;
+ }
+ //elm_popup_content_text_wrap_type_set(pDetailPopup->pPopup, ELM_WRAP_MIXED);
+ pDetailPopup->pGenList =
+ _vp_detail_create_genlist(pDetailPopup->pPopup);
+ if (pDetailPopup->pGenList == NULL) {
+ VideoLogError("_vp_detail_create_genlist fail");
+ _vp_detail_destroy_handle(pDetailPopup);
+ return NULL;
+ }
+
+ evas_object_data_set(pDetailPopup->pGenList,
+ VP_DETAIL_GENLIST_DATA_KEY,
+ (void *) pDetailPopup);
+ elm_genlist_mode_set(pDetailPopup->pGenList, ELM_LIST_COMPRESS);
+
+ int added_item_cnt = 0;
+ if (!_vp_detail_add_genlist_item
+ (pDetailPopup->pGenList, (void *) pDetailPopup,
+ &added_item_cnt)) {
+ VideoLogError("_vp_detail_add_genlist_item fail");
+ _vp_detail_destroy_handle(pDetailPopup);
+ return NULL;
+ }
+ pDetailPopup->nListCount = added_item_cnt;
+ evas_object_smart_callback_add(pDetailPopup->pGenList, "realized",
+ __vp_detail_genlist_realized, NULL);
+ evas_object_smart_callback_add(pDetailPopup->pParent,
+ "rotation,changed",
+ __vp_detail_popup_rotate_cb,
+ pDetailPopup);
+
+ pDetailPopup->pBox = elm_box_add(pDetailPopup->pPopup);
+
+ VideoLogInfo("item cnt = %d", added_item_cnt);
+
+ vp_popup_set_popup_min_size(pDetailPopup->pParent, pDetailPopup->pBox,
+ pDetailPopup->nListCount,
+ VIDEO_POPUP_2_TEXT);
+ elm_popup_orient_set(pDetailPopup->pPopup, ELM_POPUP_ORIENT_CENTER);
+ elm_box_pack_end(pDetailPopup->pBox, pDetailPopup->pGenList);
+
+ elm_object_content_set(pDetailPopup->pPopup, pDetailPopup->pBox);
+
+ return pDetailPopup;
+}
+
+void vp_detail_destroy(detail_handle pDetailHandle)
+{
+ if (pDetailHandle == NULL) {
+ VideoLogError("pDetailHandle is NULL");
+ return;
+ }
+
+ DetailPopup *pDetailPopup = (DetailPopup *) pDetailHandle;
+
+ _vp_detail_destroy_handle(pDetailPopup);
+
+}
+
+bool vp_detail_realize(detail_handle pDetailHandle)
+{
+ if (pDetailHandle == NULL) {
+ VideoLogError("pDetailHandle is NULL");
+ return FALSE;
+ }
+
+ DetailPopup *pDetailPopup = (DetailPopup *) pDetailHandle;
+
+ evas_object_show(pDetailPopup->pPopup);
+
+ return TRUE;
+}
+
+bool vp_detail_unrealize(detail_handle pDetailHandle)
+{
+ if (pDetailHandle == NULL) {
+ VideoLogError("pDetailHandle is NULL");
+ return FALSE;
+ }
+
+ DetailPopup *pDetailPopup = (DetailPopup *) pDetailHandle;
+
+ evas_object_hide(pDetailPopup->pPopup);
+
+ return TRUE;
+}
+
+bool vp_detail_set_user_data(detail_handle pDetailHandle, void *pUserData)
+{
+ if (pDetailHandle == NULL) {
+ VideoLogError("pDetailHandle is NULL");
+ return FALSE;
+ }
+
+ DetailPopup *pDetailPopup = (DetailPopup *) pDetailHandle;
+
+ pDetailPopup->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-play-speed.c b/playview/src/feature/vp-play-speed.c
new file mode 100644
index 0000000..7685245
--- /dev/null
+++ b/playview/src/feature/vp-play-speed.c
@@ -0,0 +1,597 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-speed.h"
+#include "vp-play-util.h"
+#include "vp-play-button.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_PLAY_SPEED_MAX_VALUE 1.5
+#define VP_PLAY_SPEED_MIN_VALUE 0.5
+
+
+typedef struct _PlaySpeedPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pLayout;
+ Evas_Object *pBox;
+ Evas_Object *pSlider;
+ Evas_Object *pOkButton;
+ Evas_Object *pCancelButton;
+ Evas_Object *pAddButton;
+ Evas_Object *pDelButton;
+
+ double fSpeedVal;
+
+ void *pUserData;
+
+ PlaySpeedDoneCbFunc pDoneCb;
+ PlaySpeedUpdateCbFunc pUpdateCb;
+
+} PlaySpeedPopup;
+
+
+
+static void _vp_play_speed_popup_destroy_handle(PlaySpeedPopup *
+ pPlaySpeedPopup);
+static void _vp_play_speed_update_text(PlaySpeedPopup *pPlaySpeedPopup);
+
+
+/* callback functions */
+
+static void __vp_play_speed_popup_ok_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+
+ if (pPlaySpeedPopup->pDoneCb) {
+ pPlaySpeedPopup->pDoneCb(pPlaySpeedPopup->fSpeedVal, TRUE,
+ (void *) pPlaySpeedPopup->pUserData);
+ }
+}
+
+static void __vp_play_speed_popup_cancel_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+
+ if (pPlaySpeedPopup->pDoneCb) {
+ pPlaySpeedPopup->pDoneCb(pPlaySpeedPopup->fSpeedVal, FALSE,
+ (void *) pPlaySpeedPopup->pUserData);
+ }
+}
+
+
+static void __vp_play_speed_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+ if (pPlaySpeedPopup->pDoneCb) {
+ pPlaySpeedPopup->pDoneCb(pPlaySpeedPopup->fSpeedVal, FALSE,
+ (void *) pPlaySpeedPopup->pUserData);
+ }
+
+}
+
+static void __vp_play_speed_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+ if (pPlaySpeedPopup->pDoneCb) {
+ pPlaySpeedPopup->pDoneCb(pPlaySpeedPopup->fSpeedVal, FALSE,
+ (void *) pPlaySpeedPopup->pUserData);
+ }
+ }
+}
+
+static void __vp_play_speed_popup_slider_change_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+
+ double fValue = elm_slider_value_get(pPlaySpeedPopup->pSlider);
+ VideoLogDebug("== %f ==", fValue);
+
+ if (fValue != pPlaySpeedPopup->fSpeedVal) {
+ if (pPlaySpeedPopup->pUpdateCb) {
+ pPlaySpeedPopup->fSpeedVal = fValue;
+ pPlaySpeedPopup->pUpdateCb(pPlaySpeedPopup->fSpeedVal,
+ (void *) pPlaySpeedPopup->
+ pUserData);
+ _vp_play_speed_update_text(pPlaySpeedPopup);
+ }
+ }
+
+ char szValue[6] = { 0, };
+ snprintf(szValue, 6, "%0.1f X", (double) pPlaySpeedPopup->fSpeedVal);
+ double realValue = atof(szValue);
+
+ if (pPlaySpeedPopup->fSpeedVal != realValue) {
+ elm_slider_value_set(pPlaySpeedPopup->pSlider,
+ (double) realValue);
+ pPlaySpeedPopup->fSpeedVal = realValue;
+ }
+
+}
+
+static void __vp_play_speed_btn_clicked_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+
+ double fValue = elm_slider_value_get(pPlaySpeedPopup->pSlider);
+ VideoLogDebug("== %f ==", fValue);
+
+ if (pObj == pPlaySpeedPopup->pAddButton) {
+ fValue += 0.1;
+ if (fValue > (double) VP_PLAY_SPEED_MAX_VALUE) {
+ fValue = (double) VP_PLAY_SPEED_MAX_VALUE;
+ }
+ elm_slider_value_set(pPlaySpeedPopup->pSlider, fValue);
+
+ if (fValue != pPlaySpeedPopup->fSpeedVal) {
+ if (pPlaySpeedPopup->pUpdateCb) {
+ pPlaySpeedPopup->fSpeedVal = fValue;
+ pPlaySpeedPopup->pUpdateCb(pPlaySpeedPopup->fSpeedVal,
+ (void *) pPlaySpeedPopup->
+ pUserData);
+ _vp_play_speed_update_text(pPlaySpeedPopup);
+ }
+ }
+
+ } else if (pObj == pPlaySpeedPopup->pDelButton) {
+ fValue -= 0.1;
+ if (fValue < (double) VP_PLAY_SPEED_MIN_VALUE) {
+ fValue = (double) VP_PLAY_SPEED_MIN_VALUE;
+ }
+
+ elm_slider_value_set(pPlaySpeedPopup->pSlider, fValue);
+ if (fValue != pPlaySpeedPopup->fSpeedVal) {
+ if (pPlaySpeedPopup->pUpdateCb) {
+ pPlaySpeedPopup->fSpeedVal = fValue;
+ pPlaySpeedPopup->pUpdateCb(pPlaySpeedPopup->fSpeedVal,
+ (void *) pPlaySpeedPopup->
+ pUserData);
+ _vp_play_speed_update_text(pPlaySpeedPopup);
+ }
+ }
+
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_play_speed_popup_destroy_handle(PlaySpeedPopup *
+ pPlaySpeedPopup)
+{
+ if (pPlaySpeedPopup == NULL) {
+ VideoLogError("pPlaySpeedPopup is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pPlaySpeedPopup->pAddButton);
+ VP_EVAS_DEL(pPlaySpeedPopup->pDelButton);
+
+ VP_EVAS_DEL(pPlaySpeedPopup->pOkButton);
+ VP_EVAS_DEL(pPlaySpeedPopup->pCancelButton);
+ VP_EVAS_DEL(pPlaySpeedPopup->pSlider);
+ VP_EVAS_DEL(pPlaySpeedPopup->pBox);
+ VP_EVAS_DEL(pPlaySpeedPopup->pLayout);
+ VP_EVAS_DEL(pPlaySpeedPopup->pPopup);
+
+ VP_FREE(pPlaySpeedPopup);
+}
+
+static void _vp_play_speed_update_text(PlaySpeedPopup *pPlaySpeedPopup)
+{
+ if (pPlaySpeedPopup == NULL) {
+ VideoLogError("pPlaySpeedPopup is NULL");
+ return;
+ }
+
+ char szValue[6] = { 0, };
+
+ snprintf(szValue, 6, "%0.1f X", (double) pPlaySpeedPopup->fSpeedVal);
+ elm_object_part_text_set(pPlaySpeedPopup->pLayout, "elm.text.title",
+ szValue);
+
+}
+
+static Evas_Object *_vp_play_speed_popup_create_ok_button(Evas_Object *
+ pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_DONE);
+ elm_object_part_content_set(pParent, "button2", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_play_speed_popup_ok_btn_cb,
+ pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+
+static Evas_Object *_vp_play_speed_popup_create_cancel_button(Evas_Object
+ * pParent,
+ void
+ *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_CANCEL);
+ elm_object_part_content_set(pParent, "button1", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_play_speed_popup_cancel_btn_cb,
+ pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_speed_popup_create_slider(Evas_Object *
+ pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_slider_add(pParent);
+ elm_slider_indicator_show_set(pObj, EINA_FALSE);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, 0.5);
+
+ elm_slider_min_max_set(pObj, VP_PLAY_SPEED_MIN_VALUE,
+ VP_PLAY_SPEED_MAX_VALUE);
+ evas_object_smart_callback_add(pObj, "changed",
+ __vp_play_speed_popup_slider_change_cb,
+ pUserData);
+
+ return pObj;
+}
+
+static bool _vp_play_speed_popup_create_button(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pUserData;
+
+ pPlaySpeedPopup->pDelButton =
+ vp_button_create(pParent, "playview/custom/flat_63_78/default",
+ NULL,
+ (Evas_Smart_Cb) __vp_play_speed_btn_clicked_cb,
+ (Evas_Smart_Cb) NULL, (Evas_Smart_Cb) NULL,
+ (void *) pPlaySpeedPopup);
+
+
+
+ pPlaySpeedPopup->pAddButton =
+ vp_button_create(pParent, "playview/custom/flat_63_78/default",
+ NULL,
+ (Evas_Smart_Cb) __vp_play_speed_btn_clicked_cb,
+ (Evas_Smart_Cb) NULL, (Evas_Smart_Cb) NULL,
+ (void *) pPlaySpeedPopup);
+
+ Evas_Object *pIcon = NULL;
+
+ pIcon =
+ vp_button_create_icon(pPlaySpeedPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL);
+ elm_object_part_content_set(pPlaySpeedPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pPlaySpeedPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL_PRESS);
+ elm_object_part_content_set(pPlaySpeedPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pPlaySpeedPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL);
+ elm_object_part_content_set(pPlaySpeedPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pPlaySpeedPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD);
+ elm_object_part_content_set(pPlaySpeedPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pPlaySpeedPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD_PRESS);
+ elm_object_part_content_set(pPlaySpeedPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pPlaySpeedPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD);
+ elm_object_part_content_set(pPlaySpeedPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ elm_object_part_content_set(pParent, "elm.swallow.icon.1",
+ pPlaySpeedPopup->pDelButton);
+ elm_object_part_content_set(pParent, "elm.swallow.icon.2",
+ pPlaySpeedPopup->pAddButton);
+
+ return TRUE;
+}
+
+static Evas_Object *_vp_play_speed_popup_create_layout(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pLayout = elm_layout_add(pParent);
+ if (pLayout == NULL) {
+ VideoLogError("pLayout object is NULL");
+ return NULL;
+ }
+
+ elm_layout_file_set(pLayout, VP_PLAY_SPEED_POPUP_EDJ,
+ VP_PLAY_EDJ_GROUP_PLAY_SPEED_POPUP);
+
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLayout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+
+}
+
+
+
+/* external functions */
+play_speed_popup vp_play_speed_popup_create(Evas_Object *pParent,
+ double fSpeedVal,
+ PlaySpeedUpdateCbFunc
+ pUpdateCb,
+ PlaySpeedDoneCbFunc pDoneCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = NULL;
+
+ pPlaySpeedPopup = calloc(1, sizeof(PlaySpeedPopup));
+
+ if (pPlaySpeedPopup == NULL) {
+ VideoLogError("pPlaySpeedPopup alloc fail");
+ return NULL;
+ }
+
+ pPlaySpeedPopup->pParent = pParent;
+ pPlaySpeedPopup->pUpdateCb = pUpdateCb;
+ pPlaySpeedPopup->pDoneCb = pDoneCb;
+ pPlaySpeedPopup->fSpeedVal = fSpeedVal;
+
+ pPlaySpeedPopup->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_EXPAND_WITH_CANCEL_BTN,
+ VP_PLAY_STRING_POPUP_PLAY_SPEED, NULL, 0.0, NULL,
+ __vp_play_speed_popup_key_event_cb,
+ __vp_play_speed_popup_mouse_event_cb,
+ (void *) pPlaySpeedPopup);
+
+ if (pPlaySpeedPopup->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_play_speed_popup_destroy_handle(pPlaySpeedPopup);
+ return NULL;
+ }
+
+ pPlaySpeedPopup->pCancelButton =
+ _vp_play_speed_popup_create_cancel_button(pPlaySpeedPopup->pPopup,
+ (void *)
+ pPlaySpeedPopup);
+ if (pPlaySpeedPopup->pCancelButton == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_cancel_button fail");
+ _vp_play_speed_popup_destroy_handle(pPlaySpeedPopup);
+ return NULL;
+ }
+
+ pPlaySpeedPopup->pOkButton =
+ _vp_play_speed_popup_create_ok_button(pPlaySpeedPopup->pPopup,
+ (void *) pPlaySpeedPopup);
+ if (pPlaySpeedPopup->pOkButton == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_ok_button fail");
+ _vp_play_speed_popup_destroy_handle(pPlaySpeedPopup);
+ return NULL;
+ }
+
+ pPlaySpeedPopup->pLayout =
+ _vp_play_speed_popup_create_layout(pPlaySpeedPopup->pPopup);
+ if (pPlaySpeedPopup->pLayout == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_layout fail");
+ _vp_play_speed_popup_destroy_handle(pPlaySpeedPopup);
+ return NULL;
+ }
+
+ pPlaySpeedPopup->pSlider =
+ _vp_play_speed_popup_create_slider(pPlaySpeedPopup->pLayout,
+ pPlaySpeedPopup);
+ if (pPlaySpeedPopup->pSlider == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_slider fail");
+ _vp_play_speed_popup_destroy_handle(pPlaySpeedPopup);
+ return NULL;
+ }
+
+ _vp_play_speed_popup_create_button(pPlaySpeedPopup->pLayout,
+ pPlaySpeedPopup);
+
+ elm_slider_value_set(pPlaySpeedPopup->pSlider,
+ (double) pPlaySpeedPopup->fSpeedVal);
+ _vp_play_speed_update_text(pPlaySpeedPopup);
+
+ elm_object_part_content_set(pPlaySpeedPopup->pLayout,
+ "elm.swallow.content",
+ pPlaySpeedPopup->pSlider);
+ elm_object_content_set(pPlaySpeedPopup->pPopup,
+ pPlaySpeedPopup->pLayout);
+ evas_object_show(pPlaySpeedPopup->pLayout);
+
+// elm_popup_orient_set(pPlaySpeedPopup->pPopup, ELM_POPUP_ORIENT_BOTTOM);
+
+ return pPlaySpeedPopup;
+}
+
+void vp_play_speed_popup_destroy(play_speed_popup pPlaySpeedHandle)
+{
+ if (pPlaySpeedHandle == NULL) {
+ VideoLogError("pPlaySpeedHandle is NULL");
+ return;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pPlaySpeedHandle;
+
+ _vp_play_speed_popup_destroy_handle(pPlaySpeedPopup);
+
+}
+
+bool vp_play_speed_popup_realize(play_speed_popup pPlaySpeedHandle)
+{
+ if (pPlaySpeedHandle == NULL) {
+ VideoLogError("pPlaySpeedHandle is NULL");
+ return FALSE;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pPlaySpeedHandle;
+
+ evas_object_show(pPlaySpeedPopup->pPopup);
+
+ return TRUE;
+}
+
+
+bool vp_play_speed_popup_unrealize(play_speed_popup pPlaySpeedHandle)
+{
+ if (pPlaySpeedHandle == NULL) {
+ VideoLogError("pPlaySpeedHandle is NULL");
+ return FALSE;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pPlaySpeedHandle;
+
+ evas_object_hide(pPlaySpeedPopup->pPopup);
+
+ return TRUE;
+}
+
+
+
+bool vp_play_speed_popup_set_user_data(play_speed_popup pPlaySpeedHandle,
+ void *pUserData)
+{
+ if (pPlaySpeedHandle == NULL) {
+ VideoLogError("pPlaySpeedHandle is NULL");
+ return FALSE;
+ }
+
+ PlaySpeedPopup *pPlaySpeedPopup = (PlaySpeedPopup *) pPlaySpeedHandle;
+
+ pPlaySpeedPopup->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-repeat.c b/playview/src/feature/vp-repeat.c
new file mode 100644
index 0000000..ef76135
--- /dev/null
+++ b/playview/src/feature/vp-repeat.c
@@ -0,0 +1,485 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+#include "vp-play-preference.h"
+
+#include "vp-repeat.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_REPEAT_GENLIST_DATA_KEY "vp.repeat.genlist"
+
+typedef struct _RepeatPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+
+ Elm_Genlist_Item_Class *st_Repeat_Itc;
+ int nListCount;
+ char *pMediUrl;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ video_play_repeat_mode_t repeatMode;
+} RepeatPopup;
+
+
+
+static void _vp_repeat_destroy_handle(RepeatPopup *pRepeat);
+static void __vp_repeat_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo);
+
+
+static void __vp_repeat_genlist_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_repeat_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ RepeatPopup *pRepeat = (RepeatPopup *) data;
+ if (!pRepeat) {
+ VideoLogError("pCapture IS null");
+ return;
+ }
+ if (pRepeat->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pRepeat->pParent, pRepeat->pBox,
+ pRepeat->nListCount, VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_repeat_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_repeat_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon.right")) {
+ Evas_Object *pRadioObj = NULL;
+
+ RepeatPopup *pRepeat =
+ (RepeatPopup *) evas_object_data_get(pObj,
+ VP_REPEAT_GENLIST_DATA_KEY);
+ if (pRepeat == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ video_play_repeat_mode_t nType = VIDEO_PLAY_REPEAT_NONE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_OFF)) {
+ nType = VIDEO_PLAY_REPEAT_OFF;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_ALL_OFF)) {
+ nType = VIDEO_PLAY_REPEAT_ALL_STOP;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_ONE)) {
+ nType = VIDEO_PLAY_REPEAT_ONE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_ALL)) {
+ nType = VIDEO_PLAY_REPEAT_ALL;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nType);
+ elm_radio_group_add(pRadioObj, pRepeat->pRadio);
+ elm_radio_value_set(pRepeat->pRadio, pRepeat->repeatMode);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_repeat_genlist_item_selected_cb,
+ pRepeat);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_repeat_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_play_repeat_mode_t nType = VIDEO_PLAY_REPEAT_NONE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_OFF)) {
+ nType = VIDEO_PLAY_REPEAT_OFF;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_ALL_OFF)) {
+ nType = VIDEO_PLAY_REPEAT_ALL_STOP;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_ONE)) {
+ nType = VIDEO_PLAY_REPEAT_ONE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_REPEAT_ALL)) {
+ nType = VIDEO_PLAY_REPEAT_ALL;
+ }
+
+ if (nType != VIDEO_PLAY_REPEAT_NONE) {
+ vp_play_preference_set_repeat_mode_key((int) nType);
+ }
+
+ pRepeat->repeatMode = nType;
+ VideoLogInfo("repeatMode=%d", pRepeat->repeatMode);
+ if (pRepeat->pCloseCb) {
+ pRepeat->pCloseCb((int) nType, FALSE,
+ (void *) pRepeat->pUserData);
+ }
+}
+
+static void __vp_repeat_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pUserData;
+
+ if (pRepeat->pCloseCb) {
+ pRepeat->pCloseCb(VIDEO_PLAY_REPEAT_NONE, FALSE,
+ (void *) pRepeat->pUserData);
+ }
+}
+
+
+static void __vp_repeat_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ RepeatPopup *pRepeat = (RepeatPopup *) pUserData;
+
+ if (pRepeat->pCloseCb) {
+ pRepeat->pCloseCb(VIDEO_PLAY_REPEAT_NONE, FALSE,
+ (void *) pRepeat->pUserData);
+ }
+ }
+}
+
+
+/* internal functions */
+static void _vp_repeat_destroy_handle(RepeatPopup *pRepeat)
+{
+ if (pRepeat == NULL) {
+ VideoLogError("pRepeat is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pRepeat->pGenList, "realized",
+ __vp_repeat_genlist_realized);
+ evas_object_smart_callback_del(pRepeat->pParent, "rotation,changed",
+ __vp_repeat_popup_rotate_cb);
+
+
+ VP_EVAS_DEL(pRepeat->pRadio);
+ VP_EVAS_DEL(pRepeat->pGenList);
+ VP_EVAS_DEL(pRepeat->pButton);
+ VP_EVAS_DEL(pRepeat->pBox);
+
+ VP_EVAS_DEL(pRepeat->pPopup);
+
+ VP_FREE(pRepeat->pMediUrl);
+
+ if (pRepeat->st_Repeat_Itc) {
+ elm_genlist_item_class_free(pRepeat->st_Repeat_Itc);
+ pRepeat->st_Repeat_Itc = NULL;
+ }
+
+ VP_FREE(pRepeat);
+}
+
+static Evas_Object *_vp_repeat_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_repeat_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pUserData;
+
+ if (pRepeat->st_Repeat_Itc) {
+ elm_genlist_item_class_free(pRepeat->st_Repeat_Itc);
+ pRepeat->st_Repeat_Itc = NULL;
+ }
+
+ pRepeat->st_Repeat_Itc = elm_genlist_item_class_new();
+
+ if (pRepeat->st_Repeat_Itc != NULL) {
+ pRepeat->st_Repeat_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pRepeat->st_Repeat_Itc->item_style = "1line";
+ pRepeat->st_Repeat_Itc->func.text_get =
+ (void *) __vp_repeat_genlist_text_get_cb;
+ pRepeat->st_Repeat_Itc->func.content_get =
+ (void *) __vp_repeat_genlist_content_get_cb;
+ pRepeat->st_Repeat_Itc->func.state_get = NULL;
+ pRepeat->st_Repeat_Itc->func.del = NULL;
+ pRepeat->nListCount = 0;
+
+ elm_genlist_item_append(pObj, pRepeat->st_Repeat_Itc,
+ (void *) VP_PLAY_STRING_REPEAT_OFF, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_repeat_genlist_item_selected_cb,
+ pUserData);
+ pRepeat->nListCount++;
+ elm_genlist_item_append(pObj, pRepeat->st_Repeat_Itc,
+ (void *) VP_PLAY_STRING_REPEAT_ALL_OFF, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_repeat_genlist_item_selected_cb,
+ pUserData);
+ pRepeat->nListCount++;
+ elm_genlist_item_append(pObj, pRepeat->st_Repeat_Itc,
+ (void *) VP_PLAY_STRING_REPEAT_ONE, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_repeat_genlist_item_selected_cb,
+ pUserData);
+ pRepeat->nListCount++;
+ elm_genlist_item_append(pObj, pRepeat->st_Repeat_Itc,
+ (void *) VP_PLAY_STRING_REPEAT_ALL, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_repeat_genlist_item_selected_cb,
+ pUserData);
+ pRepeat->nListCount++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+repeat_handle vp_repeat_create(Evas_Object *pParent, char *pMediaUrl,
+ PopupCloseCbFunc pCloseCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (pMediaUrl == NULL) {
+ VideoLogError("pMediaUrl is NULL");
+ return NULL;
+ }
+
+ RepeatPopup *pRepeat = NULL;
+
+ pRepeat = calloc(1, sizeof(RepeatPopup));
+
+ if (pRepeat == NULL) {
+ VideoLogError("pRepeat alloc fail");
+ return NULL;
+ }
+
+ pRepeat->pParent = pParent;
+ pRepeat->pCloseCb = pCloseCb;
+
+ VP_STRDUP(pRepeat->pMediUrl, pMediaUrl);
+
+ pRepeat->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_POPUP_REPEAT_SETTING, NULL, 0.0,
+ NULL, __vp_repeat_popup_key_event_cb,
+ __vp_repeat_popup_mouse_event_cb,
+ (void *) pRepeat);
+
+ if (pRepeat->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_repeat_destroy_handle(pRepeat);
+ return NULL;
+ }
+ pRepeat->pGenList = _vp_repeat_create_genlist(pRepeat->pPopup);
+ if (pRepeat->pGenList == NULL) {
+ VideoLogError("_vp_repeat_create_genlist fail");
+ _vp_repeat_destroy_handle(pRepeat);
+ return NULL;
+ }
+ evas_object_data_set(pRepeat->pGenList, VP_REPEAT_GENLIST_DATA_KEY,
+ (void *) pRepeat);
+
+ pRepeat->pRadio = elm_radio_add(pRepeat->pGenList);
+
+ if (!_vp_repeat_add_genlist_item(pRepeat->pGenList, (void *) pRepeat)) {
+ VideoLogError("_vp_repeat_add_genlist_item fail");
+ _vp_repeat_destroy_handle(pRepeat);
+ return NULL;
+ }
+ evas_object_smart_callback_add(pRepeat->pGenList, "realized",
+ __vp_repeat_genlist_realized, NULL);
+ evas_object_smart_callback_add(pRepeat->pParent, "rotation,changed",
+ __vp_repeat_popup_rotate_cb, pRepeat);
+
+ int nType = 0;
+
+ vp_play_preference_get_repeat_mode_key(&nType);
+
+ //elm_radio_value_set(pRepeat->pRadio, nType);
+ pRepeat->repeatMode = nType;
+
+ pRepeat->pBox = elm_box_add(pRepeat->pPopup);
+ vp_popup_set_popup_min_size(pRepeat->pParent, pRepeat->pBox,
+ pRepeat->nListCount, VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pRepeat->pBox, pRepeat->pGenList);
+
+ elm_object_content_set(pRepeat->pPopup, pRepeat->pBox);
+
+ return pRepeat;
+}
+
+void vp_repeat_destroy(repeat_handle pRepeatHandle)
+{
+ if (pRepeatHandle == NULL) {
+ VideoLogError("pRepeatHandle is NULL");
+ return;
+ }
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pRepeatHandle;
+
+ _vp_repeat_destroy_handle(pRepeat);
+
+}
+
+bool vp_repeat_realize(repeat_handle pRepeatHandle)
+{
+ if (pRepeatHandle == NULL) {
+ VideoLogError("pRepeatHandle is NULL");
+ return FALSE;
+ }
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pRepeatHandle;
+
+ evas_object_show(pRepeat->pPopup);
+
+ return TRUE;
+}
+
+bool vp_repeat_unrealize(repeat_handle pRepeatHandle)
+{
+ if (pRepeatHandle == NULL) {
+ VideoLogError("pRepeatHandle is NULL");
+ return FALSE;
+ }
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pRepeatHandle;
+
+ evas_object_hide(pRepeat->pPopup);
+
+ return TRUE;
+}
+
+bool vp_repeat_set_user_data(repeat_handle pRepeatHandle, void *pUserData)
+{
+ if (pRepeatHandle == NULL) {
+ VideoLogError("pRepeatHandle is NULL");
+ return FALSE;
+ }
+
+ RepeatPopup *pRepeat = (RepeatPopup *) pRepeatHandle;
+
+ pRepeat->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-setting.c b/playview/src/feature/vp-setting.c
new file mode 100644
index 0000000..2d8fc09
--- /dev/null
+++ b/playview/src/feature/vp-setting.c
@@ -0,0 +1,567 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-setting.h"
+#include "vp-device-language.h"
+
+#include "vp-play-preference.h"
+#include "vp-device.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SETTING_GENLIST_DATA_KEY "vp.setting.genlist"
+
+typedef struct _SettingPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+
+ int nAppendItemCnt;
+ Elm_Genlist_Item_Class *st_Setting_Itc;
+
+
+ SettingInfo *pSettingInfo;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+
+} SettingPopup;
+
+static void _vp_setting_destroy_handle(SettingPopup *pSetting);
+static void __vp_setting_genlist_realized(void *data, Evas_Object *obj,
+ void *event_info);
+static void __vp_setting_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+
+/* callback functions */
+
+
+static char *__vp_setting_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *)pUserData;
+
+ if (!strcmp(pPart, "elm.text.1")) {
+ return strdup(szTxt);
+ } else if (!strcmp(pPart, "elm.text.2")) {
+
+ SettingPopup *pSetting =
+ (SettingPopup *) evas_object_data_get(pObj,
+ VP_SETTING_GENLIST_DATA_KEY);
+ if (pSetting == NULL) {
+ return NULL;
+ }
+
+ SettingInfo *pSettingInfo = pSetting->pSettingInfo;
+ if (pSettingInfo == NULL) {
+ return NULL;
+ }
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_PLAY_SPEED)) {
+ return g_strdup_printf("%0.1f x", pSettingInfo->fSpeed);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_SOUND_ALIVE)) {
+ if (pSettingInfo->nSoundAlive == VIDEO_SA_NONE) {
+ return strdup(VP_PLAY_STRING_SOUND_ALIVE_NORMAL);
+ } else if (pSettingInfo->nSoundAlive == VIDEO_SA_NORMAL) {
+ return strdup(VP_PLAY_STRING_SOUND_ALIVE_NORMAL);
+ } else if (pSettingInfo->nSoundAlive == VIDEO_SA_VOICE) {
+ return strdup(VP_PLAY_STRING_SOUND_ALIVE_VOICE);
+ } else if (pSettingInfo->nSoundAlive == VIDEO_SA_MOVIE) {
+ return strdup(VP_PLAY_STRING_SOUND_ALIVE_MOVIE);
+ } else if (pSettingInfo->nSoundAlive == VIDEO_SA_7_1_CH) {
+ return strdup(VP_PLAY_STRING_SOUND_ALIVE_71CH);
+ }
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_AUDIO_TRACK)) {
+ return strdup(pSettingInfo->szAudioTrack);
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_REPEAT_SETTING)) {
+ if (pSettingInfo->nRepeatMode == VIDEO_PLAY_REPEAT_OFF) {
+ return strdup(VP_PLAY_STRING_REPEAT_OFF);
+ } else if (pSettingInfo->nRepeatMode ==
+ VIDEO_PLAY_REPEAT_ALL_STOP) {
+ return strdup(VP_PLAY_STRING_REPEAT_ALL_OFF);
+ } else if (pSettingInfo->nRepeatMode == VIDEO_PLAY_REPEAT_ONE) {
+ return strdup(VP_PLAY_STRING_REPEAT_ONE);
+ } else if (pSettingInfo->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ return strdup(VP_PLAY_STRING_REPEAT_ALL);
+ }
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_CAPTURE)) {
+ if (pSettingInfo->bCapture) {
+ return strdup(VP_PLAY_STRING_COM_ON);
+ } else {
+ return strdup(VP_PLAY_STRING_COM_OFF);
+ }
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_TAG_BUDDY)) {
+ if (pSettingInfo->bTagBuddy) {
+ return strdup(VP_PLAY_STRING_COM_ON);
+ } else {
+ return strdup(VP_PLAY_STRING_COM_OFF);
+ }
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_EDIT_WEATHER_TAG)) {
+ if (pSettingInfo->bEditWeatherTag) {
+ return strdup(VP_PLAY_STRING_COM_ON);
+ } else {
+ return strdup(VP_PLAY_STRING_COM_OFF);
+ }
+ }
+ }
+
+ return NULL;
+}
+
+static void __vp_setting_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ char *szTxt = (char *)elm_object_item_data_get(pItem);
+
+ SettingPopup *pSetting = (SettingPopup *) pUserData;
+
+ Elm_Object_Item *item = (Elm_Object_Item *) pEventInfo;
+
+ if (item) {
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ }
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+ vp_setting_mode_t nMode = VP_SETTING_MODE_NONE;
+ bool bPause = FALSE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_PLAY_SPEED)) {
+ nMode = VP_SETTING_MODE_PLAY_SPEED;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_SOUND_ALIVE)) {
+ nMode = VP_SETTING_MODE_SOUND_ALIVE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_AUDIO_TRACK)) {
+ nMode = VP_SETTING_MODE_AUDIO_TRACK;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_REPEAT_SETTING)) {
+ nMode = VP_SETTING_MODE_REPEAT_MODE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_POPUP_CAPTURE)) {
+ nMode = VP_SETTING_MODE_CAPTURE;
+ }
+
+ if (pSetting->pCloseCb) {
+ pSetting->pCloseCb((int)nMode, bPause, (void *)pSetting->pUserData);
+ }
+}
+
+static void __vp_setting_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ SettingPopup *pSetting = (SettingPopup *) pUserData;
+
+ if (pSetting->pCloseCb) {
+ pSetting->pCloseCb(VP_SETTING_MODE_NONE, FALSE,
+ (void *) pSetting->pUserData);
+ }
+}
+
+static void __vp_setting_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SettingPopup *pSetting = (SettingPopup *) pUserData;
+
+ if (pSetting->pCloseCb) {
+ pSetting->pCloseCb(VP_SETTING_MODE_NONE, FALSE,
+ (void *) pSetting->pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_setting_destroy_handle(SettingPopup *pSetting)
+{
+ if (pSetting == NULL) {
+ VideoLogError("pSetting is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pSetting->pGenList, "realized",
+ __vp_setting_genlist_realized);
+ evas_object_smart_callback_del(pSetting->pParent, "rotation,changed",
+ __vp_setting_popup_rotate_cb);
+
+
+ VP_EVAS_DEL(pSetting->pGenList);
+ VP_EVAS_DEL(pSetting->pButton);
+ VP_EVAS_DEL(pSetting->pBox);
+
+ VP_EVAS_DEL(pSetting->pPopup);
+
+ if (pSetting->st_Setting_Itc) {
+ elm_genlist_item_class_free(pSetting->st_Setting_Itc);
+ pSetting->st_Setting_Itc = NULL;
+ }
+
+ VP_FREE(pSetting->pSettingInfo->szAudioTrack);
+ VP_FREE(pSetting->pSettingInfo);
+
+ VP_FREE(pSetting);
+}
+
+static Evas_Object *_vp_setting_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_setting_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ SettingPopup *pSetting = (SettingPopup *) pUserData;
+ bool bStreaming = FALSE;
+// bool bRepeat = FALSE;
+ bool bDrm = FALSE;
+ bool bExternalVideoMode = FALSE;
+ bool bShowEditWeather = FALSE;
+
+ if (pSetting->pSettingInfo) {
+ bStreaming = pSetting->pSettingInfo->bStreaming;
+// bRepeat = pSetting->pSettingInfo->bRepeat;
+ bDrm = pSetting->pSettingInfo->bDrm;
+ bExternalVideoMode = pSetting->pSettingInfo->bExternalMode;
+ bShowEditWeather = pSetting->pSettingInfo->bShowEditWeather;
+ }
+
+ if (pSetting->st_Setting_Itc) {
+ elm_genlist_item_class_free(pSetting->st_Setting_Itc);
+ pSetting->st_Setting_Itc = NULL;
+ }
+
+ pSetting->st_Setting_Itc = elm_genlist_item_class_new();
+
+ if (pSetting->st_Setting_Itc != NULL) {
+ pSetting->st_Setting_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSetting->st_Setting_Itc->item_style = "2text.2/popup";
+ pSetting->st_Setting_Itc->func.text_get =
+ (void *) __vp_setting_genlist_text_get_cb;
+ pSetting->st_Setting_Itc->func.content_get = NULL;
+ pSetting->st_Setting_Itc->func.state_get = NULL;
+ pSetting->st_Setting_Itc->func.del = NULL;
+ }
+
+ if (bStreaming == FALSE) {
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *) VP_PLAY_STRING_POPUP_PLAY_SPEED,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+ }
+
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *) VP_PLAY_STRING_POPUP_SOUND_ALIVE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+
+
+ if (bStreaming == FALSE) {
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *) VP_PLAY_STRING_POPUP_AUDIO_TRACK,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *)
+ VP_PLAY_STRING_POPUP_REPEAT_SETTING, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+
+ if (bDrm == FALSE && bExternalVideoMode == FALSE) {
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *) VP_PLAY_STRING_POPUP_CAPTURE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+ }
+ }
+
+ if (bStreaming == FALSE && bDrm == FALSE) {
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *) VP_PLAY_STRING_POPUP_TAG_BUDDY,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+ if (bShowEditWeather == TRUE) {
+ elm_genlist_item_append(pObj, pSetting->st_Setting_Itc,
+ (void *)
+ VP_PLAY_STRING_POPUP_EDIT_WEATHER_TAG,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_setting_genlist_item_selected_cb,
+ (void *) pSetting);
+ pSetting->nAppendItemCnt++;
+ }
+ }
+
+ return TRUE;
+}
+
+static void __vp_setting_genlist_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_setting_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SettingPopup *pSetting = (SettingPopup *) data;
+ if (!pSetting) {
+ VideoLogError("pSetting IS null");
+ return;
+ }
+ if (pSetting->nAppendItemCnt < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSetting->pParent, pSetting->pBox,
+ pSetting->nAppendItemCnt,
+ VIDEO_POPUP_2_TEXT);
+
+}
+
+/* external functions */
+setting_popup_handle vp_setting_create(Evas_Object *pParent,
+ SettingInfo *pSettingInfo,
+ PopupCloseCbFunc pCloseCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (pSettingInfo == NULL) {
+ VideoLogError("pSettingInfo is NULL");
+ return NULL;
+ }
+
+ SettingPopup *pSetting = NULL;
+
+ pSetting = calloc(1, sizeof(SettingPopup));
+
+ if (pSetting == NULL) {
+ VideoLogError("pSetting alloc fail");
+ return NULL;
+ }
+
+ pSetting->pSettingInfo = calloc(1, sizeof(SettingInfo));
+ if (pSetting->pSettingInfo == NULL) {
+ VideoLogError("pSettingInfo alloc fail");
+ _vp_setting_destroy_handle(pSetting);
+ return NULL;
+ }
+
+ pSetting->pSettingInfo->fSpeed = pSettingInfo->fSpeed;
+ pSetting->pSettingInfo->nSoundAlive = pSettingInfo->nSoundAlive;
+ VP_STRDUP(pSetting->pSettingInfo->szAudioTrack,
+ pSettingInfo->szAudioTrack);
+ pSetting->pSettingInfo->nRepeatMode = pSettingInfo->nRepeatMode;
+ pSetting->pSettingInfo->bCapture = pSettingInfo->bCapture;
+ pSetting->pSettingInfo->bTagBuddy = pSettingInfo->bTagBuddy;
+ pSetting->pSettingInfo->bEditWeatherTag =
+ pSettingInfo->bEditWeatherTag;
+ pSetting->pSettingInfo->bStreaming = pSettingInfo->bStreaming;
+ pSetting->pSettingInfo->bRepeat = pSettingInfo->bRepeat;
+ pSetting->pSettingInfo->bSelectSubtitle =
+ pSettingInfo->bSelectSubtitle;
+ pSetting->pSettingInfo->bDrm = pSettingInfo->bDrm;
+ pSetting->pSettingInfo->bExternalMode = pSettingInfo->bExternalMode;
+ pSetting->pSettingInfo->bShowEditWeather =
+ pSettingInfo->bShowEditWeather;
+
+ pSetting->pParent = pParent;
+ pSetting->pCloseCb = pCloseCb;
+
+ pSetting->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SETTINGS, NULL, 0.0, NULL,
+ __vp_setting_popup_key_event_cb,
+ __vp_setting_popup_mouse_event_cb,
+ (void *) pSetting);
+ if (pSetting->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_setting_destroy_handle(pSetting);
+ return NULL;
+ }
+
+ pSetting->pGenList = _vp_setting_create_genlist(pSetting->pPopup);
+ if (pSetting->pGenList == NULL) {
+ VideoLogError("_vp_setting_create_button fail");
+ _vp_setting_destroy_handle(pSetting);
+ return NULL;
+ }
+ evas_object_data_set(pSetting->pGenList, VP_SETTING_GENLIST_DATA_KEY,
+ (void *) pSetting);
+ vp_language_list_create();
+
+ if (!_vp_setting_add_genlist_item
+ (pSetting->pGenList, (void *) pSetting)) {
+ VideoLogError("_vp_setting_add_genlist_item fail");
+ _vp_setting_destroy_handle(pSetting);
+ return NULL;
+ }
+ evas_object_smart_callback_add(pSetting->pGenList, "realized",
+ __vp_setting_genlist_realized, NULL);
+ evas_object_smart_callback_add(pSetting->pParent, "rotation,changed",
+ __vp_setting_popup_rotate_cb,
+ pSetting);
+
+ pSetting->pBox = elm_box_add(pSetting->pPopup);
+ vp_popup_set_popup_min_size(pSetting->pParent, pSetting->pBox,
+ pSetting->nAppendItemCnt,
+ VIDEO_POPUP_2_TEXT);
+
+ elm_box_pack_end(pSetting->pBox, pSetting->pGenList);
+
+ elm_object_content_set(pSetting->pPopup, pSetting->pBox);
+
+ return pSetting;
+}
+
+void vp_setting_destroy(setting_popup_handle pSettingHandle)
+{
+ if (pSettingHandle == NULL) {
+ VideoLogError("pSettingHandle is NULL");
+ return;
+ }
+
+ SettingPopup *pSetting = (SettingPopup *) pSettingHandle;
+
+ _vp_setting_destroy_handle(pSetting);
+
+}
+
+bool vp_setting_realize(setting_popup_handle pSettingHandle)
+{
+ if (pSettingHandle == NULL) {
+ VideoLogError("pSettingHandle is NULL");
+ return FALSE;
+ }
+
+ SettingPopup *pSetting = (SettingPopup *) pSettingHandle;
+
+ evas_object_show(pSetting->pPopup);
+
+ return TRUE;
+}
+
+bool vp_setting_unrealize(setting_popup_handle pSettingHandle)
+{
+ if (pSettingHandle == NULL) {
+ VideoLogError("pSettingHandle is NULL");
+ return FALSE;
+ }
+
+ SettingPopup *pSetting = (SettingPopup *) pSettingHandle;
+
+
+ evas_object_hide(pSetting->pPopup);
+
+ return TRUE;
+}
+
+bool vp_setting_set_user_data(setting_popup_handle pSettingHandle,
+ void *pUserData)
+{
+ if (pSettingHandle == NULL) {
+ VideoLogError("pSettingHandle is NULL");
+ return FALSE;
+ }
+
+ SettingPopup *pSetting = (SettingPopup *) pSettingHandle;
+
+ pSetting->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-share.c b/playview/src/feature/vp-share.c
new file mode 100644
index 0000000..fca2476
--- /dev/null
+++ b/playview/src/feature/vp-share.c
@@ -0,0 +1,446 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-share.h"
+
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+typedef struct _SharePopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+
+ char *pMediUrl;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+
+} SharePopup;
+
+static void __vp_share_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SharePopup *pShare = (SharePopup *) data;
+ if (!pShare) {
+ VideoLogError("pShare IS null");
+ return;
+ }
+ if (pShare->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pShare->pParent, pShare->pBox,
+ pShare->nListCount, VIDEO_POPUP_DEFAULT);
+
+}
+
+static void _vp_share_destroy_handle(SharePopup *pShare)
+{
+ if (pShare == NULL) {
+ VideoLogError("pShare is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pShare->pParent, "rotation,changed",
+ __vp_share_popup_rotate_cb);
+
+ VP_EVAS_DEL(pShare->pGenList);
+ VP_EVAS_DEL(pShare->pButton);
+ VP_EVAS_DEL(pShare->pBox);
+
+ VP_EVAS_DEL(pShare->pPopup);
+
+ VP_FREE(pShare->pMediUrl);
+
+ VP_FREE(pShare);
+}
+
+/* callback functions */
+static char *__vp_share_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static void __vp_share_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+ SharePopup *pShare = (SharePopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_share_type_t nType = VP_SHARE_NONE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_MESSAGE)) {
+ VideoLogWarning
+ ("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_MESSAGE)");
+ nType = VP_SHARE_MESSAGE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_EMAIL)) {
+ VideoLogWarning("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_EMAIL)");
+ nType = VP_SHARE_EMAIL;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_BLUETOOTH)) {
+ VideoLogWarning
+ ("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_BLUETOOTH)");
+ nType = VP_SHARE_BLUETOOTH;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_FTM)) {
+ VideoLogWarning("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_FTM)");
+ nType = VP_SHARE_FTM;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_FACEBOOK)) {
+ VideoLogWarning
+ ("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_FACEBOOK)");
+ nType = VP_SHARE_FACEBOOK;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_YOUTUBE)) {
+ VideoLogWarning
+ ("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_YOUTUBE)");
+ nType = VP_SHARE_YOUTUBE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_NFC)) {
+ VideoLogWarning("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_NFC)");
+ nType = VP_SHARE_NFC;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_FILE_TRANSFER)) {
+ VideoLogWarning
+ ("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_FILE_TRANSFER)");
+ nType = VP_SHARE_FILE_TRANSFER;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SHARE_DROPBOX)) {
+ VideoLogWarning
+ ("SELECT SHARE ITEM (VP_PLAY_STRING_SHARE_DROPBOX)");
+ nType = VP_SHARE_DROP_BOX;
+ }
+
+ if (pShare->pCloseCb) {
+ pShare->pCloseCb((int) nType, TRUE, (void *) pShare->pUserData);
+ }
+}
+
+
+static void __vp_share_close_btn_cb(void *pUserData, Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pShareHandle is NULL");
+ return;
+ }
+
+ SharePopup *pShare = (SharePopup *) pUserData;
+
+ if (pShare->pCloseCb) {
+ pShare->pCloseCb(VP_SHARE_NONE, FALSE,
+ (void *) pShare->pUserData);
+ }
+}
+
+static void __vp_share_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SharePopup *pShare = (SharePopup *) pUserData;
+
+ if (pShare->pCloseCb) {
+ pShare->pCloseCb(VP_SHARE_NONE, FALSE,
+ (void *) pShare->pUserData);
+ }
+}
+
+static void __vp_share_popup_mouse_event_cb(void *pUserData, Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SharePopup *pShare = (SharePopup *) pUserData;
+
+ if (pShare->pCloseCb) {
+ pShare->pCloseCb(VP_SHARE_NONE, FALSE,
+ (void *) pShare->pUserData);
+ }
+ }
+}
+
+
+/* internal functions */
+static Evas_Object *_vp_share_create_button(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_CLOSE_IDS);
+ elm_object_part_content_set(pParent, "button1", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_share_close_btn_cb, pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_share_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_share_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (!pObj || !pUserData) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+ SharePopup *pShare = (SharePopup *) pUserData;
+
+ Elm_Genlist_Item_Class *st_Share_Itc = NULL;
+
+ st_Share_Itc = elm_genlist_item_class_new();
+
+ if (st_Share_Itc != NULL) {
+ st_Share_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ st_Share_Itc->item_style = "1text/popup";
+ st_Share_Itc->func.text_get = (void *) __vp_share_genlist_text_get_cb;
+ st_Share_Itc->func.content_get = NULL;
+ st_Share_Itc->func.state_get = NULL;
+ st_Share_Itc->func.del = NULL;
+ pShare->nListCount = 0;
+
+ elm_genlist_item_append(pObj, st_Share_Itc,
+ (void *) VP_PLAY_STRING_SHARE_MESSAGE, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_share_genlist_item_selected_cb,
+ pUserData);
+ pShare->nListCount++;
+ elm_genlist_item_append(pObj, st_Share_Itc,
+ (void *) VP_PLAY_STRING_SHARE_EMAIL, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_share_genlist_item_selected_cb,
+ pUserData);
+ pShare->nListCount++;
+ elm_genlist_item_append(pObj, st_Share_Itc,
+ (void *) VP_PLAY_STRING_SHARE_FTM, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_share_genlist_item_selected_cb,
+ pUserData);
+ pShare->nListCount++;
+ elm_genlist_item_append(pObj, st_Share_Itc,
+ (void *) VP_PLAY_STRING_SHARE_BLUETOOTH, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_share_genlist_item_selected_cb,
+ pUserData);
+ pShare->nListCount++;
+ elm_genlist_item_append(pObj, st_Share_Itc,
+ (void *) VP_PLAY_STRING_SHARE_FACEBOOK, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_share_genlist_item_selected_cb,
+ pUserData);
+ elm_genlist_item_class_free(st_Share_Itc);
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+share_handle vp_share_create(Evas_Object *pParent, char *pMediaUrl,
+ PopupCloseCbFunc pCloseCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (pMediaUrl == NULL) {
+ VideoLogError("pMediaUrl is NULL");
+ return NULL;
+ }
+
+ SharePopup *pShare = NULL;
+
+ pShare = calloc(1, sizeof(SharePopup));
+
+ if (pShare == NULL) {
+ VideoLogError("pShare alloc fail");
+ return NULL;
+ }
+
+ pShare->pParent = pParent;
+ pShare->pCloseCb = pCloseCb;
+
+ VP_STRDUP(pShare->pMediUrl, pMediaUrl);
+
+ pShare->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_WITH_CANCEL_BTN,
+ VP_PLAY_STRING_POPUP_SHARE, NULL, 0.0, NULL,
+ __vp_share_popup_key_event_cb,
+ __vp_share_popup_mouse_event_cb, (void *) pShare);
+ if (pShare->pPopup == NULL) {
+ VideoLogError("_vp_share_create_popup fail");
+ _vp_share_destroy_handle(pShare);
+ return NULL;
+ }
+
+ pShare->pButton =
+ _vp_share_create_button(pShare->pPopup, (void *) pShare);
+ if (pShare->pButton == NULL) {
+ VideoLogError("_vp_share_create_button fail");
+ _vp_share_destroy_handle(pShare);
+ return NULL;
+ }
+
+ pShare->pGenList = _vp_share_create_genlist(pShare->pPopup);
+ if (pShare->pGenList == NULL) {
+ VideoLogError("_vp_share_create_genlist fail");
+ _vp_share_destroy_handle(pShare);
+ return NULL;
+ }
+ if (!_vp_share_add_genlist_item(pShare->pGenList, (void *) pShare)) {
+ VideoLogError("_vp_share_add_genlist_item fail");
+ _vp_share_destroy_handle(pShare);
+ return NULL;
+ }
+ evas_object_smart_callback_add(pShare->pParent, "rotation,changed",
+ __vp_share_popup_rotate_cb, pShare);
+
+ pShare->pBox = elm_box_add(pShare->pPopup);
+
+ vp_popup_set_popup_min_size(pShare->pParent, pShare->pBox,
+ pShare->nListCount, VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pShare->pBox, pShare->pGenList);
+
+ elm_object_content_set(pShare->pPopup, pShare->pBox);
+
+ return pShare;
+}
+
+void vp_share_destroy(share_handle pShareHandle)
+{
+ if (pShareHandle == NULL) {
+ VideoLogError("pShareHandle is NULL");
+ return;
+ }
+
+ SharePopup *pShare = (SharePopup *) pShareHandle;
+
+ _vp_share_destroy_handle(pShare);
+
+}
+
+bool vp_share_realize(share_handle pShareHandle)
+{
+ if (pShareHandle == NULL) {
+ VideoLogError("pShareHandle is NULL");
+ return FALSE;
+ }
+
+ SharePopup *pShare = (SharePopup *) pShareHandle;
+
+ evas_object_show(pShare->pPopup);
+
+ return TRUE;
+}
+
+bool vp_share_unrealize(share_handle pShareHandle)
+{
+ if (pShareHandle == NULL) {
+ VideoLogError("pShareHandle is NULL");
+ return FALSE;
+ }
+
+ SharePopup *pShare = (SharePopup *) pShareHandle;
+
+ evas_object_hide(pShare->pPopup);
+
+ return TRUE;
+}
+
+bool vp_share_set_user_data(share_handle pShareHandle, void *pUserData)
+{
+ if (pShareHandle == NULL) {
+ VideoLogError("pShareHandle is NULL");
+ return FALSE;
+ }
+
+ SharePopup *pShare = (SharePopup *) pShareHandle;
+
+ pShare->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-sound-alive.c b/playview/src/feature/vp-sound-alive.c
new file mode 100644
index 0000000..88bb63a
--- /dev/null
+++ b/playview/src/feature/vp-sound-alive.c
@@ -0,0 +1,512 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-sound-alive.h"
+#include "vp-sound.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SOUND_ALIVE_GENLIST_DATA_KEY "vp.sound.alive.genlist"
+
+typedef struct _SoundAlivePopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_Sa_Itc;
+
+ char *pMediUrl;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ video_sound_alive_t soundAliveType;
+} SoundAlivePopup;
+
+static void __vp_sound_alive_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+static void __vp_sound_alive_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_sound_alive_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) data;
+ if (!pSoundAlive) {
+ VideoLogError("pSoundAlive IS null");
+ return;
+ }
+ if (pSoundAlive->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSoundAlive->pParent, pSoundAlive->pBox,
+ pSoundAlive->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+static void _vp_sound_alive_destroy_handle(SoundAlivePopup *pSoundAlive)
+{
+ if (pSoundAlive == NULL) {
+ VideoLogError("pSoundAlive is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSoundAlive->pParent,
+ "rotation,changed",
+ __vp_sound_alive_popup_rotate_cb);
+ evas_object_smart_callback_del(pSoundAlive->pGenList, "realized",
+ __vp_sound_alive_genlist_realized);
+
+ VP_EVAS_DEL(pSoundAlive->pRadio);
+ VP_EVAS_DEL(pSoundAlive->pGenList);
+ VP_EVAS_DEL(pSoundAlive->pButton);
+ VP_EVAS_DEL(pSoundAlive->pBox);
+
+ if (pSoundAlive->st_Sa_Itc) {
+ elm_genlist_item_class_free(pSoundAlive->st_Sa_Itc);
+ pSoundAlive->st_Sa_Itc = NULL;
+ }
+
+
+ VP_EVAS_DEL(pSoundAlive->pPopup);
+
+ VP_FREE(pSoundAlive->pMediUrl);
+
+ VP_FREE(pSoundAlive);
+}
+
+/* callback functions */
+static char *__vp_sound_alive_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_sound_alive_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon.right")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SoundAlivePopup *pSoundAlive =
+ (SoundAlivePopup *) evas_object_data_get(pObj,
+ VP_SOUND_ALIVE_GENLIST_DATA_KEY);
+ if (pSoundAlive == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ video_sound_alive_t nType = VIDEO_SA_NONE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_NORMAL)) {
+ nType = VIDEO_SA_NORMAL;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_VOICE)) {
+ nType = VIDEO_SA_VOICE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_MOVIE)) {
+ nType = VIDEO_SA_MOVIE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_71CH)) {
+ nType = VIDEO_SA_7_1_CH;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nType);
+ elm_radio_group_add(pRadioObj, pSoundAlive->pRadio);
+ elm_radio_value_set(pSoundAlive->pRadio,
+ pSoundAlive->soundAliveType);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_sound_alive_genlist_item_selected_cb,
+ pSoundAlive);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_sound_alive_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_sound_alive_t nType = VIDEO_SA_NONE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_NORMAL)) {
+ VideoLogWarning
+ ("SELECT SOUND ALIVE ITEM (VP_PLAY_STRING_SOUND_ALIVE_NORMAL)");
+ nType = VIDEO_SA_NORMAL;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_VOICE)) {
+ VideoLogWarning
+ ("SELECT SOUND ALIVE ITEM (VP_PLAY_STRING_SOUND_ALIVE_VOICE)");
+ nType = VIDEO_SA_VOICE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_MOVIE)) {
+ VideoLogWarning
+ ("SELECT SOUND ALIVE ITEM (VP_PLAY_STRING_SOUND_ALIVE_MOVIE)");
+ nType = VIDEO_SA_MOVIE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SOUND_ALIVE_71CH)) {
+ VideoLogWarning
+ ("SELECT SOUND ALIVE ITEM (VP_PLAY_STRING_SOUND_ALIVE_71CH)");
+ nType = VIDEO_SA_7_1_CH;
+ }
+
+ pSoundAlive->soundAliveType = nType;
+ if (pSoundAlive->pCloseCb) {
+ pSoundAlive->pCloseCb((int) nType, FALSE,
+ (void *) pSoundAlive->pUserData);
+ }
+}
+
+static void __vp_sound_alive_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pUserData;
+
+ if (pSoundAlive->pCloseCb) {
+ pSoundAlive->pCloseCb(VIDEO_SA_NONE, FALSE,
+ (void *) pSoundAlive->pUserData);
+ }
+}
+
+static void __vp_sound_alive_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pUserData;
+
+ if (pSoundAlive->pCloseCb) {
+ pSoundAlive->pCloseCb(VIDEO_SA_NONE, FALSE,
+ (void *) pSoundAlive->pUserData);
+ }
+ }
+}
+
+static Evas_Object *_vp_sound_alive_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_sound_alive_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pUserData;
+
+ if (pSoundAlive->st_Sa_Itc) {
+ elm_genlist_item_class_free(pSoundAlive->st_Sa_Itc);
+ pSoundAlive->st_Sa_Itc = NULL;
+ }
+
+ pSoundAlive->st_Sa_Itc = elm_genlist_item_class_new();
+
+ if (pSoundAlive->st_Sa_Itc != NULL) {
+ pSoundAlive->st_Sa_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSoundAlive->st_Sa_Itc->item_style = "1line";
+ pSoundAlive->st_Sa_Itc->func.text_get =
+ (void *) __vp_sound_alive_genlist_text_get_cb;
+ pSoundAlive->st_Sa_Itc->func.content_get =
+ (void *) __vp_sound_alive_genlist_content_get_cb;
+ pSoundAlive->st_Sa_Itc->func.state_get = NULL;
+ pSoundAlive->st_Sa_Itc->func.del = NULL;
+ }
+
+ pSoundAlive->nListCount = 0;
+
+ elm_genlist_item_append(pObj, pSoundAlive->st_Sa_Itc,
+ (void *) VP_PLAY_STRING_SOUND_ALIVE_NORMAL,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_alive_genlist_item_selected_cb,
+ pUserData);
+ pSoundAlive->nListCount++;
+
+ video_sound_device_type_t nSoundDevType = VP_SOUND_DEVICE_NONE;
+ vp_sound_get_active_device(&nSoundDevType);
+ if (nSoundDevType == VP_SOUND_DEVICE_SPEAKER) {
+ elm_genlist_item_append(pObj, pSoundAlive->st_Sa_Itc,
+ (void *) VP_PLAY_STRING_SOUND_ALIVE_VOICE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_alive_genlist_item_selected_cb,
+ pUserData);
+ pSoundAlive->nListCount++;
+ } else if (nSoundDevType == VP_SOUND_DEVICE_HDMI
+ || nSoundDevType == VP_SOUND_DEVICE_BLUETOOTH) {
+ } else {
+ elm_genlist_item_append(pObj, pSoundAlive->st_Sa_Itc,
+ (void *) VP_PLAY_STRING_SOUND_ALIVE_VOICE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_alive_genlist_item_selected_cb,
+ pUserData);
+ pSoundAlive->nListCount++;
+ elm_genlist_item_append(pObj, pSoundAlive->st_Sa_Itc,
+ (void *) VP_PLAY_STRING_SOUND_ALIVE_MOVIE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_alive_genlist_item_selected_cb,
+ pUserData);
+ pSoundAlive->nListCount++;
+ elm_genlist_item_append(pObj, pSoundAlive->st_Sa_Itc,
+ (void *) VP_PLAY_STRING_SOUND_ALIVE_71CH,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_alive_genlist_item_selected_cb,
+ pUserData);
+ pSoundAlive->nListCount++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+sound_alive_handle vp_sound_alive_create(Evas_Object *pParent,
+ char *pMediaUrl,
+ PopupCloseCbFunc pCloseCb,
+ video_sound_alive_t nType)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (pMediaUrl == NULL) {
+ VideoLogError("pMediaUrl is NULL");
+ return NULL;
+ }
+
+ SoundAlivePopup *pSoundAlive = NULL;
+
+ pSoundAlive = calloc(1, sizeof(SoundAlivePopup));
+
+ if (pSoundAlive == NULL) {
+ VideoLogError("pSoundAlive alloc fail");
+ return NULL;
+ }
+
+ pSoundAlive->pParent = pParent;
+ pSoundAlive->pCloseCb = pCloseCb;
+
+ VP_STRDUP(pSoundAlive->pMediUrl, pMediaUrl);
+
+ pSoundAlive->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_POPUP_SOUND_ALIVE, NULL, 0.0, NULL,
+ __vp_sound_alive_popup_key_event_cb,
+ __vp_sound_alive_popup_mouse_event_cb,
+ (void *) pSoundAlive);
+ if (pSoundAlive->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_sound_alive_destroy_handle(pSoundAlive);
+ return NULL;
+ }
+
+ pSoundAlive->pGenList =
+ _vp_sound_alive_create_genlist(pSoundAlive->pPopup);
+ if (pSoundAlive->pGenList == NULL) {
+ VideoLogError("_vp_sound_alive_create_genlist fail");
+ _vp_sound_alive_destroy_handle(pSoundAlive);
+ return NULL;
+ }
+ evas_object_data_set(pSoundAlive->pGenList,
+ VP_SOUND_ALIVE_GENLIST_DATA_KEY,
+ (void *) pSoundAlive);
+ evas_object_smart_callback_add(pSoundAlive->pGenList, "realized",
+ __vp_sound_alive_genlist_realized,
+ NULL);
+
+ pSoundAlive->pRadio = elm_radio_add(pSoundAlive->pGenList);
+
+ if (!_vp_sound_alive_add_genlist_item
+ (pSoundAlive->pGenList, (void *) pSoundAlive)) {
+ VideoLogError("_vp_sound_alive_add_genlist_item fail");
+ _vp_sound_alive_destroy_handle(pSoundAlive);
+ return NULL;
+ }
+
+ VideoLogInfo("nType: %d", nType);
+ pSoundAlive->soundAliveType = nType;
+ evas_object_smart_callback_add(pSoundAlive->pParent,
+ "rotation,changed",
+ __vp_sound_alive_popup_rotate_cb,
+ pSoundAlive);
+
+ pSoundAlive->pBox = elm_box_add(pSoundAlive->pPopup);
+
+ vp_popup_set_popup_min_size(pSoundAlive->pParent, pSoundAlive->pBox,
+ pSoundAlive->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pSoundAlive->pBox, pSoundAlive->pGenList);
+
+ elm_object_content_set(pSoundAlive->pPopup, pSoundAlive->pBox);
+
+ return pSoundAlive;
+}
+
+void vp_sound_alive_destroy(sound_alive_handle pSAHandle)
+{
+ if (pSAHandle == NULL) {
+ VideoLogError("pSAHandle is NULL");
+ return;
+ }
+
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pSAHandle;
+
+ _vp_sound_alive_destroy_handle(pSoundAlive);
+
+}
+
+bool vp_sound_alive_realize(sound_alive_handle pSAHandle)
+{
+ if (pSAHandle == NULL) {
+ VideoLogError("pSAHandle is NULL");
+ return FALSE;
+ }
+
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pSAHandle;
+
+ evas_object_show(pSoundAlive->pPopup);
+
+ return TRUE;
+}
+
+bool vp_sound_alive_unrealize(sound_alive_handle pSAHandle)
+{
+ if (pSAHandle == NULL) {
+ VideoLogError("pSAHandle is NULL");
+ return FALSE;
+ }
+
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pSAHandle;
+
+ evas_object_hide(pSoundAlive->pPopup);
+
+ return TRUE;
+}
+
+bool vp_sound_alive_set_user_data(sound_alive_handle pSAHandle,
+ void *pUserData)
+{
+ if (pSAHandle == NULL) {
+ VideoLogError("pSAHandle is NULL");
+ return FALSE;
+ }
+
+ SoundAlivePopup *pSoundAlive = (SoundAlivePopup *) pSAHandle;
+
+ pSoundAlive->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-sound-path.c b/playview/src/feature/vp-sound-path.c
new file mode 100644
index 0000000..509319e
--- /dev/null
+++ b/playview/src/feature/vp-sound-path.c
@@ -0,0 +1,553 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-sound.h"
+#include "vp-sound-path.h"
+#include <glib.h>
+
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SOUND_PATH_GENLIST_DATA_KEY "vp.sound.path.genlist"
+
+typedef struct _SoundPathPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_Sp_Itc;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+
+ char *szBTName;
+
+ int nItemCnt;
+ video_sound_path_t soundPathType;
+} SoundPathPopup;
+
+static void __vp_sound_path_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+static void __vp_sound_genlist_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_sound_path_popup_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) data;
+ if (!pSoundPath) {
+ VideoLogError("pSoundPath IS null");
+ return;
+ }
+ if (pSoundPath->nItemCnt < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSoundPath->pParent, pSoundPath->pBox,
+ pSoundPath->nItemCnt,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+static void _vp_sound_path_destroy_handle(SoundPathPopup *pSoundPath)
+{
+ if (pSoundPath == NULL) {
+ VideoLogError("pSoundPath is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pSoundPath->pParent,
+ "rotation,changed",
+ __vp_sound_path_popup_rotate_cb);
+ evas_object_smart_callback_del(pSoundPath->pGenList, "realized",
+ __vp_sound_genlist_realized);
+
+ VP_EVAS_DEL(pSoundPath->pRadio);
+ VP_EVAS_DEL(pSoundPath->pGenList);
+ VP_EVAS_DEL(pSoundPath->pButton);
+ VP_EVAS_DEL(pSoundPath->pBox);
+
+ if (pSoundPath->st_Sp_Itc) {
+ elm_genlist_item_class_free(pSoundPath->st_Sp_Itc);
+ pSoundPath->st_Sp_Itc = NULL;
+ }
+
+
+ VP_EVAS_DEL(pSoundPath->pPopup);
+
+ VP_FREE(pSoundPath->szBTName);
+
+ VP_FREE(pSoundPath);
+}
+
+/* callback functions */
+static char *__vp_sound_path_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_sound_path_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon.2")) {
+ Evas_Object *pRadioObj = NULL;
+ Evas_Object *pLayout = NULL;
+
+ SoundPathPopup *pSoundPath =
+ (SoundPathPopup *) evas_object_data_get(pObj,
+ VP_SOUND_PATH_GENLIST_DATA_KEY);
+ if (pSoundPath == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ video_sound_path_t nType = VIDEO_SOUND_PATH_NONE;
+
+ if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_SPEAKER)) {
+ nType = VIDEO_SOUND_PATH_SPEAKER;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_EARJACK)) {
+ nType = VIDEO_SOUND_PATH_EARJACK;
+ } else if (!g_strcmp0(szTxt, pSoundPath->szBTName)) {
+ nType = VIDEO_SOUND_PATH_BLUETOOTH;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_HDMI)) {
+ nType = VIDEO_SOUND_PATH_HDMI;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_MIRRORING)) {
+ nType = VIDEO_SOUND_PATH_MIRRORING;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_USB_AUDIO)) {
+ nType = VIDEO_SOUND_PATH_USB_AUDIO;
+ }
+
+ pLayout = elm_layout_add(pObj);
+ pRadioObj = elm_radio_add(pLayout);
+
+ elm_layout_theme_set(pLayout, "layout", "list/C/type.2",
+ "default");
+ elm_radio_group_add(pRadioObj, pSoundPath->pRadio);
+ elm_radio_state_value_set(pRadioObj, nType);
+
+ if (nType == pSoundPath->soundPathType) {
+ VideoLogInfo("pSoundPath->soundPathType = %d",
+ pSoundPath->soundPathType);
+ elm_radio_value_set(pSoundPath->pRadio, nType);
+ }
+
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_sound_path_genlist_item_selected_cb,
+ (void *) pUserData);
+ elm_object_part_content_set(pLayout, "elm.swallow.content",
+ pRadioObj);
+ evas_object_show(pRadioObj);
+ evas_object_show(pLayout);
+
+ return pLayout;
+ }
+ return NULL;
+}
+
+static void __vp_sound_path_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_sound_path_t nType = VIDEO_SOUND_PATH_NONE;
+
+ if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_SPEAKER)) {
+ VideoLogWarning
+ ("SELECT SOUND PATH ITEM (VP_PLAY_STRING_SOUND_SPEAKER)");
+ nType = VIDEO_SOUND_PATH_SPEAKER;
+ vp_sound_set_active_route(VP_SOUND_DEVICE_SPEAKER);
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_EARJACK)) {
+ VideoLogWarning
+ ("SELECT SOUND PATH ITEM (VP_PLAY_STRING_SOUND_EARJACK)");
+ nType = VIDEO_SOUND_PATH_EARJACK;
+ vp_sound_set_active_route(VP_SOUND_DEVICE_EARJACK);
+ } else if (!g_strcmp0(szTxt, pSoundPath->szBTName)) {
+ nType = VIDEO_SOUND_PATH_BLUETOOTH;
+ VideoLogWarning
+ ("SELECT SOUND PATH ITEM (VIDEO_SOUND_PATH_BLUETOOTH)");
+ vp_sound_set_active_route(VP_SOUND_DEVICE_BLUETOOTH);
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_HDMI)) {
+ VideoLogWarning("SELECT SOUND PATH ITEM (VIDEO_SOUND_PATH_HDMI)");
+ nType = VIDEO_SOUND_PATH_HDMI;
+ vp_sound_set_active_route(VP_SOUND_DEVICE_HDMI);
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_MIRRORING)) {
+ VideoLogWarning
+ ("SELECT SOUND PATH ITEM (VIDEO_SOUND_PATH_MIRRORING)");
+ nType = VIDEO_SOUND_PATH_MIRRORING;
+ vp_sound_set_active_route(VP_SOUND_DEVICE_MIRRORING);
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_SOUND_USB_AUDIO)) {
+ VideoLogWarning
+ ("SELECT SOUND PATH ITEM (VIDEO_SOUND_PATH_USB_AUDIO)");
+ nType = VIDEO_SOUND_PATH_USB_AUDIO;
+ vp_sound_set_active_route(VP_SOUND_DEVICE_USB_AUDIO);
+ }
+
+ pSoundPath->soundPathType = nType;
+ if (pSoundPath->pCloseCb) {
+ pSoundPath->pCloseCb((int) nType, FALSE,
+ (void *) pSoundPath->pUserData);
+ }
+}
+
+static void __vp_sound_path_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pUserData;
+
+ if (pSoundPath->pCloseCb) {
+ pSoundPath->pCloseCb(VIDEO_SOUND_PATH_NONE, FALSE,
+ (void *) pSoundPath->pUserData);
+ }
+}
+
+static void __vp_sound_path_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pUserData;
+
+ if (pSoundPath->pCloseCb) {
+ pSoundPath->pCloseCb(VIDEO_SOUND_PATH_NONE, FALSE,
+ (void *) pSoundPath->pUserData);
+ }
+ }
+}
+
+static Evas_Object *_vp_sound_path_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_sound_path_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pUserData;
+
+ if (pSoundPath->st_Sp_Itc) {
+ elm_genlist_item_class_free(pSoundPath->st_Sp_Itc);
+ pSoundPath->st_Sp_Itc = NULL;
+ }
+
+ pSoundPath->st_Sp_Itc = elm_genlist_item_class_new();
+
+ if (pSoundPath->st_Sp_Itc != NULL) {
+ pSoundPath->st_Sp_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSoundPath->st_Sp_Itc->item_style = "1line";
+ pSoundPath->st_Sp_Itc->func.text_get =
+ (void *) __vp_sound_path_genlist_text_get_cb;
+ pSoundPath->st_Sp_Itc->func.content_get =
+ (void *) __vp_sound_path_genlist_content_get_cb;
+ pSoundPath->st_Sp_Itc->func.state_get = NULL;
+ pSoundPath->st_Sp_Itc->func.del = NULL;
+ }
+
+ if (vp_sound_device_is_enable(VP_SOUND_DEVICE_BLUETOOTH, pSoundPath)) {
+ char *szBTName = NULL;
+ if (vp_sound_get_a2dp_name(&szBTName)) {
+ VP_STRDUP(pSoundPath->szBTName, szBTName);
+ VP_FREE(szBTName);
+ elm_genlist_item_append(pObj, pSoundPath->st_Sp_Itc,
+ (void *) pSoundPath->szBTName, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_sound_path_genlist_item_selected_cb,
+ pUserData);
+ pSoundPath->nItemCnt++;
+ }
+ }
+
+ if (vp_sound_device_is_enable(VP_SOUND_DEVICE_HDMI, pSoundPath)) {
+ elm_genlist_item_append(pObj, pSoundPath->st_Sp_Itc,
+ (void *) VP_PLAY_STRING_SOUND_HDMI, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_sound_path_genlist_item_selected_cb,
+ pUserData);
+ pSoundPath->nItemCnt++;
+ }
+
+ if (vp_sound_device_is_enable(VP_SOUND_DEVICE_MIRRORING, pSoundPath)) {
+ elm_genlist_item_append(pObj, pSoundPath->st_Sp_Itc,
+ (void *) VP_PLAY_STRING_SOUND_MIRRORING,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_path_genlist_item_selected_cb,
+ pUserData);
+ pSoundPath->nItemCnt++;
+ }
+
+ if (vp_sound_device_is_enable(VP_SOUND_DEVICE_USB_AUDIO, pSoundPath)) {
+ elm_genlist_item_append(pObj, pSoundPath->st_Sp_Itc,
+ (void *) VP_PLAY_STRING_SOUND_USB_AUDIO,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_path_genlist_item_selected_cb,
+ pUserData);
+ pSoundPath->nItemCnt++;
+ }
+
+ if (vp_sound_device_is_enable(VP_SOUND_DEVICE_EARJACK, pSoundPath)) {
+ elm_genlist_item_append(pObj, pSoundPath->st_Sp_Itc,
+ (void *) VP_PLAY_STRING_SOUND_EARJACK,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_path_genlist_item_selected_cb,
+ pUserData);
+ pSoundPath->nItemCnt++;
+ }
+
+ if (vp_sound_device_is_enable(VP_SOUND_DEVICE_EARJACK, pSoundPath)
+ && vp_sound_device_is_enable(VP_SOUND_DEVICE_BLUETOOTH,
+ pSoundPath)) {
+ VideoLogError("Skip for sound policy");
+ } else {
+ elm_genlist_item_append(pObj, pSoundPath->st_Sp_Itc,
+ (void *) VP_PLAY_STRING_SOUND_SPEAKER,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_sound_path_genlist_item_selected_cb,
+ pUserData);
+ pSoundPath->nItemCnt++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+sound_path_handle vp_sound_path_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+
+ SoundPathPopup *pSoundPath = NULL;
+
+ pSoundPath = calloc(1, sizeof(SoundPathPopup));
+
+ if (pSoundPath == NULL) {
+ VideoLogError("pSoundPath alloc fail");
+ return NULL;
+ }
+
+ pSoundPath->pParent = pParent;
+ pSoundPath->pCloseCb = pCloseCb;
+
+ pSoundPath->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SOUND_PATH, NULL, 0.0, NULL,
+ __vp_sound_path_popup_key_event_cb,
+ __vp_sound_path_popup_mouse_event_cb,
+ (void *) pSoundPath);
+ if (pSoundPath->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_sound_path_destroy_handle(pSoundPath);
+ return NULL;
+ }
+
+ pSoundPath->pGenList =
+ _vp_sound_path_create_genlist(pSoundPath->pPopup);
+ if (pSoundPath->pGenList == NULL) {
+ VideoLogError("_vp_sound_path_create_genlist fail");
+ _vp_sound_path_destroy_handle(pSoundPath);
+ return NULL;
+ }
+ evas_object_smart_callback_add(pSoundPath->pGenList, "realized",
+ __vp_sound_genlist_realized, NULL);
+
+ evas_object_data_set(pSoundPath->pGenList,
+ VP_SOUND_PATH_GENLIST_DATA_KEY,
+ (void *) pSoundPath);
+
+ pSoundPath->pRadio = elm_radio_add(pSoundPath->pGenList);
+
+ if (!_vp_sound_path_add_genlist_item
+ (pSoundPath->pGenList, (void *) pSoundPath)) {
+ VideoLogError("_vp_sound_path_add_genlist_item fail");
+ _vp_sound_path_destroy_handle(pSoundPath);
+ return NULL;
+ }
+
+ video_sound_device_type_t nType = VP_SOUND_DEVICE_NONE;
+
+ vp_sound_get_active_device(&nType);
+ if (nType != VP_SOUND_DEVICE_NONE) {
+ //elm_radio_value_set(pSoundPath->pRadio, nType);
+ pSoundPath->soundPathType = nType;
+ }
+ evas_object_smart_callback_add(pSoundPath->pParent,
+ "rotation,changed",
+ __vp_sound_path_popup_rotate_cb,
+ pSoundPath);
+
+ pSoundPath->pBox = elm_box_add(pSoundPath->pPopup);
+
+ vp_popup_set_popup_min_size(pSoundPath->pParent, pSoundPath->pBox,
+ pSoundPath->nItemCnt,
+ VIDEO_POPUP_DEFAULT);
+
+
+ elm_box_pack_end(pSoundPath->pBox, pSoundPath->pGenList);
+
+ elm_object_content_set(pSoundPath->pPopup, pSoundPath->pBox);
+
+ return pSoundPath;
+}
+
+void vp_sound_path_destroy(sound_path_handle pSoundPathHandle)
+{
+ if (pSoundPathHandle == NULL) {
+ VideoLogError("pSoundPathHandle is NULL");
+ return;
+ }
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pSoundPathHandle;
+
+ _vp_sound_path_destroy_handle(pSoundPath);
+
+}
+
+bool vp_sound_path_realize(sound_path_handle pSoundPathHandle)
+{
+ if (pSoundPathHandle == NULL) {
+ VideoLogError("pSoundPathHandle is NULL");
+ return FALSE;
+ }
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pSoundPathHandle;
+
+ evas_object_show(pSoundPath->pPopup);
+
+ return TRUE;
+}
+
+bool vp_sound_path_unrealize(sound_path_handle pSoundPathHandle)
+{
+ if (pSoundPathHandle == NULL) {
+ VideoLogError("pSoundPathHandle is NULL");
+ return FALSE;
+ }
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pSoundPathHandle;
+
+ evas_object_hide(pSoundPath->pPopup);
+
+ return TRUE;
+}
+
+bool vp_sound_path_set_user_data(sound_path_handle pSoundPathHandle,
+ void *pUserData)
+{
+ if (pSoundPathHandle == NULL) {
+ VideoLogError("pSoundPathHandle is NULL");
+ return FALSE;
+ }
+
+ SoundPathPopup *pSoundPath = (SoundPathPopup *) pSoundPathHandle;
+
+ pSoundPath->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-alignment.c b/playview/src/feature/vp-subtitle-alignment.c
new file mode 100644
index 0000000..d1293d4
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-alignment.c
@@ -0,0 +1,513 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-alignment.h"
+#include "vp-play-button.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_ALIGNMENT_GENLIST_DATA_KEY "vp.subtitle.alignment.genlist"
+
+typedef struct _SubtitleAlignmentPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleAlignment_Itc;
+
+ int nDefaultIndex;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ video_play_subtitle_alignment_t currentAlignment;
+} SubtitleAlignmentPopup;
+
+static void _vp_subtitle_alignment_destroy_handle(SubtitleAlignmentPopup *
+ pSubtitleAlignment);
+
+static void __vp_subtitle_alignment_genlist_item_selected_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+
+static void __vp_subtitle_alignment_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_alignment_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) data;
+ if (!pSubtitleAlignment) {
+ VideoLogError("pSubtitleAlignment IS null");
+ return;
+ }
+ if (pSubtitleAlignment->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleAlignment->pParent,
+ pSubtitleAlignment->pBox,
+ pSubtitleAlignment->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_subtitle_alignment_genlist_text_get_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_alignment_genlist_content_get_cb(const
+ void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const
+ char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon.right")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) evas_object_data_get(pObj,
+ VP_SUBTITLE_ALIGNMENT_GENLIST_DATA_KEY);
+ if (pSubtitleAlignment == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+ video_play_subtitle_alignment_t nAlignment =
+ VIDEO_SUBTITLE_ALIGNMENT_CENTER;
+ if (!strcmp(szTxt, VP_PLAY_STRING_ALIGNMENT_LEFT)) {
+ nAlignment = VIDEO_SUBTITLE_ALIGNMENT_LEFT;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_ALIGNMENT_CENTER)) {
+ nAlignment = VIDEO_SUBTITLE_ALIGNMENT_CENTER;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_ALIGNMENT_RIGHT)) {
+ nAlignment = VIDEO_SUBTITLE_ALIGNMENT_RIGHT;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nAlignment);
+ elm_radio_group_add(pRadioObj, pSubtitleAlignment->pRadio);
+ elm_radio_value_set(pSubtitleAlignment->pRadio,
+ pSubtitleAlignment->currentAlignment);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_alignment_genlist_item_selected_cb,
+ pSubtitleAlignment);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_alignment_genlist_item_selected_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_play_subtitle_alignment_t nAlignment =
+ VIDEO_SUBTITLE_ALIGNMENT_CENTER;
+ if (!strcmp(szTxt, VP_PLAY_STRING_ALIGNMENT_LEFT)) {
+ nAlignment = VIDEO_SUBTITLE_ALIGNMENT_LEFT;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_ALIGNMENT_CENTER)) {
+ nAlignment = VIDEO_SUBTITLE_ALIGNMENT_CENTER;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_ALIGNMENT_RIGHT)) {
+ nAlignment = VIDEO_SUBTITLE_ALIGNMENT_RIGHT;
+ }
+
+ pSubtitleAlignment->currentAlignment = nAlignment;
+ if (pSubtitleAlignment->pCloseCb) {
+ pSubtitleAlignment->pCloseCb(nAlignment, FALSE,
+ (void *) pSubtitleAlignment->
+ pUserData);
+ }
+}
+
+static void __vp_subtitle_alignment_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pUserData;
+
+ if (pSubtitleAlignment->pCloseCb) {
+ pSubtitleAlignment->pCloseCb(-1, FALSE,
+ (void *) pSubtitleAlignment->
+ pUserData);
+ }
+}
+
+static void __vp_subtitle_alignment_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *
+ pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pUserData;
+
+ if (pSubtitleAlignment->pCloseCb) {
+ pSubtitleAlignment->pCloseCb(-1, FALSE,
+ (void *) pSubtitleAlignment->
+ pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_subtitle_alignment_destroy_handle(SubtitleAlignmentPopup *
+ pSubtitleAlignment)
+{
+ if (pSubtitleAlignment == NULL) {
+ VideoLogError("pSubtitleAlignment is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSubtitleAlignment->pParent,
+ "rotation,changed",
+ __vp_subtitle_alignment_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitleAlignment->pGenList,
+ "realized",
+ __vp_subtitle_alignment_genlist_realized);
+
+ VP_EVAS_DEL(pSubtitleAlignment->pRadio);
+
+ VP_EVAS_DEL(pSubtitleAlignment->pGenList);
+ VP_EVAS_DEL(pSubtitleAlignment->pButton);
+ VP_EVAS_DEL(pSubtitleAlignment->pBox);
+
+ if (pSubtitleAlignment->st_SubtitleAlignment_Itc) {
+ elm_genlist_item_class_free(pSubtitleAlignment->
+ st_SubtitleAlignment_Itc);
+ pSubtitleAlignment->st_SubtitleAlignment_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pSubtitleAlignment->pPopup);
+
+ VP_FREE(pSubtitleAlignment);
+}
+
+static Evas_Object *_vp_subtitle_alignment_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_alignment_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pUserData;
+
+ if (pSubtitleAlignment->st_SubtitleAlignment_Itc) {
+ elm_genlist_item_class_free(pSubtitleAlignment->
+ st_SubtitleAlignment_Itc);
+ pSubtitleAlignment->st_SubtitleAlignment_Itc = NULL;
+ }
+
+ pSubtitleAlignment->st_SubtitleAlignment_Itc =
+ elm_genlist_item_class_new();
+
+ if (pSubtitleAlignment->st_SubtitleAlignment_Itc != NULL) {
+ pSubtitleAlignment->st_SubtitleAlignment_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleAlignment->st_SubtitleAlignment_Itc->item_style = "1line";
+ pSubtitleAlignment->st_SubtitleAlignment_Itc->func.text_get =
+ (void *) __vp_subtitle_alignment_genlist_text_get_cb;
+ pSubtitleAlignment->st_SubtitleAlignment_Itc->func.content_get =
+ (void *) __vp_subtitle_alignment_genlist_content_get_cb;
+ pSubtitleAlignment->st_SubtitleAlignment_Itc->func.state_get = NULL;
+ pSubtitleAlignment->st_SubtitleAlignment_Itc->func.del = NULL;
+ pSubtitleAlignment->nListCount = 0;
+
+ elm_genlist_item_append(pObj,
+ pSubtitleAlignment->st_SubtitleAlignment_Itc,
+ (void *) VP_PLAY_STRING_ALIGNMENT_LEFT, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_alignment_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleAlignment->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleAlignment->st_SubtitleAlignment_Itc,
+ (void *) VP_PLAY_STRING_ALIGNMENT_CENTER,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_alignment_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleAlignment->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleAlignment->st_SubtitleAlignment_Itc,
+ (void *) VP_PLAY_STRING_ALIGNMENT_RIGHT, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_alignment_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleAlignment->nListCount++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+subtitle_alignment_handle vp_subtitle_alignment_create(Evas_Object *
+ pParent,
+ PopupCloseCbFunc
+ pCloseCb,
+ int nDefaultAlign)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment = NULL;
+
+ pSubtitleAlignment = calloc(1, sizeof(SubtitleAlignmentPopup));
+
+ if (pSubtitleAlignment == NULL) {
+ VideoLogError("pSubtitleAlignment alloc fail");
+ return NULL;
+ }
+
+ pSubtitleAlignment->pParent = pParent;
+ pSubtitleAlignment->pCloseCb = pCloseCb;
+
+ pSubtitleAlignment->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_ALIGNMENT, NULL, 0.0,
+ NULL, __vp_subtitle_alignment_popup_key_event_cb,
+ __vp_subtitle_alignment_popup_mouse_event_cb,
+ (void *) pSubtitleAlignment);
+
+ if (pSubtitleAlignment->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_alignment_destroy_handle(pSubtitleAlignment);
+ return NULL;
+ }
+ pSubtitleAlignment->pGenList =
+ _vp_subtitle_alignment_create_genlist(pSubtitleAlignment->pPopup);
+ if (pSubtitleAlignment->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_alignment_create_genlist fail");
+ _vp_subtitle_alignment_destroy_handle(pSubtitleAlignment);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleAlignment->pGenList,
+ VP_SUBTITLE_ALIGNMENT_GENLIST_DATA_KEY,
+ (void *) pSubtitleAlignment);
+ evas_object_smart_callback_add(pSubtitleAlignment->pGenList,
+ "realized",
+ __vp_subtitle_alignment_genlist_realized,
+ NULL);
+
+ pSubtitleAlignment->nDefaultIndex = nDefaultAlign;
+ pSubtitleAlignment->pRadio =
+ elm_radio_add(pSubtitleAlignment->pGenList);
+
+ if (!_vp_subtitle_alignment_add_genlist_item
+ (pSubtitleAlignment->pGenList, (void *) pSubtitleAlignment)) {
+ VideoLogError("_vp_subtitle_alignment_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pSubtitleAlignment->pRadio, nDefaultAlign);
+ pSubtitleAlignment->currentAlignment = nDefaultAlign;
+ evas_object_smart_callback_add(pSubtitleAlignment->pParent,
+ "rotation,changed",
+ __vp_subtitle_alignment_popup_rotate_cb,
+ pSubtitleAlignment);
+
+ pSubtitleAlignment->pBox = elm_box_add(pSubtitleAlignment->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleAlignment->pParent,
+ pSubtitleAlignment->pBox,
+ pSubtitleAlignment->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ elm_box_pack_end(pSubtitleAlignment->pBox,
+ pSubtitleAlignment->pGenList);
+ elm_object_content_set(pSubtitleAlignment->pPopup,
+ pSubtitleAlignment->pBox);
+
+ return pSubtitleAlignment;
+}
+
+void vp_subtitle_alignment_destroy(subtitle_alignment_handle
+ pSubtitleAlignmentHandle)
+{
+ if (pSubtitleAlignmentHandle == NULL) {
+ VideoLogError("pSubtitleAlignmentHandle is NULL");
+ return;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pSubtitleAlignmentHandle;
+
+ _vp_subtitle_alignment_destroy_handle(pSubtitleAlignment);
+
+}
+
+bool vp_subtitle_alignment_realize(subtitle_alignment_handle
+ pSubtitleAlignmentHandle)
+{
+ if (pSubtitleAlignmentHandle == NULL) {
+ VideoLogError("pSubtitleAlignmentHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pSubtitleAlignmentHandle;
+
+ evas_object_show(pSubtitleAlignment->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_alignment_unrealize(subtitle_alignment_handle
+ pSubtitleAlignmentHandle)
+{
+ if (pSubtitleAlignmentHandle == NULL) {
+ VideoLogError("pSubtitleAlignmentHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pSubtitleAlignmentHandle;
+
+ evas_object_hide(pSubtitleAlignment->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_alignment_set_user_data(subtitle_alignment_handle
+ pSubtitleAlignmentHandle,
+ void *pUserData)
+{
+ if (pSubtitleAlignmentHandle == NULL) {
+ VideoLogError("pSubtitleAlignmentHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleAlignmentPopup *pSubtitleAlignment =
+ (SubtitleAlignmentPopup *) pSubtitleAlignmentHandle;
+
+ pSubtitleAlignment->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-bg-color.c b/playview/src/feature/vp-subtitle-bg-color.c
new file mode 100644
index 0000000..58bed25
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-bg-color.c
@@ -0,0 +1,509 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-bg-color.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_BG_COLOR_GENLIST_DATA_KEY "vp.subtitle.bg.color.genlist"
+
+
+typedef struct _SubtitleBGColorPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleBGColor_Itc;
+
+ int nDefaultIndex;
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ video_play_subtitle_color_t currentBgColor;
+} SubtitleBGColorPopup;
+
+
+
+static void _vp_subtitle_bg_color_destroy_handle(SubtitleBGColorPopup *
+ pSubtitleBGColor);
+static void __vp_subtitle_bg_color_genlist_item_selected_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+
+
+static void __vp_subtitle_bg_color_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_bg_color_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) data;
+ if (!pSubtitleBGColor) {
+ VideoLogError("pSubtitleBGColor IS null");
+ return;
+ }
+ if (pSubtitleBGColor->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleBGColor->pParent,
+ pSubtitleBGColor->pBox,
+ pSubtitleBGColor->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+
+/* callback functions */
+static char *__vp_subtitle_bg_color_genlist_text_get_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_bg_color_genlist_content_get_cb(const
+ void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const
+ char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) evas_object_data_get(pObj,
+ VP_SUBTITLE_BG_COLOR_GENLIST_DATA_KEY);
+ if (pSubtitleBGColor == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+ video_play_subtitle_color_t nColor = VIDEO_SUBTITLE_COLOR_NONE;
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_NONE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_NONE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_BLACK)) {
+ nColor = VIDEO_SUBTITLE_COLOR_BLACK;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_WHITE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_WHITE;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nColor);
+ elm_radio_group_add(pRadioObj, pSubtitleBGColor->pRadio);
+ elm_radio_value_set(pSubtitleBGColor->pRadio,
+ pSubtitleBGColor->currentBgColor);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_bg_color_genlist_item_selected_cb,
+ pSubtitleBGColor);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_bg_color_genlist_item_selected_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_play_subtitle_color_t nColor = VIDEO_SUBTITLE_COLOR_NONE;
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_NONE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_NONE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_BLACK)) {
+ nColor = VIDEO_SUBTITLE_COLOR_BLACK;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_WHITE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_WHITE;
+ }
+
+ pSubtitleBGColor->currentBgColor = nColor;
+ if (pSubtitleBGColor->pCloseCb) {
+ pSubtitleBGColor->pCloseCb(nColor, FALSE,
+ (void *) pSubtitleBGColor->pUserData);
+ }
+}
+
+static void __vp_subtitle_bg_color_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pUserData;
+
+ if (pSubtitleBGColor->pCloseCb) {
+ pSubtitleBGColor->pCloseCb(-1, FALSE,
+ (void *) pSubtitleBGColor->pUserData);
+ }
+}
+
+static void __vp_subtitle_bg_color_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *
+ pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pUserData;
+
+ if (pSubtitleBGColor->pCloseCb) {
+ pSubtitleBGColor->pCloseCb(-1, FALSE,
+ (void *) pSubtitleBGColor->
+ pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_subtitle_bg_color_destroy_handle(SubtitleBGColorPopup *
+ pSubtitleBGColor)
+{
+ if (pSubtitleBGColor == NULL) {
+ VideoLogError("pSubtitleBGColor is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSubtitleBGColor->pParent,
+ "rotation,changed",
+ __vp_subtitle_bg_color_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitleBGColor->pGenList, "realized",
+ __vp_subtitle_bg_color_genlist_realized);
+
+ VP_EVAS_DEL(pSubtitleBGColor->pRadio);
+ VP_EVAS_DEL(pSubtitleBGColor->pGenList);
+ VP_EVAS_DEL(pSubtitleBGColor->pButton);
+ VP_EVAS_DEL(pSubtitleBGColor->pBox);
+
+ if (pSubtitleBGColor->st_SubtitleBGColor_Itc) {
+ elm_genlist_item_class_free(pSubtitleBGColor->
+ st_SubtitleBGColor_Itc);
+ pSubtitleBGColor->st_SubtitleBGColor_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pSubtitleBGColor->pPopup);
+
+ VP_FREE(pSubtitleBGColor);
+}
+
+
+static Evas_Object *_vp_subtitle_bg_color_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_bg_color_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pUserData;
+
+ if (pSubtitleBGColor->st_SubtitleBGColor_Itc) {
+ elm_genlist_item_class_free(pSubtitleBGColor->
+ st_SubtitleBGColor_Itc);
+ pSubtitleBGColor->st_SubtitleBGColor_Itc = NULL;
+ }
+
+ pSubtitleBGColor->st_SubtitleBGColor_Itc =
+ elm_genlist_item_class_new();
+
+ if (pSubtitleBGColor->st_SubtitleBGColor_Itc != NULL) {
+ pSubtitleBGColor->st_SubtitleBGColor_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleBGColor->st_SubtitleBGColor_Itc->item_style =
+ "1text.1icon.3/popup";
+ pSubtitleBGColor->st_SubtitleBGColor_Itc->func.text_get =
+ (void *) __vp_subtitle_bg_color_genlist_text_get_cb;
+ pSubtitleBGColor->st_SubtitleBGColor_Itc->func.content_get =
+ (void *) __vp_subtitle_bg_color_genlist_content_get_cb;
+ pSubtitleBGColor->st_SubtitleBGColor_Itc->func.state_get = NULL;
+ pSubtitleBGColor->st_SubtitleBGColor_Itc->func.del = NULL;
+ pSubtitleBGColor->nListCount = 0;
+
+ elm_genlist_item_append(pObj,
+ pSubtitleBGColor->st_SubtitleBGColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_NONE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_bg_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleBGColor->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleBGColor->st_SubtitleBGColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_BLACK,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_bg_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleBGColor->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleBGColor->st_SubtitleBGColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_WHITE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_bg_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleBGColor->nListCount++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+subtitle_bg_color_handle vp_subtitle_bg_color_create(Evas_Object *
+ pParent,
+ PopupCloseCbFunc
+ pCloseCb,
+ int nDefaultColor)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor = NULL;
+
+ pSubtitleBGColor = calloc(1, sizeof(SubtitleBGColorPopup));
+
+ if (pSubtitleBGColor == NULL) {
+ VideoLogError("pSubtitleBGColor alloc fail");
+ return NULL;
+ }
+
+ pSubtitleBGColor->pParent = pParent;
+ pSubtitleBGColor->pCloseCb = pCloseCb;
+
+ pSubtitleBGColor->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_BG_COLOR, NULL, 0.0, NULL,
+ __vp_subtitle_bg_color_popup_key_event_cb,
+ __vp_subtitle_bg_color_popup_mouse_event_cb,
+ (void *) pSubtitleBGColor);
+ if (pSubtitleBGColor->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_bg_color_destroy_handle(pSubtitleBGColor);
+ return NULL;
+ }
+
+ pSubtitleBGColor->pGenList =
+ _vp_subtitle_bg_color_create_genlist(pSubtitleBGColor->pPopup);
+ if (pSubtitleBGColor->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_bg_color_create_genlist fail");
+ _vp_subtitle_bg_color_destroy_handle(pSubtitleBGColor);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleBGColor->pGenList,
+ VP_SUBTITLE_BG_COLOR_GENLIST_DATA_KEY,
+ (void *) pSubtitleBGColor);
+ evas_object_smart_callback_add(pSubtitleBGColor->pGenList, "realized",
+ __vp_subtitle_bg_color_genlist_realized,
+ NULL);
+
+ pSubtitleBGColor->nDefaultIndex = nDefaultColor;
+ pSubtitleBGColor->pRadio = elm_radio_add(pSubtitleBGColor->pGenList);
+
+ if (!_vp_subtitle_bg_color_add_genlist_item
+ (pSubtitleBGColor->pGenList, (void *) pSubtitleBGColor)) {
+ VideoLogError("_vp_subtitle_bg_color_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pSubtitleBGColor->pRadio, nDefaultColor);
+ pSubtitleBGColor->currentBgColor = nDefaultColor;
+ evas_object_smart_callback_add(pSubtitleBGColor->pParent,
+ "rotation,changed",
+ __vp_subtitle_bg_color_popup_rotate_cb,
+ pSubtitleBGColor);
+
+ pSubtitleBGColor->pBox = elm_box_add(pSubtitleBGColor->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleBGColor->pParent,
+ pSubtitleBGColor->pBox,
+ pSubtitleBGColor->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pSubtitleBGColor->pBox, pSubtitleBGColor->pGenList);
+ elm_object_content_set(pSubtitleBGColor->pPopup,
+ pSubtitleBGColor->pBox);
+
+ return pSubtitleBGColor;
+}
+
+void vp_subtitle_bg_color_destroy(subtitle_bg_color_handle
+ pSubtitleBGColorHandle)
+{
+ if (pSubtitleBGColorHandle == NULL) {
+ VideoLogError("pSubtitleBGColorHandle is NULL");
+ return;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pSubtitleBGColorHandle;
+
+ _vp_subtitle_bg_color_destroy_handle(pSubtitleBGColor);
+
+}
+
+bool vp_subtitle_bg_color_realize(subtitle_bg_color_handle
+ pSubtitleBGColorHandle)
+{
+ if (pSubtitleBGColorHandle == NULL) {
+ VideoLogError("pSubtitleBGColorHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pSubtitleBGColorHandle;
+
+ evas_object_show(pSubtitleBGColor->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_bg_color_unrealize(subtitle_bg_color_handle
+ pSubtitleBGColorHandle)
+{
+ if (pSubtitleBGColorHandle == NULL) {
+ VideoLogError("pSubtitleBGColorHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pSubtitleBGColorHandle;
+
+ evas_object_hide(pSubtitleBGColor->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_bg_color_set_user_data(subtitle_bg_color_handle
+ pSubtitleBGColorHandle,
+ void *pUserData)
+{
+ if (pSubtitleBGColorHandle == NULL) {
+ VideoLogError("pSubtitleBGColorHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleBGColorPopup *pSubtitleBGColor =
+ (SubtitleBGColorPopup *) pSubtitleBGColorHandle;
+
+ pSubtitleBGColor->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-color.c b/playview/src/feature/vp-subtitle-color.c
new file mode 100644
index 0000000..58554df
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-color.c
@@ -0,0 +1,1224 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-color.h"
+#include "vp-play-button.h"
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_COLOR_GENLIST_DATA_KEY "vp.subtitle.color.genlist"
+#define VP_PLAY_OPACITY_MAX_VALUE 100
+#define VP_PLAY_OPACITY_MIN_VALUE 0
+
+typedef struct _SubtitleColorplane_Data {
+ Evas_Object *layout;
+ //Evas_Object *rect;
+ Evas_Object *colorselector;
+ Elm_Object_Item *it_last;
+ Elm_Object_Item *sel_it;
+ Eina_Bool changed;
+ int r, g, b, a;
+} SubtitleColorplaneData;
+
+typedef struct _SubtitleColorPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+#ifndef SUBTITLE_K_FEATURE
+ Evas_Object *pRadio;
+#else
+ Evas_Object *pLayout;
+ Evas_Object *pLayoutOut;
+ Evas_Object *pScroller;
+ Evas_Object *pOkButton;
+ Evas_Object *pCancelButton;
+ Evas_Object *pDelButton;
+ Evas_Object *pAddButton;
+ Evas_Object *pSlider;
+ int nOpacityVal;
+ SubtitleColorUpdateCbFunc pUpdateCb;
+#endif
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleFontColor_Itc;
+
+ int nDefaultIndex;
+ int nListCount;
+
+ void *pUserData;
+ SubtitlePopupCloseCbFunc pCloseCb;
+ video_play_subtitle_color_t currentFontColor;
+ SubtitleColorplaneData *pColorplaneData;
+ char *pCurrentColorHex;
+} SubtitleColorPopup;
+
+
+static void _vp_subtitle_color_destroy_handle(SubtitleColorPopup *
+ pSubtitleColor);
+
+#ifndef SUBTITLE_K_FEATURE
+static void __vp_subtitle_color_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+
+static void __vp_subtitle_color_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+#endif
+static void __vp_subtitle_color_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) data;
+ if (!pSubtitleColor) {
+ VideoLogError("pSubtitleColor IS null");
+ return;
+ }
+#ifndef SUBTITLE_K_FEATURE
+ if (pSubtitleColor->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleColor->pParent,
+ pSubtitleColor->pBox,
+ pSubtitleColor->nListCount,
+ VIDEO_POPUP_DEFAULT);
+#else
+ int nRotation = elm_win_rotation_get(pSubtitleColor->pParent);
+ if (nRotation == 90 || nRotation == 270)
+ elm_layout_file_set(pSubtitleColor->pLayoutOut,
+ VP_PLAY_SUBTITLE_COLOR_POPUP_EDJ,
+ "pv.subtitle.scroller.layout.landscape");
+ else
+ elm_layout_file_set(pSubtitleColor->pLayoutOut,
+ VP_PLAY_SUBTITLE_COLOR_POPUP_EDJ,
+ "pv.subtitle.scroller.layout");
+#endif
+}
+
+#ifndef SUBTITLE_K_FEATURE
+
+/* callback functions */
+static char *__vp_subtitle_color_genlist_text_get_cb(const void
+ *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_color_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleColorPopup *pSubtitleColor =
+ (SubtitleColorPopup *) evas_object_data_get(pObj,
+ VP_SUBTITLE_COLOR_GENLIST_DATA_KEY);
+ if (pSubtitleColor == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+ video_play_subtitle_color_t nColor = VIDEO_SUBTITLE_COLOR_BLACK;
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_BLACK)) {
+ nColor = VIDEO_SUBTITLE_COLOR_BLACK;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_BLUE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_BLUE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_GREEN)) {
+ nColor = VIDEO_SUBTITLE_COLOR_GREEN;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_WHITE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_WHITE;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nColor);
+ elm_radio_group_add(pRadioObj, pSubtitleColor->pRadio);
+ elm_radio_value_set(pSubtitleColor->pRadio,
+ pSubtitleColor->currentFontColor);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_color_genlist_item_selected_cb,
+ pSubtitleColor);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_color_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+
+ video_play_subtitle_color_t nColor = VIDEO_SUBTITLE_COLOR_BLACK;
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_BLACK)) {
+ nColor = VIDEO_SUBTITLE_COLOR_BLACK;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_BLUE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_BLUE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_GREEN)) {
+ nColor = VIDEO_SUBTITLE_COLOR_GREEN;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_COLOR_WHITE)) {
+ nColor = VIDEO_SUBTITLE_COLOR_WHITE;
+ }
+
+ pSubtitleColor->currentFontColor = nColor;
+ if (pSubtitleColor->pCloseCb) {
+ pSubtitleColor->pCloseCb(nColor, FALSE,
+ (void *) pSubtitleColor->pUserData);
+ }
+}
+
+#endif
+
+static void __vp_subtitle_color_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) pUserData;
+
+ if (pSubtitleColor->pCloseCb) {
+#ifndef SUBTITLE_K_FEATURE
+ pSubtitleColor->pCloseCb(-1, FALSE,
+ (void *) pSubtitleColor->pUserData);
+#else
+ pSubtitleColor->pCloseCb(pSubtitleColor->pCurrentColorHex, FALSE,
+ (void *) pSubtitleColor->pUserData);
+#endif
+ }
+}
+
+static void __vp_subtitle_color_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleColorPopup *pSubtitleColor =
+ (SubtitleColorPopup *) pUserData;
+
+#ifndef SUBTITLE_K_FEATURE
+ pSubtitleColor->pCloseCb(-1, FALSE,
+ (void *) pSubtitleColor->pUserData);
+#else
+ pSubtitleColor->pCloseCb(pSubtitleColor->pCurrentColorHex, FALSE,
+ (void *) pSubtitleColor->pUserData);
+#endif
+ }
+}
+
+
+
+/* internal functions */
+int _vp_subtitle_color_get_opacity(char *colorHex)
+{
+ if (colorHex == NULL) {
+ VideoLogError("colorHex is NULL");
+ return 0;
+ }
+
+ char *szOpacity = g_strndup(colorHex + 7, 2);
+
+ float fOpacity = strtol(szOpacity, NULL, 16);
+
+ VP_FREE(szOpacity);
+
+ int nOpacity = (int)((fOpacity * 100) / 255.0 + 0.5);
+
+ VideoLogInfo("nOpacity", nOpacity);
+
+ return nOpacity;
+}
+
+int _vp_subtitle_color_get_platte_index(char *colorHex)
+{
+ if (colorHex == NULL) {
+ VideoLogError("colorHex is NULL");
+ return 0;
+ }
+ int nIndex = 0;
+ char *pColorHex = g_strndup(colorHex, 7);
+ VideoLogInfo("pColorHex %s", pColorHex);
+
+ if (!strcmp(pColorHex, "#ffffff")) {
+ nIndex = 0;
+ } else if (!strcmp(pColorHex, "#000000")) {
+ nIndex = 1;
+ } else if (!strcmp(pColorHex, "#ff0000")) {
+ nIndex = 2;
+ } else if (!strcmp(pColorHex, "#00ff00")) {
+ nIndex = 3;
+ } else if (!strcmp(pColorHex, "#0000ff")) {
+ nIndex = 4;
+ } else if (!strcmp(pColorHex, "#ffff00")) {
+ nIndex = 5;
+ } else if (!strcmp(pColorHex, "#ff00ff")) {
+ nIndex = 6;
+ } else if (!strcmp(pColorHex, "#00ffff")) {
+ nIndex = 7;
+ } else {
+ nIndex = 8;
+ }
+
+ VP_FREE(pColorHex);
+ return nIndex;
+}
+
+char *_vp_subtitle_color_get_select_color(char *pColor, int nOpacity)
+{
+ if (pColor == NULL) {
+ VideoLogError("colorHex is NULL");
+ return 0;
+ }
+
+ int nOpacitytmp = (int)(((float)(nOpacity * 255) / 100.0) + 0.5);
+
+ char *pOpacityHex = g_strdup_printf("%02x", nOpacitytmp);
+
+ char *polorHex = g_strndup(pColor, 7);
+
+ char *pColorHex = g_strdup_printf("%s%s", polorHex, pOpacityHex);
+
+ VP_FREE(pOpacityHex);
+ VP_FREE(polorHex);
+
+ return pColorHex;
+}
+
+static void _vp_subtitle_color_destroy_handle(SubtitleColorPopup *
+ pSubtitleColor)
+{
+ if (pSubtitleColor == NULL) {
+ VideoLogError("pSubtitleColor is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSubtitleColor->pParent,
+ "rotation,changed",
+ __vp_subtitle_color_popup_rotate_cb);
+#ifndef SUBTITLE_K_FEATURE
+ evas_object_smart_callback_del(pSubtitleColor->pGenList, "realized",
+ __vp_subtitle_color_genlist_realized);
+#endif
+
+
+#ifndef SUBTITLE_K_FEATURE
+ VP_EVAS_DEL(pSubtitleColor->pRadio);
+ VP_EVAS_DEL(pSubtitleColor->pGenList);
+ VP_EVAS_DEL(pSubtitleColor->pButton);
+ VP_EVAS_DEL(pSubtitleColor->pBox);
+#else
+ VP_FREE(pSubtitleColor->pColorplaneData);
+ pSubtitleColor->pColorplaneData = NULL;
+
+ VP_FREE(pSubtitleColor->pCurrentColorHex);
+ pSubtitleColor->pCurrentColorHex = NULL;
+
+ VP_EVAS_DEL(pSubtitleColor->pOkButton);
+ VP_EVAS_DEL(pSubtitleColor->pCancelButton);
+#endif
+ if (pSubtitleColor->st_SubtitleFontColor_Itc) {
+ elm_genlist_item_class_free(pSubtitleColor->
+ st_SubtitleFontColor_Itc);
+ pSubtitleColor->st_SubtitleFontColor_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pSubtitleColor->pPopup);
+
+ VP_FREE(pSubtitleColor);
+}
+
+#ifndef SUBTITLE_K_FEATURE
+static Evas_Object *_vp_subtitle_color_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_color_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) pUserData;
+
+ if (pSubtitleColor->st_SubtitleFontColor_Itc) {
+ elm_genlist_item_class_free(pSubtitleColor->
+ st_SubtitleFontColor_Itc);
+ pSubtitleColor->st_SubtitleFontColor_Itc = NULL;
+ }
+
+ pSubtitleColor->st_SubtitleFontColor_Itc =
+ elm_genlist_item_class_new();
+ pSubtitleColor->st_SubtitleFontColor_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleColor->st_SubtitleFontColor_Itc->item_style =
+ "1text.1icon.3/popup";
+ pSubtitleColor->st_SubtitleFontColor_Itc->func.text_get =
+ (void *) __vp_subtitle_color_genlist_text_get_cb;
+ pSubtitleColor->st_SubtitleFontColor_Itc->func.content_get =
+ (void *) __vp_subtitle_color_genlist_content_get_cb;
+ pSubtitleColor->st_SubtitleFontColor_Itc->func.state_get = NULL;
+ pSubtitleColor->st_SubtitleFontColor_Itc->func.del = NULL;
+ pSubtitleColor->nListCount = 0;
+
+ elm_genlist_item_append(pObj,
+ pSubtitleColor->st_SubtitleFontColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_WHITE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleColor->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleColor->st_SubtitleFontColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_BLUE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleColor->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleColor->st_SubtitleFontColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_GREEN,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleColor->nListCount++;
+ elm_genlist_item_append(pObj,
+ pSubtitleColor->st_SubtitleFontColor_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_COLOR_BLACK,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_color_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleColor->nListCount++;
+
+ return TRUE;
+}
+#else
+
+/* callback functions */
+
+static void __vp_play_subtitle_color_popup_ok_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) pUserData;
+ char *pColorHex =
+ _vp_subtitle_color_get_select_color(pSubtitleColor->
+ pCurrentColorHex,
+ pSubtitleColor->nOpacityVal);
+
+ if (pSubtitleColor->pCloseCb) {
+ pSubtitleColor->pCloseCb(pColorHex, TRUE,
+ (void *) pSubtitleColor->pUserData);
+ }
+ VP_FREE(pColorHex);
+}
+
+static void __vp_play_subtitle_color_popup_cancel_btn_cb(void *pUserData,
+ Evas_Object *
+ pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) pUserData;
+
+ if (pSubtitleColor->pCloseCb) {
+ pSubtitleColor->pCloseCb(pSubtitleColor->pCurrentColorHex, FALSE,
+ (void *) pSubtitleColor->pUserData);
+ }
+}
+
+static Evas_Object
+*_vp_play_subtitle_color_popup_create_ok_button(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pParent, "button2", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_play_subtitle_color_popup_ok_btn_cb,
+ pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object
+*_vp_play_subtitle_color_popup_create_cancel_button(Evas_Object *
+ pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_CANCEL_IDS);
+ elm_object_part_content_set(pParent, "button1", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_play_subtitle_color_popup_cancel_btn_cb,
+ pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static void _vp_play_subtitle_color_popup_colorpalette_cb(void *data,
+ Evas_Object *
+ obj,
+ void
+ *event_info)
+{
+ if (data == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) data;
+
+ int r = 255, g = 255, b = 255, a = 255;
+ SubtitleColorplaneData *cp = pSubtitleColor->pColorplaneData;
+ Elm_Object_Item *color_it = (Elm_Object_Item *) event_info;
+ cp->sel_it = color_it;
+ elm_colorselector_palette_item_color_get(color_it, &r, &g, &b, &a);
+ elm_colorselector_color_set(cp->colorselector, r, g, b, a);
+
+ VP_FREE(pSubtitleColor->pCurrentColorHex);
+ pSubtitleColor->pCurrentColorHex =
+ vp_play_util_convert_rgba_to_hex(r, g, b, a);
+ //Need Free;
+ VideoLogInfo("p = %s", pSubtitleColor->pCurrentColorHex);
+}
+
+static void _vp_play_subtitle_color_popup_colorplane_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (data == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) data;
+
+ int r = 255, g = 255, b = 255, a = 255;
+ SubtitleColorplaneData *cp = pSubtitleColor->pColorplaneData;
+ if (!cp->changed) {
+ elm_object_item_signal_emit(cp->it_last, "elm,state,custom,hide",
+ "");
+ cp->changed = EINA_TRUE;
+ }
+ elm_colorselector_color_get(cp->colorselector, &r, &g, &b, &a);
+ cp->r = r;
+ cp->g = g;
+ cp->b = b;
+ cp->a = a;
+ elm_colorselector_palette_item_color_set(cp->it_last, r, g, b, a);
+ if (cp->sel_it != cp->it_last) {
+ elm_object_item_signal_emit(cp->it_last, "elm,state,selected",
+ "elm");
+ }
+
+ VP_FREE(pSubtitleColor->pCurrentColorHex);
+ pSubtitleColor->pCurrentColorHex =
+ vp_play_util_convert_rgba_to_hex(r, g, b, a);
+
+}
+
+static void _vp_play_subtitle_color_popup_create_colorpalette(Evas_Object
+ * layout,
+ SubtitleColorPopup
+ *
+ pSubtitleColorPopup)
+{
+ if (pSubtitleColorPopup == NULL) {
+ VideoLogError("pSubtitleColorPopup is NULL");
+ return;
+ }
+
+ if (pSubtitleColorPopup->pColorplaneData == NULL) {
+ VideoLogError("pSubtitleColorPopup is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ SubtitleColorplaneData *cp = pSubtitleColorPopup->pColorplaneData;
+
+ int nIndex =
+ _vp_subtitle_color_get_platte_index(pSubtitleColorPopup->
+ pCurrentColorHex);
+
+ /* add color palette widget */
+ Eina_List *last_list;
+ const Eina_List *color_list;
+
+ cp->layout = layout;
+ cp->colorselector = elm_colorselector_add(layout);
+ elm_object_style_set(cp->colorselector, "colorplane");
+ //elm_colorselector_mode_set(cp->colorselector, ELM_COLORSELECTOR_PALETTE_PLANE);
+ evas_object_size_hint_fill_set(cp->colorselector, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(cp->colorselector, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_part_content_set(layout,
+ "pv.subtitle-color-popup.colorpalette.swallow",
+ cp->colorselector);
+ evas_object_smart_callback_add(cp->colorselector,
+ "color,item,selected",
+ _vp_play_subtitle_color_popup_colorpalette_cb,
+ pSubtitleColorPopup);
+
+ edje_object_message_signal_process(elm_layout_edje_get(layout));
+ elm_colorselector_palette_color_add(cp->colorselector, 255, 255, 255, 255); //white
+ elm_colorselector_palette_color_add(cp->colorselector, 0, 0, 0, 255); //black
+ elm_colorselector_palette_color_add(cp->colorselector, 255, 0, 0, 255); //red
+ elm_colorselector_palette_color_add(cp->colorselector, 0, 255, 0, 255); //green
+ elm_colorselector_palette_color_add(cp->colorselector, 0, 0, 255, 255); //blue
+ elm_colorselector_palette_color_add(cp->colorselector, 255, 255, 0, 255); //yellow
+ elm_colorselector_palette_color_add(cp->colorselector, 255, 0, 255, 255); //purple
+ elm_colorselector_palette_color_add(cp->colorselector, 0, 255, 255, 255); //cyan
+ elm_colorselector_palette_color_add(cp->colorselector, 0, 0, 0, 255); //auto
+
+ color_list = elm_colorselector_palette_items_get(cp->colorselector);
+ last_list = eina_list_last(color_list);
+ cp->it_last = eina_list_data_get(last_list);
+ elm_object_item_signal_emit(cp->it_last, "elm,state,custom,show", "");
+ cp->changed = EINA_FALSE;
+ evas_object_smart_callback_add(cp->colorselector, "changed",
+ _vp_play_subtitle_color_popup_colorplane_cb,
+ pSubtitleColorPopup);
+ cp->sel_it = eina_list_nth(color_list, nIndex);
+ elm_object_item_signal_emit(cp->sel_it, "elm,state,selected", "elm");
+
+ if (nIndex == 8) {
+ int r, g, b, a;
+ vp_play_util_convert_hex_to_rgba(pSubtitleColorPopup->
+ pCurrentColorHex, &r, &g, &b,
+ &a);
+ elm_colorselector_palette_item_color_set(cp->it_last, r, g, b,
+ 255);
+ }
+}
+
+static Evas_Object
+*_vp_play_subtitle_color_popup_create_layout(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pLayout = elm_layout_add(pParent);
+ if (pLayout == NULL) {
+ VideoLogError("pLayout object is NULL");
+ return NULL;
+ }
+
+ elm_layout_file_set(pLayout, VP_PLAY_SUBTITLE_COLOR_POPUP_EDJ,
+ VP_PLAY_EDJ_GROUP_PLAY_SUBTITLE_COLOR_POPUP);
+
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLayout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ elm_object_part_text_set(pLayout, "pv.subtitle-color-popup.subject",
+ VP_PLAY_STRING_SUBTITLE_TEXT);
+ elm_object_part_text_set(pLayout,
+ "pv.subtitle-color-popup.opacity.text",
+ VP_PLAY_STRING_SUBTITLE_OPACITY);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+
+}
+
+static void _vp_play_subtitle_color_update_text(SubtitleColorPopup *
+ pSubtitleColorPopup)
+{
+ if (pSubtitleColorPopup == NULL) {
+ VideoLogError("pSubtitleColorPopup is NULL");
+ return;
+ }
+
+ char szValue[6] = { 0, };
+
+ snprintf(szValue, 6, "%2d %%",
+ (int) pSubtitleColorPopup->nOpacityVal);
+ elm_object_part_text_set(pSubtitleColorPopup->pLayout,
+ "pv.subtitle-color-popup.opacity.percent",
+ szValue);
+
+}
+
+static void __vp_play_subtitle_color_btn_clicked_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleColorPopup *pSubtitleColorPopup =
+ (SubtitleColorPopup *) pUserData;
+
+ int nValue = elm_slider_value_get(pSubtitleColorPopup->pSlider);
+ VideoLogDebug("== %d ==", nValue);
+
+ if (pObj == pSubtitleColorPopup->pAddButton) {
+ nValue += 1;
+ if (nValue > (int) VP_PLAY_OPACITY_MAX_VALUE) {
+ nValue = (int) VP_PLAY_OPACITY_MAX_VALUE;
+ }
+ elm_slider_value_set(pSubtitleColorPopup->pSlider, nValue);
+
+ if (nValue != pSubtitleColorPopup->nOpacityVal) {
+ //if (pSubtitleColorPopup->pUpdateCb) {
+ pSubtitleColorPopup->nOpacityVal = nValue;
+ //pSubtitleColorPopup->pUpdateCb(pSubtitleColorPopup->fOpacityVal, (void *)pSubtitleColorPopup->pUserData);
+ _vp_play_subtitle_color_update_text(pSubtitleColorPopup);
+ //}
+ }
+
+ } else if (pObj == pSubtitleColorPopup->pDelButton) {
+ nValue -= 1;
+ if (nValue < (double) VP_PLAY_OPACITY_MIN_VALUE) {
+ nValue = (double) VP_PLAY_OPACITY_MIN_VALUE;
+ }
+
+ elm_slider_value_set(pSubtitleColorPopup->pSlider, nValue);
+ if (nValue != pSubtitleColorPopup->nOpacityVal) {
+ //if (pSubtitleColorPopup->pUpdateCb) {
+ pSubtitleColorPopup->nOpacityVal = nValue;
+ //pSubtitleColorPopup->pUpdateCb(pSubtitleColorPopup->fOpacityVal, (void *)pSubtitleColorPopup->pUserData);
+ _vp_play_subtitle_color_update_text(pSubtitleColorPopup);
+ //}
+ }
+ }
+}
+
+static bool _vp_play_subtitle_color_popup_create_button(Evas_Object *
+ pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ SubtitleColorPopup *pSubtitleColorPopup =
+ (SubtitleColorPopup *) pUserData;
+
+ pSubtitleColorPopup->pDelButton =
+ vp_button_create(pParent, "playview/custom/flat_63_78/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_play_subtitle_color_btn_clicked_cb,
+ (Evas_Smart_Cb) NULL, (Evas_Smart_Cb) NULL,
+ (void *) pSubtitleColorPopup);
+
+ pSubtitleColorPopup->pAddButton =
+ vp_button_create(pParent, "playview/custom/flat_63_78/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_play_subtitle_color_btn_clicked_cb,
+ (Evas_Smart_Cb) NULL, (Evas_Smart_Cb) NULL,
+ (void *) pSubtitleColorPopup);
+
+ Evas_Object *pIcon = NULL;
+
+ pIcon =
+ vp_button_create_icon(pSubtitleColorPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL);
+ elm_object_part_content_set(pSubtitleColorPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleColorPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL_PRESS);
+ elm_object_part_content_set(pSubtitleColorPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleColorPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL);
+ elm_object_part_content_set(pSubtitleColorPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleColorPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD);
+ elm_object_part_content_set(pSubtitleColorPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleColorPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD_PRESS);
+ elm_object_part_content_set(pSubtitleColorPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleColorPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD);
+ elm_object_part_content_set(pSubtitleColorPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ elm_object_part_content_set(pParent, "elm.swallow.icon.1",
+ pSubtitleColorPopup->pDelButton);
+ elm_object_part_content_set(pParent, "elm.swallow.icon.2",
+ pSubtitleColorPopup->pAddButton);
+
+ return TRUE;
+}
+
+static void __vp_play_subtitle_color_popup_slider_change_cb(void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ void
+ *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ SubtitleColorPopup *pSubtitleColor = (SubtitleColorPopup *) pUserData;
+
+ int nValue = elm_slider_value_get(pSubtitleColor->pSlider);
+ VideoLogDebug("== %d ==", nValue);
+
+ if (nValue != pSubtitleColor->nOpacityVal) {
+ //if (pSubtitleColor->pUpdateCb) {
+ pSubtitleColor->nOpacityVal = nValue;
+ //pSubtitleColor->pUpdateCb(pSubtitleColor->fOpacityVal, (void *)pSubtitleColor->pUserData);
+ _vp_play_subtitle_color_update_text(pSubtitleColor);
+ //}
+ }
+
+ char szValue[6] = { 0, };
+ snprintf(szValue, 6, "%2d %%", (int) pSubtitleColor->nOpacityVal);
+ int realValue = atoi(szValue);
+
+ if (pSubtitleColor->nOpacityVal != realValue) {
+ elm_slider_value_set(pSubtitleColor->pSlider, (int) realValue);
+ pSubtitleColor->nOpacityVal = realValue;
+ }
+
+}
+
+static Evas_Object
+*_vp_play_subtitle_color_popup_create_slider(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_slider_add(pParent);
+ elm_slider_indicator_show_set(pObj, EINA_FALSE);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, 0.5);
+
+ elm_slider_min_max_set(pObj, 0, 100);
+ evas_object_smart_callback_add(pObj, "changed",
+ __vp_play_subtitle_color_popup_slider_change_cb,
+ pUserData);
+
+ return pObj;
+}
+
+#endif
+
+/* external functions */
+#ifndef SUBTITLE_K_FEATURE
+subtitle_color_handle vp_subtitle_color_create(Evas_Object *pParent,
+ SubtitlePopupCloseCbFunc
+ pCloseCb,
+ int nDefaultColor)
+#else
+subtitle_color_handle vp_subtitle_color_hex_create(Evas_Object *pParent,
+ SubtitlePopupCloseCbFunc
+ pCloseCb,
+ char *pDefaultColor)
+#endif
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleColorPopup *pSubtitleColor = NULL;
+
+ pSubtitleColor = calloc(1, sizeof(SubtitleColorPopup));
+
+ if (pSubtitleColor == NULL) {
+ VideoLogError("pSubtitleColor alloc fail");
+ return NULL;
+ }
+
+ pSubtitleColor->pParent = pParent;
+ pSubtitleColor->pCloseCb = pCloseCb;
+
+#ifndef SUBTITLE_K_FEATURE
+ pSubtitleColor->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_TEXT, NULL, 0.0, NULL,
+ __vp_subtitle_color_popup_key_event_cb,
+ __vp_subtitle_color_popup_mouse_event_cb,
+ (void *) pSubtitleColor);
+#else
+ pSubtitleColor->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_EXPAND_WITH_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_COLOR_AND_OPACITY, NULL,
+ 0.0, NULL, __vp_subtitle_color_popup_key_event_cb,
+ __vp_subtitle_color_popup_mouse_event_cb,
+ (void *) pSubtitleColor);
+#endif
+ if (pSubtitleColor->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+ return NULL;
+ }
+#ifndef SUBTITLE_K_FEATURE
+ pSubtitleColor->pGenList =
+ _vp_subtitle_color_create_genlist(pSubtitleColor->pPopup);
+ if (pSubtitleColor->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_color_create_genlist fail");
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleColor->pGenList,
+ VP_SUBTITLE_COLOR_GENLIST_DATA_KEY,
+ (void *) pSubtitleColor);
+ evas_object_smart_callback_add(pSubtitleColor->pGenList, "realized",
+ __vp_subtitle_color_genlist_realized,
+ NULL);
+
+ pSubtitleColor->nDefaultIndex = nDefaultColor;
+ pSubtitleColor->pRadio = elm_radio_add(pSubtitleColor->pGenList);
+
+ if (!_vp_subtitle_color_add_genlist_item
+ (pSubtitleColor->pGenList, (void *) pSubtitleColor)) {
+ VideoLogError("_vp_subtitle_color_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pSubtitleColor->pRadio, nDefaultColor);
+ pSubtitleColor->currentFontColor = nDefaultColor;
+ evas_object_smart_callback_add(pSubtitleColor->pParent,
+ "rotation,changed",
+ __vp_subtitle_color_popup_rotate_cb,
+ pSubtitleColor);
+
+ pSubtitleColor->pBox = elm_box_add(pSubtitleColor->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleColor->pParent,
+ pSubtitleColor->pBox,
+ pSubtitleColor->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ elm_box_pack_end(pSubtitleColor->pBox, pSubtitleColor->pGenList);
+ elm_object_content_set(pSubtitleColor->pPopup, pSubtitleColor->pBox);
+#else
+ pSubtitleColor->pCurrentColorHex = strdup(pDefaultColor);
+
+ pSubtitleColor->pCancelButton =
+ _vp_play_subtitle_color_popup_create_cancel_button
+ (pSubtitleColor->pPopup, (void *) pSubtitleColor);
+ if (pSubtitleColor->pCancelButton == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_cancel_button fail");
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+ return NULL;
+ }
+
+ pSubtitleColor->pOkButton =
+ _vp_play_subtitle_color_popup_create_ok_button(pSubtitleColor->
+ pPopup,
+ (void *)
+ pSubtitleColor);
+ if (pSubtitleColor->pOkButton == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_ok_button fail");
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+ return NULL;
+ }
+
+ pSubtitleColor->pLayout =
+ _vp_play_subtitle_color_popup_create_layout(pSubtitleColor->
+ pPopup);
+ if (pSubtitleColor->pLayout == NULL) {
+ VideoLogError("_vp_play_speed_popup_create_layout fail");
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+ return NULL;
+ }
+
+ pSubtitleColor->pColorplaneData =
+ (SubtitleColorplaneData *) malloc(sizeof(SubtitleColorplaneData));
+ if (!pSubtitleColor->pColorplaneData)
+ return NULL;
+ memset(pSubtitleColor->pColorplaneData, 0,
+ sizeof(SubtitleColorplaneData));
+
+ _vp_play_subtitle_color_popup_create_colorpalette(pSubtitleColor->
+ pLayout,
+ pSubtitleColor);
+
+ pSubtitleColor->pSlider =
+ _vp_play_subtitle_color_popup_create_slider(pSubtitleColor->
+ pLayout,
+ pSubtitleColor);
+ if (pSubtitleColor->pSlider == NULL) {
+ VideoLogError("_vp_play_subtitle_color_popup_create_slider fail");
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+ return NULL;
+ }
+ _vp_play_subtitle_color_popup_create_button(pSubtitleColor->pLayout,
+ pSubtitleColor);
+ pSubtitleColor->nOpacityVal =
+ _vp_subtitle_color_get_opacity(pSubtitleColor->pCurrentColorHex);
+ elm_slider_value_set(pSubtitleColor->pSlider,
+ (int) pSubtitleColor->nOpacityVal);
+ _vp_play_subtitle_color_update_text(pSubtitleColor);
+
+ elm_object_part_content_set(pSubtitleColor->pLayout,
+ "elm.swallow.content",
+ pSubtitleColor->pSlider);
+
+ //Used for scroller layout:
+ //popup->LayoutOut->Scroller->pLayout
+ pSubtitleColor->pLayoutOut = elm_layout_add(pSubtitleColor->pPopup);
+ int nRotation = elm_win_rotation_get(pSubtitleColor->pParent);
+ if (nRotation == 90 || nRotation == 270)
+ elm_layout_file_set(pSubtitleColor->pLayoutOut,
+ VP_PLAY_SUBTITLE_COLOR_POPUP_EDJ,
+ "pv.subtitle.scroller.layout.landscape");
+ else
+ elm_layout_file_set(pSubtitleColor->pLayoutOut,
+ VP_PLAY_SUBTITLE_COLOR_POPUP_EDJ,
+ "pv.subtitle.scroller.layout");
+ evas_object_size_hint_weight_set(pSubtitleColor->pLayoutOut,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ pSubtitleColor->pScroller =
+ elm_scroller_add(pSubtitleColor->pLayoutOut);
+ elm_scroller_bounce_set(pSubtitleColor->pScroller, EINA_TRUE,
+ EINA_TRUE);
+ elm_scroller_policy_set(pSubtitleColor->pScroller,
+ ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+ evas_object_show(pSubtitleColor->pScroller);
+ elm_object_content_set(pSubtitleColor->pScroller,
+ pSubtitleColor->pLayout);
+
+ elm_object_part_content_set(pSubtitleColor->pLayoutOut,
+ "elm.swallow.content",
+ pSubtitleColor->pScroller);
+ elm_object_content_set(pSubtitleColor->pPopup,
+ pSubtitleColor->pLayoutOut);
+
+ evas_object_smart_callback_add(pSubtitleColor->pParent,
+ "rotation,changed",
+ __vp_subtitle_color_popup_rotate_cb,
+ pSubtitleColor);
+ evas_object_show(pSubtitleColor->pLayout);
+
+#endif
+ return pSubtitleColor;
+}
+
+void vp_subtitle_color_destroy(subtitle_color_handle pSubtitleColorHandle)
+{
+ if (pSubtitleColorHandle == NULL) {
+ VideoLogError("pSubtitleColorHandle is NULL");
+ return;
+ }
+
+ SubtitleColorPopup *pSubtitleColor =
+ (SubtitleColorPopup *) pSubtitleColorHandle;
+
+ _vp_subtitle_color_destroy_handle(pSubtitleColor);
+
+}
+
+bool vp_subtitle_color_realize(subtitle_color_handle pSubtitleColorHandle)
+{
+ if (pSubtitleColorHandle == NULL) {
+ VideoLogError("pSubtitleColorHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleColorPopup *pSubtitleColor =
+ (SubtitleColorPopup *) pSubtitleColorHandle;
+
+ evas_object_show(pSubtitleColor->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_color_unrealize(subtitle_color_handle
+ pSubtitleColorHandle)
+{
+ if (pSubtitleColorHandle == NULL) {
+ VideoLogError("pSubtitleColorHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleColorPopup *pSubtitleColor =
+ (SubtitleColorPopup *) pSubtitleColorHandle;
+
+ evas_object_hide(pSubtitleColor->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_color_set_user_data(subtitle_color_handle
+ pSubtitleColorHandle,
+ void *pUserData)
+{
+ if (pSubtitleColorHandle == NULL) {
+ VideoLogError("pSubtitleColorHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleColorPopup *pSubtitleColor =
+ (SubtitleColorPopup *) pSubtitleColorHandle;
+
+ pSubtitleColor->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-edge.c b/playview/src/feature/vp-subtitle-edge.c
new file mode 100644
index 0000000..366c139
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-edge.c
@@ -0,0 +1,492 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-edge.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_EDGE_GENLIST_DATA_KEY "vp.subtitle.edge.genlist"
+
+
+typedef struct _SubtitleEdgePopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleEdge_Itc;
+
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ video_play_subtitle_edge_t currentSubtitleEdge;
+} SubtitleEdgePopup;
+
+
+
+static void _vp_subtitle_edge_destroy_handle(SubtitleEdgePopup *
+ pSubtitleEdge);
+static void __vp_subtitle_edge_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+static void __vp_subtitle_edge_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_edge_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleEdgePopup *pSubtitleEdge = (SubtitleEdgePopup *) data;
+ if (!pSubtitleEdge) {
+ VideoLogError("pSubtitleEdge IS null");
+ return;
+ }
+ if (pSubtitleEdge->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleEdge->pParent,
+ pSubtitleEdge->pBox,
+ pSubtitleEdge->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_subtitle_edge_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!g_strcmp0(pPart, "elm.text")) {
+ return strdup(szTxt);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_edge_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!g_strcmp0(pPart, "elm.icon")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleEdgePopup *pSubtitleEdge =
+ (SubtitleEdgePopup *) evas_object_data_get(pObj,
+ VP_SUBTITLE_EDGE_GENLIST_DATA_KEY);
+ if (pSubtitleEdge == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+ video_play_subtitle_edge_t nEdge = VIDEO_SUBTITLE_EDGE_NONE;
+ if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_RAISED)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_RAISED;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_DEPRESSED)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_DEPRESSED;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_UNIFORM)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_UNIFORM;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_DROP_SHADOW)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_DROP_SHADOW;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nEdge);
+ elm_radio_group_add(pRadioObj, pSubtitleEdge->pRadio);
+ elm_radio_value_set(pSubtitleEdge->pRadio,
+ pSubtitleEdge->currentSubtitleEdge);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_edge_genlist_item_selected_cb,
+ pSubtitleEdge);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_edge_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ SubtitleEdgePopup *pSubtitleEdge = (SubtitleEdgePopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+ video_play_subtitle_edge_t nEdge = VIDEO_SUBTITLE_EDGE_NONE;
+ if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_RAISED)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_RAISED;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_DEPRESSED)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_DEPRESSED;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_UNIFORM)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_UNIFORM;
+ } else if (!g_strcmp0(szTxt, VP_PLAY_STRING_EDGE_DROP_SHADOW)) {
+ nEdge = VIDEO_SUBTITLE_EDGE_DROP_SHADOW;
+ }
+
+ pSubtitleEdge->currentSubtitleEdge = nEdge;
+ if (pSubtitleEdge->pCloseCb) {
+ pSubtitleEdge->pCloseCb(nEdge, FALSE,
+ (void *) pSubtitleEdge->pUserData);
+ }
+}
+
+static void __vp_subtitle_edge_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge = (SubtitleEdgePopup *) pUserData;
+
+ if (pSubtitleEdge->pCloseCb) {
+ pSubtitleEdge->pCloseCb(-1, FALSE,
+ (void *) pSubtitleEdge->pUserData);
+ }
+}
+
+static void __vp_subtitle_edge_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleEdgePopup *pSubtitleEdge =
+ (SubtitleEdgePopup *) pUserData;
+
+ if (pSubtitleEdge->pCloseCb) {
+ pSubtitleEdge->pCloseCb(-1, FALSE,
+ (void *) pSubtitleEdge->pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_subtitle_edge_destroy_handle(SubtitleEdgePopup *
+ pSubtitleEdge)
+{
+ if (pSubtitleEdge == NULL) {
+ VideoLogError("pSubtitleEdge is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSubtitleEdge->pParent,
+ "rotation,changed",
+ __vp_subtitle_edge_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitleEdge->pGenList, "realized",
+ __vp_subtitle_edge_genlist_realized);
+
+ VP_EVAS_DEL(pSubtitleEdge->pRadio);
+ VP_EVAS_DEL(pSubtitleEdge->pGenList);
+ VP_EVAS_DEL(pSubtitleEdge->pButton);
+ VP_EVAS_DEL(pSubtitleEdge->pBox);
+
+ if (pSubtitleEdge->st_SubtitleEdge_Itc) {
+ elm_genlist_item_class_free(pSubtitleEdge->st_SubtitleEdge_Itc);
+ pSubtitleEdge->st_SubtitleEdge_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pSubtitleEdge->pPopup);
+
+ VP_FREE(pSubtitleEdge);
+}
+
+
+static Evas_Object *_vp_subtitle_edge_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_edge_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge = (SubtitleEdgePopup *) pUserData;
+
+ if (pSubtitleEdge->st_SubtitleEdge_Itc) {
+ elm_genlist_item_class_free(pSubtitleEdge->st_SubtitleEdge_Itc);
+ pSubtitleEdge->st_SubtitleEdge_Itc = NULL;
+ }
+
+ pSubtitleEdge->st_SubtitleEdge_Itc = elm_genlist_item_class_new();
+
+ if (pSubtitleEdge->st_SubtitleEdge_Itc != NULL) {
+ pSubtitleEdge->st_SubtitleEdge_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleEdge->st_SubtitleEdge_Itc->item_style =
+ "1text.1icon.3/popup";
+ pSubtitleEdge->st_SubtitleEdge_Itc->func.text_get =
+ (void *) __vp_subtitle_edge_genlist_text_get_cb;
+ pSubtitleEdge->st_SubtitleEdge_Itc->func.content_get =
+ (void *) __vp_subtitle_edge_genlist_content_get_cb;
+ pSubtitleEdge->st_SubtitleEdge_Itc->func.state_get = NULL;
+ pSubtitleEdge->st_SubtitleEdge_Itc->func.del = NULL;
+ pSubtitleEdge->nListCount = 0;
+
+ elm_genlist_item_append(pObj, pSubtitleEdge->st_SubtitleEdge_Itc,
+ (void *) VP_PLAY_STRING_EDGE_NO_EDGE, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_edge_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleEdge->nListCount++;
+ elm_genlist_item_append(pObj, pSubtitleEdge->st_SubtitleEdge_Itc,
+ (void *) VP_PLAY_STRING_EDGE_RAISED, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_edge_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleEdge->nListCount++;
+ elm_genlist_item_append(pObj, pSubtitleEdge->st_SubtitleEdge_Itc,
+ (void *) VP_PLAY_STRING_EDGE_DEPRESSED, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_edge_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleEdge->nListCount++;
+ elm_genlist_item_append(pObj, pSubtitleEdge->st_SubtitleEdge_Itc,
+ (void *) VP_PLAY_STRING_EDGE_UNIFORM, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_edge_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleEdge->nListCount++;
+ elm_genlist_item_append(pObj, pSubtitleEdge->st_SubtitleEdge_Itc,
+ (void *) VP_PLAY_STRING_EDGE_DROP_SHADOW,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_edge_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleEdge->nListCount++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+subtitle_edge_handle vp_subtitle_edge_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb,
+ int nDefaultSize)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge = NULL;
+
+ pSubtitleEdge = calloc(1, sizeof(SubtitleEdgePopup));
+
+ if (pSubtitleEdge == NULL) {
+ VideoLogError("pSubtitleEdge alloc fail");
+ return NULL;
+ }
+
+ pSubtitleEdge->pParent = pParent;
+ pSubtitleEdge->pCloseCb = pCloseCb;
+
+ pSubtitleEdge->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_EDGE, NULL, 0.0, NULL,
+ __vp_subtitle_edge_popup_key_event_cb,
+ __vp_subtitle_edge_popup_mouse_event_cb,
+ (void *) pSubtitleEdge);
+ if (pSubtitleEdge->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_edge_destroy_handle(pSubtitleEdge);
+ return NULL;
+ }
+
+ pSubtitleEdge->pGenList =
+ _vp_subtitle_edge_create_genlist(pSubtitleEdge->pPopup);
+ if (pSubtitleEdge->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_size_create_genlist fail");
+ _vp_subtitle_edge_destroy_handle(pSubtitleEdge);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleEdge->pGenList,
+ VP_SUBTITLE_EDGE_GENLIST_DATA_KEY,
+ (void *) pSubtitleEdge);
+ evas_object_smart_callback_add(pSubtitleEdge->pGenList, "realized",
+ __vp_subtitle_edge_genlist_realized,
+ NULL);
+
+ pSubtitleEdge->pRadio = elm_radio_add(pSubtitleEdge->pGenList);
+
+ if (!_vp_subtitle_edge_add_genlist_item
+ (pSubtitleEdge->pGenList, (void *) pSubtitleEdge)) {
+ VideoLogError("_vp_subtitle_size_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pSubtitleEdge->pRadio, nDefaultSize);
+ pSubtitleEdge->currentSubtitleEdge = nDefaultSize;
+ evas_object_smart_callback_add(pSubtitleEdge->pParent,
+ "rotation,changed",
+ __vp_subtitle_edge_popup_rotate_cb,
+ pSubtitleEdge);
+
+ pSubtitleEdge->pBox = elm_box_add(pSubtitleEdge->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleEdge->pParent,
+ pSubtitleEdge->pBox,
+ pSubtitleEdge->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ elm_box_pack_end(pSubtitleEdge->pBox, pSubtitleEdge->pGenList);
+ elm_object_content_set(pSubtitleEdge->pPopup, pSubtitleEdge->pBox);
+
+ return pSubtitleEdge;
+}
+
+void vp_subtitle_edge_destroy(subtitle_edge_handle pSubtitleEdgeHandle)
+{
+ if (pSubtitleEdgeHandle == NULL) {
+ VideoLogError("pSubtitleEdgeHandle is NULL");
+ return;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge =
+ (SubtitleEdgePopup *) pSubtitleEdgeHandle;
+
+ _vp_subtitle_edge_destroy_handle(pSubtitleEdge);
+
+}
+
+bool vp_subtitle_edge_realize(subtitle_edge_handle pSubtitleEdgeHandle)
+{
+ if (pSubtitleEdgeHandle == NULL) {
+ VideoLogError("pSubtitleEdgeHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge =
+ (SubtitleEdgePopup *) pSubtitleEdgeHandle;
+
+ evas_object_show(pSubtitleEdge->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_edge_unrealize(subtitle_edge_handle pSubtitleEdgeHandle)
+{
+ if (pSubtitleEdgeHandle == NULL) {
+ VideoLogError("pSubtitleEdgeHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge =
+ (SubtitleEdgePopup *) pSubtitleEdgeHandle;
+
+ evas_object_hide(pSubtitleEdge->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_edge_set_user_data(subtitle_edge_handle
+ pSubtitleEdgeHandle, void *pUserData)
+{
+ if (pSubtitleEdgeHandle == NULL) {
+ VideoLogError("pSubtitleEdgeHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleEdgePopup *pSubtitleEdge =
+ (SubtitleEdgePopup *) pSubtitleEdgeHandle;
+
+ pSubtitleEdge->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-font.c b/playview/src/feature/vp-subtitle-font.c
new file mode 100644
index 0000000..43f8a8b
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-font.c
@@ -0,0 +1,709 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+#include <fontconfig/fontconfig.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-font.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_FONT_GENLIST_DATA_KEY "vp.subtitle.font.genlist"
+#define VP_FONT_PRELOAD_FONT_PATH "/usr/share/fonts"
+#define VP_FONT_DOWNLOADED_FONT_PATH "/opt/share/fonts"
+#define VP_FONT_DEFAULT_FONT_NAME "Tizen"
+#define VP_FONT_UDRGOTHIC_FONT_NAME "UDRGothic"
+#define VP_FONT_UDMINCHO_FONT_NAME "UDMincho"
+#define VP_FONT_POP_FONT_NAME "POP"
+#define VP_FONT_CHOCOCOOKY_FONT_NAME "Choco cooky"
+#define VP_FONT_COOLJAZZ_FONT_NAME "Cool jazz"
+#define VP_FONT_ROSEMARY_FONT_NAME "Rosemary"
+
+typedef struct _SubtitleFontPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleFont_Itc;
+
+ int nCurrentFontIdx;
+ int nAppendCount;
+ char *szCurrentFont;
+
+ void *pUserData;
+ SubtitleFontCbFunc pCloseCb;
+ GList *pFontList;
+ char *szSelectFont;
+} SubtitleFontPopup;
+
+
+
+static void _vp_subtitle_font_destroy_handle(SubtitleFontPopup *
+ pSubtitleFont);
+static void __vp_subtitle_font_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+static void __vp_subtitle_font_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_font_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleFontPopup *pSubtitleFont = (SubtitleFontPopup *) data;
+ if (!pSubtitleFont) {
+ VideoLogError("pSubtitleFont IS null");
+ return;
+ }
+ if (pSubtitleFont->nAppendCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleFont->pParent,
+ pSubtitleFont->pBox,
+ pSubtitleFont->nAppendCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_subtitle_font_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *)pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ char *szFormat = NULL;
+ if (strcmp(szTxt, VP_PLAY_STRING_COM_DEFAULT) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_DEFAULT_FONT_NAME,
+ VP_PLAY_STRING_FONT_DEFAULT);
+ } else if (strcmp(szTxt, VP_FONT_UDRGOTHIC_FONT_NAME) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_UDRGOTHIC_FONT_NAME,
+ VP_PLAY_STRING_FONT_UDRCOTHICM);
+ } else if (strcmp(szTxt, VP_FONT_UDMINCHO_FONT_NAME) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_UDMINCHO_FONT_NAME,
+ VP_PLAY_STRING_FONT_UDMINCHO);
+ } else if (strcmp(szTxt, VP_FONT_POP_FONT_NAME) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_POP_FONT_NAME,
+ VP_PLAY_STRING_FONT_POP);
+ } else if (strcmp(szTxt, VP_FONT_CHOCOCOOKY_FONT_NAME) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_CHOCOCOOKY_FONT_NAME,
+ VP_PLAY_STRING_FONT_CHOCO_COOKY);
+ } else if (strcmp(szTxt, VP_FONT_COOLJAZZ_FONT_NAME) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_COOLJAZZ_FONT_NAME,
+ VP_PLAY_STRING_FONT_COOL_JAZZ);
+ } else if (strcmp(szTxt, VP_FONT_ROSEMARY_FONT_NAME) == 0) {
+ szFormat =
+ g_strdup_printf("<font='%s'>%s</font>",
+ VP_FONT_ROSEMARY_FONT_NAME,
+ VP_PLAY_STRING_FONT_ROSEMARY);
+ }
+
+ return szFormat;
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_font_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *)pUserData;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleFontPopup *pSubtitleFont =
+ (SubtitleFontPopup *) evas_object_data_get(pObj,
+ VP_SUBTITLE_FONT_GENLIST_DATA_KEY);
+ if (pSubtitleFont == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ int nCount = 0;
+ int i = 0;
+ int nIndex = 0;
+
+ nCount = g_list_length(pSubtitleFont->pFontList);
+ for (i = 0; i < nCount; i++) {
+ char *szName = NULL;
+ szName =
+ (char *)g_list_nth_data(pSubtitleFont->pFontList, i);
+ if (szName == NULL) {
+ continue;
+ }
+ if (strcmp(szName, szTxt) == 0) {
+ nIndex = i + 1;
+ }
+ }
+
+ /* get font list */
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nIndex);
+ elm_radio_group_add(pRadioObj, pSubtitleFont->pRadio);
+ elm_radio_value_set(pSubtitleFont->pRadio,
+ pSubtitleFont->nCurrentFontIdx);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_font_genlist_item_selected_cb,
+ pSubtitleFont);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_font_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *)elm_object_item_data_get(pItem);
+ VideoLogError("szTxt = %s", szTxt);
+
+ SubtitleFontPopup *pSubtitleFont = (SubtitleFontPopup *) pUserData;
+ int nIdx = 0;
+ char *szFontText = NULL;
+ if (strcmp(szTxt, VP_PLAY_STRING_COM_DEFAULT) == 0) {
+ szFontText = VP_FONT_DEFAULT_FONT_NAME;
+ nIdx = 0;
+ } else {
+ szFontText = szTxt;
+
+ int i = 0;
+ int nCount = g_list_length(pSubtitleFont->pFontList);
+ for (i = 0; i < nCount; i++) {
+ char *szName = NULL;
+ szName =
+ (char *)g_list_nth_data(pSubtitleFont->pFontList, i);
+ if (szName == NULL) {
+ continue;
+ }
+ if (strcmp(szName, szTxt) == 0) {
+ nIdx = i + 1;
+ }
+ }
+ }
+
+ VP_FREE(pSubtitleFont->szSelectFont);
+ VP_STRDUP(pSubtitleFont->szSelectFont, szFontText);
+ pSubtitleFont->nCurrentFontIdx = nIdx;
+ if (pSubtitleFont->pCloseCb) {
+ pSubtitleFont->pCloseCb(szTxt, (void *) pSubtitleFont->pUserData);
+ }
+}
+
+static void __vp_subtitle_font_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleFontPopup *pSubtitleFont = (SubtitleFontPopup *) pUserData;
+
+ if (pSubtitleFont->pCloseCb) {
+ pSubtitleFont->pCloseCb(NULL, (void *) pSubtitleFont->pUserData);
+ }
+}
+
+static void __vp_subtitle_font_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleFontPopup *pSubtitleFont =
+ (SubtitleFontPopup *) pUserData;
+
+ if (pSubtitleFont->pCloseCb) {
+ pSubtitleFont->pCloseCb(NULL,
+ (void *) pSubtitleFont->pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_subtitle_font_destroy_handle(SubtitleFontPopup *
+ pSubtitleFont)
+{
+ if (pSubtitleFont == NULL) {
+ VideoLogError("pSubtitleFont is NULL");
+ return;
+ }
+ int nCount = 0;
+ int i = 0;
+ evas_object_smart_callback_del(pSubtitleFont->pParent,
+ "rotation,changed",
+ __vp_subtitle_font_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitleFont->pGenList, "realized",
+ __vp_subtitle_font_genlist_realized);
+
+ VP_EVAS_DEL(pSubtitleFont->pRadio);
+ VP_EVAS_DEL(pSubtitleFont->pGenList);
+ VP_EVAS_DEL(pSubtitleFont->pButton);
+ VP_EVAS_DEL(pSubtitleFont->pBox);
+
+ if (pSubtitleFont->st_SubtitleFont_Itc) {
+ elm_genlist_item_class_free(pSubtitleFont->st_SubtitleFont_Itc);
+ pSubtitleFont->st_SubtitleFont_Itc = NULL;
+ }
+
+ nCount = g_list_length(pSubtitleFont->pFontList);
+ for (i = 0; i < nCount; i++) {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleFont->pFontList, i);
+ VP_FREE(szName);
+ }
+ g_list_free(pSubtitleFont->pFontList);
+ pSubtitleFont->pFontList = NULL;
+
+ VP_EVAS_DEL(pSubtitleFont->pPopup);
+ VP_FREE(pSubtitleFont->szCurrentFont);
+ VP_FREE(pSubtitleFont->szSelectFont);
+
+ VP_FREE(pSubtitleFont);
+
+}
+
+
+static Evas_Object *_vp_subtitle_font_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+static bool _vp_subtitle_font_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleFontPopup *pSubtitleFont = (SubtitleFontPopup *) pUserData;
+
+ if (pSubtitleFont->st_SubtitleFont_Itc) {
+ elm_genlist_item_class_free(pSubtitleFont->st_SubtitleFont_Itc);
+ pSubtitleFont->st_SubtitleFont_Itc = NULL;
+ }
+
+ pSubtitleFont->st_SubtitleFont_Itc = elm_genlist_item_class_new();
+
+ if (pSubtitleFont->st_SubtitleFont_Itc != NULL) {
+ pSubtitleFont->st_SubtitleFont_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleFont->st_SubtitleFont_Itc->item_style =
+ "video.multiline/1text.1icon";
+ pSubtitleFont->st_SubtitleFont_Itc->func.text_get =
+ (void *) __vp_subtitle_font_genlist_text_get_cb;
+ pSubtitleFont->st_SubtitleFont_Itc->func.content_get =
+ (void *) __vp_subtitle_font_genlist_content_get_cb;
+ pSubtitleFont->st_SubtitleFont_Itc->func.state_get = NULL;
+ pSubtitleFont->st_SubtitleFont_Itc->func.del = NULL;
+
+ elm_genlist_item_append(pObj, pSubtitleFont->st_SubtitleFont_Itc,
+ (void *) VP_PLAY_STRING_COM_DEFAULT, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_font_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleFont->nAppendCount++;
+
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pSubtitleFont->pFontList);
+ for (i = 0; i < nCount; i++) {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleFont->pFontList, i);
+ if (szName == NULL) {
+ continue;
+ }
+ elm_genlist_item_append(pObj, pSubtitleFont->st_SubtitleFont_Itc,
+ (void *) szName, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_font_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleFont->nAppendCount++;
+ }
+ }
+ return TRUE;
+}
+
+static bool __vp_subtitle_font_load_font_list(SubtitleFontPopup *
+ pSubtitleFont)
+{
+ if (pSubtitleFont == NULL) {
+ VideoLogError("pSubtitleFont is NULL");
+ return FALSE;
+ }
+
+ FcObjectSet *os = NULL;
+ FcFontSet *fs = NULL;
+ FcPattern *pat = NULL;
+ FcConfig *font_config = NULL;
+
+ font_config = FcInitLoadConfigAndFonts();
+ pat = FcPatternCreate();
+ os = FcObjectSetBuild(FC_FAMILY, FC_FILE, (char *)0);
+ if (os) {
+ fs = FcFontList(font_config, pat, os);
+ FcObjectSetDestroy(os);
+ os = NULL;
+ }
+
+ if (pat) {
+ FcPatternDestroy(pat);
+ pat = NULL;
+ }
+
+ int nPreloadPathLen = strlen(VP_FONT_PRELOAD_FONT_PATH);
+ int nDownloadPathLen = strlen(VP_FONT_DOWNLOADED_FONT_PATH);
+
+ if (fs) {
+ int j;
+ VideoLogError("fs->nfont = %d", fs->nfont);
+
+ for (j = 0; j < fs->nfont; j++) {
+ FcChar8 *szfamily = NULL;
+ FcChar8 *szFile = NULL;
+
+ if (FcPatternGetString(fs->fonts[j], FC_FILE, 0, &szFile) ==
+ FcResultMatch) {
+ if (szFile == NULL) {
+ continue;
+ }
+ if (strncmp
+ ((const char *) szFile, VP_FONT_PRELOAD_FONT_PATH,
+ nPreloadPathLen) == 0
+ || strncmp((const char *) szFile,
+ VP_FONT_DOWNLOADED_FONT_PATH,
+ nDownloadPathLen) == 0) {
+ if (FcPatternGetString
+ (fs->fonts[j], FC_FAMILY, 0,
+ &szfamily) == FcResultMatch) {
+ bool bIsExist = FALSE;
+
+ if (szfamily == NULL) {
+ continue;
+ }
+
+ if (pSubtitleFont->pFontList) {
+ int nCount = 0;
+ int nIdx = 0;
+
+ nCount =
+ g_list_length(pSubtitleFont->pFontList);
+ for (nIdx = 0; nIdx < nCount; nIdx++) {
+ char *szListName = NULL;
+ szListName =
+ (char *)
+ g_list_nth_data(pSubtitleFont->
+ pFontList, nIdx);
+ if (szListName) {
+ if (strcmp
+ ((char *)szfamily,
+ szListName) == 0) {
+ bIsExist = TRUE;
+ }
+ }
+ }
+ }
+ if (bIsExist == FALSE) {
+ if ((strcmp
+ ((char *)szfamily,
+ VP_FONT_UDRGOTHIC_FONT_NAME) == 0)
+ ||
+ (strcmp
+ ((char *)szfamily,
+ VP_FONT_UDMINCHO_FONT_NAME) == 0)
+ ||
+ (strcmp
+ ((char *)szfamily,
+ VP_FONT_POP_FONT_NAME) == 0)
+ ||
+ (strcmp
+ ((char *)szfamily,
+ VP_FONT_CHOCOCOOKY_FONT_NAME) == 0)
+ ||
+ (strcmp
+ ((char *)szfamily,
+ VP_FONT_COOLJAZZ_FONT_NAME) == 0)
+ ||
+ (strcmp
+ ((char *)szfamily,
+ VP_FONT_ROSEMARY_FONT_NAME) == 0)) {
+ char *szFontName = NULL;
+ VP_STRDUP(szFontName, (char *)szfamily);
+ if (szFontName) {
+ pSubtitleFont->pFontList =
+ g_list_append(pSubtitleFont->
+ pFontList, szFontName);
+ if (strcmp
+ (pSubtitleFont->szCurrentFont,
+ szFontName) == 0) {
+ pSubtitleFont->nCurrentFontIdx =
+ g_list_length(pSubtitleFont->
+ pFontList);
+ }
+ }
+ VideoLogError("==> [%d] : %s ", j,
+ szfamily);
+ }
+ }
+ }
+ }
+ }
+ }
+ FcFontSetDestroy(fs);
+ fs = NULL;
+ }
+ FcConfigDestroy(font_config);
+ font_config = NULL;
+
+ return TRUE;
+}
+
+
+/* external functions */
+subtitle_font_handle vp_subtitle_font_create(Evas_Object *pParent,
+ SubtitleFontCbFunc pCloseCb,
+ char *szCurrentFont)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (szCurrentFont == NULL) {
+ VideoLogError("szCurrentFont is NULL");
+ return NULL;
+ }
+ SubtitleFontPopup *pSubtitleFont = NULL;
+
+
+ pSubtitleFont = calloc(1, sizeof(SubtitleFontPopup));
+
+ if (pSubtitleFont == NULL) {
+ VideoLogError("pSubtitleFont alloc fail");
+ return NULL;
+ }
+
+ pSubtitleFont->pParent = pParent;
+ pSubtitleFont->pCloseCb = pCloseCb;
+ VP_STRDUP(pSubtitleFont->szCurrentFont, szCurrentFont);
+ pSubtitleFont->nCurrentFontIdx = 0;
+
+ pSubtitleFont->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_FONT, NULL, 0.0, NULL,
+ __vp_subtitle_font_popup_key_event_cb,
+ __vp_subtitle_font_popup_mouse_event_cb,
+ (void *) pSubtitleFont);
+ if (pSubtitleFont->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_font_destroy_handle(pSubtitleFont);
+ return NULL;
+ }
+
+ pSubtitleFont->pGenList =
+ _vp_subtitle_font_create_genlist(pSubtitleFont->pPopup);
+ if (pSubtitleFont->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_font_create_genlist fail");
+ _vp_subtitle_font_destroy_handle(pSubtitleFont);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleFont->pGenList,
+ VP_SUBTITLE_FONT_GENLIST_DATA_KEY,
+ (void *) pSubtitleFont);
+ evas_object_smart_callback_add(pSubtitleFont->pGenList, "realized",
+ __vp_subtitle_font_genlist_realized,
+ NULL);
+
+ pSubtitleFont->pRadio = elm_radio_add(pSubtitleFont->pGenList);
+
+ __vp_subtitle_font_load_font_list(pSubtitleFont);
+
+ elm_genlist_mode_set(pSubtitleFont->pGenList, ELM_LIST_COMPRESS);
+
+ if (!_vp_subtitle_font_add_genlist_item
+ (pSubtitleFont->pGenList, (void *) pSubtitleFont)) {
+ VideoLogError("_vp_subtitle_font_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pSubtitleFont->pRadio, pSubtitleFont->nCurrentFontIdx);
+ evas_object_smart_callback_add(pSubtitleFont->pParent,
+ "rotation,changed",
+ __vp_subtitle_font_popup_rotate_cb,
+ pSubtitleFont);
+
+ pSubtitleFont->pBox = elm_box_add(pSubtitleFont->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleFont->pParent,
+ pSubtitleFont->pBox,
+ pSubtitleFont->nAppendCount,
+ VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pSubtitleFont->pBox, pSubtitleFont->pGenList);
+ elm_object_content_set(pSubtitleFont->pPopup, pSubtitleFont->pBox);
+
+ return pSubtitleFont;
+}
+
+void vp_subtitle_font_destroy(subtitle_font_handle pSubtitleFontHandle)
+{
+ if (pSubtitleFontHandle == NULL) {
+ VideoLogError("pSubtitleFontHandle is NULL");
+ return;
+ }
+
+ SubtitleFontPopup *pSubtitleFont =
+ (SubtitleFontPopup *) pSubtitleFontHandle;
+
+ _vp_subtitle_font_destroy_handle(pSubtitleFont);
+
+}
+
+bool vp_subtitle_font_realize(subtitle_font_handle pSubtitleFontHandle)
+{
+ if (pSubtitleFontHandle == NULL) {
+ VideoLogError("pSubtitleFontHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleFontPopup *pSubtitleFont =
+ (SubtitleFontPopup *) pSubtitleFontHandle;
+
+ evas_object_show(pSubtitleFont->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_font_unrealize(subtitle_font_handle pSubtitleFontHandle)
+{
+ if (pSubtitleFontHandle == NULL) {
+ VideoLogError("pSubtitleFontHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleFontPopup *pSubtitleFont =
+ (SubtitleFontPopup *) pSubtitleFontHandle;
+
+ evas_object_hide(pSubtitleFont->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_font_set_user_data(subtitle_font_handle
+ pSubtitleFontHandle, void *pUserData)
+{
+ if (pSubtitleFontHandle == NULL) {
+ VideoLogError("pSubtitleFontHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleFontPopup *pSubtitleFont =
+ (SubtitleFontPopup *) pSubtitleFontHandle;
+
+ pSubtitleFont->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-select.c b/playview/src/feature/vp-subtitle-select.c
new file mode 100644
index 0000000..96a2925
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-select.c
@@ -0,0 +1,536 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-select.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-file-util.h"
+#include "vp-play-preference.h"
+
+#define VP_SUBTITLE_SELECT_GENLIST_DATA_KEY "vp.subtitle.select.genlist"
+
+
+typedef struct _SubtitleSelectPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleSelect_Itc;
+ Elm_Genlist_Item_Class *st_SubtitleSelect_Itc1;
+
+ int nAppendCount;
+
+ void *pUserData;
+ SubtitleCloseCbFunc pCloseCb;
+ SubtitleCloseCbFunc pButtonCb;
+ GList *pItemList;
+ int nSubtitleIdx;
+}SubtitleSelectPopup;
+
+
+
+static void _vp_subtitle_select_destroy_handle(SubtitleSelectPopup *pSubtitleSelect);
+static void __vp_subtitle_select_genlist_item_selected_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo);
+
+static void __vp_subtitle_select_genlist_realized(void *data, Evas_Object *obj, void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_select_popup_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)data;
+ if (!pSubtitleSelect) {
+ VideoLogError("pSubtitleSelect IS null");
+ return;
+ }
+ if (pSubtitleSelect->nAppendCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleSelect->pParent, pSubtitleSelect->pBox, pSubtitleSelect->nAppendCount, VIDEO_POPUP_2_TEXT_1_ICON);
+}
+
+
+/* callback functions */
+static char *__vp_subtitle_select_genlist_text_get_cb(const void *pUserData, Evas_Object *pObj, const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ const char *szTxt= (const char *)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ const char *szFileName = vp_file_get(szTxt);
+ if (szFileName) {
+ return strdup(szFileName);
+ }
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_select_genlist_content_get_cb(const void *pUserData, Evas_Object *pObj, const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *)pUserData;
+
+ if (!strcmp(pPart, "elm.icon.right")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)evas_object_data_get(pObj , VP_SUBTITLE_SELECT_GENLIST_DATA_KEY);
+ if (pSubtitleSelect == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ if (pSubtitleSelect->pItemList == NULL) {
+ // sub-title does not exist
+ pRadioObj = elm_radio_add(pObj);
+ return pRadioObj;
+ } else {
+ // sub-title exist
+ int nIndex = 0;
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pSubtitleSelect->pItemList);
+ for (i = 0; i < nCount ; i++) {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleSelect->pItemList, i);
+
+ if (szName == NULL) {
+ continue;
+ }
+ if (strcmp(szName, szTxt) == 0) {
+ break;
+ }
+ nIndex++;
+ }
+
+ /* get file name list */
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nIndex);
+ elm_radio_group_add(pRadioObj, pSubtitleSelect->pRadio);
+ elm_radio_value_set(pSubtitleSelect->pRadio, pSubtitleSelect->nSubtitleIdx);
+ evas_object_smart_callback_add(pRadioObj, "changed", __vp_subtitle_select_genlist_item_selected_cb, pSubtitleSelect);
+ evas_object_show(pRadioObj);
+ return pRadioObj;
+ }
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_select_genlist_item_selected_cb(void *pUserData,Evas_Object *pObject,void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *)elm_object_item_data_get(pItem);
+
+ VideoSecureLogInfo("Selected subtitle path=%s", szTxt);
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pUserData;
+ int nIndex = 0;
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pSubtitleSelect->pItemList);
+ for (i = 0; i < nCount ; i++) {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleSelect->pItemList, i);
+
+ if (szName == NULL) {
+ continue;
+ }
+ if (strcmp(szName, szTxt) == 0) {
+ break;
+ }
+ nIndex++;
+ }
+
+ pSubtitleSelect->nSubtitleIdx = nIndex;
+ if (szTxt) {
+ char *szName = NULL;
+ VP_STRDUP(szName, szTxt);
+ if (pSubtitleSelect->pCloseCb) {
+ pSubtitleSelect->pCloseCb(szName, (void *)pSubtitleSelect->pUserData);
+ }
+ VP_FREE(szName);
+ }
+}
+
+/*static void __vp_subtitle_select_popup_key_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pUserData;
+
+ if (pSubtitleSelect->pCloseCb) {
+ pSubtitleSelect->pCloseCb(NULL, (void *)pSubtitleSelect->pUserData);
+ }
+}*/
+
+static void __vp_subtitle_select_popup_cancel_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pUserData;
+
+ if (pSubtitleSelect->pButtonCb) {
+ pSubtitleSelect->pButtonCb("cancel", (void *)pSubtitleSelect->pUserData);
+ }
+}
+
+static void __vp_subtitle_select_popup_settings_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pUserData;
+
+ if (pSubtitleSelect->pButtonCb) {
+ pSubtitleSelect->pButtonCb("settings", (void *)pSubtitleSelect->pUserData);
+ }
+}
+
+/*static void __vp_subtitle_select_popup_mouse_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pUserData;
+
+ if (pSubtitleSelect->pCloseCb) {
+ pSubtitleSelect->pCloseCb(NULL, (void *)pSubtitleSelect->pUserData);
+ }
+ }
+}
+*/
+
+/* internal functions */
+static void _vp_subtitle_select_destroy_handle(SubtitleSelectPopup *pSubtitleSelect)
+{
+ if (pSubtitleSelect == NULL) {
+ VideoLogError("pSubtitleSelect is NULL");
+ return;
+ }
+ int nCount = 0;
+ int i = 0;
+
+ evas_object_smart_callback_del(pSubtitleSelect->pParent, "rotation,changed", __vp_subtitle_select_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitleSelect->pGenList, "realized", __vp_subtitle_select_genlist_realized);
+
+
+ VP_EVAS_DEL(pSubtitleSelect->pRadio);
+ VP_EVAS_DEL(pSubtitleSelect->pGenList);
+ VP_EVAS_DEL(pSubtitleSelect->pButton);
+ VP_EVAS_DEL(pSubtitleSelect->pBox);
+
+ if (pSubtitleSelect->st_SubtitleSelect_Itc) {
+ elm_genlist_item_class_free(pSubtitleSelect->st_SubtitleSelect_Itc);
+ pSubtitleSelect->st_SubtitleSelect_Itc = NULL;
+ }
+
+ nCount = g_list_length(pSubtitleSelect->pItemList);
+ for (i = 0; i < nCount ; i++)
+ {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleSelect->pItemList, i);
+ VP_FREE(szName);
+ }
+
+ g_list_free(pSubtitleSelect->pItemList);
+ pSubtitleSelect->pItemList = NULL;
+ VP_EVAS_DEL(pSubtitleSelect->pPopup);
+
+ VP_FREE(pSubtitleSelect);
+}
+
+
+static Evas_Object *_vp_subtitle_select_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_select_add_genlist_item(Evas_Object *pObj, void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pUserData;
+
+ if (pSubtitleSelect->st_SubtitleSelect_Itc) {
+ elm_genlist_item_class_free(pSubtitleSelect->st_SubtitleSelect_Itc);
+ pSubtitleSelect->st_SubtitleSelect_Itc = NULL;
+ }
+
+ pSubtitleSelect->st_SubtitleSelect_Itc = elm_genlist_item_class_new();
+
+ if (pSubtitleSelect->st_SubtitleSelect_Itc != NULL) {
+ pSubtitleSelect->st_SubtitleSelect_Itc->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleSelect->st_SubtitleSelect_Itc->item_style = "1line";
+ pSubtitleSelect->st_SubtitleSelect_Itc->func.text_get = (void *)__vp_subtitle_select_genlist_text_get_cb;
+ pSubtitleSelect->st_SubtitleSelect_Itc->func.content_get = (void *)__vp_subtitle_select_genlist_content_get_cb;
+ pSubtitleSelect->st_SubtitleSelect_Itc->func.state_get = NULL;
+ pSubtitleSelect->st_SubtitleSelect_Itc->func.del = NULL;
+ }
+
+ int nCount = 0;
+ int i = 0;
+ pSubtitleSelect->nAppendCount = 0;
+ Elm_Object_Item *it = NULL;
+ nCount = g_list_length(pSubtitleSelect->pItemList);
+ for (i = 0; i < nCount ; i++) {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleSelect->pItemList, i);
+ if (szName == NULL) {
+ continue;
+ }
+ it = elm_genlist_item_append(pObj, pSubtitleSelect->st_SubtitleSelect_Itc, (void *)szName, NULL, ELM_GENLIST_ITEM_NONE, __vp_subtitle_select_genlist_item_selected_cb, pUserData);
+ pSubtitleSelect->nAppendCount++;
+ }
+ if (pSubtitleSelect->nAppendCount == 1) {
+ elm_object_item_disabled_set(it, EINA_TRUE);
+ }
+ VideoLogError("pSubtitleSelect->nAppendCount= %d", pSubtitleSelect->nAppendCount);
+
+ return TRUE;
+}
+
+
+/* external functions */
+subtitle_select_handle vp_subtitle_select_create(Evas_Object *pParent, SubtitleCloseCbFunc pCloseCb, SubtitleCloseCbFunc pButtonCb, GList *pFileList, char *szCurrentPath, bool isSubtitleOff)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = NULL;
+
+ pSubtitleSelect = calloc(1, sizeof(SubtitleSelectPopup));
+
+ if (pSubtitleSelect == NULL) {
+ VideoLogError("pSubtitleSelect alloc fail");
+ return NULL;
+ }
+
+ pSubtitleSelect->pParent = pParent;
+ pSubtitleSelect->pCloseCb = pCloseCb;
+ pSubtitleSelect->pButtonCb = pButtonCb;
+ int nItemCount = 0;
+ if (pFileList)
+ nItemCount = g_list_length(pFileList);
+ if (nItemCount >0)
+ pSubtitleSelect->pPopup = vp_two_button_popup_create(pParent, VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES,
+ NULL, VP_PLAY_STRING_COM_CANCEL,
+ __vp_subtitle_select_popup_cancel_cb, VP_PLAY_STRING_SETTINGS,
+ __vp_subtitle_select_popup_settings_cb,
+ (void *)pSubtitleSelect);
+ else {
+ pSubtitleSelect->pPopup = vp_two_button_popup_create(pParent, VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES,
+ NULL, VP_PLAY_STRING_COM_CANCEL,
+ __vp_subtitle_select_popup_cancel_cb, VP_PLAY_STRING_SETTINGS,
+ NULL,
+ (void *)pSubtitleSelect);
+ Elm_Object_Item *it = NULL;
+ it = (Evas_Object *)elm_object_part_content_get(pSubtitleSelect->pPopup, "button2");
+ if (it) {
+ elm_object_disabled_set(it, EINA_TRUE);
+ }
+ }
+ eext_object_event_callback_add(pSubtitleSelect->pPopup, EEXT_CALLBACK_BACK, __vp_subtitle_select_popup_cancel_cb, (void *)pSubtitleSelect);
+ if (pSubtitleSelect->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_select_destroy_handle(pSubtitleSelect);
+ return NULL;
+ }
+
+ pSubtitleSelect->pGenList = _vp_subtitle_select_create_genlist(pSubtitleSelect->pPopup);
+ if (pSubtitleSelect->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_select_create_genlist fail");
+ _vp_subtitle_select_destroy_handle(pSubtitleSelect);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleSelect->pGenList , VP_SUBTITLE_SELECT_GENLIST_DATA_KEY, (void *)pSubtitleSelect);
+ elm_genlist_mode_set(pSubtitleSelect->pGenList, ELM_LIST_COMPRESS);
+ evas_object_smart_callback_add(pSubtitleSelect->pGenList, "realized", __vp_subtitle_select_genlist_realized, NULL);
+
+ pSubtitleSelect->pRadio = elm_radio_add(pSubtitleSelect->pGenList);
+
+ int i = 0;
+ int nCount = 0;
+
+ if (pFileList) {
+ for (i = 0; i < nItemCount; i++) {
+ char *szName = NULL;
+ char *szItem = NULL;
+ szName = (char *)g_list_nth_data(pFileList, i);
+ if (szName == NULL) {
+ continue;
+ }
+ if (szCurrentPath) {
+ if (strcmp(szName, szCurrentPath) == 0) {
+ pSubtitleSelect->nSubtitleIdx = nCount;
+ elm_radio_value_set(pSubtitleSelect->pRadio, pSubtitleSelect->nSubtitleIdx);
+ }
+ }
+ VP_STRDUP(szItem, szName);
+ pSubtitleSelect->pItemList = g_list_append(pSubtitleSelect->pItemList, (void *)szItem);
+ nCount++;
+ }
+ }
+
+ //char *szName = VP_PLAY_STRING_SUBTITLE_OFF;
+ char *szItem = NULL;
+ VP_STRDUP(szItem, VP_PLAY_STRING_SUBTITLE_OFF);
+ pSubtitleSelect->pItemList = g_list_append(pSubtitleSelect->pItemList, (void *)szItem);
+ nCount++;
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ if (!_vp_subtitle_select_add_genlist_item(pSubtitleSelect->pGenList, (void *)pSubtitleSelect)) {
+ VideoLogError("_vp_subtitle_select_add_genlist_item fail");
+ return FALSE;
+ }
+ if (isSubtitleOff || !bOn) {
+ pSubtitleSelect->nSubtitleIdx = (nCount-1);
+ elm_radio_value_set(pSubtitleSelect->pRadio, pSubtitleSelect->nSubtitleIdx);
+ }
+ evas_object_smart_callback_add(pSubtitleSelect->pParent, "rotation,changed", __vp_subtitle_select_popup_rotate_cb, pSubtitleSelect);
+
+ pSubtitleSelect->pBox = elm_box_add(pSubtitleSelect->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleSelect->pParent, pSubtitleSelect->pBox, pSubtitleSelect->nAppendCount, VIDEO_POPUP_DEFAULT);
+
+ elm_box_pack_end(pSubtitleSelect->pBox, pSubtitleSelect->pGenList);
+ elm_object_content_set(pSubtitleSelect->pPopup, pSubtitleSelect->pBox);
+
+ return pSubtitleSelect;
+}
+
+void vp_subtitle_select_destroy(subtitle_select_handle pSubtitleSelectHandle)
+{
+ if (pSubtitleSelectHandle == NULL) {
+ VideoLogError("pSubtitleSelectHandle is NULL");
+ return;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pSubtitleSelectHandle;
+
+ _vp_subtitle_select_destroy_handle(pSubtitleSelect);
+}
+
+bool vp_subtitle_select_realize(subtitle_select_handle pSubtitleSelectHandle)
+{
+ if (pSubtitleSelectHandle == NULL) {
+ VideoLogError("pSubtitleSelectHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pSubtitleSelectHandle;
+
+ evas_object_show(pSubtitleSelect->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_select_unrealize(subtitle_select_handle pSubtitleSelectHandle)
+{
+ if (pSubtitleSelectHandle == NULL) {
+ VideoLogError("pSubtitleSelectHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pSubtitleSelectHandle;
+
+ evas_object_hide(pSubtitleSelect->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_select_set_user_data(subtitle_select_handle pSubtitleSelectHandle, void *pUserData)
+{
+ if (pSubtitleSelectHandle == NULL) {
+ VideoLogError("pSubtitleSelectHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleSelectPopup *pSubtitleSelect = (SubtitleSelectPopup *)pSubtitleSelectHandle;
+
+ pSubtitleSelect->pUserData = pUserData;
+
+ return TRUE;
+}
+
diff --git a/playview/src/feature/vp-subtitle-size.c b/playview/src/feature/vp-subtitle-size.c
new file mode 100644
index 0000000..999ead1
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-size.c
@@ -0,0 +1,490 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-size.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_SIZE_GENLIST_DATA_KEY "vp.subtitle.size.genlist"
+
+
+typedef struct _SubtitleSizePopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pRadio;
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleSize_Itc;
+
+ int nListCount;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+ video_play_subtitle_size_t currentSubtitleSize;
+} SubtitleSizePopup;
+
+
+
+static void _vp_subtitle_size_destroy_handle(SubtitleSizePopup *
+ pSubtitleSize);
+static void __vp_subtitle_size_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+static void __vp_subtitle_size_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_size_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleSizePopup *pSubtitleSize = (SubtitleSizePopup *) data;
+ if (!pSubtitleSize) {
+ VideoLogError("pSubtitleSize IS null");
+ return;
+ }
+ if (pSubtitleSize->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleSize->pParent,
+ pSubtitleSize->pBox,
+ pSubtitleSize->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_subtitle_size_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+
+ char *szTxt = (char *) pUserData;
+ char szTmp[VP_STRING_LEN_MAX] = { 0, };
+ int nSize = 0;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_SMALL)) {
+ nSize = VP_SUBTITLE_SIZE_SMALL_VALUE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM)) {
+ nSize = VP_SUBTITLE_SIZE_MEDIUM_VALUE;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_LARGE)) {
+ nSize = VP_SUBTITLE_SIZE_LARGE_VALUE;
+ }
+
+ snprintf(szTmp, VP_STRING_LEN_MAX - 1,
+ "<font_size=%d>%s</font_size>", nSize, szTxt);
+
+ return strdup(szTmp);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_size_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon.right")) {
+ Evas_Object *pRadioObj = NULL;
+
+ SubtitleSizePopup *pSubtitleSize =
+ (SubtitleSizePopup *) evas_object_data_get(pObj,
+ VP_SUBTITLE_SIZE_GENLIST_DATA_KEY);
+ if (pSubtitleSize == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+ video_play_subtitle_size_t nSize = VIDEO_SUBTITLE_SIZE_MEDIUM;
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_SMALL)) {
+ nSize = VIDEO_SUBTITLE_SIZE_SMALL;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM)) {
+ nSize = VIDEO_SUBTITLE_SIZE_MEDIUM;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_LARGE)) {
+ nSize = VIDEO_SUBTITLE_SIZE_LARGE;
+ }
+
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, nSize);
+ elm_radio_group_add(pRadioObj, pSubtitleSize->pRadio);
+ elm_radio_value_set(pSubtitleSize->pRadio,
+ pSubtitleSize->currentSubtitleSize);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_size_genlist_item_selected_cb,
+ pSubtitleSize);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+ }
+
+ return NULL;
+}
+
+static void __vp_subtitle_size_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ char *szTxt = (char *) elm_object_item_data_get(pItem);
+
+ SubtitleSizePopup *pSubtitleSize = (SubtitleSizePopup *) pUserData;
+
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+ video_play_subtitle_size_t nSize = VIDEO_SUBTITLE_SIZE_MEDIUM;
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_SMALL)) {
+ nSize = VIDEO_SUBTITLE_SIZE_SMALL;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM)) {
+ nSize = VIDEO_SUBTITLE_SIZE_MEDIUM;
+ } else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE_LARGE)) {
+ nSize = VIDEO_SUBTITLE_SIZE_LARGE;
+ }
+
+ pSubtitleSize->currentSubtitleSize = nSize;
+ if (pSubtitleSize->pCloseCb) {
+ pSubtitleSize->pCloseCb(nSize, FALSE,
+ (void *) pSubtitleSize->pUserData);
+ }
+}
+
+static void __vp_subtitle_size_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSizePopup *pSubtitleSize = (SubtitleSizePopup *) pUserData;
+
+ if (pSubtitleSize->pCloseCb) {
+ pSubtitleSize->pCloseCb(-1, FALSE,
+ (void *) pSubtitleSize->pUserData);
+ }
+}
+
+static void __vp_subtitle_size_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleSizePopup *pSubtitleSize =
+ (SubtitleSizePopup *) pUserData;
+
+ if (pSubtitleSize->pCloseCb) {
+ pSubtitleSize->pCloseCb(-1, FALSE,
+ (void *) pSubtitleSize->pUserData);
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_subtitle_size_destroy_handle(SubtitleSizePopup *
+ pSubtitleSize)
+{
+ if (pSubtitleSize == NULL) {
+ VideoLogError("pSubtitleSize is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSubtitleSize->pParent,
+ "rotation,changed",
+ __vp_subtitle_size_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitleSize->pGenList, "realized",
+ __vp_subtitle_size_genlist_realized);
+
+ VP_EVAS_DEL(pSubtitleSize->pRadio);
+ VP_EVAS_DEL(pSubtitleSize->pGenList);
+ VP_EVAS_DEL(pSubtitleSize->pButton);
+ VP_EVAS_DEL(pSubtitleSize->pBox);
+
+ if (pSubtitleSize->st_SubtitleSize_Itc) {
+ elm_genlist_item_class_free(pSubtitleSize->st_SubtitleSize_Itc);
+ pSubtitleSize->st_SubtitleSize_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pSubtitleSize->pPopup);
+
+ VP_FREE(pSubtitleSize);
+}
+
+
+static Evas_Object *_vp_subtitle_size_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_size_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleSizePopup *pSubtitleSize = (SubtitleSizePopup *) pUserData;
+
+ if (pSubtitleSize->st_SubtitleSize_Itc) {
+ elm_genlist_item_class_free(pSubtitleSize->st_SubtitleSize_Itc);
+ pSubtitleSize->st_SubtitleSize_Itc = NULL;
+ }
+
+ pSubtitleSize->st_SubtitleSize_Itc = elm_genlist_item_class_new();
+
+ if (pSubtitleSize->st_SubtitleSize_Itc != NULL) {
+ pSubtitleSize->st_SubtitleSize_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleSize->st_SubtitleSize_Itc->item_style = "1line";
+ pSubtitleSize->st_SubtitleSize_Itc->func.text_get =
+ (void *) __vp_subtitle_size_genlist_text_get_cb;
+ pSubtitleSize->st_SubtitleSize_Itc->func.content_get =
+ (void *) __vp_subtitle_size_genlist_content_get_cb;
+ pSubtitleSize->st_SubtitleSize_Itc->func.state_get = NULL;
+ pSubtitleSize->st_SubtitleSize_Itc->func.del = NULL;
+ pSubtitleSize->nListCount = 0;
+
+ elm_genlist_item_append(pObj,
+ pSubtitleSize->st_SubtitleSize_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_SIZE_LARGE,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_size_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleSize->nListCount++;
+ elm_genlist_item_append(pObj, pSubtitleSize->st_SubtitleSize_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_size_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleSize->nListCount++;
+ elm_genlist_item_append(pObj, pSubtitleSize->st_SubtitleSize_Itc,
+ (void *) VP_PLAY_STRING_SUBTITLE_SIZE_SMALL,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_size_genlist_item_selected_cb,
+ pUserData);
+ pSubtitleSize->nListCount++;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+subtitle_size_handle vp_subtitle_size_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb,
+ int nDefaultSize)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleSizePopup *pSubtitleSize = NULL;
+
+ pSubtitleSize = calloc(1, sizeof(SubtitleSizePopup));
+
+ if (pSubtitleSize == NULL) {
+ VideoLogError("pSubtitleSize alloc fail");
+ return NULL;
+ }
+
+ pSubtitleSize->pParent = pParent;
+ pSubtitleSize->pCloseCb = pCloseCb;
+
+ pSubtitleSize->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_SIZE, NULL, 0.0, NULL,
+ __vp_subtitle_size_popup_key_event_cb,
+ __vp_subtitle_size_popup_mouse_event_cb,
+ (void *) pSubtitleSize);
+ if (pSubtitleSize->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_size_destroy_handle(pSubtitleSize);
+ return NULL;
+ }
+
+ pSubtitleSize->pGenList =
+ _vp_subtitle_size_create_genlist(pSubtitleSize->pPopup);
+ if (pSubtitleSize->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_size_create_genlist fail");
+ _vp_subtitle_size_destroy_handle(pSubtitleSize);
+ return NULL;
+ }
+ evas_object_data_set(pSubtitleSize->pGenList,
+ VP_SUBTITLE_SIZE_GENLIST_DATA_KEY,
+ (void *) pSubtitleSize);
+ evas_object_smart_callback_add(pSubtitleSize->pGenList, "realized",
+ __vp_subtitle_size_genlist_realized,
+ NULL);
+
+ pSubtitleSize->pRadio = elm_radio_add(pSubtitleSize->pGenList);
+
+ if (!_vp_subtitle_size_add_genlist_item
+ (pSubtitleSize->pGenList, (void *) pSubtitleSize)) {
+ VideoLogError("_vp_subtitle_size_add_genlist_item fail");
+ return FALSE;
+ }
+ //elm_radio_value_set(pSubtitleSize->pRadio, nDefaultSize);
+ pSubtitleSize->currentSubtitleSize = nDefaultSize;
+ evas_object_smart_callback_add(pSubtitleSize->pParent,
+ "rotation,changed",
+ __vp_subtitle_size_popup_rotate_cb,
+ pSubtitleSize);
+
+ pSubtitleSize->pBox = elm_box_add(pSubtitleSize->pPopup);
+ vp_popup_set_popup_min_size(pSubtitleSize->pParent,
+ pSubtitleSize->pBox,
+ pSubtitleSize->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ elm_box_pack_end(pSubtitleSize->pBox, pSubtitleSize->pGenList);
+ elm_object_content_set(pSubtitleSize->pPopup, pSubtitleSize->pBox);
+
+ return pSubtitleSize;
+}
+
+void vp_subtitle_size_destroy(subtitle_size_handle pSubtitleSizeHandle)
+{
+ if (pSubtitleSizeHandle == NULL) {
+ VideoLogError("pSubtitleSizeHandle is NULL");
+ return;
+ }
+
+ SubtitleSizePopup *pSubtitleSize =
+ (SubtitleSizePopup *) pSubtitleSizeHandle;
+
+ _vp_subtitle_size_destroy_handle(pSubtitleSize);
+
+}
+
+bool vp_subtitle_size_realize(subtitle_size_handle pSubtitleSizeHandle)
+{
+ if (pSubtitleSizeHandle == NULL) {
+ VideoLogError("pSubtitleSizeHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleSizePopup *pSubtitleSize =
+ (SubtitleSizePopup *) pSubtitleSizeHandle;
+
+ evas_object_show(pSubtitleSize->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_size_unrealize(subtitle_size_handle pSubtitleSizeHandle)
+{
+ if (pSubtitleSizeHandle == NULL) {
+ VideoLogError("pSubtitleSizeHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleSizePopup *pSubtitleSize =
+ (SubtitleSizePopup *) pSubtitleSizeHandle;
+
+ evas_object_hide(pSubtitleSize->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_size_set_user_data(subtitle_size_handle
+ pSubtitleSizeHandle, void *pUserData)
+{
+ if (pSubtitleSizeHandle == NULL) {
+ VideoLogError("pSubtitleSizeHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleSizePopup *pSubtitleSize =
+ (SubtitleSizePopup *) pSubtitleSizeHandle;
+
+ pSubtitleSize->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-sync.c b/playview/src/feature/vp-subtitle-sync.c
new file mode 100644
index 0000000..8561fbf
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-sync.c
@@ -0,0 +1,616 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-subtitle-sync.h"
+#include "vp-play-util.h"
+#include "vp-play-button.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_SYNC_MAX_VALUE 30.0
+#define VP_SUBTITLE_SYNC_MIN_VALUE -30.0
+
+typedef struct _SubtitleSyncPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pLayout;
+ Evas_Object *pBox;
+ Evas_Object *pSlider;
+ Evas_Object *pOkButton;
+ Evas_Object *pCancelButton;
+ Evas_Object *pAddButton;
+ Evas_Object *pDelButton;
+
+ float fSyncVal;
+
+ void *pUserData;
+
+ SubtitleSyncDoneCbFunc pDoneCb;
+ SubtitleSyncUpdateCbFunc pUpdateCb;
+
+} SubtitleSyncPopup;
+
+
+
+static void _vp_subtitle_sync_popup_destroy_handle(SubtitleSyncPopup *
+ pSubtitleSyncPopup);
+static void _vp_subtitle_sync_update_text(SubtitleSyncPopup *
+ pSubtitleSyncPopup);
+
+
+/* callback functions */
+
+static void __vp_subtitle_sync_popup_ok_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+
+ if (pSubtitleSyncPopup->pDoneCb) {
+ pSubtitleSyncPopup->pDoneCb(pSubtitleSyncPopup->fSyncVal, TRUE,
+ (void *) pSubtitleSyncPopup->
+ pUserData);
+ }
+}
+
+static void __vp_subtitle_sync_popup_cancel_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+
+ if (pSubtitleSyncPopup->pDoneCb) {
+ pSubtitleSyncPopup->pDoneCb(pSubtitleSyncPopup->fSyncVal, FALSE,
+ (void *) pSubtitleSyncPopup->
+ pUserData);
+ }
+}
+
+
+static void __vp_subtitle_sync_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+
+ if (pSubtitleSyncPopup->pDoneCb) {
+ pSubtitleSyncPopup->pDoneCb(pSubtitleSyncPopup->fSyncVal, FALSE,
+ (void *) pSubtitleSyncPopup->
+ pUserData);
+ }
+
+}
+
+static void __vp_subtitle_sync_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+ if (pSubtitleSyncPopup->pDoneCb) {
+ pSubtitleSyncPopup->pDoneCb(pSubtitleSyncPopup->fSyncVal,
+ FALSE,
+ (void *) pSubtitleSyncPopup->
+ pUserData);
+ }
+
+ }
+}
+
+static void __vp_subtitle_sync_popup_slider_change_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+
+ float fValue =
+ (float) elm_slider_value_get(pSubtitleSyncPopup->pSlider);
+
+ if (fValue != pSubtitleSyncPopup->fSyncVal) {
+ if (pSubtitleSyncPopup->pUpdateCb) {
+ pSubtitleSyncPopup->pUpdateCb(pSubtitleSyncPopup->fSyncVal,
+ (void *) pSubtitleSyncPopup->
+ pUserData);
+ pSubtitleSyncPopup->fSyncVal = fValue;
+ _vp_subtitle_sync_update_text(pSubtitleSyncPopup);
+ }
+ }
+}
+
+static void __vp_subtitle_sync_btn_clicked_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+
+ float fValue =
+ (float) elm_slider_value_get(pSubtitleSyncPopup->pSlider);
+ VideoLogWarning("== %f ==", fValue);
+
+ if (pObj == pSubtitleSyncPopup->pAddButton) {
+ fValue += 0.2;
+ if (fValue <= VP_SUBTITLE_SYNC_MAX_VALUE) {
+ VideoLogWarning("== %f ==", fValue);
+ elm_slider_value_set(pSubtitleSyncPopup->pSlider,
+ (double) fValue);
+ if (pSubtitleSyncPopup->pUpdateCb) {
+ pSubtitleSyncPopup->pUpdateCb(pSubtitleSyncPopup->
+ fSyncVal,
+ (void *)
+ pSubtitleSyncPopup->
+ pUserData);
+ pSubtitleSyncPopup->fSyncVal = fValue;
+ _vp_subtitle_sync_update_text(pSubtitleSyncPopup);
+ }
+ }
+ } else if (pObj == pSubtitleSyncPopup->pDelButton) {
+ fValue -= 0.2;
+ if (fValue >= VP_SUBTITLE_SYNC_MIN_VALUE) {
+ VideoLogWarning("== %f ==", fValue);
+ elm_slider_value_set(pSubtitleSyncPopup->pSlider,
+ (double) fValue);
+ if (pSubtitleSyncPopup->pUpdateCb) {
+ pSubtitleSyncPopup->pUpdateCb(pSubtitleSyncPopup->
+ fSyncVal,
+ (void *)
+ pSubtitleSyncPopup->
+ pUserData);
+ pSubtitleSyncPopup->fSyncVal = fValue;
+ _vp_subtitle_sync_update_text(pSubtitleSyncPopup);
+ }
+ }
+ }
+}
+
+
+
+/* internal functions */
+static void _vp_subtitle_sync_popup_destroy_handle(SubtitleSyncPopup *
+ pSubtitleSyncPopup)
+{
+ if (pSubtitleSyncPopup == NULL) {
+ VideoLogError("pSubtitleSyncPopup is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pSubtitleSyncPopup->pAddButton);
+ VP_EVAS_DEL(pSubtitleSyncPopup->pDelButton);
+
+ VP_EVAS_DEL(pSubtitleSyncPopup->pOkButton);
+ VP_EVAS_DEL(pSubtitleSyncPopup->pCancelButton);
+ VP_EVAS_DEL(pSubtitleSyncPopup->pSlider);
+ VP_EVAS_DEL(pSubtitleSyncPopup->pBox);
+ VP_EVAS_DEL(pSubtitleSyncPopup->pLayout);
+ VP_EVAS_DEL(pSubtitleSyncPopup->pPopup);
+
+ VP_FREE(pSubtitleSyncPopup);
+}
+
+static void _vp_subtitle_sync_update_text(SubtitleSyncPopup *
+ pSubtitleSyncPopup)
+{
+ if (pSubtitleSyncPopup == NULL) {
+ VideoLogError("pSubtitleSyncPopup is NULL");
+ return;
+ }
+
+ char szValue[6] = { 0, };
+
+ snprintf(szValue, 6, "%0.1f", (double) pSubtitleSyncPopup->fSyncVal);
+ elm_object_part_text_set(pSubtitleSyncPopup->pLayout,
+ "elm.text.title", szValue);
+
+}
+
+
+static Evas_Object *_vp_subtitle_sync_popup_create_ok_button(Evas_Object *
+ pParent,
+ void
+ *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pParent, "button2", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_subtitle_sync_popup_ok_btn_cb,
+ pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+
+static Evas_Object
+*_vp_subtitle_sync_popup_create_cancel_button(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_button_add(pParent);
+ elm_object_style_set(pObj, "popup_button/default");
+ elm_object_domain_translatable_text_set(pObj, VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_CANCEL_IDS);
+ elm_object_part_content_set(pParent, "button1", pObj);
+ evas_object_smart_callback_add(pObj, "clicked",
+ __vp_subtitle_sync_popup_cancel_btn_cb,
+ pUserData);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_subtitle_sync_popup_create_slider(Evas_Object *
+ pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_slider_add(pParent);
+ elm_slider_indicator_show_set(pObj, EINA_FALSE);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_slider_min_max_set(pObj, VP_SUBTITLE_SYNC_MIN_VALUE,
+ VP_SUBTITLE_SYNC_MAX_VALUE);
+ evas_object_smart_callback_add(pObj, "changed",
+ __vp_subtitle_sync_popup_slider_change_cb,
+ pUserData);
+
+ return pObj;
+}
+
+static bool _vp_subtitle_sync_popup_create_button(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pUserData;
+
+ pSubtitleSyncPopup->pDelButton =
+ vp_button_create(pParent, "playview/custom/flat_63_78/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_subtitle_sync_btn_clicked_cb,
+ (Evas_Smart_Cb) NULL, (Evas_Smart_Cb) NULL,
+ (void *) pSubtitleSyncPopup);
+
+
+
+ pSubtitleSyncPopup->pAddButton =
+ vp_button_create(pParent, "playview/custom/flat_63_78/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_subtitle_sync_btn_clicked_cb,
+ (Evas_Smart_Cb) NULL, (Evas_Smart_Cb) NULL,
+ (void *) pSubtitleSyncPopup);
+
+ Evas_Object *pIcon = NULL;
+
+ pIcon =
+ vp_button_create_icon(pSubtitleSyncPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL);
+ elm_object_part_content_set(pSubtitleSyncPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleSyncPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL_PRESS);
+ elm_object_part_content_set(pSubtitleSyncPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleSyncPopup->pDelButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_DEL);
+ elm_object_part_content_set(pSubtitleSyncPopup->pDelButton,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleSyncPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD);
+ elm_object_part_content_set(pSubtitleSyncPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleSyncPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD_PRESS);
+ elm_object_part_content_set(pSubtitleSyncPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pSubtitleSyncPopup->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_RES_BUTTON_ADD);
+ elm_object_part_content_set(pSubtitleSyncPopup->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ elm_object_part_content_set(pParent, "elm.swallow.icon.1",
+ pSubtitleSyncPopup->pDelButton);
+ elm_object_part_content_set(pParent, "elm.swallow.icon.2",
+ pSubtitleSyncPopup->pAddButton);
+
+ return TRUE;
+}
+
+static Evas_Object *_vp_subtitle_sync_popup_create_layout(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pLayout = elm_layout_add(pParent);
+ if (pLayout == NULL) {
+ VideoLogError("pLayout object is NULL");
+ return NULL;
+ }
+
+ elm_layout_file_set(pLayout, VP_PLAY_SPEED_POPUP_EDJ,
+ VP_PLAY_EDJ_GROUP_PLAY_SPEED_POPUP);
+
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLayout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+
+}
+
+
+
+/* external functions */
+subtitle_sync_popup vp_subtitle_sync_popup_create(Evas_Object *pParent,
+ float fSyncVal,
+ SubtitleSyncUpdateCbFunc
+ pUpdateCb,
+ SubtitleSyncDoneCbFunc
+ pDoneCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup = NULL;
+
+ pSubtitleSyncPopup = calloc(1, sizeof(SubtitleSyncPopup));
+
+ if (pSubtitleSyncPopup == NULL) {
+ VideoLogError("pSubtitleSyncPopup alloc fail");
+ return NULL;
+ }
+
+ pSubtitleSyncPopup->pParent = pParent;
+ pSubtitleSyncPopup->pUpdateCb = pUpdateCb;
+ pSubtitleSyncPopup->pDoneCb = pDoneCb;
+ pSubtitleSyncPopup->fSyncVal = fSyncVal;
+
+ pSubtitleSyncPopup->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_EXPAND_WITH_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_SYNC, NULL, 0.0, NULL,
+ __vp_subtitle_sync_popup_key_event_cb,
+ __vp_subtitle_sync_popup_mouse_event_cb,
+ (void *) pSubtitleSyncPopup);
+
+ if (pSubtitleSyncPopup->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_sync_popup_destroy_handle(pSubtitleSyncPopup);
+ return NULL;
+ }
+
+ pSubtitleSyncPopup->pCancelButton =
+ _vp_subtitle_sync_popup_create_cancel_button(pSubtitleSyncPopup->
+ pPopup,
+ (void *)
+ pSubtitleSyncPopup);
+ if (pSubtitleSyncPopup->pCancelButton == NULL) {
+ VideoLogError
+ ("_vp_subtitle_sync_popup_create_cancel_button fail");
+ _vp_subtitle_sync_popup_destroy_handle(pSubtitleSyncPopup);
+ return NULL;
+ }
+
+ pSubtitleSyncPopup->pOkButton =
+ _vp_subtitle_sync_popup_create_ok_button(pSubtitleSyncPopup->
+ pPopup,
+ (void *)
+ pSubtitleSyncPopup);
+ if (pSubtitleSyncPopup->pOkButton == NULL) {
+ VideoLogError("_vp_subtitle_sync_popup_create_ok_button fail");
+ _vp_subtitle_sync_popup_destroy_handle(pSubtitleSyncPopup);
+ return NULL;
+ }
+
+ pSubtitleSyncPopup->pLayout =
+ _vp_subtitle_sync_popup_create_layout(pSubtitleSyncPopup->pPopup);
+ if (pSubtitleSyncPopup->pLayout == NULL) {
+ VideoLogError("_vp_subtitle_sync_popup_create_layout fail");
+ _vp_subtitle_sync_popup_destroy_handle(pSubtitleSyncPopup);
+ return NULL;
+ }
+
+ pSubtitleSyncPopup->pSlider =
+ _vp_subtitle_sync_popup_create_slider(pSubtitleSyncPopup->pLayout,
+ pSubtitleSyncPopup);
+ if (pSubtitleSyncPopup->pSlider == NULL) {
+ VideoLogError("_vp_subtitle_sync_popup_create_slider fail");
+ _vp_subtitle_sync_popup_destroy_handle(pSubtitleSyncPopup);
+ return NULL;
+ }
+
+ _vp_subtitle_sync_popup_create_button(pSubtitleSyncPopup->pLayout,
+ pSubtitleSyncPopup);
+
+ elm_slider_value_set(pSubtitleSyncPopup->pSlider,
+ (double) pSubtitleSyncPopup->fSyncVal);
+ _vp_subtitle_sync_update_text(pSubtitleSyncPopup);
+
+ elm_object_part_content_set(pSubtitleSyncPopup->pLayout,
+ "elm.swallow.content",
+ pSubtitleSyncPopup->pSlider);
+ elm_object_content_set(pSubtitleSyncPopup->pPopup,
+ pSubtitleSyncPopup->pLayout);
+ evas_object_show(pSubtitleSyncPopup->pLayout);
+
+ elm_popup_orient_set(pSubtitleSyncPopup->pPopup,
+ ELM_POPUP_ORIENT_CENTER);
+
+ return pSubtitleSyncPopup;
+}
+
+void vp_subtitle_sync_popup_destroy(subtitle_sync_popup pSubtitleSync)
+{
+ if (pSubtitleSync == NULL) {
+ VideoLogError("pSubtitleSync is NULL");
+ return;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pSubtitleSync;
+
+ _vp_subtitle_sync_popup_destroy_handle(pSubtitleSyncPopup);
+
+}
+
+bool vp_subtitle_sync_popup_realize(subtitle_sync_popup pSubtitleSync)
+{
+ if (pSubtitleSync == NULL) {
+ VideoLogError("pSubtitleSync is NULL");
+ return FALSE;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pSubtitleSync;
+
+ evas_object_show(pSubtitleSyncPopup->pPopup);
+
+ return TRUE;
+}
+
+
+bool vp_subtitle_sync_popup_unrealize(subtitle_sync_popup pSubtitleSync)
+{
+ if (pSubtitleSync == NULL) {
+ VideoLogError("pSubtitleSync is NULL");
+ return FALSE;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pSubtitleSync;
+
+ evas_object_hide(pSubtitleSyncPopup->pPopup);
+
+ return TRUE;
+}
+
+
+
+bool vp_subtitle_sync_popup_set_user_data(subtitle_sync_popup
+ pSubtitleSync, void *pUserData)
+{
+ if (pSubtitleSync == NULL) {
+ VideoLogError("pSubtitleSync is NULL");
+ return FALSE;
+ }
+
+ SubtitleSyncPopup *pSubtitleSyncPopup =
+ (SubtitleSyncPopup *) pSubtitleSync;
+
+ pSubtitleSyncPopup->pUserData = pUserData;
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle-track.c b/playview/src/feature/vp-subtitle-track.c
new file mode 100644
index 0000000..f15e79d
--- /dev/null
+++ b/playview/src/feature/vp-subtitle-track.c
@@ -0,0 +1,852 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-type-define.h"
+#include "vp-play-macro-define.h"
+#include "vp-play-util.h"
+#include "vp-subtitle-track.h"
+#include "vp-device-language.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#define VP_SUBTITLE_TRACK_GENLIST_DATA_KEY "vp.subtitle.track.genlist"
+
+
+typedef struct _SubtitleTrackItem {
+ Elm_Object_Item *pItem;
+ char *szName;
+ int nIndex;
+ void *pSubtitleTrackPopup;
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ bool bCheck;
+#endif
+} SubtitleTrackItem;
+
+
+typedef struct _SubtitleTrackPopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+#ifndef _SUBTITLE_MULTI_LANGUAGE
+ Evas_Object *pRadio;
+#endif
+ Evas_Object *pButton;
+ Evas_Object *pBox;
+ Evas_Object *pGenList;
+ Elm_Genlist_Item_Class *st_SubtitleTrack_Itc;
+
+ int nCurrentIndex;
+ int nListCount;
+
+ void *pUserData;
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ SubtitleLanguageChangeCbFunc pAddLanguageCb;
+ SubtitleLanguageChangeCbFunc pRemoveLanguageCb;
+#endif
+ PopupCloseCbFunc pCloseCb;
+
+ GList *pItemList;
+} SubtitleTrackPopup;
+
+
+
+static void _vp_subtitle_track_destroy_handle(SubtitleTrackPopup *
+ pSubtitleTrack);
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+static void __vp_subtitle_track_popup_check_state_change_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+#else
+static void __vp_subtitle_track_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+#endif
+static void __vp_subtitle_track_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_track_popup_rotate_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SubtitleTrackPopup *pSubtitleTrack = (SubtitleTrackPopup *) data;
+ if (!pSubtitleTrack) {
+ VideoLogError("pSubtitleSize IS null");
+ return;
+ }
+ if (pSubtitleTrack->nListCount < VP_POPUP_MIN_ITEMS) {
+ return;
+ }
+ vp_popup_set_popup_min_size(pSubtitleTrack->pParent,
+ pSubtitleTrack->pBox,
+ pSubtitleTrack->nListCount,
+ VIDEO_POPUP_DEFAULT);
+
+}
+
+/* callback functions */
+static char *__vp_subtitle_track_genlist_text_get_cb(const void
+ *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("Invalid user data");
+ return NULL;
+ }
+
+ SubtitleTrackItem *pTrackItem = (SubtitleTrackItem *) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ return strdup(pTrackItem->szName);
+ }
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_track_genlist_content_get_cb(const void
+ *pUserData,
+ Evas_Object
+ * pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("Invalid user data");
+ return NULL;
+ }
+
+ SubtitleTrackItem *pTrackItem = (SubtitleTrackItem *) pUserData;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pTrackItem->pSubtitleTrackPopup;
+ if (pSubtitleTrack == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ Evas_Object *pCheckBox = elm_check_add(pObj);
+ evas_object_propagate_events_set(pCheckBox, EINA_FALSE);
+ evas_object_smart_callback_add(pCheckBox, "changed",
+ __vp_subtitle_track_popup_check_state_change_cb,
+ pUserData);
+ elm_check_state_set(pCheckBox, pTrackItem->bCheck);
+ evas_object_show(pCheckBox);
+
+ return pCheckBox;
+#else
+ Evas_Object *pRadioObj = NULL;
+ pRadioObj = elm_radio_add(pObj);
+ elm_radio_state_value_set(pRadioObj, pTrackItem->nIndex);
+ elm_radio_group_add(pRadioObj, pSubtitleTrack->pRadio);
+ elm_radio_value_set(pSubtitleTrack->pRadio,
+ pSubtitleTrack->nCurrentIndex);
+ evas_object_smart_callback_add(pRadioObj, "changed",
+ __vp_subtitle_track_genlist_item_selected_cb,
+ pTrackItem);
+ evas_object_show(pRadioObj);
+
+ return pRadioObj;
+#endif
+ }
+
+ return NULL;
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+static bool __vp_subtitle_track_select_no_item(SubtitleTrackPopup *
+ pSubtitleTrackPopup)
+{
+ if (pSubtitleTrackPopup == NULL) {
+ VideoLogError("pSubtitleTrackPopup is NULL");
+ return false;
+ }
+
+ if (pSubtitleTrackPopup->pItemList == NULL) {
+ VideoLogError("pItemList is NULL");
+ return false;
+ }
+
+ bool ret = true;
+ int index = 0;
+ for (; index < g_list_length(pSubtitleTrackPopup->pItemList); ++index) {
+ SubtitleTrackItem *pItem = NULL;
+ pItem =
+ (SubtitleTrackItem *) g_list_nth_data(pSubtitleTrackPopup->
+ pItemList, index);
+ if (pItem && pItem->bCheck) {
+ ret = false;
+ break;
+ }
+ }
+
+ return ret;
+}
+
+static void __vp_subtitle_track_popup_disable_button(SubtitleTrackPopup *
+ pSubtitleTrackPopup,
+ bool bDisabled)
+{
+ if (pSubtitleTrackPopup == NULL) {
+ VideoLogError("pSubtitleTrackPopup is NULL");
+ return;
+ }
+
+ if (pSubtitleTrackPopup->pPopup == NULL) {
+ VideoLogError("pPopup is NULL");
+ return;
+ }
+
+ Evas_Object *pRightButton =
+ elm_object_part_content_get(pSubtitleTrackPopup->pPopup,
+ "button2");
+ if (pRightButton
+ && bDisabled != elm_object_disabled_get(pRightButton))
+ elm_object_disabled_set(pRightButton, bDisabled);
+}
+#endif
+static void __vp_subtitle_track_genlist_item_selected_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleTrackItem *pTrackItem = (SubtitleTrackItem *) pUserData;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ SubtitleTrackPopup *pSubtitleTrackPopup =
+ (SubtitleTrackPopup *) pTrackItem->pSubtitleTrackPopup;
+ if (pSubtitleTrackPopup == NULL) {
+ VideoLogError("SubtitleTrackPopup is NULL");
+ return;
+ }
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ Evas_Object *pCheckBox =
+ elm_object_item_part_content_get(pSelectedItem, "elm.icon");
+ if (pCheckBox) {
+ pTrackItem->bCheck = !pTrackItem->bCheck;
+ elm_check_state_set(pCheckBox, pTrackItem->bCheck);
+ VideoLogInfo("bCheck: %d, nIndex: %d", pTrackItem->bCheck,
+ pTrackItem->nIndex);
+ if (__vp_subtitle_track_select_no_item(pSubtitleTrackPopup)) {
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_SELECTED_LANGUAGE);
+ __vp_subtitle_track_popup_disable_button(pSubtitleTrackPopup,
+ true);
+ } else {
+ __vp_subtitle_track_popup_disable_button(pSubtitleTrackPopup,
+ false);
+ }
+ }
+#else
+ if (pTrackItem->nIndex == pSubtitleTrackPopup->nCurrentIndex) {
+ if (pSubtitleTrackPopup->pCloseCb) {
+ VideoLogInfo("Selected lang track indexp[%d]",
+ pTrackItem->nIndex);
+ pSubtitleTrackPopup->pCloseCb(pTrackItem->nIndex, FALSE,
+ (void *) pSubtitleTrackPopup->
+ pUserData);
+ }
+ } else {
+ pSubtitleTrackPopup->nCurrentIndex = pTrackItem->nIndex;
+ elm_radio_value_set(pSubtitleTrackPopup->pRadio,
+ pSubtitleTrackPopup->nCurrentIndex);
+ }
+#endif
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+static void __vp_subtitle_track_popup_check_state_change_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleTrackItem *pTrackItem = (SubtitleTrackItem *) pUserData;
+ SubtitleTrackPopup *pSubtitleTrackPopup =
+ (SubtitleTrackPopup *) pTrackItem->pSubtitleTrackPopup;
+ if (pSubtitleTrackPopup == NULL) {
+ VideoLogError("SubtitleTrackPopup is NULL");
+ return;
+ }
+ pTrackItem->bCheck = elm_check_state_get(pObject);
+ VideoLogInfo("bCheck: %d, nIndex: %d", pTrackItem->bCheck,
+ pTrackItem->nIndex);
+
+ if (__vp_subtitle_track_select_no_item(pSubtitleTrackPopup)) {
+ vp_play_util_status_noti_show(VP_PLAY_STRING_SELECTED_LANGUAGE);
+ __vp_subtitle_track_popup_disable_button(pSubtitleTrackPopup,
+ true);
+ } else {
+ __vp_subtitle_track_popup_disable_button(pSubtitleTrackPopup,
+ false);
+ }
+}
+#endif
+static void __vp_subtitle_track_popup_key_event_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack = (SubtitleTrackPopup *) pUserData;
+
+ if (pSubtitleTrack->pCloseCb) {
+ pSubtitleTrack->pCloseCb(-1, FALSE,
+ (void *) pSubtitleTrack->pUserData);
+ }
+}
+
+#ifndef _SUBTITLE_MULTI_LANGUAGE
+static void __vp_subtitle_track_popup_mouse_event_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pUserData;
+
+ if (pSubtitleTrack->pCloseCb) {
+ pSubtitleTrack->pCloseCb(-1, FALSE,
+ (void *) pSubtitleTrack->pUserData);
+ }
+ }
+}
+#endif
+/* internal functions */
+static void _vp_subtitle_track_clear_item_list(SubtitleTrackPopup *
+ pSubtitleTrack)
+{
+ if (pSubtitleTrack == NULL) {
+ VideoLogError("pSubtitleTrack is NULL");
+ return;
+ }
+
+ if (pSubtitleTrack->pItemList == NULL) {
+ VideoLogError("pSubtitleTrack->pItemList is NULL");
+ return;
+ }
+
+
+ int len = g_list_length(pSubtitleTrack->pItemList);
+ int idx = 0;
+ for (idx = 0; idx < len; idx++) {
+ SubtitleTrackItem *pItem = NULL;
+
+ pItem =
+ (SubtitleTrackItem *) g_list_nth_data(pSubtitleTrack->
+ pItemList, idx);
+ if (pItem) {
+ VP_EVAS_ITEM_DEL(pItem->pItem);
+ VP_FREE(pItem->szName);
+
+ memset(pItem, 0x00, sizeof(SubtitleTrackItem));
+ VP_FREE(pItem);
+ }
+ }
+
+ g_list_free(pSubtitleTrack->pItemList);
+ pSubtitleTrack->pItemList = NULL;
+}
+
+static void _vp_subtitle_track_destroy_handle(SubtitleTrackPopup *
+ pSubtitleTrack)
+{
+ if (pSubtitleTrack == NULL) {
+ VideoLogError("pSubtitleTrack is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pSubtitleTrack->pGenList, "realized",
+ __vp_subtitle_track_genlist_realized);
+ evas_object_smart_callback_del(pSubtitleTrack->pParent,
+ "rotation,changed",
+ __vp_subtitle_track_popup_rotate_cb);
+
+ _vp_subtitle_track_clear_item_list(pSubtitleTrack);
+#ifndef _SUBTITLE_MULTI_LANGUAGE
+ VP_EVAS_DEL(pSubtitleTrack->pRadio);
+#endif
+ VP_EVAS_DEL(pSubtitleTrack->pGenList);
+ VP_EVAS_DEL(pSubtitleTrack->pButton);
+ VP_EVAS_DEL(pSubtitleTrack->pBox);
+
+ if (pSubtitleTrack->st_SubtitleTrack_Itc) {
+ elm_genlist_item_class_free(pSubtitleTrack->st_SubtitleTrack_Itc);
+ pSubtitleTrack->st_SubtitleTrack_Itc = NULL;
+ }
+
+ VP_EVAS_DEL(pSubtitleTrack->pPopup);
+
+ VP_FREE(pSubtitleTrack);
+}
+
+static Evas_Object *_vp_subtitle_track_create_genlist(Evas_Object *
+ pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+
+static bool _vp_subtitle_track_add_genlist_item(Evas_Object *pObj,
+ void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack = (SubtitleTrackPopup *) pUserData;
+
+ if (pSubtitleTrack->st_SubtitleTrack_Itc) {
+ elm_genlist_item_class_free(pSubtitleTrack->st_SubtitleTrack_Itc);
+ pSubtitleTrack->st_SubtitleTrack_Itc = NULL;
+ }
+
+ pSubtitleTrack->st_SubtitleTrack_Itc = elm_genlist_item_class_new();
+
+ if (pSubtitleTrack->st_SubtitleTrack_Itc) {
+ pSubtitleTrack->st_SubtitleTrack_Itc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitleTrack->st_SubtitleTrack_Itc->item_style =
+ "1text.1icon.3/popup";
+ pSubtitleTrack->st_SubtitleTrack_Itc->func.text_get =
+ (void *) __vp_subtitle_track_genlist_text_get_cb;
+ pSubtitleTrack->st_SubtitleTrack_Itc->func.content_get =
+ (void *) __vp_subtitle_track_genlist_content_get_cb;
+ pSubtitleTrack->st_SubtitleTrack_Itc->func.state_get = NULL;
+ pSubtitleTrack->st_SubtitleTrack_Itc->func.del = NULL;
+ }
+
+ int len = g_list_length(pSubtitleTrack->pItemList);
+ int idx = 0;
+ pSubtitleTrack->nListCount = 0;
+
+ for (idx = 0; idx < len; idx++) {
+ SubtitleTrackItem *pItem = NULL;
+
+ pItem =
+ (SubtitleTrackItem *) g_list_nth_data(pSubtitleTrack->
+ pItemList, idx);
+ if (pItem) {
+ pItem->pItem = elm_genlist_item_append(pObj,
+ pSubtitleTrack->
+ st_SubtitleTrack_Itc,
+ (void *) pItem, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ __vp_subtitle_track_genlist_item_selected_cb,
+ pItem);
+ pSubtitleTrack->nListCount++;
+ }
+ }
+
+ return TRUE;
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+static void __vp_subtitle_track_popup_left_button_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogInfo("");
+ SubtitleTrackPopup *pSubtitleTrack = (SubtitleTrackPopup *) pUserData;
+
+ if (pSubtitleTrack->pCloseCb) {
+ pSubtitleTrack->pCloseCb(-1, FALSE,
+ (void *) pSubtitleTrack->pUserData);
+ }
+}
+
+static void __vp_subtitle_track_popup_right_button_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogInfo("");
+ SubtitleTrackPopup *pSubtitleTrack = (SubtitleTrackPopup *) pUserData;
+
+ if (pSubtitleTrack->pItemList == NULL) {
+ VideoLogError("pSubtitleTrack->pItemList is NULL");
+ return;
+ }
+
+
+ int len = g_list_length(pSubtitleTrack->pItemList);
+ int idx = 0;
+ for (idx = 0; idx < len; idx++) {
+ SubtitleTrackItem *pItem = NULL;
+
+ pItem =
+ (SubtitleTrackItem *) g_list_nth_data(pSubtitleTrack->
+ pItemList, idx);
+ /*set subtitle's language */
+ if (pItem) {
+ VideoLogInfo("nIndex=%d,bCheck=%d", pItem->nIndex,
+ pItem->bCheck);
+ if (pItem->bCheck && pSubtitleTrack->pAddLanguageCb) {
+ pSubtitleTrack->pAddLanguageCb(pItem->nIndex,
+ (void *) pSubtitleTrack->
+ pUserData);
+ } else if (!pItem->bCheck
+ && pSubtitleTrack->pRemoveLanguageCb) {
+ pSubtitleTrack->pRemoveLanguageCb(pItem->nIndex,
+ (void *)
+ pSubtitleTrack->
+ pUserData);
+ }
+ }
+ }
+
+ if (pSubtitleTrack->pCloseCb) {
+ pSubtitleTrack->pCloseCb(-1, FALSE,
+ (void *) pSubtitleTrack->pUserData);
+ }
+}
+#endif
+/* external functions */
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+subtitle_track_handle vp_subtitle_track_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb)
+#else
+subtitle_track_handle vp_subtitle_track_create(Evas_Object *pParent,
+ PopupCloseCbFunc pCloseCb,
+ int nDefaultIndex)
+#endif
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack = NULL;
+
+ pSubtitleTrack = calloc(1, sizeof(SubtitleTrackPopup));
+
+ if (pSubtitleTrack == NULL) {
+ VideoLogError("pSubtitleTrack alloc fail");
+ return NULL;
+ }
+
+ pSubtitleTrack->pParent = pParent;
+ pSubtitleTrack->pCloseCb = pCloseCb;
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ pSubtitleTrack->pPopup = vp_title_two_button_popup_create(pParent,
+ VP_PLAY_STRING_SUBTITLE_LANGUAGE,
+ NULL,
+ VP_PLAY_STRING_COM_CANCEL,
+ __vp_subtitle_track_popup_left_button_cb,
+ VP_PLAY_STRING_COM_OK,
+ __vp_subtitle_track_popup_right_button_cb,
+ (void *)
+ pSubtitleTrack);
+#else
+ pSubtitleTrack->pPopup =
+ vp_popup_create(pParent, POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ VP_PLAY_STRING_SUBTITLE_LANGUAGE, NULL, 0.0, NULL,
+ __vp_subtitle_track_popup_key_event_cb,
+ __vp_subtitle_track_popup_mouse_event_cb,
+ (void *) pSubtitleTrack);
+#endif
+ if (pSubtitleTrack->pPopup == NULL) {
+ VideoLogError("vp_popup_create fail");
+ _vp_subtitle_track_destroy_handle(pSubtitleTrack);
+ return NULL;
+ }
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ eext_object_event_callback_add(pSubtitleTrack->pPopup,
+ EEXT_CALLBACK_BACK,
+ __vp_subtitle_track_popup_key_event_cb,
+ (void *) pSubtitleTrack);
+#endif
+
+ pSubtitleTrack->pGenList =
+ _vp_subtitle_track_create_genlist(pSubtitleTrack->pPopup);
+ if (pSubtitleTrack->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_track_create_genlist fail");
+ _vp_subtitle_track_destroy_handle(pSubtitleTrack);
+ return NULL;
+ }
+
+ evas_object_smart_callback_add(pSubtitleTrack->pGenList, "realized",
+ __vp_subtitle_track_genlist_realized,
+ NULL);
+ evas_object_smart_callback_add(pSubtitleTrack->pParent,
+ "rotation,changed",
+ __vp_subtitle_track_popup_rotate_cb,
+ pSubtitleTrack);
+
+ evas_object_data_set(pSubtitleTrack->pGenList,
+ VP_SUBTITLE_TRACK_GENLIST_DATA_KEY,
+ (void *) pSubtitleTrack);
+#ifndef _SUBTITLE_MULTI_LANGUAGE
+ pSubtitleTrack->nCurrentIndex = nDefaultIndex;
+ pSubtitleTrack->pRadio = elm_radio_add(pSubtitleTrack->pGenList);
+#endif
+ pSubtitleTrack->pBox = elm_box_add(pSubtitleTrack->pPopup);
+
+
+ return pSubtitleTrack;
+}
+
+void vp_subtitle_track_destroy(subtitle_track_handle pSubtitleTrackHandle)
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ _vp_subtitle_track_destroy_handle(pSubtitleTrack);
+
+}
+
+bool vp_subtitle_track_realize(subtitle_track_handle pSubtitleTrackHandle)
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ if (!_vp_subtitle_track_add_genlist_item
+ (pSubtitleTrack->pGenList, (void *) pSubtitleTrack)) {
+ VideoLogError("_vp_subtitle_track_add_genlist_item fail");
+ return FALSE;
+ }
+ if (pSubtitleTrack->nListCount == 1) {
+ vp_popup_set_popup_min_size(pSubtitleTrack->pParent,
+ pSubtitleTrack->pBox,
+ pSubtitleTrack->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ elm_scroller_policy_set(pSubtitleTrack->pGenList,
+ ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+ } else {
+ vp_popup_set_popup_min_size(pSubtitleTrack->pParent,
+ pSubtitleTrack->pBox,
+ pSubtitleTrack->nListCount,
+ VIDEO_POPUP_DEFAULT);
+ }
+
+ //elm_radio_value_set(pSubtitleTrack->pRadio, pSubtitleTrack->nCurrentIndex);
+ elm_box_pack_end(pSubtitleTrack->pBox, pSubtitleTrack->pGenList);
+ elm_object_content_set(pSubtitleTrack->pPopup, pSubtitleTrack->pBox);
+
+ evas_object_show(pSubtitleTrack->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_track_unrealize(subtitle_track_handle
+ pSubtitleTrackHandle)
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ _vp_subtitle_track_clear_item_list(pSubtitleTrack);
+
+ evas_object_hide(pSubtitleTrack->pPopup);
+
+ return TRUE;
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+bool vp_subtitle_track_add_Item(subtitle_track_handle
+ pSubtitleTrackHandle, char *szCode,
+ int nIndex, bool bCheck)
+#else
+bool vp_subtitle_track_add_Item(subtitle_track_handle
+ pSubtitleTrackHandle, char *szCode,
+ int nIndex)
+#endif
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ SubtitleTrackItem *pItem = calloc(1, sizeof(SubtitleTrackItem));
+ if (pItem == NULL) {
+ VideoLogError("SubtitleTrackItem alloc fail");
+ return FALSE;
+ }
+
+ pItem->pSubtitleTrackPopup = (void *) pSubtitleTrack;
+ pItem->nIndex = nIndex;
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ pItem->bCheck = bCheck;
+#endif
+ char *pName = NULL;
+ pName = vp_language_get_name(szCode);
+ if (pName) {
+ pItem->szName = pName;
+ } else {
+ char *pUnknown = NULL;
+ //pUnknown = g_strdup_printf("%s(%s)", VP_PLAY_STRING_COM_UNKNOWN, szCode);
+ pUnknown = g_strdup_printf("%s", VP_PLAY_STRING_COM_UNKNOWN);
+ pItem->szName = pUnknown;
+ }
+
+ pSubtitleTrack->pItemList =
+ g_list_append(pSubtitleTrack->pItemList, pItem);
+
+ return TRUE;
+}
+
+bool vp_subtitle_track_set_user_data(subtitle_track_handle
+ pSubtitleTrackHandle,
+ void *pUserData)
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ pSubtitleTrack->pUserData = pUserData;
+
+ return TRUE;
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+bool vp_subtitle_track_set_add_language_cb(subtitle_track_handle
+ pSubtitleTrackHandle,
+ SubtitleLanguageChangeCbFunc
+ pCallback)
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ pSubtitleTrack->pAddLanguageCb = pCallback;
+
+ return TRUE;
+}
+
+bool vp_subtitle_track_set_remove_language_cb(subtitle_track_handle
+ pSubtitleTrackHandle,
+ SubtitleLanguageChangeCbFunc
+ pCallback)
+{
+ if (pSubtitleTrackHandle == NULL) {
+ VideoLogError("pSubtitleTrackHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitleTrackPopup *pSubtitleTrack =
+ (SubtitleTrackPopup *) pSubtitleTrackHandle;
+
+ pSubtitleTrack->pRemoveLanguageCb = pCallback;
+
+ return TRUE;
+}
+#endif
+bool vp_subtitle_track_get_name(char *szCode, char **szName)
+{
+ if (szCode == NULL) {
+ VideoLogError("szCode is NULL");
+ return FALSE;
+ }
+ char *pName = NULL;
+ pName = vp_language_get_name(szCode);
+ if (pName) {
+ *szName = pName;
+ } else {
+ char *pUnknown = NULL;
+ pUnknown = g_strdup_printf("%s", VP_PLAY_STRING_COM_UNKNOWN);
+ *szName = pUnknown;
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/feature/vp-subtitle.c b/playview/src/feature/vp-subtitle.c
new file mode 100644
index 0000000..63f9561
--- /dev/null
+++ b/playview/src/feature/vp-subtitle.c
@@ -0,0 +1,1361 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+#include <efl_extension.h>
+
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+#include "vp-play-type-define.h"
+
+#include "vp-subtitle.h"
+#include "vp-play-preference.h"
+#include "vp-util.h"
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+/** @li font_weight - Overrides the weight defined in "font". E.g: "font_weight=Bold" is the same as "font=:style=Bold". Supported weights: "normal", "thin", "ultralight",
+ "light", "book", "medium", "semibold", "bold", "ultrabold", "black", and "extrablack".
+* @li font_style - Overrides the style defined in "font". E.g: "font_style=Italic" is the same as "font=:style=Italic". Supported styles: "normal", "oblique", and "italic".
+* @li font_width - Overrides the width defined in "font". E.g: "font_width=Condensed" is the same as "font=:style=Condensed". Supported widths: "normal",
+ "ultracondensed", "extracondensed", "condensed", "semicondensed", "semiexpanded", "expanded", "extraexpanded", and "ultraexpanded".
+*/
+
+#define VP_SUBTITLE_GENLIST_DATA_KEY "vp.subtitle.genlist"
+#define VP_SUBTITLE_TXT_FORMAT "<font_size= %d><align=center><style=%s><font='%s' font_weight=%s color=%s backing_color=%s backing=%s align=%s>%s</font></style></font_size>"
+#define VP_SUBTITLE_COLOR_LEN 7
+#define VP_SUBTITLE_SET_CAPTION_WINDOW_PREVIEW_COLOR_ID 1
+
+typedef struct _SubtitlePopup {
+ Evas_Object *pParent;
+ Evas_Object *pPopup;
+ Evas_Object *pPopupTitle;
+ Evas_Object *pCaptionLayout;
+ Evas_Object *pBox;
+ Evas_Object *pContentBox;
+ Evas_Object *pGenList;
+
+ Evas_Object *pActivationCheck;
+ Elm_Object_Item *pSelectItem;
+
+ Elm_Genlist_Item_Class *st_Subtitle_Itc_1;
+ Elm_Genlist_Item_Class *st_Subtitle_Itc_2;
+ Elm_Genlist_Item_Class *st_Subtitle_Itc_1icon;
+ Elm_Genlist_Item_Class *st_Subtitle_Itc_groupindex;
+#ifdef SUBTITLE_K_FEATURE
+ Elm_Genlist_Item_Class *st_Subtitle_Itc_3;
+#endif
+ SubtitleInfo *pSubtitleInfo;
+
+ void *pUserData;
+ PopupCloseCbFunc pCloseCb;
+
+}SubtitlePopup;
+
+static void _vp_subtitle_destroy_handle(SubtitlePopup *pSubtitle);
+char *_vp_subtitle_get_opacity(char *colorHex);
+Elm_Object_Item *_vp_subtitle_list_item_next_get(Elm_Object_Item *gl_item);
+static void _vp_subtitle_set_activation(SubtitlePopup *pSubtitle, bool bOn);
+static void _vp_subtitle_destroy_subtitle_info(SubtitlePopup *pSubtitle);
+static Evas_Object * _vp_subtitle_create_caption_layout(SubtitlePopup *pSubtitle, Evas_Object *pParent);
+static void _vp_subtitle_cancel_button_cb(void *data, Evas_Object *obj, void *Event_info);
+
+static void __vp_subtitle_genlist_realized(void *data, Evas_Object *obj, void *event_info)
+{
+ if (event_info == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ if (obj == NULL) {
+ VideoLogError("obj is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *)event_info;
+
+ int nIndexGenlist = elm_genlist_item_index_get(pItem);
+ VideoLogInfo("nIndexGenlist=%d", nIndexGenlist);
+
+ if (nIndexGenlist == 2) {
+ elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide", "");
+ }
+
+ VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info);
+}
+
+static void __vp_subtitle_popup_size_set(SubtitlePopup *pSubtitle)
+{
+ if (!pSubtitle) {
+ VideoLogError("pSubtitle is null");
+ return;
+ }
+
+ if (!pSubtitle->pParent) {
+ VideoLogError("pParent is null");
+ return;
+ }
+
+ if (!pSubtitle->pBox) {
+ VideoLogError("pBox is null");
+ return;
+ }
+
+ if (!pSubtitle->pContentBox) {
+ VideoLogError("pContentBox is null");
+ return;
+ }
+
+ int nWidth= 0, nHeight = 0;
+ if (vp_popup_check_landspace_by_win(pSubtitle->pParent)) {
+ nWidth = 480;
+ nHeight = VP_POPUP_MAX_HEIGHT_L;
+ } else {
+ nWidth = 480;
+ nHeight = VP_POPUP_MAX_HEIGHT;
+ }
+ VideoLogInfo("nWidth=%d, nHeight=%d", nWidth, nHeight);
+ evas_object_size_hint_min_set(pSubtitle->pBox, nWidth, (nHeight) * VP_SCALE);
+ //evas_object_size_hint_min_set(pSubtitle->pPopupTitle, nWidth * VP_SCALE, (VP_POPUP_TITLE_HEIGHT) * VP_SCALE);
+ evas_object_size_hint_min_set(pSubtitle->pContentBox, nWidth, (nHeight-VP_POPUP_TITLE_HEIGHT) * VP_SCALE);
+}
+
+static void __vp_subtitle_popup_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)data;
+ if (!pSubtitle)
+ {
+ VideoLogError("pSubtitle IS null");
+ return;
+ }
+ __vp_subtitle_popup_size_set(pSubtitle);
+
+ evas_object_show(pSubtitle->pBox);
+ evas_object_show(pSubtitle->pPopup);
+}
+
+
+/* callback functions */
+static void __vp_subtitle_check_change_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pUserData;
+
+ if (pObj == pSubtitle->pActivationCheck) {
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ vp_play_preference_set_subtitle_show_key(!bOn);
+ //elm_check_state_set(pObj, !bOn);
+
+ vp_subtitle_mode_t nType = VP_SUBTITLE_MODE_NONE;
+ nType = VP_SUBTITLE_MODE_ACTIVATION;
+ _vp_subtitle_set_activation(pSubtitle, !bOn);
+
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, FALSE, (void *)pSubtitle->pUserData);
+ }
+ }
+}
+
+static char *_vp_play_subtitle_text_get(SubtitleInfo *pSubtitleInfo, bool bActivation)
+{
+ if (!pSubtitleInfo) {
+ VideoLogError("pSubtitle is NULL");
+ return NULL;
+ }
+ if (!pSubtitleInfo->szText || (strlen(pSubtitleInfo->szText) < 1)) {
+ VideoLogError("pSubtitleInfo->szText is NULL");
+ return NULL;
+ }
+
+ char *szMarkup = elm_entry_markup_to_utf8(pSubtitleInfo->szText);
+ char *szOutput = elm_entry_utf8_to_markup(szMarkup);
+ char *szTxtFormat = NULL;
+ char *szColor = NULL;
+ char *szBGColor = NULL;
+ char *szBGColorOn= NULL;
+ char *szFontEdge = NULL;
+ char *szAlignment = NULL;
+ char *szFontWeight = NULL;
+
+ int nSize = 0;
+
+ if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_SMALL) {
+ nSize = VP_SUBTITLE_SIZE_SMALL_VALUE * pSubtitleInfo->fZoom;
+ }
+ else if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_LARGE) {
+ nSize = VP_SUBTITLE_SIZE_LARGE_VALUE * pSubtitleInfo->fZoom;
+ }
+ else {
+ nSize = VP_SUBTITLE_SIZE_MEDIUM_VALUE * pSubtitleInfo->fZoom;
+ }
+
+ if (nSize < VP_SUBTITLE_SIZE_SMALL_VALUE) {
+ nSize = VP_SUBTITLE_SIZE_SMALL_VALUE;
+ }
+
+ if (nSize > VP_SUBTITLE_SIZE_LARGE_VALUE) {
+ nSize = VP_SUBTITLE_SIZE_LARGE_VALUE;
+ }
+
+#ifndef SUBTITLE_K_FEATURE
+ if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_BLACK) {
+ szColor = g_strdup_printf("#000000");
+ }
+ else if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_BLUE) {
+ szColor = g_strdup_printf("#0000FF");
+ }
+ else if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_GREEN) {
+ szColor = g_strdup_printf("#00FF00");
+ }
+ else if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_WHITE) {
+ szColor = g_strdup_printf("#FFFFFF");
+ }
+
+ if (pSubtitleInfo->nBGColor == VIDEO_SUBTITLE_COLOR_NONE) {
+ szBGColorOn = g_strdup_printf("off");
+ szBGColor = g_strdup_printf("#000000");
+ }
+ else if (pSubtitleInfo->nBGColor == VIDEO_SUBTITLE_COLOR_BLACK) {
+ szBGColorOn = g_strdup_printf("on");
+ szBGColor = g_strdup_printf("#000000");
+ }
+ else if (pSubtitleInfo->nBGColor == VIDEO_SUBTITLE_COLOR_WHITE) {
+ szBGColorOn = g_strdup_printf("on");
+ szBGColor = g_strdup_printf("#FFFFFF");
+ }
+#else
+
+ if (pSubtitleInfo->pTextColorHex && bActivation) {
+ szColor = g_strdup_printf("#000000ff");//strdup(pSubtitleInfo->pTextColorHex);
+ } else {
+ szColor = g_strdup_printf("#00000000");
+ }
+
+ if (pSubtitleInfo->pBGColorHex && bActivation) {
+ szBGColorOn = g_strdup_printf("on");
+ szBGColor = strdup(pSubtitleInfo->pBGColorHex);
+ } else {
+ szBGColorOn = g_strdup_printf("off");
+ szBGColor = g_strdup_printf("#00000000");
+ }
+
+ if (pSubtitleInfo->eAlignment == VIDEO_SUBTITLE_ALIGNMENT_LEFT) {
+ szAlignment = g_strdup_printf("left");
+ }
+ else if (pSubtitleInfo->eAlignment == VIDEO_SUBTITLE_ALIGNMENT_CENTER) {
+ szAlignment = g_strdup_printf("center");
+ }
+ else if (pSubtitleInfo->eAlignment == VIDEO_SUBTITLE_ALIGNMENT_RIGHT) {
+ szAlignment = g_strdup_printf("right");
+ }
+
+#endif
+ szTxtFormat = g_strdup_printf(VP_SUBTITLE_TXT_FORMAT, nSize, szFontEdge, pSubtitleInfo->szFontName, szFontWeight, szColor, szBGColor, szBGColorOn, szAlignment, szOutput);
+
+ VP_FREE(szBGColor);
+ VP_FREE(szBGColorOn);
+ VP_FREE(szColor);
+ VP_FREE(szOutput);
+ VP_FREE(szMarkup);
+ VP_FREE(szFontEdge);
+ VP_FREE(szFontWeight);
+ VP_FREE(szAlignment);
+
+ return szTxtFormat;
+}
+
+static char *__vp_subtitle_get_color_and_opacity(char *szColorHex)
+{
+ if (szColorHex == NULL) {
+ VideoLogError("szColorHex is NULL");
+ return NULL;
+ }
+
+ char *szColorAndOpacity = NULL;
+ char *szOpacity = _vp_subtitle_get_opacity(szColorHex);
+ VideoSecureLogInfo("========pSubtitleInfo->nCaptionWinColorHex=%s, szOpacity=%s", szColorHex, szOpacity);
+
+ if (!strncasecmp(szColorHex, "#000000", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_BLACK, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#0000ff", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_BLUE, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#00ff00", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_GREEN, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#ffffff", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_WHITE, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#ff0000", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_RED, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#ffff00", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_YELLOW, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#ff00ff", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_MAGENTA, szOpacity);
+ }
+ else if (!strncasecmp(szColorHex, "#00ffff", VP_SUBTITLE_COLOR_LEN)) {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_CYAN, szOpacity);
+ }
+ else {
+ szColorAndOpacity = g_strdup_printf("%s,%s", VP_PLAY_STRING_SUBTITLE_COLOR_CUSTOM, szOpacity);
+ }
+
+ VP_FREE(szOpacity);
+ return szColorAndOpacity;
+}
+
+static char *__vp_subtitle_genlist_text_get_cb(const void *pUserData, Evas_Object *pObj, const char *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt= (char *)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ if (!g_strcmp0(VP_PLAY_STRING_ACTIVATION, szTxt))
+ return strdup(szTxt);
+ }
+
+ if (!g_strcmp0(VP_PLAY_STRING_SETTINGS, szTxt)) {
+ if (!strcmp(pPart, "elm.text.main")) {
+ return strdup(szTxt);
+ }
+ }
+
+ if (!g_strcmp0(VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES, szTxt)
+ || !g_strcmp0(VP_PLAY_STRING_SUBTITLE_ALIGNMENT, szTxt) || !g_strcmp0(VP_PLAY_STRING_SUBTITLE_SIZE, szTxt)) {
+ if (!strcmp(pPart, "elm.text.main.left.top")) {
+ return strdup(szTxt);
+ } else if (!strcmp(pPart, "elm.text.sub.left.bottom")) {
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)evas_object_data_get(pObj , VP_SUBTITLE_GENLIST_DATA_KEY);
+ if (pSubtitle == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ SubtitleInfo *pSubtitleInfo = pSubtitle->pSubtitleInfo;
+ if (pSubtitleInfo == NULL) {
+ VideoLogWarning("pSubtitleInfo is NULL");
+ return NULL;
+ }
+
+ //return g_strdup(pSubtitleInfo->szURL);
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES)) {
+ if (pSubtitleInfo->szURL) {
+ return vp_util_convert_file_location(pSubtitleInfo->szURL);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_ALIGNMENT)) {
+ switch (pSubtitleInfo->eAlignment)
+ {
+ case VIDEO_SUBTITLE_ALIGNMENT_LEFT:
+ {
+ return strdup(VP_PLAY_STRING_ALIGNMENT_LEFT);
+ }
+ case VIDEO_SUBTITLE_ALIGNMENT_CENTER:
+ {
+ return strdup(VP_PLAY_STRING_ALIGNMENT_CENTER);
+ }
+ case VIDEO_SUBTITLE_ALIGNMENT_RIGHT:
+ {
+ return strdup(VP_PLAY_STRING_ALIGNMENT_RIGHT);
+ }
+ default: break;
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE)) {
+ if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_LARGE) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_SIZE_LARGE);
+ }
+ else if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_MEDIUM) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM);
+ }
+ else if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_SMALL) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_SIZE_SMALL);
+ }
+ }
+ }
+ }
+#if 1
+ if (!strcmp(pPart, "elm.text")) {
+ return strdup(szTxt);
+ }
+ else if (!strcmp(pPart, "elm.text.1")) {
+ return strdup(szTxt);
+ }
+ else if (!strcmp(pPart, "elm.text.2")) {
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)evas_object_data_get(pObj , VP_SUBTITLE_GENLIST_DATA_KEY);
+ if (pSubtitle == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+
+ SubtitleInfo *pSubtitleInfo = pSubtitle->pSubtitleInfo;
+ if (pSubtitleInfo == NULL) {
+ VideoLogWarning("pSubtitleInfo is NULL");
+ return NULL;
+ }
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SYNC)) {
+ char szTemp[10] = {0,};
+ snprintf(szTemp, sizeof(szTemp), "%0.1f", pSubtitleInfo->fSync);
+
+ return g_strdup_printf(VP_PLAY_STRING_SUBTITLE_SECS, szTemp);
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_LANGUAGE)) {
+ if (pSubtitleInfo->szLanguage) {
+ return strdup(pSubtitleInfo->szLanguage);
+ }
+ }
+#ifdef SUBTITLE_K_FEATURE
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_ALIGNMENT)) {
+ switch (pSubtitleInfo->eAlignment)
+ {
+ case VIDEO_SUBTITLE_ALIGNMENT_LEFT:
+ {
+ return strdup(VP_PLAY_STRING_ALIGNMENT_LEFT);
+ }
+ case VIDEO_SUBTITLE_ALIGNMENT_CENTER:
+ {
+ return strdup(VP_PLAY_STRING_ALIGNMENT_CENTER);
+ }
+ case VIDEO_SUBTITLE_ALIGNMENT_RIGHT:
+ {
+ return strdup(VP_PLAY_STRING_ALIGNMENT_RIGHT);
+ }
+ default: break;
+ }
+ }
+#endif
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES)) {
+ if (pSubtitleInfo->szURL) {
+ return vp_util_convert_file_location(pSubtitleInfo->szURL);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_FONT)) {
+ if (pSubtitleInfo->szFontName) {
+ return strdup(pSubtitleInfo->szFontName);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE)) {
+ if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_LARGE) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_SIZE_LARGE);
+ }
+ else if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_MEDIUM) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM);
+ }
+ else if (pSubtitleInfo->nFontSize == VIDEO_SUBTITLE_SIZE_SMALL) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_SIZE_SMALL);
+ }
+ }
+//#ifdef SUBTITLE_K_FEATURE
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_EDGE)) {
+ switch (pSubtitleInfo->nEdge)
+ {
+ case VP_SUBTITLE_EDGE_NO_EDGE:
+ return strdup(VP_PLAY_STRING_EDGE_NO_EDGE);
+ case VP_SUBTITLE_EDGE_RAISED:
+ return strdup(VP_PLAY_STRING_EDGE_RAISED);
+ case VP_SUBTITLE_EDGE_DEPRESSED:
+ return strdup(VP_PLAY_STRING_EDGE_DEPRESSED);
+ case VP_SUBTITLE_EDGE_UNIFORM:
+ return strdup(VP_PLAY_STRING_EDGE_UNIFORM);
+ case VP_SUBTITLE_EDGE_DROP_SHADOW:
+ return strdup(VP_PLAY_STRING_EDGE_DROP_SHADOW);
+ default:
+ return strdup(VP_PLAY_STRING_EDGE_NO_EDGE);
+ }
+ }
+//#endif
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_TEXT)) {
+#ifndef SUBTITLE_K_FEATURE
+ if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_BLACK) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_BLACK);
+ }
+ else if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_BLUE) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_BLUE);
+ }
+ else if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_GREEN) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_GREEN);
+ }
+ else if (pSubtitleInfo->nTextColor == VIDEO_SUBTITLE_COLOR_WHITE) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_WHITE);
+ }
+#else
+ return __vp_subtitle_get_color_and_opacity(pSubtitleInfo->pTextColorHex);
+#endif
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_BG_COLOR)) {
+#ifndef SUBTITLE_K_FEATURE
+ if (pSubtitleInfo->nBGColor == VIDEO_SUBTITLE_COLOR_BLACK) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_BLACK);
+ }
+ else if (pSubtitleInfo->nBGColor == VIDEO_SUBTITLE_COLOR_WHITE) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_WHITE);
+ }
+ else if (pSubtitleInfo->nBGColor == VIDEO_SUBTITLE_COLOR_NONE) {
+ return strdup(VP_PLAY_STRING_SUBTITLE_COLOR_NONE);
+ }
+#else
+ return __vp_subtitle_get_color_and_opacity(pSubtitleInfo->pBGColorHex);
+#endif
+ }
+#ifdef SUBTITLE_K_FEATURE
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_CAPTION_WINDOW)) {
+ return __vp_subtitle_get_color_and_opacity(pSubtitleInfo->pCaptionWinColorHex);
+ }
+#endif
+ }
+#endif
+ return NULL;
+}
+
+static Evas_Object *__vp_subtitle_genlist_content_get_cb(void *data, Evas_Object *obj, const char *part)
+{
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)evas_object_data_get(obj , VP_SUBTITLE_GENLIST_DATA_KEY);
+ if (pSubtitle == NULL) {
+ VideoLogWarning("evas_object_data_get is fail");
+ return NULL;
+ }
+ VideoLogWarning("part = %s", part);
+
+ if (!strcmp(part, "elm.icon")) {
+ if (!g_strcmp0(VP_PLAY_STRING_PREVIEW_SUBTITLE_CC, (char *)data)) {
+ Evas_Object *pCaption = _vp_subtitle_create_caption_layout(pSubtitle, obj);
+ evas_object_size_hint_align_set(pCaption, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pCaption, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ return pCaption;
+ }
+ }
+
+ if (!strcmp(part, "elm.icon.right")) {
+ if (!g_strcmp0(VP_PLAY_STRING_ACTIVATION, (char *)data)) {
+ Evas_Object *pCheck = NULL;
+ pCheck = elm_check_add(obj);
+ bool bShow = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bShow);
+ evas_object_size_hint_align_set(pCheck, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pCheck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_check_state_set(pCheck, bShow);
+ elm_object_style_set(pCheck, "on&off");
+ evas_object_propagate_events_set(pCheck, EINA_FALSE);
+ evas_object_smart_callback_add(pCheck, "changed", __vp_subtitle_check_change_cb, (void *)pSubtitle);
+ pSubtitle->pActivationCheck = pCheck;
+ evas_object_show(pCheck);
+ return pCheck;
+ }
+ }
+
+ return NULL;
+}
+
+
+static void __vp_subtitle_genlist_item_selected_cb(void *pUserData,Evas_Object *pObject,void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ char *szTxt = (char *)elm_object_item_data_get(pItem);
+ elm_genlist_item_selected_set(pItem, EINA_FALSE);
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pUserData;
+ pSubtitle->pSelectItem = pItem;
+ if (szTxt == NULL) {
+ VideoLogError("szTxt is NULL");
+ return;
+ }
+ vp_subtitle_mode_t nType = VP_SUBTITLE_MODE_NONE;
+
+ if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SYNC)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_SYNC)");
+ nType = VP_SUBTITLE_MODE_SYNC;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES)");
+ nType = VP_SUBTITLE_MODE_SELECT;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_LANGUAGE)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_LANGUAGE)");
+ nType = VP_SUBTITLE_MODE_LANGUAGE;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+#ifdef SUBTITLE_K_FEATURE
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_ALIGNMENT)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_ALIGNMENT)");
+ nType = VP_SUBTITLE_MODE_ALIGNMENT;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+#endif
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_FONT)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_FONT)");
+ nType = VP_SUBTITLE_MODE_FONT;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_SIZE)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_SIZE)");
+ nType = VP_SUBTITLE_MODE_SIZE;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+//#ifdef SUBTITLE_K_FEATURE
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_EDGE)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_EDGE)");
+ nType = VP_SUBTITLE_MODE_EDGE;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_TEXT)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_TEXT)");
+ nType = VP_SUBTITLE_MODE_TEXT;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_BG_COLOR)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_BG_COLOR)");
+ nType = VP_SUBTITLE_MODE_BG_COLOR;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+#ifdef SUBTITLE_K_FEATURE
+ else if (!strcmp(szTxt, VP_PLAY_STRING_SUBTITLE_CAPTION_WINDOW)) {
+ VideoLogWarning("SELECT SUBTITLE ITEM (VP_PLAY_STRING_SUBTITLE_CAPTION_WINDOW)");
+ nType = VP_SUBTITLE_MODE_CAPTION_WINDOW;
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb((int)nType, TRUE, (void *)pSubtitle->pUserData);
+ }
+ }
+#endif
+
+}
+
+static void __vp_subtitle_popup_key_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pUserData;
+ _vp_subtitle_cancel_button_cb(pSubtitle, NULL, NULL);
+}
+static void __vp_subtitle_popup_mouse_event_cb(void *pUserData, Evas *pEvas, Evas_Object *pObj, void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEventInfo == NULL) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pUserData;
+ _vp_subtitle_cancel_button_cb(pSubtitle, NULL, NULL);
+ }
+}
+
+
+/* internal functions */
+static void _vp_subtitle_destroy_subtitle_info(SubtitlePopup *pSubtitle)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+
+ if (pSubtitle->pSubtitleInfo)
+ {
+ VP_FREE(pSubtitle->pSubtitleInfo->szFontName);
+ VP_FREE(pSubtitle->pSubtitleInfo->szLanguage);
+ VP_FREE(pSubtitle->pSubtitleInfo->szText);
+#ifdef SUBTITLE_K_FEATURE
+ VP_FREE(pSubtitle->pSubtitleInfo->pTextColorHex);
+ VP_FREE(pSubtitle->pSubtitleInfo->pBGColorHex);
+ VP_FREE(pSubtitle->pSubtitleInfo->pCaptionWinColorHex);
+#endif
+ }
+}
+
+static void _vp_subtitle_destroy_handle(SubtitlePopup *pSubtitle)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pSubtitle->pParent, "rotation,changed", __vp_subtitle_popup_rotate_cb);
+ evas_object_smart_callback_del(pSubtitle->pGenList, "realized", __vp_subtitle_genlist_realized);
+
+ if (pSubtitle->st_Subtitle_Itc_1) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_1);
+ pSubtitle->st_Subtitle_Itc_1 = NULL;
+ }
+
+ if (pSubtitle->st_Subtitle_Itc_2) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_2);
+ pSubtitle->st_Subtitle_Itc_2 = NULL;
+ }
+
+ if (pSubtitle->st_Subtitle_Itc_1icon) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_1icon);
+ pSubtitle->st_Subtitle_Itc_1icon = NULL;
+ }
+
+#ifdef SUBTITLE_K_FEATURE
+ if (pSubtitle->st_Subtitle_Itc_3) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_3);
+ pSubtitle->st_Subtitle_Itc_3 = NULL;
+ }
+#endif
+
+ if (pSubtitle->st_Subtitle_Itc_groupindex) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_groupindex);
+ pSubtitle->st_Subtitle_Itc_groupindex = NULL;
+ }
+
+ pSubtitle->pActivationCheck = NULL;
+ VP_EVAS_DEL(pSubtitle->pCaptionLayout);
+ VP_EVAS_DEL(pSubtitle->pGenList);
+ VP_EVAS_DEL(pSubtitle->pContentBox);
+ VP_EVAS_DEL(pSubtitle->pBox);
+
+ VP_EVAS_DEL(pSubtitle->pPopup);
+ _vp_subtitle_destroy_subtitle_info(pSubtitle);
+ VP_FREE(pSubtitle->pSubtitleInfo);
+
+ VP_FREE(pSubtitle);
+}
+
+static Evas_Object *_vp_subtitle_create_genlist(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_genlist_add(pParent);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pObj);
+ return pObj;
+}
+
+static void _vp_subtitle_genlist_disabled_set(Evas_Object *pGenList, bool bOn)
+{
+ if (pGenList == NULL) {
+ VideoLogError("pGenList is NULL");
+ return;
+ }
+
+ Elm_Object_Item *gl_item = elm_genlist_first_item_get(pGenList);
+ if (gl_item) {
+ gl_item = _vp_subtitle_list_item_next_get(gl_item);
+ for (; gl_item; gl_item = _vp_subtitle_list_item_next_get(gl_item)) {
+ elm_object_item_disabled_set(gl_item, !bOn);
+ }
+ }
+}
+
+static bool _vp_subtitle_add_genlist_item(Evas_Object *pObj, void *pUserData)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return FALSE;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return FALSE;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pUserData;
+
+ if (pSubtitle->pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return FALSE;
+ }
+
+ if (pSubtitle->st_Subtitle_Itc_1) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_1);
+ pSubtitle->st_Subtitle_Itc_1 = NULL;
+ }
+
+ if (pSubtitle->st_Subtitle_Itc_2) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_2);
+ pSubtitle->st_Subtitle_Itc_2 = NULL;
+ }
+
+ if (pSubtitle->st_Subtitle_Itc_1icon) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_1icon);
+ pSubtitle->st_Subtitle_Itc_1icon = NULL;
+ }
+
+#ifdef SUBTITLE_K_FEATURE
+ if (pSubtitle->st_Subtitle_Itc_3) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_3);
+ pSubtitle->st_Subtitle_Itc_3 = NULL;
+ }
+#endif
+
+ if (pSubtitle->st_Subtitle_Itc_groupindex) {
+ elm_genlist_item_class_free(pSubtitle->st_Subtitle_Itc_groupindex);
+ pSubtitle->st_Subtitle_Itc_groupindex = NULL;
+ }
+
+ pSubtitle->st_Subtitle_Itc_1 = elm_genlist_item_class_new();
+
+ if (pSubtitle->st_Subtitle_Itc_1 != NULL) {
+ pSubtitle->st_Subtitle_Itc_1->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitle->st_Subtitle_Itc_1->item_style = "1line";
+ pSubtitle->st_Subtitle_Itc_1->func.text_get = (void *)__vp_subtitle_genlist_text_get_cb;
+ pSubtitle->st_Subtitle_Itc_1->func.content_get = (void *)__vp_subtitle_genlist_content_get_cb;
+ pSubtitle->st_Subtitle_Itc_1->func.state_get = NULL;
+ pSubtitle->st_Subtitle_Itc_1->func.del = NULL;
+ }
+
+ pSubtitle->st_Subtitle_Itc_2 = elm_genlist_item_class_new();
+
+ if (pSubtitle->st_Subtitle_Itc_2 != NULL) {
+ pSubtitle->st_Subtitle_Itc_2->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitle->st_Subtitle_Itc_2->item_style = "2line.top";
+ pSubtitle->st_Subtitle_Itc_2->func.text_get = (void *)__vp_subtitle_genlist_text_get_cb;
+ pSubtitle->st_Subtitle_Itc_2->func.content_get = NULL;
+ pSubtitle->st_Subtitle_Itc_2->func.state_get = NULL;
+ pSubtitle->st_Subtitle_Itc_2->func.del = NULL;
+ }
+
+ pSubtitle->st_Subtitle_Itc_1icon = elm_genlist_item_class_new();
+
+ if (pSubtitle->st_Subtitle_Itc_1icon != NULL) {
+ pSubtitle->st_Subtitle_Itc_1icon->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitle->st_Subtitle_Itc_1icon->item_style = "1icon";
+ pSubtitle->st_Subtitle_Itc_1icon->func.text_get = NULL;
+ pSubtitle->st_Subtitle_Itc_1icon->func.content_get = (void *)__vp_subtitle_genlist_content_get_cb;
+ pSubtitle->st_Subtitle_Itc_1icon->func.state_get = NULL;
+ pSubtitle->st_Subtitle_Itc_1icon->func.del = NULL;
+ }
+
+ if (pSubtitle->st_Subtitle_Itc_groupindex != NULL) {
+ pSubtitle->st_Subtitle_Itc_groupindex = elm_genlist_item_class_new();
+ pSubtitle->st_Subtitle_Itc_groupindex->version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pSubtitle->st_Subtitle_Itc_groupindex->item_style = "groupindex";
+ pSubtitle->st_Subtitle_Itc_groupindex->func.text_get = (void *)__vp_subtitle_genlist_text_get_cb;
+ pSubtitle->st_Subtitle_Itc_groupindex->func.content_get = NULL;
+ pSubtitle->st_Subtitle_Itc_groupindex->func.state_get = NULL;
+ pSubtitle->st_Subtitle_Itc_groupindex->func.del = NULL;
+ }
+
+ Elm_Object_Item *pItem = NULL;
+ VideoLogInfo("subtitle text pre is %s", pSubtitle->pSubtitleInfo->szText);
+ pItem = elm_genlist_item_append(pObj, pSubtitle->st_Subtitle_Itc_1, (void *)VP_PLAY_STRING_ACTIVATION, NULL, ELM_GENLIST_ITEM_NONE, __vp_subtitle_genlist_item_selected_cb, pUserData);
+ elm_genlist_item_select_mode_set(pItem , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ //elm_genlist_item_append(pObj, pSubtitle->st_Subtitle_Itc_2, (void *)VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES, NULL, ELM_GENLIST_ITEM_NONE, __vp_subtitle_genlist_item_selected_cb, pUserData);
+
+ pItem = elm_genlist_item_append(pObj, pSubtitle->st_Subtitle_Itc_groupindex, (void *)VP_PLAY_STRING_SETTINGS, NULL, ELM_GENLIST_ITEM_NONE, NULL, pUserData);
+ elm_genlist_item_select_mode_set(pItem , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ pItem = elm_genlist_item_append(pObj, pSubtitle->st_Subtitle_Itc_1icon, (void *)VP_PLAY_STRING_PREVIEW_SUBTITLE_CC, NULL, ELM_GENLIST_ITEM_NONE, NULL, pUserData);
+ elm_genlist_item_select_mode_set(pItem , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ elm_genlist_item_append(pObj, pSubtitle->st_Subtitle_Itc_2, (void *)VP_PLAY_STRING_SUBTITLE_ALIGNMENT, NULL, ELM_GENLIST_ITEM_NONE, __vp_subtitle_genlist_item_selected_cb, pUserData);
+ elm_genlist_item_append(pObj, pSubtitle->st_Subtitle_Itc_2, (void *)VP_PLAY_STRING_SUBTITLE_SIZE, NULL, ELM_GENLIST_ITEM_NONE, __vp_subtitle_genlist_item_selected_cb, pUserData);
+
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ _vp_subtitle_genlist_disabled_set(pSubtitle->pGenList, bOn);
+
+ return TRUE;
+}
+
+static void _vp_subtitle_done_button_cb(void *data, Evas_Object *obj, void *Event_info)
+{
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)data;
+
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb(VP_SUBTITLE_MODE_CLOSE, FALSE, (void *)pSubtitle->pUserData);
+ }
+}
+
+static void _vp_subtitle_cancel_button_cb(void *data, Evas_Object *obj, void *Event_info)
+{
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)data;
+ pSubtitle->pSubtitleInfo->eAlignment = pSubtitle->pSubtitleInfo->original_eAlignment;
+ pSubtitle->pSubtitleInfo->nFontSize = pSubtitle->pSubtitleInfo->original_nFontSize;
+ vp_play_preference_set_subtitle_alignment_key(pSubtitle->pSubtitleInfo->original_eAlignment);
+ vp_play_preference_set_subtitle_size_key(pSubtitle->pSubtitleInfo->original_nFontSize);
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ if (bOn != pSubtitle->pSubtitleInfo->original_activation) {
+ bOn = pSubtitle->pSubtitleInfo->original_activation;
+ vp_play_preference_set_subtitle_show_key(bOn);
+ _vp_subtitle_set_activation(pSubtitle, bOn);
+ }
+ if (pSubtitle->pCloseCb) {
+ pSubtitle->pCloseCb(VP_SUBTITLE_MODE_CLOSE, FALSE, (void *)pSubtitle->pUserData);
+ }
+}
+
+static void _vp_subtitle_create_title(SubtitlePopup *pSubtitle)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+
+ if (pSubtitle->pBox == NULL) {
+ VideoLogError("pBox is NULL");
+ return;
+ }
+
+ pSubtitle->pPopupTitle = elm_layout_add(pSubtitle->pBox);
+ //evas_object_size_hint_weight_set(pSubtitle->pPopupTitle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pSubtitle->pPopupTitle, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_layout_file_set(pSubtitle->pPopupTitle, VP_PLAY_POPUP_EDJ_PATH, VP_PLAY_EDJ_GROUP_TITLE_POPUP);
+
+ /*set title*/
+ elm_object_part_text_set(pSubtitle->pPopupTitle, "elm.text.title", VP_PLAY_STRING_POPUP_SUBTITLE);
+
+ /* Title Cancel Button */
+ Evas_Object *btn = NULL;
+ btn = elm_button_add(pSubtitle->pPopupTitle);
+ elm_object_style_set(btn, "naviframe/title_left");
+ evas_object_smart_callback_add(btn, "clicked", (Evas_Smart_Cb)_vp_subtitle_cancel_button_cb, pSubtitle);
+ elm_object_part_content_set(pSubtitle->pPopupTitle, "elm.swallow.title.left.icon", btn);
+ elm_object_text_set(btn, VP_PLAY_STRING_SUBTITLE_CANCEL);
+
+ /* Title Done Button */
+ btn = elm_button_add(pSubtitle->pPopupTitle);
+ elm_object_style_set(btn, "naviframe/title_right");
+ evas_object_smart_callback_add(btn, "clicked", (Evas_Smart_Cb)_vp_subtitle_done_button_cb, pSubtitle);
+ elm_object_part_content_set(pSubtitle->pPopupTitle, "elm.swallow.title.right.icon", btn);
+ elm_object_text_set(btn,VP_PLAY_STRING_SUBTITLE_DONE);
+
+ elm_box_pack_end(pSubtitle->pBox, pSubtitle->pPopupTitle);
+ evas_object_show(pSubtitle->pPopupTitle);
+}
+
+static Evas_Object * _vp_subtitle_create_label(Evas_Object *parent)
+{
+ Evas_Object *pLabel = elm_label_add(parent);
+ evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLabel, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_label_ellipsis_set(pLabel, EINA_TRUE);
+ elm_object_style_set(pLabel, "popup/default");
+ evas_object_size_hint_min_set(pLabel, EVAS_HINT_EXPAND, VP_POPUP_LIST_CLOSED_CAPTION_HEIGHT * VP_SCALE);
+
+ evas_object_show(pLabel);
+
+ return pLabel;
+}
+
+static Evas_Object * _vp_subtitle_create_caption_layout(SubtitlePopup *pSubtitle, Evas_Object *pParent)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return NULL;
+ }
+
+ if (pSubtitle->pBox == NULL) {
+ VideoLogError("pBox is NULL");
+ return NULL;
+ }
+
+ if (pSubtitle->pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return NULL;
+ }
+
+ pSubtitle->pCaptionLayout = elm_layout_add(pParent);
+ evas_object_size_hint_weight_set(pSubtitle->pCaptionLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pSubtitle->pCaptionLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_layout_file_set(pSubtitle->pCaptionLayout, VP_PLAY_POPUP_EDJ_PATH, VP_PLAY_EDJ_GROUP_CAPTION_POPUP);
+
+ char *szText = NULL;
+ Evas_Object *pLab = NULL;
+ pLab = _vp_subtitle_create_label(pSubtitle->pCaptionLayout);
+
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ szText = _vp_play_subtitle_text_get(pSubtitle->pSubtitleInfo, bOn);
+ VideoSecureLogInfo("preview title =%S", szText);
+ elm_object_text_set(pLab, szText);
+ VP_FREE(szText);
+ elm_object_part_content_set(pSubtitle->pCaptionLayout, "elm.swallow.content", pLab);
+ evas_object_show(pLab);
+ evas_object_show(pSubtitle->pCaptionLayout);
+
+ return pSubtitle->pCaptionLayout;
+}
+
+static bool _vp_subtitle_update_caption_layout(SubtitlePopup *pSubtitle, bool bActivation)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return FALSE;
+ }
+
+ if (pSubtitle->pBox == NULL) {
+ VideoLogError("pBox is NULL");
+ return FALSE;
+ }
+
+ if (pSubtitle->pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return FALSE;
+ }
+
+ if (pSubtitle->pCaptionLayout == NULL) {
+ VideoLogError("pCaptionLayout is NULL");
+ return FALSE;
+ }
+
+ char *szText = NULL;
+ Evas_Object *pLab = NULL;
+ pLab = elm_object_part_content_get(pSubtitle->pCaptionLayout, "elm.swallow.content");
+ szText = _vp_play_subtitle_text_get(pSubtitle->pSubtitleInfo, bActivation);
+ VideoSecureLogInfo("preview title =%s", szText);
+ elm_object_text_set(pLab, szText);
+ VP_FREE(szText);
+ return TRUE;
+}
+
+static Evas_Object *_vp_subtitle_popup_create(Evas_Object *pParent, Eext_Event_Cb pCancelKeyCb, Evas_Object_Event_Cb pCancelMouseCb, void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = vp_popup_create(pParent, 0 ,
+ NULL,
+ NULL, 0.0, NULL,
+ pCancelKeyCb,
+ pCancelMouseCb,
+ (void *)pUserData);
+
+ return pObj;
+}
+
+static void _vp_subtitle_get_subtitle_info(SubtitlePopup *pSubtitle, SubtitleInfo *pSubtitleInfo)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+
+ if (pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return;
+ }
+
+ if (pSubtitle->pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return;
+ }
+
+ _vp_subtitle_destroy_subtitle_info(pSubtitle);
+
+ pSubtitle->pSubtitleInfo->bClosedCaption = pSubtitleInfo->bClosedCaption;
+ pSubtitle->pSubtitleInfo->fSync = pSubtitleInfo->fSync;
+ VP_STRDUP(pSubtitle->pSubtitleInfo->szLanguage, pSubtitleInfo->szLanguage);
+ VP_STRDUP(pSubtitle->pSubtitleInfo->szFontName, pSubtitleInfo->szFontName);
+ VP_STRDUP(pSubtitle->pSubtitleInfo->szURL, pSubtitleInfo->szURL);
+ VP_STRDUP(pSubtitle->pSubtitleInfo->szText, VP_PLAY_STRING_PREVIEW_SUBTITLE_CC);
+
+ pSubtitle->pSubtitleInfo->nFontSize = pSubtitleInfo->nFontSize;
+ pSubtitle->pSubtitleInfo->nEdge = pSubtitleInfo->nEdge;
+
+#ifndef SUBTITLE_K_FEATURE
+ pSubtitle->pSubtitleInfo->nTextColor = pSubtitleInfo->nTextColor;
+ pSubtitle->pSubtitleInfo->nBGColor = pSubtitleInfo->nBGColor;
+#else
+ VP_STRDUP(pSubtitle->pSubtitleInfo->pTextColorHex, pSubtitleInfo->pTextColorHex);
+ VP_STRDUP(pSubtitle->pSubtitleInfo->pBGColorHex, pSubtitleInfo->pBGColorHex);
+ VP_STRDUP(pSubtitle->pSubtitleInfo->pCaptionWinColorHex, pSubtitleInfo->pCaptionWinColorHex);
+ pSubtitle->pSubtitleInfo->eAlignment = pSubtitleInfo->eAlignment;
+#endif
+ pSubtitle->pSubtitleInfo->fZoom = pSubtitleInfo->fZoom;
+ pSubtitle->pSubtitleInfo->bSupportSelect = pSubtitleInfo->bSupportSelect;
+}
+
+Elm_Object_Item*
+_vp_subtitle_list_item_next_get(Elm_Object_Item *gl_item)
+{
+ if (!gl_item) {
+ VideoLogError("gl_item is null!");
+ return NULL;
+ }
+
+ Elm_Object_Item *next = gl_item;
+ do {
+ next = elm_genlist_item_next_get(next);
+ } while (next && elm_genlist_item_expanded_depth_get(next) > 0);
+
+ return next;
+}
+
+static void _vp_subtitle_set_activation(SubtitlePopup *pSubtitle, bool bOn)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ _vp_subtitle_update_caption_layout(pSubtitle, bOn);
+ //_vp_subtitle_update_preview_text_item(pSubtitle);
+ _vp_subtitle_genlist_disabled_set(pSubtitle->pGenList, bOn);
+}
+
+/* external functions */
+subtitle_popup_handle vp_subtitle_create(Evas_Object *pParent, SubtitleInfo *pSubtitleInfo, PopupCloseCbFunc pCloseCb)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return NULL;
+ }
+
+ SubtitlePopup *pSubtitle = NULL;
+
+ pSubtitle = calloc(1, sizeof(SubtitlePopup));
+
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle alloc fail");
+ return NULL;
+ }
+
+ pSubtitle->pParent = pParent;
+ pSubtitle->pCloseCb = pCloseCb;
+
+ pSubtitle->pSubtitleInfo = calloc(1, sizeof(SubtitleInfo));
+ if (pSubtitle->pSubtitleInfo == NULL) {
+ VideoLogError("pSubtitleInfo alloc fail");
+ _vp_subtitle_destroy_handle(pSubtitle);
+ return NULL;
+ }
+ _vp_subtitle_get_subtitle_info(pSubtitle, pSubtitleInfo);
+ pSubtitle->pSubtitleInfo->original_eAlignment = pSubtitleInfo->eAlignment;
+ pSubtitle->pSubtitleInfo->original_nFontSize = pSubtitleInfo->nFontSize;
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ pSubtitle->pSubtitleInfo->original_activation = bOn;
+
+ pSubtitle->pPopup = _vp_subtitle_popup_create(pParent, __vp_subtitle_popup_key_event_cb, __vp_subtitle_popup_mouse_event_cb, (void *)pSubtitle);
+ if (pSubtitle->pPopup == NULL) {
+ VideoLogError("_vp_subtitle_create_popup fail");
+ _vp_subtitle_destroy_handle(pSubtitle);
+ return NULL;
+ }
+
+ pSubtitle->pGenList = _vp_subtitle_create_genlist(pSubtitle->pPopup);
+ if (pSubtitle->pGenList == NULL) {
+ VideoLogError("_vp_subtitle_create_genlist fail");
+ _vp_subtitle_destroy_handle(pSubtitle);
+ return NULL;
+ }
+
+ evas_object_smart_callback_add(pSubtitle->pParent, "rotation,changed", __vp_subtitle_popup_rotate_cb, pSubtitle);
+ evas_object_smart_callback_add(pSubtitle->pGenList, "realized", __vp_subtitle_genlist_realized, NULL);
+ evas_object_data_set(pSubtitle->pGenList , VP_SUBTITLE_GENLIST_DATA_KEY, (void *)pSubtitle);
+ elm_genlist_mode_set(pSubtitle->pGenList, ELM_LIST_COMPRESS);
+
+ if (!_vp_subtitle_add_genlist_item(pSubtitle->pGenList, (void *)pSubtitle)) {
+ VideoLogError("_vp_subtitle_add_genlist_item fail");
+ _vp_subtitle_destroy_handle(pSubtitle);
+ return NULL;
+ }
+
+ pSubtitle->pBox = elm_box_add(pSubtitle->pPopup);
+ evas_object_size_hint_weight_set(pSubtitle->pBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pSubtitle->pBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_homogeneous_set(pSubtitle->pBox, FALSE);
+
+ pSubtitle->pContentBox = elm_box_add(pSubtitle->pBox);
+ evas_object_size_hint_weight_set(pSubtitle->pContentBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pSubtitle->pContentBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ __vp_subtitle_popup_size_set(pSubtitle);
+ elm_box_pack_end(pSubtitle->pContentBox, pSubtitle->pGenList);
+
+ _vp_subtitle_create_title(pSubtitle);
+ //_vp_subtitle_create_caption_layout(pSubtitle);
+
+ evas_object_show(pSubtitle->pContentBox);
+
+ elm_box_pack_end(pSubtitle->pBox, pSubtitle->pContentBox);
+
+ evas_object_show(pSubtitle->pGenList);
+ elm_object_content_set(pSubtitle->pPopup, pSubtitle->pBox);
+
+ return pSubtitle;
+}
+
+void vp_subtitle_destroy(subtitle_popup_handle pSubtitleHandle)
+{
+ if (pSubtitleHandle == NULL) {
+ VideoLogError("pSubtitleHandle is NULL");
+ return;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pSubtitleHandle;
+
+ _vp_subtitle_destroy_handle(pSubtitle);
+
+}
+
+bool vp_subtitle_realize(subtitle_popup_handle pSubtitleHandle)
+{
+ if (pSubtitleHandle == NULL) {
+ VideoLogError("pSubtitleHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pSubtitleHandle;
+
+ evas_object_show(pSubtitle->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_unrealize(subtitle_popup_handle pSubtitleHandle)
+{
+ if (pSubtitleHandle == NULL) {
+ VideoLogError("pSubtitleHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pSubtitleHandle;
+
+ evas_object_hide(pSubtitle->pPopup);
+
+ return TRUE;
+}
+
+bool vp_subtitle_update(subtitle_popup_handle pSubtitleHandle, SubtitleInfo *pSubtitleInfo)
+{
+ if (pSubtitleHandle == NULL) {
+ VideoLogError("pSubtitleHandle is NULL");
+ return FALSE;
+ }
+
+ if (pSubtitleInfo== NULL) {
+ VideoLogError("pSubtitleInfo is NULL");
+ return FALSE;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pSubtitleHandle;
+ _vp_subtitle_get_subtitle_info(pSubtitle, pSubtitleInfo);
+ //_vp_subtitle_update_preview_text_item(pSubtitle);
+
+ if (!_vp_subtitle_update_caption_layout(pSubtitle, TRUE)) {
+ VideoLogError("_vp_subtitle_update_caption_layout failed");
+ return FALSE;
+ }
+
+ if (pSubtitle->pSelectItem) {
+ VideoLogInfo("pSubtitle->pSelectItem=%p", pSubtitle->pSelectItem);
+ elm_genlist_item_update(pSubtitle->pSelectItem);
+ }
+
+ return TRUE;
+}
+
+bool vp_subtitle_set_user_data(subtitle_popup_handle pSubtitleHandle, void *pUserData)
+{
+ if (pSubtitleHandle == NULL) {
+ VideoLogError("pSubtitleHandle is NULL");
+ return FALSE;
+ }
+
+ SubtitlePopup *pSubtitle = (SubtitlePopup *)pSubtitleHandle;
+
+ pSubtitle->pUserData = pUserData;
+
+ return TRUE;
+}
+
+char *_vp_subtitle_get_opacity(char *colorHex)
+{
+ if (colorHex == NULL) {
+ VideoLogError("colorHex is NULL");
+ return NULL;
+ }
+
+ char *szOpacity = g_strndup(colorHex+7, 2);
+
+ float fOpacity = strtol(szOpacity, NULL, 16);
+
+ VideoLogInfo("szOpacity=%s, fOpacity=%f", szOpacity, fOpacity);
+
+ VP_FREE(szOpacity);
+
+ return g_strdup_printf("%d%%", (int)((fOpacity*100)/255.0 + 0.5));
+}
+
diff --git a/playview/src/feature/vp-zoom-guide.c b/playview/src/feature/vp-zoom-guide.c
new file mode 100644
index 0000000..301b2b9
--- /dev/null
+++ b/playview/src/feature/vp-zoom-guide.c
@@ -0,0 +1,495 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-zoom-guide.h"
+
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+typedef struct _ZoomGuideWidget {
+ Evas_Object *pParent;
+ Evas_Object *pLayout;
+ Evas_Object *pItemLayout;
+
+ Ecore_Timer *pHideTimer;
+
+ bool bRealized;
+
+ double fPosX;
+ double fPosY;
+ double fResultPosX;
+ double fResultPosY;
+
+ double fZoomValue;
+
+ Evas_Coord_Rectangle rtOldRect;
+} ZoomGuideWidget;
+
+
+
+static void _vp_zoom_guide_destory_handle(ZoomGuideWidget *
+ pZoomGuideWidget);
+static void _vp_zoom_guide_update_item(ZoomGuideWidget *pZoomGuideWidget,
+ bool bUpdate);
+
+
+/* callback functions */
+static Eina_Bool __vp_zoom_guide_hide_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pUserData;
+
+ elm_object_signal_emit(pZoomGuideWidget->pLayout,
+ VP_NORMAL_SIGNAL_ZOOM_GUIDE_HIDE, "*");
+
+ evas_object_hide(pZoomGuideWidget->pLayout);
+ evas_object_hide(pZoomGuideWidget->pItemLayout);
+
+ pZoomGuideWidget->pHideTimer = NULL;
+ return EINA_FALSE;
+}
+
+
+static void __vp_zoom_guide_resize_cb(void *pUserData, Evas *pEvas,
+ Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pUserData;
+ Evas_Coord_Rectangle rtCurRect = { 0, };
+
+ evas_object_geometry_get(pObj, &(rtCurRect.x), &(rtCurRect.y),
+ &(rtCurRect.w), &(rtCurRect.h));
+
+ if (pZoomGuideWidget->rtOldRect.x != rtCurRect.x ||
+ pZoomGuideWidget->rtOldRect.y != rtCurRect.y ||
+ pZoomGuideWidget->rtOldRect.w != rtCurRect.w ||
+ pZoomGuideWidget->rtOldRect.h != rtCurRect.h) {
+
+ pZoomGuideWidget->rtOldRect.x = rtCurRect.x;
+ pZoomGuideWidget->rtOldRect.y = rtCurRect.y;
+ pZoomGuideWidget->rtOldRect.w = rtCurRect.w;
+ pZoomGuideWidget->rtOldRect.h = rtCurRect.h;
+
+ _vp_zoom_guide_update_item(pZoomGuideWidget, FALSE);
+ }
+
+}
+
+
+/* internal functions */
+static void _vp_zoom_guide_update_item(ZoomGuideWidget *pZoomGuideWidget,
+ bool bUpdate)
+{
+ if (pZoomGuideWidget == NULL) {
+ VideoLogError("pZoomGuideWidget is NULL");
+ return;
+ }
+ Evas_Object *pParent = pZoomGuideWidget->pLayout;
+ Evas_Object *pItem = pZoomGuideWidget->pItemLayout;
+
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return;
+ }
+
+ if (pItem == NULL) {
+ VideoLogError("pItem is NULL");
+ return;
+ }
+
+ Evas_Coord_Rectangle nRect = { 0, };
+ Evas_Coord_Rectangle nDstRect = { 0, };
+
+ evas_object_geometry_get(pParent, &(nRect.x), &(nRect.y), &(nRect.w),
+ &(nRect.h));
+
+ nDstRect.w = nRect.w * pZoomGuideWidget->fZoomValue;
+ nDstRect.h = nRect.h * pZoomGuideWidget->fZoomValue;
+
+ nDstRect.x =
+ nRect.x + (nRect.w * pZoomGuideWidget->fPosX) - (nDstRect.w / 2);
+ nDstRect.y =
+ nRect.y + (nRect.h * pZoomGuideWidget->fPosY) - (nDstRect.h / 2);
+
+ if (nDstRect.x < nRect.x) {
+ nDstRect.x = nRect.x;
+ }
+
+ if (nDstRect.y < nRect.y) {
+ nDstRect.y = nRect.y;
+ }
+
+ if (nDstRect.w + nDstRect.x > nRect.w + nRect.x) {
+ nDstRect.x = (nRect.w + nRect.x) - nDstRect.w;
+ }
+
+ if (nDstRect.h + nDstRect.y > nRect.h + nRect.y) {
+ nDstRect.y = (nRect.h + nRect.y) - nDstRect.h;
+ }
+
+ pZoomGuideWidget->fResultPosX =
+ (double)((double)(nDstRect.x - nRect.x) / (double)(nRect.w));
+ pZoomGuideWidget->fResultPosY =
+ (double)((double)(nDstRect.y - nRect.y) / (double)(nRect.h));
+
+ evas_object_move(pItem, nDstRect.x, nDstRect.y);
+ evas_object_resize(pItem, nDstRect.w, nDstRect.h);
+
+ if (bUpdate) {
+ elm_object_signal_emit(pZoomGuideWidget->pLayout,
+ VP_NORMAL_SIGNAL_ZOOM_GUIDE_SHOW, "*");
+ evas_object_show(pZoomGuideWidget->pLayout);
+ evas_object_show(pZoomGuideWidget->pItemLayout);
+
+ VP_EVAS_TIMER_DEL(pZoomGuideWidget->pHideTimer);
+ pZoomGuideWidget->pHideTimer =
+ ecore_timer_add(1.5, __vp_zoom_guide_hide_timer_cb,
+ (void *) pZoomGuideWidget);
+ }
+
+}
+
+static void _vp_zoom_guide_destory_handle(ZoomGuideWidget *
+ pZoomGuideWidget)
+{
+ if (pZoomGuideWidget == NULL) {
+ VideoLogError("pZoomGuideWidget is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pZoomGuideWidget->pHideTimer);
+
+ VP_EVAS_DEL(pZoomGuideWidget->pLayout);
+ VP_EVAS_DEL(pZoomGuideWidget->pItemLayout);
+
+ VP_FREE(pZoomGuideWidget);
+}
+
+static Evas_Object *_vp_zoom_guide_create_layout(Evas_Object *pParent,
+ void *pUserData)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_ZOOM_GUIDE_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_ZOOM_GUIDE);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+ evas_object_event_callback_add(pObj, EVAS_CALLBACK_RESIZE,
+ __vp_zoom_guide_resize_cb, pUserData);
+
+ evas_object_event_callback_add(pObj, EVAS_CALLBACK_MOVE,
+ __vp_zoom_guide_resize_cb, pUserData);
+
+
+ evas_object_show(pObj);
+
+ return pObj;
+
+}
+
+
+static Evas_Object *_vp_zoom_guide_create_item_layout(Evas_Object *
+ pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_ZOOM_GUIDE_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_ZOOM_GUIDE_ITEM);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+
+}
+
+
+static bool _vp_zoom_guide_init_layout(ZoomGuideWidget *pZoomGuideWidget)
+{
+ if (pZoomGuideWidget == NULL) {
+ VideoLogError("pZoomGuideWidget is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pZoomGuideWidget->pParent;
+
+ pZoomGuideWidget->pLayout =
+ _vp_zoom_guide_create_layout(pParent, (void *) pZoomGuideWidget);
+ if (pZoomGuideWidget->pLayout == NULL) {
+ VideoLogError("_vp_zoom_guide_create_layout is fail");
+ return FALSE;
+ }
+
+ pZoomGuideWidget->pItemLayout =
+ _vp_zoom_guide_create_item_layout(pZoomGuideWidget->pLayout);
+ if (pZoomGuideWidget->pItemLayout == NULL) {
+ VideoLogError("_vp_zoom_guide_create_item_layout is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* external functions */
+zoom_guide_handle vp_zoom_guide_create(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = NULL;
+
+ pZoomGuideWidget = calloc(1, sizeof(ZoomGuideWidget));
+
+ if (pZoomGuideWidget == NULL) {
+ VideoLogError("pZoomGuideWidget alloc fail");
+ return NULL;
+ }
+
+ pZoomGuideWidget->pParent = pParent;
+ pZoomGuideWidget->bRealized = FALSE;
+ pZoomGuideWidget->fZoomValue = 1.0;
+ pZoomGuideWidget->fPosX = 0.0;
+ pZoomGuideWidget->fPosY = 0.0;
+
+ if (!_vp_zoom_guide_init_layout(pZoomGuideWidget)) {
+ VideoLogError("_vp_zoom_guide_init_layout is fail");
+ _vp_zoom_guide_destory_handle(pZoomGuideWidget);
+ return NULL;
+ }
+
+ return (zoom_guide_handle) pZoomGuideWidget;
+}
+
+void vp_zoom_guide_destroy(zoom_guide_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ vp_zoom_guide_unrealize((zoom_guide_handle) pZoomGuideWidget);
+
+ _vp_zoom_guide_destory_handle(pZoomGuideWidget);
+
+ return;
+}
+
+
+bool vp_zoom_guide_realize(zoom_guide_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+ pZoomGuideWidget->bRealized = TRUE;
+
+ return TRUE;
+}
+
+bool vp_zoom_guide_unrealize(zoom_guide_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ pZoomGuideWidget->bRealized = FALSE;
+
+ return TRUE;
+}
+
+Evas_Object *vp_zoom_guide_get_object(zoom_guide_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return NULL;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ return pZoomGuideWidget->pLayout;
+}
+
+bool vp_zoom_guide_set_zoom_value(zoom_guide_handle pWidgetHandle,
+ double fZoomVal)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ pZoomGuideWidget->fZoomValue = 1.0 / fZoomVal;
+
+ _vp_zoom_guide_update_item(pZoomGuideWidget, TRUE);
+
+ return TRUE;
+}
+
+bool vp_zoom_guide_get_zoom_value(zoom_guide_handle pWidgetHandle,
+ double *fZoomVal)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ *fZoomVal = pZoomGuideWidget->fZoomValue;
+
+ return TRUE;
+}
+
+bool vp_zoom_guide_set_move_position(zoom_guide_handle pWidgetHandle,
+ double fPosX, double fPosY)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ pZoomGuideWidget->fPosX = fPosX;
+ pZoomGuideWidget->fPosY = fPosY;
+
+ if (pZoomGuideWidget->fPosX > 1.0) {
+ pZoomGuideWidget->fPosX = 1.0;
+ }
+
+ if (pZoomGuideWidget->fPosY > 1.0) {
+ pZoomGuideWidget->fPosY = 1.0;
+ }
+
+ if (pZoomGuideWidget->fPosX < 0.0) {
+ pZoomGuideWidget->fPosX = 0.0;
+ }
+
+ if (pZoomGuideWidget->fPosY < 0.0) {
+ pZoomGuideWidget->fPosY = 0.0;
+ }
+
+ _vp_zoom_guide_update_item(pZoomGuideWidget, TRUE);
+
+ return TRUE;
+}
+
+
+bool vp_zoom_guide_get_move_position(zoom_guide_handle pWidgetHandle,
+ double *fPosX, double *fPosY)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ *fPosX = pZoomGuideWidget->fPosX;
+ *fPosY = pZoomGuideWidget->fPosY;
+
+ return TRUE;
+}
+
+bool vp_zoom_guide_get_real_position(zoom_guide_handle pWidgetHandle,
+ double *fPosX, double *fPosY)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ *fPosX = pZoomGuideWidget->fResultPosX;
+ *fPosY = pZoomGuideWidget->fResultPosY;
+
+ return TRUE;
+}
+
+
+bool vp_zoom_guide_update(zoom_guide_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ZoomGuideWidget *pZoomGuideWidget = (ZoomGuideWidget *) pWidgetHandle;
+
+ _vp_zoom_guide_update_item(pZoomGuideWidget, TRUE);
+
+ return TRUE;
+}
diff --git a/playview/src/include/vp-play-macro-define.h b/playview/src/include/vp-play-macro-define.h
new file mode 100644
index 0000000..35c36a8
--- /dev/null
+++ b/playview/src/include/vp-play-macro-define.h
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <limits.h>
+#include <errno.h>
+#include <assert.h>
+#include <efl_extension.h>
+
+#define _EDJ(o) elm_layout_edje_get(o)
+#define VP_SCALE elm_config_scale_get()
+
+#define VP_MAX_HEAP_SIZE 5*1024*1024 /*Malloc more than this will not be allowd*/
+
+#define VP_ASSERT(scalar_exp) \
+ assert(scalar_exp); \
+
+
+#define VP_GENLIST_HIDE_BOTTOMLINE(data, obj, event_info) \
+do{ \
+ if(!event_info || !obj) \
+ { \
+ return; \
+ } \
+ elm_object_item_signal_emit(elm_genlist_last_item_get(obj), "elm,state,bottomline,hide", ""); \
+}while(0);
+
+
+#define VP_CALLOC(ptr, no_elements, type) \
+ do { \
+ if((int)(no_elements) <= 0) \
+ { \
+ ptr = NULL; \
+ } \
+ else if(VP_MAX_HEAP_SIZE < no_elements* sizeof (type)) \
+ { \
+ assert(0); \
+ } \
+ else \
+ { \
+ ptr = (type *) calloc (no_elements , sizeof (type)); \
+ VP_ASSERT(ptr); \
+ }\
+ }while(0);
+
+#define VP_SNPRINTF(dest,size,format,arg...) \
+ do { \
+ if(dest != NULL && format != NULL) \
+ { \
+ snprintf(dest,size,format,##arg); \
+ } \
+ }while(0);
+
+ /* If the same pointer is passed to free twice, known as a double free.
+ To avoid this, set pointers to NULL after passing them to free:
+ free(NULL) is safe (it does nothing). */
+
+#define VP_FREE(ptr) \
+ do { \
+ if(ptr != NULL) \
+ { \
+ free(ptr); \
+ ptr = NULL; \
+ } \
+ }while(0);
+
+#define VP_STRNCPY(dest,src,size) \
+ do { \
+ if(src != NULL && dest != NULL && size > 0) \
+ { \
+ strncpy(dest,src,size); \
+ } \
+ }while(0);
+ /*
+ * string wrappers
+ */
+#define VP_STRDUP(destptr,sourceptr)\
+ do{\
+ if(sourceptr == NULL)\
+ destptr = NULL; \
+ else \
+ destptr = strdup(sourceptr); \
+ }while(0);
+
+
+
+#define VP_EVAS_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ evas_object_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+
+#define VP_EVAS_ITEM_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ elm_object_item_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+
+#define VP_EVAS_TIMER_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_timer_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+#define VP_EVAS_PIPE_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_pipe_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+
+#define VP_EVAS_IDLER_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_idler_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+
+#define VP_EVAS_JOB_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_job_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+
+#define VP_EVAS_EVENT_HANDLER_DEL(evas_obj) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ ecore_event_handler_del(evas_obj); \
+ evas_obj = NULL; \
+ } \
+ }while(0);
+
+#define VP_EVAS_DISABLE_SET(evas_obj, value) \
+ do { \
+ if(evas_obj != NULL) \
+ { \
+ elm_object_disabled_set(evas_obj, value); \
+ } \
+ }while(0);
+
+
+#ifdef __cplusplus
+ }
+#endif /* __cplusplus */
+
+
diff --git a/playview/src/include/vp-play-string-define.h b/playview/src/include/vp-play-string-define.h
new file mode 100644
index 0000000..29b2dd1
--- /dev/null
+++ b/playview/src/include/vp-play-string-define.h
@@ -0,0 +1,852 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+
+#pragma once
+
+#include <app.h>
+
+#define VP_PLAY_FILE_PREFIX "file://"
+
+
+/* window name */
+#define VP_PLAY_MAIN_WINDOW_NAME "video-player"
+#define VP_PLAY_MAIN_MULTI_WINDOW_NAME "multi_view"
+
+#define VP_LOCAL_STR_PREFIX "video-player"
+#define VP_SYS_STR_PREFIX "sys_string"
+
+#define VP_PLAY_PREFIX "/usr/apps/org.tizen.video-player"
+
+#define VP_PLAY_EDJ_PATH VP_PLAY_PREFIX"/res/edje"
+
+#define VP_PLAY_DATA_DIR "/opt/usr/apps/org.tizen.videos/data"
+#define VP_PLAY_THUMB_DIR "/opt/usr/media/.video_thumb"
+#define VP_PLAY_CUR_THUMB_DIR "/opt/usr/media/.cur_video_thumb"
+#define VP_PLAY_TEMP_DIR "/opt/usr/media/.video_thumb/tmp/"
+#define VP_PLAY_SDP_TEMP_DIR "/opt/usr/media/.video_thumb/sdp"
+#define VP_PLAY_IMAGE_BUFFER_PATH "/opt/usr/media/.video_thumb/.image_buff.jpg"
+
+#define VP_PLAY_SCREEN_SHOT_DIR "/opt/usr/media/Screenshots"
+#define VP_PLAY_MULTIPATH_INI_PATH "/opt/usr/apps/org.tizen.video-player/shared/data/saveposition.ini"
+
+#define VP_PLAY_MEDIA_DIR "/opt/usr/media/Videos"
+#define VP_PLAY_PERSONAL_HEAD_STR "/opt/storage/PersonalStorage"
+#define VP_ROOT_PATH_MMC "/opt/storage/sdcard"
+
+
+
+
+
+/* EDJ FILE PATH */
+#define VP_PLAY_CUSTOM_THEME VP_PLAY_EDJ_PATH"/pv-custom-winset.edj"
+#define VP_PLAY_RESROUCE_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-resource.edj"
+#define VP_PLAY_POPUP_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-popup.edj"
+
+#define VP_PLAY_NORMAL_MAIN_EDJ VP_PLAY_EDJ_PATH"/pv-normal-main.edj"
+#define VP_PLAY_NORMAL_TOP_CONTROL_EDJ VP_PLAY_EDJ_PATH"/pv-normal-top-control.edj"
+#define VP_PLAY_NORMAL_CONTROL_EDJ VP_PLAY_EDJ_PATH"/pv-normal-control.edj"
+#define VP_PLAY_NORMAL_FUNCTION_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-normal-function.edj"
+
+#define VP_PLAY_BOOKMARK_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-bookmark.edj"
+#define VP_PLAY_BOOKMARK_ITEM_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-bookmark-item.edj"
+#define VP_PLAY_PROGRESSBAR_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-progressbar.edj"
+#define VP_PLAY_VOLUME_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-volume.edj"
+#define VP_PLAY_VOLUME_POPUP_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-volume-popup.edj"
+#define VP_PLAY_BRIGHTNESS_POPUP_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-brightness-popup.edj"
+#define VP_PLAY_ZOOM_GUIDE_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-zoom-guide.edj"
+
+
+#define VP_PLAY_SUBTITLE_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-subtitle.edj"
+
+#define VP_PLAY_TRIM_MAIN_EDJ VP_PLAY_EDJ_PATH"/pv-trim-main.edj"
+#define VP_PLAY_TRIM_TOP_CONTROL_EDJ VP_PLAY_EDJ_PATH"/pv-trim-top-control.edj"
+#define VP_PLAY_TRIM_CONTROL_EDJ VP_PLAY_EDJ_PATH"/pv-trim-control.edj"
+#define VP_PLAY_TRIM_ITEM_EDJ_PATH VP_PLAY_EDJ_PATH"/pv-trim-item.edj"
+
+#define VP_PLAY_MULTI_MAIN_EDJ VP_PLAY_EDJ_PATH"/pv-multi-main.edj"
+
+#define VP_PLAY_CHAPTER_MAIN_EDJ VP_PLAY_EDJ_PATH"/pv-chapter-main-new.edj"
+
+#define VP_PLAY_TAG_BUDDY_EDJ VP_PLAY_EDJ_PATH"/pv-tag-buddy.edj"
+#define VP_PLAY_TAG_PREVIEW_EDJ VP_PLAY_EDJ_PATH"/pv-tag-preview.edj"
+
+
+#define VP_PLAY_SENSOR_POPUP_EDJ VP_PLAY_EDJ_PATH"/pv-sensor-popup.edj"
+
+#define VP_PLAY_SPEED_POPUP_EDJ VP_PLAY_EDJ_PATH"/pv-speed-popup.edj"
+#define VP_PLAY_GESTURE_EDJ VP_PLAY_EDJ_PATH"/pv-gesture.edj"
+#define VP_PLAY_SUBTITLE_COLOR_POPUP_EDJ VP_PLAY_EDJ_PATH"/pv-subtitle-color-popup.edj"
+#define VP_PLAY_COLORSELECTOR_EDJ VP_PLAY_EDJ_PATH"/pv-colorselector.edj"
+
+//minicontroller
+#define VP_PLAY_MINICON_EDJ_NAME VP_PLAY_EDJ_PATH"/pv-minicontroller.edj"
+
+
+/* EDJ GROUP & SWALLOW*/
+#define VP_PLAY_CUSTOM_LAYOUT_KLASS "layout"
+#define VP_PLAY_CUSTOM_LAYOUT_GROUP "application"
+#define VP_PLAY_CUSTOM_LAYOUT_STYLE "play_view"
+#define VP_PLAY_CUSTOM_MULTI_LAYOUT_STYLE "multi_view"
+
+#define VP_PLAY_EDJ_GROUP_GESTURE "pv.gesture"
+
+#define VP_PLAY_EDJ_GROUP_NORMAL_MAIN "pv.normal.main"
+#define VP_PLAY_EDJ_GROUP_NORMAL_TOP_CONTROL "pv.normal.top"
+#define VP_PLAY_EDJ_GROUP_NORMAL_CONTROL "pv.normal.control"
+#define VP_PLAY_EDJ_GROUP_NORMAL_FUNCTION "pv.normal.function"
+
+
+#define VP_PLAY_EDJ_GROUP_MULTI "pv.multi.main"
+#define VP_PLAY_EDJ_GROUP_PROGRESSBAR "pv.progress"
+#define VP_PLAY_EDJ_GROUP_BOOKMARK "pv.bookmark"
+#define VP_PLAY_EDJ_GROUP_BOOKMARK_ITEM "pv.bookmark.item"
+#define VP_PLAY_EDJ_GROUP_BOOKMARK_ITEM_END "pv.bookmark.item.end"
+#define VP_PLAY_EDJ_GROUP_ZOOM_GUIDE "pv.zoom.guide"
+#define VP_PLAY_EDJ_GROUP_ZOOM_GUIDE_ITEM "pv.zoom.guide.item"
+
+#define VP_PLAY_EDJ_GROUP_TRIM_MAIN "pv.trim.main"
+#define VP_PLAY_EDJ_GROUP_TRIM_TOP_CONTROL "pv.trim.top"
+#define VP_PLAY_EDJ_GROUP_TRIM_CONTROL "pv.trim.control"
+#define VP_PLAY_EDJ_GROUP_VOLUME "pv.volume"
+#define VP_PLAY_EDJ_GROUP_VOLUME_POPUP "pv.volume.popup"
+#define VP_PLAY_EDJ_GROUP_BRIGHTNESS_POPUP "pv.brightness.popup"
+
+#define VP_PLAY_EDJ_GROUP_PLAY_SPEED_POPUP "pv.play.speed.popup"
+
+#define VP_PLAY_EDJ_GROUP_PLAY_SUBTITLE_COLOR_POPUP "pv.subtitle-color-popup"
+
+#define VP_PLAY_EDJ_GROUP_CONNECT_POPUP "pv.connect.popup"
+
+
+#define VP_PLAY_EDJ_GROUP_SUBTITLE "pv.subtitle"
+#define VP_PLAY_EDJ_GROUP_SUBTITLE_MULTI "pv.multi-subtitle"
+#define VP_PLAY_EDJ_GROUP_LOADING_ANI "pv.loading.ani"
+
+#define VP_PLAY_EDJ_GROUP_TRIM_ITEM "pv.trim.item"
+
+#define VP_PLAY_EDJ_GROUP_CHAPTER_MAIN "pv.chapter.main"
+
+#define VP_PLAY_EDJ_GROUP_TAG_BUDDY "pv.tag.buddy"
+#define VP_PLAY_EDJ_GROUP_TAG_PREVIEW "pv.tag.preview"
+#define VP_PLAY_EDJ_GROUP_TAG_NARMAL "pv.tag.buddy.normal"
+
+
+
+#define VP_PLAY_EDJ_GROUP_SESNOR_MAIN "pv.sensor.popup"
+#define VP_PLAY_EDJ_GROUP_SESNOR_IMAGE "pv.sensor.popup.image"
+
+#define VP_PLAY_EDJ_GROUP_TITLE_LIST_POPUP "pv.title.list"
+#define VP_PLAY_EDJ_GROUP_PROGRESS_POPUP "pv.popup.progress"
+#define VP_PLAY_EDJ_GROUP_ENTRY_POPUP "pv.popup.entry"
+#define VP_PLAY_EDJ_GROUP_CAPTION_POPUP "pv.popup.caption"
+#define VP_PLAY_EDJ_GROUP_TITLE_POPUP "pv.popup.title"
+
+#define VP_PLAY_EDJ_GROUP_MICROSEEK_TEXT "pv.normal.main.microseek.text"
+#define VP_PLAY_EDJ_GROUP_MICROSEEK_IMAGE "pv.normal.main.microseek.image"
+#define VP_PLAY_EDJ_GROUP_FLICKJUMP_SEEK "pv.normal.main.flickjump.seek"
+
+//#define VP_PLAY_SWALLOW_BUTTON_ICON "icon"
+#define VP_PLAY_SWALLOW_BUTTON_ICON "elm.swallow.content"
+#define VP_PLAY_SWALLOW_BUTTON_PRESS_ICON "elm.swallow.content.press"
+#define VP_PLAY_SWALLOW_BUTTON_DIM_ICON "elm.swallow.content.dim"
+
+
+/* normal view swallow */
+#define VP_PLAY_SWALLOW_NORMAL_LOCKSCREEN "pv.normal.main.lockscreen"
+
+#define VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER "pv.normal.main.image.buffer"
+#define VP_PLAY_SWALLOW_NORMAL_ERROR_IMAGE "pv.normal.main.error.image"
+
+#define VP_PLAY_SWALLOW_NORMAL_TOP_CONTROL "pv.normal.top.control"
+#define VP_PLAY_SWALLOW_NORMAL_CONTROL "pv.normal.main.control"
+#define VP_PLAY_SWALLOW_NORMAL_ROTATE "pv.normal.main.rotate.icon"
+
+#define VP_PLAY_SWALLOW_NORMAL_VOLUME "pv.normal.main.volume.icon"
+#define VP_PLAY_SWALLOW_NORMAL_SCREENSIZE "pv.normal.control.toolbar.screensize"
+#define VP_PLAY_SWALLOW_NORMAL_POPUP_PLAYER "pv.normal.control.toolbar.popupPlayer"
+
+#define VP_PLAY_SWALLOW_NORMAL_PLAY "pv.normal.control.play"
+#define VP_PLAY_SWALLOW_NORMAL_REW "pv.normal.control.rew"
+#define VP_PLAY_SWALLOW_NORMAL_FF "pv.normal.control.ff"
+#define VP_PLAY_SWALLOW_NORMAL_PLAY_FOCUS "pv.normal.control.play.focus"
+
+
+#define VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_PORTRAIT "pv.normal.main.screenshot.portrait"
+#define VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_LANDSCAPE "pv.normal.main.screenshot.landscape"
+
+#define VP_PLAY_SWALLOW_NORMAL_BOOKMARK "pv.normal.control.bookmark"
+#define VP_PLAY_SWALLOW_NORMAL_PROGRESS "pv.normal.control.progress"
+#define VP_PLAY_SWALLOW_NORMAL_FUNCTION "pv.normal.control.function"
+
+#define VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE "pv.normal.top.capture"
+#define VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE_REW "pv.normal.top.capture.rew"
+#define VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE_FF "pv.normal.top.capture.ff"
+#define VP_PLAY_SWALLOW_NORMAL_TOP_ROTATE "pv.normal.top.rotate"
+
+#define VP_PLAY_SWALLOW_NORMAL_ZOOM_GUIDE "pv.normal.main.zoom.guide.rect"
+
+#define VP_PLAY_SWALLOW_PROGRESS_BG "pv.progress.bg"
+#define VP_PLAY_SWALLOW_PROGRESS_PLAYING_LABEL "pv.progress.playing.txt"
+#define VP_PLAY_SWALLOW_PROGRESS_DURATION_LABEL "pv.progress.duration.txt"
+#define VP_PLAY_SWALLOW_PROGRESS_DRAG_RECT "pv.progress.playing"
+#define VP_PLAY_SWALLOW_PROGRESS_BAR "pv.progress.bar.bg"
+#define VP_PLAY_SWALLOW_PROGRESS_POINT "pv.progress.point"
+
+#define VP_PLAY_SWALLOW_BOOKMARK_ADD_BUTTON "pv.bookmark.add.button"
+#define VP_PLAY_SWALLOW_BOOKMARK_LIST "pv.bookmark.item.list"
+
+#define VP_PLAY_SWALLOW_BOOKMARK_ITEM_ICON "pv.bookmark.item.icon"
+#define VP_PLAY_SWALLOW_BOOKMARK_ITEM_TXT "pv.bookmark.item.txt"
+#define VP_PLAY_SWALLOW_BOOKMARK_ITEM_DEL "pv.bookmark.item.del"
+
+#define VP_PLAY_SWALLOW_VOLUME_DRAG_RECT "pv.volume.playing"
+#define VP_PLAY_SWALLOW_VOLUME_VALUE_LABEL "pv.volume.txt"
+
+#define VP_PLAY_SWALLOW_VOLUME_POPUP_DRAG_RECT "pv.volume.popup.playing"
+#define VP_PLAY_SWALLOW_VOLUME_POPUP_VALUE_LABEL "pv.volume.popup.txt"
+
+#define VP_PLAY_SWALLOW_BRIGHTNESS_POPUP_DRAG_RECT "pv.brightness.popup.playing"
+#define VP_PLAY_SWALLOW_BRIGHTNESS_POPUP_VALUE_LABEL "pv.brightness.popup.txt"
+#define VP_PLAY_SWALLOW_BRIGHTNESS_POPUP_ICON "pv.brightness.popup.icon"
+
+#define VP_PLAY_SWALLOW_NORMAL_FUNCTION_1 "pv.normal.function.button.1"
+#define VP_PLAY_SWALLOW_NORMAL_FUNCTION_2 "pv.normal.function.button.2"
+#define VP_PLAY_SWALLOW_NORMAL_FUNCTION_3 "pv.normal.function.button.3"
+
+#define VP_PLAY_SWALLOW_NORMAL_SUBTITLE "pv.normal.main.subtitle"
+#define VP_PLAY_SWALLOW_NORMAL_LOADING_ANI "pv.normal.main.loading"
+
+
+#define VP_PLAY_SWALLOW_NORMAL_SINK "pv.normal.videosink"
+
+/* zoom guide swallow */
+
+/* multi view swallow */
+#define VP_PLAY_SWALLOW_MULTI_IMAGE_BUFFER "pv.multi.image.buffer"
+
+#define VP_PLAY_SWALLOW_MULTI_SINK "pv.multi.videosink"
+
+#define VP_PLAY_SWALLOW_MULTI_CLOSE "pv.multi.close"
+#define VP_PLAY_SWALLOW_MULTI_FULL_SIZE "pv.multi.full.size"
+#define VP_PLAY_SWALLOW_MULTI_MINIMIZE "pv.multi.minimize"
+#define VP_PLAY_SWALLOW_MULTI_RESIZE "pv.multi.resize"
+#define VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE "pv.multi.control.play"
+#define VP_PLAY_SWALLOW_MULTI_PLAY_FOCUS "pv.multi.control.play.focus"
+#define VP_PLAY_SWALLOW_MULTI_REW "pv.multi.control.rew"
+#define VP_PLAY_SWALLOW_MULTI_FF "pv.multi.control.ff"
+#define VP_PLAY_SWALLOW_MULTI_LOADING_ANI "pv.multi.main.loading"
+#define VP_PLAY_SWALLOW_MULTI_SUBTITLE "pv.multi.main.subtitle"
+
+
+/* trim view swallow */
+#define VP_PLAY_SWALLOW_TRIM_TOP_CONTROL "pv.trim.top.control"
+#define VP_PLAY_SWALLOW_TRIM_CONTROL "pv.trim.main.control"
+
+#define VP_PLAY_SWALLOW_TRIM_ROTATE "pv.trim.top.rotate"
+
+#define VP_PLAY_SWALLOW_TRIM_SAVE "pv.trim.control.toolbar.save"
+#define VP_PLAY_SWALLOW_TRIM_BACK "pv.trim.control.toolbar.back"
+
+#define VP_PLAY_SWALLOW_TRIM_PLAY "pv.trim.control.play"
+#define VP_PLAY_SWALLOW_TRIM_REW "pv.trim.control.rew"
+#define VP_PLAY_SWALLOW_TRIM_FF "pv.trim.control.ff"
+
+#define VP_PLAY_SWALLOW_TRIM_GENGRID "pv.trim.control.gengrid.rect"
+#define VP_PLAY_SWALLOW_TRIM_ITEM "pv.trim.item.icon"
+
+#define VP_PLAY_SWALLOW_TRIM_DRAG_RECT "pv.trim.control.playing"
+#define VP_PLAY_SWALLOW_TRIM_START_LABEL "pv.trim.start.txt"
+#define VP_PLAY_SWALLOW_TRIM_TOTAL_LABEL "pv.trim.total.txt"
+
+#define VP_PLAY_SWALLOW_TRIM_LOADING_ANI "pv.trim.main.loading"
+#define VP_PLAY_SWALLOW_TRIM_BUTTON "pv.trim.main.button"
+
+/* tag view swallow */
+#define VP_PLAY_SWALLOW_TAG_PREVIEW "pv.tag.buddy.preview"
+#define VP_PLAY_SWALLOW_TAG_LIST "pv.tag.buddy.list"
+
+#define VP_PLAY_SWALLOW_TAG_PREVIEW_IMAGE "pv.tag.preview.image"
+#define VP_PLAY_SWALLOW_TAG_PREVIEW_ACCUWEATHER "pv.tag.preview.accuweather"
+#define VP_PLAY_SWALLOW_TAG_PREVIEW_TABLE "pv.tag.preview.table"
+#define VP_PLAY_SWALLOW_TAG_PREVIEW_TIME "pv.tag.preview.time"
+
+#define VP_PLAY_SWALLOW_TAG_PREVIEW_TIME_SHADOW "pv.tag.preview.time.shadow"
+#define VP_PLAY_SWALLOW_TAG_PREVIEW_TABLE_SHADOW "pv.tag.preview.table.shadow"
+
+#define VP_PLAY_SWALLOW_TAG_BG "pv.tag.bg"
+
+
+/* normal part */
+#define VP_PLAY_PART_NORMAL_PLAYING_SPEED_TXT "pv.normal.main.playingspeed.txt"
+#define VP_PLAY_PART_NORMAL_SPEED_TXT "pv.normal.main.speed.txt"
+
+/* multi part */
+#define VP_PLAY_PART_MULTI_TITLE "pv.multi.title.txt"
+#define VP_PLAY_PART_MULTI_NOCONTENTS_TXT "pv.multi.nocontents.txt"
+
+#define VP_PLAY_PART_MULTI_SPEED_TXT "pv.multi.main.speed.txt"
+
+
+/* trim drag part */
+#define VP_PLAY_PART_TRIM_DRAG_PLAYING "pv.trim.control.playing"
+#define VP_PLAY_PART_TRIM_DRAG_START "pv.trim.control.confine.start"
+#define VP_PLAY_PART_TRIM_DRAG_END "pv.trim.control.confine.end"
+
+
+
+/* subtitle part */
+#define VP_PLAY_PART_SUBTITLE_TEXT "pv.multi.subtitle.label.txt"
+#define VP_PLAY_SWALLOW_SUBTITLE_TEXT "pv.subtitle.swallow.txt"
+
+
+/* flick jump seek part */
+#define VP_PLAY_PART_FLICKJUMP_SEEK_REW_TEXT "pv.normal.main.flickjump.seek.rewtext"
+#define VP_PLAY_PART_FLICKJUMP_SEEK_FF_TEXT "pv.normal.main.flickjump.seek.fftext"
+
+
+/* signal emit strings */
+#define VP_PLAY_COMMON_SIGNAL_DRAG "drag"
+#define VP_PLAY_COMMON_SIGNAL_DRAG_START "drag,start"
+#define VP_PLAY_COMMON_SIGNAL_DRAG_STOP "drag,stop"
+
+#define VP_MULTI_VIEW_SIGNAL_SHOW_CONTROL "signal.pv.multi.show.control"
+#define VP_MULTI_VIEW_SIGNAL_HIDE_CONTROL "signal.pv.multi.hide.control"
+
+#define VP_MULTI_SIGNAL_MAIN_SPEED_SHOW "signal.pv.multi.main.speed.show"
+#define VP_MULTI_SIGNAL_MAIN_SPEED_HIDE "signal.pv.multi.main.speed.hide"
+
+#define VP_MULTI_VIEW_SIGNAL_SHOW_NOCONTENTS "signal.pv.multi.show.nocontents"
+#define VP_MULTI_VIEW_SIGNAL_HIDE_NOCONTENTS "signal.pv.multi.hide.nocontents"
+
+#define VP_MULTI_VIEW_TITLE_FOCUS_IN_CONTROL "signal.pv.multi.focus.in.control"
+#define VP_MULTI_VIEW_TITLE_FOCUS_OUT_CONTROL "signal.pv.multi.focus.out.control"
+
+#define VP_MULTI_VIEW_TITLE_CLOSE_BTN_PRESSED "signal.pv.multi.close.pressed"
+#define VP_MULTI_VIEW_TITLE_CLOSE_BTN_RELEASED "signal.pv.multi.close.released"
+
+#define VP_MULTI_VIEW_TITLE_FULLSIZE_BTN_PRESSED "signal.pv.multi.fullsize.pressed"
+#define VP_MULTI_VIEW_TITLE_FULLSIZE_BTN_RELEASED "signal.pv.multi.fullsize.released"
+
+#define VP_MULTI_VIEW_TITLE_MINIMIZE_BTN_PRESSED "signal.pv.multi.minimize.pressed"
+#define VP_MULTI_VIEW_TITLE_MINIMIZE_BTN_RELEASED "signal.pv.multi.minimize.released"
+
+#define VP_NORMAL_SIGNAL_VIDEO_OFF "signal.pv.normal.main.video.off"
+#define VP_NORMAL_SIGNAL_VIDEO_ON "signal.pv.normal.main.video.on"
+
+#define VP_NORMAL_SIGNAL_ZOOM_GUIDE_SHOW "signal.pv.zoom.guide.show"
+#define VP_NORMAL_SIGNAL_ZOOM_GUIDE_HIDE "signal.pv.zoom.guide.hide"
+
+#define VP_NORMAL_SIGNAL_LOCKSCREEN_SHOW "signal.pv.normal.lockscreen.show"
+#define VP_NORMAL_SIGNAL_LOCKSCREEN_HIDE "signal.pv.normal.lockscreen.hide"
+
+#define VP_NORMAL_SIGNAL_NO_CONTNES_SHOW "signal.pv.normal.no.contents.show"
+#define VP_NORMAL_SIGNAL_NO_CONTNES_HIDE "signal.pv.normal.no.contents.hide"
+
+#define VP_NORMAL_SIGNAL_NAVIFRAME_TITLE_SHOW "elm,state,title,show"
+#define VP_NORMAL_SIGNAL_NAVIFRAME_TITLE_HIDE "elm,state,title,hide"
+#define VP_NORMAL_SIGNAL_NAVIFRAME_TITLE_NO_EFFECT_HIDE "elm,state,title,no,effect,hide"
+
+#define VP_NORMAL_SIGNAL_MAIN_SHOW_FINISH "signal.pv.normal.main.control.show.finish"
+#define VP_NORMAL_SIGNAL_MAIN_HIDE_FINISH "signal.pv.normal.main.control.hide.finish"
+
+#define VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_SHOW "signal.pv.normal.main.playingspeed.show"
+#define VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE "signal.pv.normal.main.playingspeed.hide"
+
+#define VP_NORMAL_SIGNAL_MAIN_SPEED_SHOW "signal.pv.normal.main.speed.show"
+#define VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE "signal.pv.normal.main.speed.hide"
+
+#define VP_NORMAL_SIGNAL_MAIN_SCREEN_PORTRAIT_SHOW "signal.pv.normal.main.screenshot.portrait.show"
+#define VP_NORMAL_SIGNAL_MAIN_SCREEN_LANDSCAPE_SHOW "signal.pv.normal.main.screenshot.landscape.show"
+#define VP_NORMAL_SIGNAL_MAIN_SCREEN_HIDE "signal.pv.normal.main.screenshot.hide"
+
+#define VP_NORMAL_SIGNAL_MAIN_BOOKMARK_ON "signal.pv.normal.main.bookmark.on"
+#define VP_NORMAL_SIGNAL_MAIN_BOOKMARK_OFF "signal.pv.normal.main.bookmark.off"
+
+#define VP_NORMAL_SIGNAL_MAIN_PORTRAIT_SHOW "signal.pv.normal.main.portrait.show"
+#define VP_NORMAL_SIGNAL_MAIN_LANDSCAPE_SHOW "signal.pv.normal.main.landscape.show"
+
+#define VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_PORTRAIT_SHOW "signal.pv.normal.main.no.effect.portrait.show"
+#define VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_LANDSCAPE_SHOW "signal.pv.normal.main.no.effect.landscape.show"
+
+#define VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_HIDE "signal.pv.normal.main.no.effect.hide"
+#define VP_NORMAL_SIGNAL_MAIN_HIDE "signal.pv.normal.main.control.hide"
+#define VP_NORMAL_SIGNAL_MAIN_ROTATE_SHOW "signal.pv.normal.main.rotate.icon.show"
+#define VP_NORMAL_SIGNAL_MAIN_ROTATE_HIDE "signal.pv.normal.main.rotate.icon.hide"
+#define VP_NORMAL_SIGNAL_MAIN_VOLUME_PORTRAIT_SHOW "signal.pv.normal.main.volume.icon.portrait.show"
+#define VP_NORMAL_SIGNAL_MAIN_VOLUME_LANDSCAPE_SHOW "signal.pv.normal.main.volume.icon.landscape.show"
+#define VP_NORMAL_SIGNAL_MAIN_VOLUME_HIDE "signal.pv.normal.main.volume.icon.hide"
+
+#define VP_NORMAL_SIGNAL_MAIN_SUBTITLE_PORTRAIT "signal.pv.normal.main.portrait.subtitle"
+#define VP_NORMAL_SIGNAL_MAIN_SUBTITLE_HIDE "signal.pv.normal.main.subtitle.hide"
+
+#define VP_NORMAL_SIGNAL_CONTROL_PORTRAIT_MODE "signal.pv.normal.control.portrait.mode"
+#define VP_NORMAL_SIGNAL_CONTROL_LANDSCAPE_MODE "signal.pv.normal.control.landscape.mode"
+
+#define VP_NORMAL_SIGNAL_FUNCTION_PORTRAIT_MODE "signal.pv.normal.function.portrait.mode"
+#define VP_NORMAL_SIGNAL_FUNCTION_LANDSCAPE_MODE "signal.pv.normal.function.landscape.mode"
+
+#define VP_NORMAL_SIGNAL_PROGRESS_PORTRAIT_MODE "signal.pv.normal.progress.portrait.mode"
+#define VP_NORMAL_SIGNAL_PROGRESS_LANDSCAPE_MODE "signal.pv.normal.progress.landscape.mode"
+#define VP_NORMAL_SIGNAL_PROGRESS_OPACITY_DEFAULT "signal.pv.normal.progress.opacity_default"
+#define VP_NORMAL_SIGNAL_PROGRESS_OPACITY_60 "signal.pv.normal.progress.opacity_60"
+
+#define VP_NORMAL_SIGNAL_PROGRESS_PRESS "signal.pv.normal.progress.click"
+#define VP_NORMAL_SIGNAL_PROGRESS_UNPRESS "signal.pv.normal.progress.unclick"
+
+#define VP_NORMAL_SIGNAL_VOLUME_PORTRAIT_MODE "signal.pv.volume.portrait.mode"
+#define VP_NORMAL_SIGNAL_VOLUME_LANDSCAPE_MODE "signal.pv.volume.landscape.mode"
+
+#define VP_NORMAL_SIGNAL_MICROSEEK_TEXT_SHOW "signal.pv.normal.main.microseek.text.show"
+#define VP_NORMAL_SIGNAL_MICROSEEK_TEXT_HIDE "signal.pv.normal.main.microseek.text.hide"
+#define VP_NORMAL_SIGNAL_MICROSEEK_SPEED_TEXT "pv.normal.main.microseek.speed.text"
+
+#define VP_NORMAL_SIGNAL_MICROSEEK_IMAGE_SHOW "signal.pv.normal.main.microseek.image.show"
+#define VP_NORMAL_SIGNAL_MICROSEEK_IMAGE_HIDE "signal.pv.normal.main.microseek.image.hide"
+
+#define VP_NORMAL_SIGNAL_FLICKJUMP_FF "signal.pv.normal.main.flickjump.ff"
+#define VP_NORMAL_SIGNAL_FLICKJUMP_REW "signal.pv.normal.main.flickjump.rew"
+
+
+#define VP_SUBTITLE_SIGNAL_MAIN_PORTRAIT_SHOW "signal.pv.subtitle.main.portrait.show"
+#define VP_SUBTITLE_SIGNAL_MAIN_LANDSCAPE_SHOW "signal.pv.subtitle.main.landscape.show"
+#define VP_SUBTITLE_SIGNAL_GREP_BOX_SHOW "signal.pv.subtitle.grep.box.show"
+#define VP_SUBTITLE_SIGNAL_GREP_BOX_HIDE "signal.pv.subtitle.grep.box.hide"
+#define VP_SUBTITLE_SIGNAL_CAPTION_WINDOW_HIDE "signal.pv.subtitle.caption.window.hide"
+
+#define VP_CHAPTER_SIGNAL_FUNCTION_PORTRAIT_MODE "signal.pv.chapter.portrait.mode"
+#define VP_CHAPTER_SIGNAL_FUNCTION_LANDSCAPE_MODE "signal.pv.chapter.landscape.mode"
+
+#define VP_POPUP_SIGNAL_CAPTION_PORTRAIT_MODE "signal.pv.popup.caption.portrait.mode"
+#define VP_POPUP_SIGNAL_CAPTION_LANDSCAPE_MODE "signal.pv.popup.caption.landscape.mode"
+
+#define VP_TAG_BUDDY_SIGNAL_HIDE "signal.pv.tag.bg.hide"
+#define VP_TAG_BUDDY_SIGNAL_SHOW "signal.pv.tag.bg.show"
+
+#define VP_TAG_BUDDY_SIGNAL_WEATHER_JP "signal.pv.tag.weathernews"
+#define VP_TAG_BUDDY_SIGNAL_ACCUWEATHER "signal.pv.tag.accuweather"
+
+//multi-window
+#define VP_NORMAL_SIGNAL_CONTROL_P_SHOW "signal.pv.normal.control.show.p"
+#define VP_NORMAL_SIGNAL_CONTROL_RFP_SHOW "signal.pv.normal.control.show.r.f.p"
+#define VP_NORMAL_SIGNAL_CONTROL_VSFRP_SHOW "signal.pv.normal.control.show.v.s.f.r.p"
+#define VP_NORMAL_SIGNAL_FUNCTION_1_3_SHOW "signal.pv.normal.function.show.1.3"
+#define VP_NORMAL_SIGNAL_CONTROL_VS_HIDE "signal.pv.normal.control.hide.v.s"
+#define VP_NORMAL_SIGNAL_CONTROL_VSFR_HIDE "signal.pv.normal.control.hide.v.s.f.r"
+#define VP_NORMAL_SIGNAL_CONTROL_VSFRP_HIDE "signal.pv.normal.control.hide.v.s.f.r.p"
+#define VP_NORMAL_SIGNAL_FUNCTION_1_3_HIDE "signal.pv.normal.function.hide.1.3"
+
+//trim view
+#define VP_TRIM_SIGNAL_CONTROL_PLAYING_SHOW "signal.pv.trim.control.show.playing"
+#define VP_TRIM_SIGNAL_CONTROL_PLAYING_HIDE "signal.pv.trim.control.hide.playing"
+
+/* resource groups(image) */
+#define VP_PLAY_MULTI_VIEW_CLOSE "multi/my_title_icon_delete.png"
+#define VP_PLAY_MULTI_VIEW_FULLSIZE "multi/my_title_icon_maximize.png"
+#define VP_PLAY_MULTI_VIEW_RESIZE "multi/mw_frame_handler.png"
+#define VP_PLAY_MULTI_VIEW_RESIZE_PRESS "multi/mw_frame_handler_press.png"
+#define VP_PLAY_MULTI_VIEW_MINSIZE "multi/my_title_icon_mimimize.png"
+
+
+#define VP_PLAY_MULTI_VIEW_FF "multi/T01_2_mw_control_icon_ff.png"
+#define VP_PLAY_MULTI_VIEW_FF_PRESS "multi/T01_2_mw_control_icon_ff_press.png"
+#define VP_PLAY_MULTI_VIEW_REW "multi/T01_2_mw_control_icon_rew.png"
+#define VP_PLAY_MULTI_VIEW_REW_PRESS "multi/T01_2_mw_control_icon_rew_press.png"
+#define VP_PLAY_MULTI_VIEW_PLAY "multi/T01_2_mw_control_icon_play.png"
+#define VP_PLAY_MULTI_VIEW_PLAY_PRESS "multi/T01_2_mw_control_icon_play_press.png"
+#define VP_PLAY_MULTI_VIEW_PAUSE "multi/T01_2_mw_control_icon_pause.png"
+#define VP_PLAY_MULTI_VIEW_PAUSE_PRESS "multi/T01_2_mw_control_icon_pause_press.png"
+
+#define VP_PLAY_NAVIFRAME_RES_SAVE "button/T01_2_icon_check.png"
+#define VP_PLAY_NAVIFRAME_RES_SAVE_PRESS "button/T01_2_icon_check_press.png"
+#define VP_PLAY_NAVIFRAME_RES_SAVE_DIM "button/T01_2_icon_check_dim.png"
+
+#define VP_PLAY_NAVIFRAME_RES_BACK "button/T01_2_icon_close.png"
+#define VP_PLAY_NAVIFRAME_RES_BACK_PRESS "button/T01_2_icon_close_press.png"
+#define VP_PLAY_NAVIFRAME_RES_BACK_DIM "button/T01_2_icon_close_dim.png"
+
+
+#define VP_PLAY_NORMAL_RES_RESUME "control/T01-2_control_circle_icon_play.png"
+#define VP_PLAY_NORMAL_RES_PAUSE "control/T01-2_control_circle_icon_pause.png"
+#define VP_PLAY_NORMAL_RES_PREV "control/T01-2_control_circle_icon_rewind.png"
+#define VP_PLAY_NORMAL_RES_NEXT "control/T01-2_control_circle_icon_next.png"
+
+#define VP_PLAY_NORMAL_RES_CAPTURE "capture/T01_2_icon_capture.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_PRESS "capture/T01_2_icon_capture_press.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_DIM "capture/T01_2_icon_capture_dim.png"
+
+#define VP_PLAY_NORMAL_RES_CAPTURE_REW "capture/T01-2_icon_left.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_REW_PRESS "capture/T01-2_icon_left_press.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_REW_DIM "capture/T01-2_icon_left_dim.png"
+
+#define VP_PLAY_NORMAL_RES_CAPTURE_FF "capture/T01-2_icon_right.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_FF_PRESS "capture/T01-2_icon_right_press.png"
+#define VP_PLAY_NORMAL_RES_CAPTURE_FF_DIM "capture/T01-2_icon_right_dim.png"
+
+
+#define VP_PLAY_TRIM_RES_REW "control/T01_2_control_circle_icon_reverse.png"
+#define VP_PLAY_TRIM_RES_FF "control/T01_2_control_circle_icon_forward.png"
+
+#define VP_PLAY_NORMAL_RES_VOLUME "function/T01_2_control_icon_volume.png"
+#define VP_PLAY_NORMAL_RES_VOLUME_PRESS "function/T01_2_control_icon_volume_press.png"
+#define VP_PLAY_NORMAL_RES_VOLUME_DIM "function/T01_2_control_icon_volume_dim.png"
+
+#define VP_PLAY_NORMAL_RES_MUTE "function/T01-2_control_icon_mute.png"
+#define VP_PLAY_NORMAL_RES_MUTE_PRESS "function/T01-2_control_icon_mute_press.png"
+#define VP_PLAY_NORMAL_RES_MUTE_DIM "function/T01-2_control_icon_mute_dim.png"
+
+#define VP_PLAY_NORMAL_RES_BOOKMARK "function/T01_2_control_icon_bookmark.png"
+#define VP_PLAY_NORMAL_RES_BOOKMARK_PRESS "function/T01_2_control_icon_bookmark_press.png"
+#define VP_PLAY_NORMAL_RES_BOOKMARK_DIM "function/T01_2_control_icon_bookmark_dim.png"
+
+#define VP_PLAY_NORMAL_RES_POPUP_PLAYER "function/player_popup_view_icon_nomal.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_1_MODE "function/T01_2_control_icon_screenmode03.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_1_MODE_PRESS "function/T01_2_control_icon_screenmode03_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_1_MODE_DIM "function/T01_2_control_icon_screenmode03_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_2_MODE "function/T01_2_control_icon_screenmode02.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_2_MODE_PRESS "function/T01_2_control_icon_screenmode02_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_2_MODE_DIM "function/T01_2_control_icon_screenmode02_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_3_MODE "function/T01_2_control_icon_screenmode.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_3_MODE_PRESS "function/T01_2_control_icon_screenmode_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_3_MODE_DIM "function/T01_2_control_icon_screenmode_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SCREEN_4_MODE "function/T01_2_control_icon_screenmode04.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_4_MODE_PRESS "function/T01_2_control_icon_screenmode04_press.png"
+#define VP_PLAY_NORMAL_RES_SCREEN_4_MODE_DIM "function/T01_2_control_icon_screenmode04_dim.png"
+
+#define VP_PLAY_NORMAL_RES_MULTI_MODE "function/T01_2_control_icon_multi_window.png"
+#define VP_PLAY_NORMAL_RES_MULTI_MODE_PRESS "function/T01_2_control_icon_multi_window_press.png"
+#define VP_PLAY_NORMAL_RES_MULTI_MODE_DIM "function/T01_2_control_icon_multi_window_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SHARE "function/T01_2_control_icon_share.png"
+#define VP_PLAY_NORMAL_RES_SHARE_PRESS "function/T01_2_control_icon_share_press.png"
+#define VP_PLAY_NORMAL_RES_SHARE_DIM "function/T01_2_control_icon_share_dim.png"
+
+#define VP_PLAY_NORMAL_RES_SOUND_ALIVE "function/T01_2_control_icon_soundalive.png"
+#define VP_PLAY_NORMAL_RES_SOUND_ALIVE_PRESS "function/T01_2_control_icon_soundalive_press.png"
+#define VP_PLAY_NORMAL_RES_SOUND_ALIVE_DIM "function/T01_2_control_icon_soundalive_dim.png"
+
+#define VP_PLAY_NORMAL_RES_REPEAT_OFF "function/T01_2_control_icon_repeat_mode.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_OFF_PRESS "function/T01_2_control_icon_repeat_mode_press.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_OFF_DIM "function/T01_2_control_icon_repeat_mode_dim.png"
+
+#define VP_PLAY_NORMAL_RES_REPEAT_ONE "function/T01_2_control_icon_repeat_once.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ONE_PRESS "function/T01_2_control_icon_repeat_once_press.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ONE_DIM "function/T01_2_control_icon_repeat_once_dim.png"
+
+#define VP_PLAY_NORMAL_RES_REPEAT_ALL "function/T01_2_control_icon_repeat_all.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ALL_PRESS "function/T01_2_control_icon_repeat_all_press.png"
+#define VP_PLAY_NORMAL_RES_REPEAT_ALL_DIM "function/T01_2_control_icon_repeat_all_dim.png"
+
+#define VP_PLAY_NORMAL_RES_TRIM "function/T01_2_control_icon_trim.png"
+#define VP_PLAY_NORMAL_RES_TRIM_PRESS "function/T01_2_control_icon_trim_press.png"
+#define VP_PLAY_NORMAL_RES_TRIM_DIM "function/T01_2_control_icon_trim_dim.png"
+
+#define VP_PLAY_NORMAL_RES_ROTATE "button/T01_2_icon_rotate.png"
+#define VP_PLAY_NORMAL_RES_ROTATE_PRESS "button/T01_2_icon_rotate_press.png"
+#define VP_PLAY_NORMAL_RES_ROTATE_DIM "button/T01_2_icon_rotate_dim.png"
+
+#define VP_PLAY_BOOKMARK_RES_ADD "bookmark/T01_2_icon_bookmark_add.png"
+#define VP_PLAY_BOOKMARK_RES_ADD_PRESS "bookmark/T01_2_icon_bookmark_add_press.png"
+#define VP_PLAY_BOOKMARK_RES_DEL "bookmark/T01_2_button_remove.png"
+#define VP_PLAY_BOOKMARK_RES_DEL_PRESS "bookmark/T01_2_button_remove_press.png"
+
+#define VP_PLAY_SENSOR_RES_TRUN_OVER_01 "sensor/B15_turn_over_01.png"
+#define VP_PLAY_SENSOR_RES_TRUN_OVER_02 "sensor/B15_turn_over_02.png"
+#define VP_PLAY_SENSOR_RES_TRUN_OVER_03 "sensor/B15_turn_over_03.png"
+
+#define VP_PLAY_CTX_ADD_TO_HOME "more/icon_add_to_home.png"
+#define VP_PLAY_CTX_CHAPTER_PREVIEW "more/icon_chapter_preview.png"
+#define VP_PLAY_CTX_DETAIL "more/icon_detail.png"
+#define VP_PLAY_CTX_DOWNLOAD "more/icon_download.png"
+#define VP_PLAY_CTX_SETTING "more/icon_setting.png"
+#define VP_PLAY_CTX_SHARE_VIA "more/icon_share_via.png"
+#define VP_PLAY_CTX_TRIM "more/icon_trim.png"
+#define VP_PLAY_CTX_CONNECTION_INFO "more/icon_nearbydevices.png"
+
+#define VP_PLAY_RES_BUTTON_ADD "button/T01-2_play_popup_icon_plus.png"
+#define VP_PLAY_RES_BUTTON_ADD_PRESS "button/T01-2_play_popup_icon_plus_press.png"
+
+#define VP_PLAY_RES_BUTTON_DEL "button/T01-2_play_popup_icon_minus.png"
+#define VP_PLAY_RES_BUTTON_DEL_PRESS "button/T01-2_play_popup_icon_minus_press.png"
+
+#define VP_PLAY_TAG_BUDDY_DEAFULT "tag/T01-1_Tag_buddy_settings_bg.png"
+
+#define VP_PLAY_NORMAL_RES_LOCK "button/T01_2_icon_lock.png"
+#define VP_PLAY_NORMAL_RES_LOCK_PRESS "button/T01_2_icon_lock_press.png"
+#define VP_PLAY_TAG_BUDDY_DEAFULT "tag/T01-1_Tag_buddy_settings_bg.png"
+#define VP_PLAY_TAG_BUDDY_LOGO "tag/T01_2_icon_tag_buddy_cplogo.PNG"
+#define VP_PLAY_TAG_BUDDY_LOGO_JP "tag/U07_weather_logo.png"
+
+#define VP_PLAY_NORMAL_RES_BLUETOOTH_HEADSET "button/T01_2_icon_bluetooth_headset.png"
+#define VP_PLAY_NORMAL_RES_EARPHONE "button/T02_icon_soundPath.png"
+#define VP_PLAY_NORMAL_RES_SPEAKER "button/T02_icon_speaker.png"
+#define VP_PLAY_NORMAL_RES_ICON_HDMI "button/T02_icon_speaker.png"
+#define VP_PLAY_NORMAL_RES_MIRRORING "button/T02_icon_speaker.png"
+#define VP_PLAY_NORMAL_RES_USB_AUDIOE "button/T02_icon_speaker.png"
+#define VP_PLAY_NORMAL_RES_DMC_ICON "mini_controller/A01_15_popup_No_device.png"
+
+#define VP_PLAY_NORMAL_AUDIO_ONLY_IMG "sound_only.png"
+#define VP_PLAY_NORMAL_AUDIO_ERROR_IMG "player_error_screen.png"
+
+#define VP_PLAY_BRIGHTNESS_POPUP_ICON_PATH "brightness/quick_icon_brightness_%02d.png"
+
+/* string resources */
+#define VP_PLAY_STRING_NO_TITLE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_NO_TITLE"))
+#define VP_PLAY_STRING_STREAMING_PLAYER ""
+
+#define VP_PLAY_STRING_UNABLE_TO_PLAY_VIDEO_DURING_CALL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"))
+
+#define VP_PLAY_STRING_ERROR_UNABLE_CAPTURE_DRM_CONTENT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_UNABLE_TO_CAPTURE"))//this id has been reomved from po file
+
+#define VP_PLAY_STRING_ERROR_UNSUPPORTED_AUDIO (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"))
+#define VP_PLAY_STRING_ERROR_UNSUPPORTED_VIDEO (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"))
+
+#define VP_PLAY_STRING_ERROR_FILE_NOT_EXIST (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_FILE_NOT_EXIST"))
+#define VP_PLAY_STRING_ERROR_UNABLE_PLAY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"))
+#define VP_PLAY_STRING_ERROR_UNSUPPORTED_FORMAT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"))
+#define VP_PLAY_STRING_ERROR_INVALID_URL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_INVALID_URL"))
+#define VP_PLAY_STRING_ERROR_CONNECTION_FAILED (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_CONNECTION_FAILED"))
+#define VP_PLAY_STRING_ERROR_BOOKMARK_LIST_FULL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"))//this id has been removed from po file
+#define VP_PLAY_STRING_ERROR_NO_SUBTITLE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"))
+#define VP_PLAY_STRING_ERROR_SUBTITLE_FAIL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_ERROR_OCCURRED_WITH_SUBTITLE_FILE"))
+#define VP_PLAY_STRING_SUBTITLE_OFF (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_OFF"))
+#define VP_PLAY_STRING_SUBTITLE_DONE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_TPLATFORM_ACBUTTON_DONE_ABB"))
+#define VP_PLAY_STRING_SUBTITLE_CANCEL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"))
+
+#define VP_PLAY_STRING_POPUP_SHARE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_SHARE"))
+#define VP_PLAY_STRING_POPUP_DELETE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_IOPT3_DELETE"))
+#define VP_PLAY_STRING_POPUP_DELETE_CONTENT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"))
+#define VP_PLAY_STRING_CANCEL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SK_CANCEL_ABB"))
+
+#define VP_PLAY_STRING_POPUP_AVAILABLE_DEVICES (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"))
+#define VP_PLAY_STRING_POPUP_SOUND_ALIVE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"))
+#define VP_PLAY_STRING_POPUP_SUBTITLE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"))
+#define VP_PLAY_STRING_POPUP_REPEAT_SETTING (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"))
+#define VP_PLAY_STRING_POPUP_AUDIO_TRACK (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"))
+#define VP_PLAY_STRING_POPUP_SETTINGS (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_HEADER_SETTINGS"))
+#define VP_PLAY_STRING_POPUP_PLAY_SPEED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_PLAY_SPEED"))//this id has been reomved from po file
+#define VP_PLAY_STRING_POPUP_CAPTURE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_CAPTURE"))//this id has been reomved from po file
+#define VP_PLAY_STRING_POPUP_TAG_BUDDY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_TAG_BUDDY"))//this id has been reomved from po file
+#define VP_PLAY_STRING_POPUP_EDIT_WEATHER_TAG (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_HEADER_EDIT_WEATHER_TAG_ABB"))//this id has been reomved from po file
+
+#define VP_PLAY_STRING_COM_PLAY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SK3_PLAY"))
+#define VP_PLAY_STRING_COM_PAUSE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_MUSIC_OPT_PAUSE"))
+#define VP_PLAY_STRING_COM_PREVIOUS (dgettext(VP_LOCAL_STR_PREFIX, "IDS_BR_SK_PREVIOUS"))
+#define VP_PLAY_STRING_COM_NEXT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_BR_SK_NEXT"))
+#define VP_PLAY_STRING_COM_VOLUME (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_VOLUME_M_SOUND"))
+#define VP_PLAY_STRING_COM_ROTATE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_ROTATE"))//this id has been reomved from po file
+#define VP_PLAY_STRING_COM_ON (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_ON"))
+#define VP_PLAY_STRING_COM_OFF (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_OFF"))
+#define VP_PLAY_STRING_COM_ENOUGH_MEMORY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"))
+
+#define VP_PLAY_STRING_COM_CLOSE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SK_CLOSE"))
+#define VP_PLAY_STRING_COM_CLOSE_IDS ("IDS_VIDEO_SK_CLOSE")
+#define VP_PLAY_STRING_COM_STOP_IDS ("IDS_COM_SK_STOP")
+#define VP_PLAY_STRING_COM_REFRESH (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BUTTON_REFRESH"))
+#define VP_PLAY_STRING_COM_REFRESH_IDS ("IDS_VIDEO_BUTTON_REFRESH")
+#define VP_PLAY_STRING_COM_SCAN_IDS ("IDS_COM_BUTTON_SCAN")
+#define VP_PLAY_STRING_COM_ERROR (dgettext(VP_LOCAL_STR_PREFIX, "IDS_CHATON_HEADER_ERROR_ABB"))
+#define VP_PLAY_STRING_COM_CANCEL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SK_CANCEL_ABB"))
+#define VP_PLAY_STRING_COM_CANCEL_IDS ("IDS_VIDEO_SK_CANCEL_ABB")
+#define VP_PLAY_STRING_COM_DONE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BUTTON_DONE"))
+#define VP_PLAY_STRING_COM_OK (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_SK_OK"))
+#define VP_PLAY_STRING_COM_OK_IDS ("IDS_COM_SK_OK")
+#define VP_PLAY_STRING_COM_YES (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_SK_YES"))
+#define VP_PLAY_STRING_COM_YES_IDS ("IDS_COM_SK_YES")
+#define VP_PLAY_STRING_COM_NO (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_SK_NO"))
+#define VP_PLAY_STRING_COM_NO_IDS ("IDS_COM_SK_NO")
+#define VP_PLAY_STRING_COM_LOW_BATTERY (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_LOW_BATTERY"))
+#define VP_PLAY_STRING_COM_DOWNLOAD (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BUTTON_DOWNLOAD"))
+#define VP_PLAY_STRING_COM_DETAILS (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_DETAILS"))
+#define VP_PLAY_STRING_COM_DEFAULT (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_DEFAULT"))
+#define VP_PLAY_STRING_COM_UNKNOWN (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_UNKNOWN"))
+#define VP_PLAY_STRING_COM_WAIT_BACK (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"))
+
+#define VP_PLAY_STRING_DETAIL_TITLE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_TITLE"))
+#define VP_PLAY_STRING_DETAIL_FORMAT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_FILE_FORMAT"))
+#define VP_PLAY_STRING_DETAIL_DATE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_HEADER_DATE"))
+#define VP_PLAY_STRING_DETAIL_SIZE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_SIZE"))
+#define VP_PLAY_STRING_DETAIL_RESOLUTION (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_RESOLUTION"))
+#define VP_PLAY_STRING_DETAIL_LATITUDE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_LATITUDE"))
+#define VP_PLAY_STRING_DETAIL_LONGITUDE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_LONGITUDE"))
+#define VP_PLAY_STRING_DETAIL_LOCATION (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_LOCATION"))
+
+
+#define VP_PLAY_STRING_SHARE_MESSAGE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_MESSAGE_ABB"))
+#define VP_PLAY_STRING_SHARE_EMAIL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_EMAIL_ABB"))
+#define VP_PLAY_STRING_SHARE_BLUETOOTH (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_BLUETOOTH"))
+#define VP_PLAY_STRING_SHARE_FTM (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_OPT1_WI_FI_DIRECT"))
+#define VP_PLAY_STRING_SHARE_FACEBOOK (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_FACEBOOK_ABB"))
+#define VP_PLAY_STRING_SHARE_YOUTUBE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_YOUTUBE_ABB"))
+#define VP_PLAY_STRING_SHARE_NFC (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_NFC"))
+#define VP_PLAY_STRING_SHARE_FILE_TRANSFER (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"))
+#define VP_PLAY_STRING_SHARE_DROPBOX (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_CLOUD"))
+
+#define VP_PLAY_STRING_SOUND_ALIVE_NORMAL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"))
+#define VP_PLAY_STRING_SOUND_ALIVE_VOICE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_VOICE"))
+#define VP_PLAY_STRING_SOUND_ALIVE_MOVIE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_MOVIES"))
+#define VP_PLAY_STRING_SOUND_ALIVE_71CH (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_VIRTUAL_71_CH"))//this id has been reomved from po file
+#define VP_PLAY_STRING_71CH_ONLY_EARPHONE _(dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"))
+
+#define VP_PLAY_STRING_SUBTITLE_SYNC (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_SYNCHRONIZE"))
+#define VP_PLAY_STRING_SUBTITLE_SELECT_SUBTITLES (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"))
+#define VP_PLAY_STRING_SUBTITLE_LANGUAGE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_LANGUAGE"))
+#define VP_PLAY_STRING_SUBTITLE_ALIGNMENT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_MBODY_ALIGNMENT"))
+#define VP_PLAY_STRING_SUBTITLE_FONT (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_FONT"))
+#define VP_PLAY_STRING_SUBTITLE_SIZE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_MBODY_FONT_SIZE"))
+
+#define VP_PLAY_STRING_SUBTITLE_EDGE ("Edge")
+#define VP_PLAY_STRING_SUBTITLE_COLOR_AND_OPACITY ("Color and opacity")
+#define VP_PLAY_STRING_SUBTITLE_OVERVIEW ("Overview")
+#define VP_PLAY_STRING_SUBTITLE_TEXT ("Text")
+#define VP_PLAY_STRING_SUBTITLE_OPACITY ("Opacity")
+#define VP_PLAY_STRING_SUBTITLE_BG_COLOR (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_BACKGROUND_COLOUR"))
+#define VP_PLAY_STRING_SUBTITLE_CAPTION_WINDOW ("Caption window")
+
+#define VP_PLAY_STRING_ALIGNMENT_LEFT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_LEFT_M_STATUS"))
+#define VP_PLAY_STRING_ALIGNMENT_CENTER (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_CENTRE_M_STATUS"))
+#define VP_PLAY_STRING_ALIGNMENT_RIGHT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_RIGHT_M_STATUS"))
+
+#define VP_PLAY_STRING_EDGE_NO_EDGE ("No edge")
+#define VP_PLAY_STRING_EDGE_RAISED ("Raised")
+#define VP_PLAY_STRING_EDGE_DEPRESSED ("Depressed")
+#define VP_PLAY_STRING_EDGE_UNIFORM ("Uniform")
+#define VP_PLAY_STRING_EDGE_DROP_SHADOW ("Drop shadow")
+
+
+#define VP_PLAY_STRING_SUBTITLE_SECS _(dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_PS_SECONDS"))//this is has been removed from po file
+
+#define VP_PLAY_STRING_SUBTITLE_SIZE_LARGE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_LARGE_M_STATUS"))
+#define VP_PLAY_STRING_SUBTITLE_SIZE_MEDIUM (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"))
+#define VP_PLAY_STRING_SUBTITLE_SIZE_SMALL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_SBODY_SMALL_M_STATUS"))
+
+#define VP_PLAY_STRING_SUBTITLE_COLOR_BLACK (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_BLACK"))//this is has been removed from po file
+#define VP_PLAY_STRING_SUBTITLE_COLOR_BLUE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_BLUE"))//this is has been removed from po file
+#define VP_PLAY_STRING_SUBTITLE_COLOR_GREEN (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_GREEN"))//this is has been removed from po file
+#define VP_PLAY_STRING_SUBTITLE_COLOR_WHITE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_WHITE"))//this is has been removed from po file
+#define VP_PLAY_STRING_SUBTITLE_COLOR_RED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_RED_ABB"))
+#define VP_PLAY_STRING_SUBTITLE_COLOR_YELLOW (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_YELLOW_M_COLOUR"))
+#define VP_PLAY_STRING_SUBTITLE_COLOR_MAGENTA (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_MAGENTA_M_COLOUR"))
+#define VP_PLAY_STRING_SUBTITLE_COLOR_CYAN (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_CYAN_M_COLOUR"))
+#define VP_PLAY_STRING_SUBTITLE_COLOR_CUSTOM (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_CUSTOM"))
+#define VP_PLAY_STRING_SUBTITLE_COLOR_NONE (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_NONE"))
+
+#define VP_PLAY_STRING_REPEAT_OFF (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_NO_REPEAT"))
+#define VP_PLAY_STRING_REPEAT_ALL_OFF (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"))
+#define VP_PLAY_STRING_REPEAT_ONE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"))
+#define VP_PLAY_STRING_REPEAT_ALL (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_REPEAT_ALL_ABB"))
+
+#define VP_PLAY_STRING_SOUND_PATH (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_HEADER_AUDIO_DEVICE_ABB"))
+#define VP_PLAY_STRING_SOUND_SPEAKER (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BUTTON_SPEAKER_ABB"))
+#define VP_PLAY_STRING_SOUND_EARJACK (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_OPT_HEADPHONES_ABB"))
+
+#define VP_PLAY_STRING_SETTINGS (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_HEADER_SETTINGS"))
+
+#define VP_PLAY_STRING_AUDIO_TRACK (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"))
+#define VP_PLAY_STRING_CONNECT_INFO (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_CONNECTION_INFO_ABB"))//this is has been removed from po file
+#define VP_PLAY_STRING_CHNAGE_PLAYER (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_OPT_CHANGE_PLAYER"))//this is has been removed from po file
+#define VP_PLAY_STRING_MY_DEVICE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_MY_DEVICE"))//this is has been removed from po file
+#define VP_PLAY_STRING_SELECT_DEVICE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_HEADER_SELECT_DEVICE_ABB"))//this is has been removed from po file
+#define VP_PLAY_STRING_UNABLE_TO_FF_REW (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"))
+
+#define VP_PLAY_STRING_DRM_UNABLE_TO_SHARE_DRM_FILE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"))
+#define VP_PLAY_STRING_DRM_PS_1_MORE_TIME_START_NOW_Q _(dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_START_NOW_Q"))
+#define VP_PLAY_STRING_DRM_PS_2_MORE_TIME_START_NOW_Q _(dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_YOU_CAN_USE_PS_2_MORE_TIMES_START_NOW_Q"))
+#define VP_PLAY_STRING_DRM_PS_FOR_PD_DAYS_START_NOW_Q _(dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_YOU_CAN_USE_PS_FOR_PD_DAYS_START_NOW_Q"))
+#define VP_PLAY_STRING_DRM_CURRENTLY_LOCKED_UNLOCK_Q _(dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_PS_CURRENTLY_LOCKED_UNLOCK_Q"))
+#define VP_PLAY_STRING_DRM_CAN_USE_1_MORE_TIME_GET_ANOTHER_LICENCE_Q (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_GET_ANOTHER_LICENCE_Q"))
+#define VP_PLAY_STRING_DRM_CANNOT_USE_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_YOU_CANNOT_USE_PS_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q"))
+#define VP_PLAY_STRING_DRM_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_POP_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q"))
+
+#define VP_PLAY_STRING_DIVX_DRM_AUTHORIZATION_ERROR "This phone is not authorized to play this DivX protected video."
+#define VP_PLAY_STRING_DIVX_DRM_RENTAL_EXPIRED_ERROR "This DivX rental has used %d of %d views. <br> This DivX rental has expired."
+#define VP_PLAY_STRING_DIVX_DRM_RENTAL_CONFIRMATION_CHOICE "This DivX rental has used %d of %d views. <br> Continue ?"
+
+#define VP_PLAY_STRING_NO_VIDEOS (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_BODY_NO_VIDEOS"))
+
+#define VP_PLAY_STRING_ACTIVATION (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_ACTIVATION"))
+
+#define VP_PLAY_STRING_SENSOR_TURN_PHONE_OVER_TO_MUTE (dgettext(VP_LOCAL_STR_PREFIX, "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS")) //maybe, it is not implemented yet.
+#define VP_PLAY_STRING_SENSOR_TURN_PHONE_OVER_TO_MUTE_IDS ("IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS")
+#define VP_PLAY_STRING_SENSOR_DONT_ASK_AGAIN (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BUTTON_DONT_ASK_AGAIN"))
+#define VP_PLAY_STRING_SENSOR_ENABLE_MOTION (dgettext(VP_LOCAL_STR_PREFIX, "IDS_MUSIC_BUTTON_ENABLE_MOTION")) // maybe, it is not implemented yet.
+#define VP_PLAY_STRING_SENSOR_ENABLE_MOTION_IDS ("IDS_MUSIC_BUTTON_ENABLE_MOTION")
+
+#define VP_VIDEO_STRING_EXIT_POPUP (dgettext(VP_LOCAL_STR_PREFIX, "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"))//this id has been removed from po file
+
+#define VP_VIDEO_PLAYER_TEXT (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_VIDEO_PLAYER"))
+
+
+#define VP_COM_BODY_KB (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_KB"))
+#define VP_COM_BODY_B (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_B"))
+#define VP_COM_BODY_MB (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_MB"))
+#define VP_COM_BODY_GB (dgettext(VP_SYS_STR_PREFIX, "IDS_COM_BODY_GB"))
+
+//this id has been reomved from po file
+#define VP_PLAY_STRING_PRIVACY_POPUP (dgettext(VP_LOCAL_STR_PREFIX, "IDS_ST_POP_P1SS_IS_DISABLED_IN_THIS_APPLICATION_TO_ENABLE_THIS_FUNCTION_GO_TO_P2SS_SELECT_THIS_FUNCTION_AND_THEN_SELECT_THIS_APPLICATION"))
+
+//need to support multi language
+#define VP_PLAY_STRING_SOUND_HDMI (dgettext(VP_LOCAL_STR_PREFIX,"IDS_VIDEO_OPT_HDMI"))
+#define VP_PLAY_STRING_SOUND_MIRRORING ("Mirroring")
+#define VP_PLAY_STRING_SOUND_USB_AUDIO ("USB Audio")
+
+#define VP_PLAY_STRING_PREVIEW_SUBTITLE_CC (dgettext(VP_LOCAL_STR_PREFIX, "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"))
+
+#define VP_PLAY_STRING_FONT_DEFAULT (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_DEFAULT_FONT"))
+#define VP_PLAY_STRING_FONT_UDRCOTHICM (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_UDRGOTHICM_M_FONT"))
+#define VP_PLAY_STRING_FONT_UDMINCHO (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_UDMINCHO_M_FONT"))
+#define VP_PLAY_STRING_FONT_POP (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_POP_M_FONT"))
+#define VP_PLAY_STRING_FONT_CHOCO_COOKY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"))
+#define VP_PLAY_STRING_FONT_COOL_JAZZ (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_COOL_JAZZ_M_FONT"))
+#define VP_PLAY_STRING_FONT_ROSEMARY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_ROSEMARY_M_FONT"))
+
+#ifdef K_FEATURE_MICROSEEK
+#define VP_PLAY_STRING_SCRUBBING_AT_PSX_SPEED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"))
+#endif
+
+#define VP_PLAY_STRING_PD_SECS (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_BODY_PD_SECS"))//not show in po
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+#define VP_PLAY_STRING_SELECTED_LANGUAGE ("Select at least one") //to support multi-language
+#endif
+
+#define VP_PLAY_STRING_TRIM_VIEW_MIN_TIME ("Duration must be longer that one second") //trim view
+
+#define VP_PLAY_STRING_UNABLE_TO_SCAN ("Unable to scan")
+#define VP_PLAY_STRING_UNABLE_TO_SCAN_FOR_THE_DEVICE ("Unable to scan for the device currently connected via Screen Mirroring while Wi-Fi tethering is enabled")
+#define VP_PLAY_STRING_DO_NOT_SHOW_AGAIN ("Do not show again")
+
+#define VP_PLAY_STRING_VIA_SCREEN_MIRRORING (dgettext(VP_LOCAL_STR_PREFIX, "IDS_DLNA_OPT_VIA_SCREEN_MIRRORING_ABB"))//now show in po
+#define VP_PLAY_STRING_VIA_HOME_NETWORK (dgettext(VP_LOCAL_STR_PREFIX, "IDS_DLNA_OPT_VIA_HOME_NETWORK_ABB"))//now show in po
+
+#define VP_PLAY_STRING_UNSUPPORTED_CODEC (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_THE_VIDEO_CODEC_IS_NOT_SUPPORTED"))
+#define VP_PLAY_STRING_VIDEO_CANNOT_PLAY (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"))
+#define VP_PLAY_STRING_VIDEO_CANNOT_PLAY_SUBTITLE_ERROR (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"))
+#define VP_PLAY_STRING_VIDEO_CORRUPTED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_THIS_FILE_IS_CORRUPTED"))
+#define VP_PLAY_STRING_VIDEO_CORRUPTED_OR_SDCARD_REMOVED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"))
+
+
+#define VP_PLAY_STRING_ERROR_ONLY_AUDIO_DATA_SUPPORTED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"))
+#define VP_PLAY_STRING_ERROR_ONLY_VIDEO_DATA_SUPPORTED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"))
+
+#define VP_PLAY_STRING_DETAIL_VALUE_UNKNOWN ("Unknown")
+#define VP_PLAY_STRING_DETAIL_LAST_MODIFIED (dgettext(VP_LOCAL_STR_PREFIX, "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"))
+
diff --git a/playview/src/include/vp-play-value-define.h b/playview/src/include/vp-play-value-define.h
new file mode 100644
index 0000000..05e331e
--- /dev/null
+++ b/playview/src/include/vp-play-value-define.h
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+/* SYSTEM KEY VALUE */
+#define VP_PAUSE_KEY "XF86AudioPause"
+#define VP_PLAY_KEY "XF86AudioPlay"
+#define VP_STOP_KEY "XF86AudioStop"
+#define VP_NEXT_KEY "XF86AudioNext"
+#define VP_PREV_KEY "XF86AudioPrev"
+#define VP_FORWARD_KEY "XF86AudioForward"
+#define VP_REWIND_KEY "XF86AudioRewind"
+#define VP_END_KEY "XF86Stop"
+#define VP_HOME_KEY "XF86Home"
+#define VP_KEY_CANCLE "Cancel"
+#define VP_POWER_KEY "XF86PowerOff"
+#define VP_MENU_KEY "XF86Menu"
+#define VP_BACK_KEY "XF86Back"
+#define VP_MEDIA_KEY "XF86AudioMedia"
+#define VP_SCREENSAVER_KEY "XF86ScreenSaver"
+
+#define VP_PLAYPAUSE_KEY "XF86AudioPlayPause"
+#define VP_PLAY_NEXT_SONG_KEY "XF86AudioNext"
+#define VP_PLAY_PREV_SONG_KEY "XF86AudioPrev"
+
+#define VP_VOLUME_DOWN_KEY "XF86AudioLowerVolume"
+#define VP_VOLUME_UP_KEY "XF86AudioRaiseVolume"
+#define VP_VOLUME_MUTE "XF86AudioMute"
+
+#define VP_KEY_GRAB_SHARED SHARED_GRAB
+#define VP_KEY_GRAB_EXCLUSIVE EXCLUSIVE_GRAB
+#define VP_KEY_GRAB_TOP_POSITION TOP_POSITION_GRAB
+#define VP_KEY_GRAB_OR_EXCLUSIVE OR_EXCLUSIVE_GRAB
+
+#define VP_URL_LEN_MAX 4096
+#define VP_STRING_LEN_MAX 4096
+
+#define VP_BOOKMARK_ITEM_MAX_COUNT 15
+
+#define VP_THUMB_DEFAULT_WIDTH 176
+#define VP_THUMB_DEFAULT_HEIGHT 144
+
+#define VP_POPUP_MIN_ITEMS 4
+#define VP_POPUP_LIST_LOADING_HEIGHT 76
+#define VP_POPUP_LIST_CLOSED_CAPTION_HEIGHT 72
+#define VP_POPUP_TITLE_HEIGHT 72
+#define VP_POPUP_BUTTON_HEIGHT 72
+
+#define VP_POPUP_MAX_HEIGHT 290
+#define VP_POPUP_NO_TITLE_MAX_HEIGHT (VP_POPUP_MAX_HEIGHT-VP_POPUP_TITLE_HEIGHT)
+#define VP_POPUP_HEIGHT(height) (((height) > VP_POPUP_NO_TITLE_MAX_HEIGHT) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT) : (height))
+#define VP_POPUP_LIST_HEIGHT(count) 45*count
+#define VP_POPUP_LIST_2_TEXT_HEIGHT(count) (((140*count) > VP_POPUP_NO_TITLE_MAX_HEIGHT) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT) : (140*count))
+#define VP_POPUP_LIST_2_TEXT_1_ICON_HEIGHT(count) (((135*count-1) > VP_POPUP_NO_TITLE_MAX_HEIGHT) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT) : (135*count-1))
+#define VP_POPUP_LOADING_LIST_HEIGHT(count) (((140*count+VP_POPUP_LIST_LOADING_HEIGHT) > 840) ? 840/*common box height video,gallery,image viewer (1080+VP_POPUP_LIST_LOADING_HEIGHT)*/ : (140*count+VP_POPUP_LIST_LOADING_HEIGHT))
+#define VP_POPUP_SUBTITLE_2_TEXT_HEIGHT(count) (((135*count-1) > VP_POPUP_NO_TITLE_MAX_HEIGHT) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT) : (135*count-1))
+#define VP_POPUP_LIST_2_TEXT_HEIGHT_DETAIL(count) (((134*count-1) > VP_POPUP_NO_TITLE_MAX_HEIGHT) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT) : (135*count-1))
+
+#define VP_POPUP_MAX_HEIGHT_L 255
+#define VP_POPUP_NO_TITLE_MAX_HEIGHT_L (VP_POPUP_MAX_HEIGHT_L-VP_POPUP_TITLE_HEIGHT)
+#define VP_POPUP_HEIGHT_L(height) (((height) > VP_POPUP_NO_TITLE_MAX_HEIGHT_L) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT_L) : (height))
+#define VP_POPUP_LIST_HEIGHT_L(count) 45*count
+#define VP_POPUP_LIST_2_TEXT_HEIGHT_L(count) (((140*count) > VP_POPUP_NO_TITLE_MAX_HEIGHT_L) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT_L) : (140*count))
+#define VP_POPUP_LIST_2_TEXT_1_ICON_HEIGHT_L(count) (((135*count-1) > VP_POPUP_NO_TITLE_MAX_HEIGHT_L) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT_L) : (135*count-1))
+#define VP_POPUP_LOADING_LIST_HEIGHT_L(count) (((140*count+VP_POPUP_LIST_LOADING_HEIGHT) > 468) ? 468/*common box height video,gallery,image viewer (520+VP_POPUP_LIST_LOADING_HEIGHT)*/ : (140*count+VP_POPUP_LIST_LOADING_HEIGHT))
+#define VP_POPUP_SUBTITLE_2_TEXT_HEIGHT_L(count) (((135*count-1) > VP_POPUP_NO_TITLE_MAX_HEIGHT_L) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT_L) : (135*count-1))
+#define VP_POPUP_LIST_2_TEXT_HEIGHT_DETAIL_L(count) (((134*count-1) > VP_POPUP_NO_TITLE_MAX_HEIGHT_L) ? (VP_POPUP_NO_TITLE_MAX_HEIGHT_L) : (134*count-1))
+
+
+#define VP_POPUP_LIST_WIDTH 200
+
+
+#define PROGRESSBAR_TIME_LENGTH 9
+#define PROGRESSBAR_TIME_FORMAT "02u:%02u:%02u"
+
+#define PROGRESSBAR_TIME_ARGS(t) \
+ (t) / (60 * 60), \
+ ((t) / 60) % 60, \
+ (t) % 60
+
+
+#define VP_ACCUMULATED_DATE 86400
+#define VP_RO_MESSAGE_LEN 1024
+#define VP_MOUNTH_COUNT 12
+#define VP_DAY_COUNT 30
+#define VP_HOUR_COUNT 24
+
+#define VP_SUBTITLE_SIZE_SMALL_VALUE 24
+#define VP_SUBTITLE_SIZE_MEDIUM_VALUE 32
+#define VP_SUBTITLE_SIZE_LARGE_VALUE 40
+
+#define BYTE_SIZE 1024
+#define VP_MB(x) ((x) << 20)
+
+#define VP_FILE_ENTRY_LEN_MAX 255
+#define VP_FILE_ENTRY_CHAR_LEN_MAX 50
+#define VP_FILE_TRIM_DURATION_MIN 1000
+
+#define VP_PORTRAIT_H 1280
+#define VP_MULTI_WIDGET_W 116
+#define VP_MULTI_WIDGET_H 572
+#define VP_MULTI_WIDGET_PADDING_W 10
+#define VP_MULTI_WIDGET_START_H (-275)
+#define VP_MULTI_WIDGET_END_H 440
+#define VP_MULTI_WIDGET_SCALE 0.5
+#define VP_MULTI_VOLUM_W 116
+#define VP_MULTI_VOLUM_H 635
+
+#define VP_DETAIL_VALUE_GPS_DEFAULT -200.0
+
+/* Kiran Share operation */
+#define VP_SHARE_OPERATION_SINGLE "http://tizen.org/appcontrol/operation/share"
+#define VP_SHARE_OPERATION_MULTIPLE "http://tizen.org/appcontrol/operation/multi_share"
+#define VP_SHARE_SVC_FILE_PATH "http://tizen.org/appcontrol/data/path"
diff --git a/playview/src/view/include/vp-play-multi-view.h b/playview/src/view/include/vp-play-multi-view.h
new file mode 100644
index 0000000..092d4df
--- /dev/null
+++ b/playview/src/view/include/vp-play-multi-view.h
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+#include "vp-play-view-priv.h"
+
+typedef void *multi_view_handle;
+
+multi_view_handle vp_play_multi_view_create(PlayView *pPlayView, video_play_launching_type_t nLaunchingType);
+void vp_play_multi_view_destroy(multi_view_handle pViewHandle);
+bool vp_play_multi_view_realize(multi_view_handle pViewHandle);
+bool vp_play_multi_view_unrealize(multi_view_handle pViewHandle);
+bool vp_play_multi_view_is_realize(multi_view_handle pViewHandle, bool *bIsRealize);
+bool vp_play_multi_view_set_url(multi_view_handle pViewHandle, const char *szMediaURL);
+bool vp_play_multi_view_pause(multi_view_handle pViewHandle);
+bool vp_play_multi_view_resume(multi_view_handle pViewHandle);
+bool vp_play_multi_view_resume_or_pause(multi_view_handle pViewHandle);
+bool vp_play_multi_view_next_play(multi_view_handle pViewHandle);
+bool vp_play_multi_view_prev_play(multi_view_handle pViewHandle);
+bool vp_play_multi_view_set_start_position(multi_view_handle pViewHandle, int nStartPosition);
+bool vp_play_multi_view_get_last_position(multi_view_handle pViewHandle, int *nCurPosition);
+bool vp_play_multi_view_set_subtitle(multi_view_handle pViewHandle, char *szSubtitle);
+bool vp_play_multi_view_get_subtitle(multi_view_handle pViewHandle, char **szSubtitle);
+bool vp_play_multi_view_get_audio_track(multi_view_handle pViewHandle, int *nAudioTrack);
+bool vp_play_multi_view_set_audio_track(multi_view_handle pViewHandle, int nAudioTrack);
+bool vp_play_multi_view_set_manual_pause(multi_view_handle pViewHandle, bool bManualPause);
+bool vp_play_multi_view_get_manual_pause(multi_view_handle pViewHandle, bool *bManualPause);
+bool vp_play_multi_view_set_rotate(multi_view_handle pViewHandle, video_play_rotate_t nRotate);
+bool vp_play_multi_view_set_launching_mode(multi_view_handle pViewHandle, video_play_launching_type_t nLaunchingType);
+bool vp_play_multi_view_get_sound_filter(multi_view_handle pViewHandle, video_sound_alive_t *nSoundAlive);
+bool vp_play_multi_view_set_sound_filter(multi_view_handle pViewHandle, video_sound_alive_t nSoundAlive);
+
+bool vp_play_multi_view_update(multi_view_handle pViewHandle);
+bool vp_play_multi_view_volume_increase(multi_view_handle pViewHandle);
+bool vp_play_multi_view_volume_decrease(multi_view_handle pViewHandle);
+void vp_play_multi_view_web_type_disconnect(multi_view_handle pViewHandle);
+void vp_play_multi_view_web_type_reconnect(multi_view_handle pViewHandle);
+void vp_play_multi_view_set_cancelkey_press(multi_view_handle pViewHandle, bool bCancelKeyPress);
+void vp_play_multi_view_get_cancelkey_press(multi_view_handle pViewHandle, bool *bCancelKeyPress);
+void vp_play_multi_view_destroy_exit_popup(multi_view_handle pViewHandle);
+
+bool vp_play_multi_view_get_main_layout_show_state(multi_view_handle *pViewHandle);
+bool vp_play_multi_view_get_main_layout_focus_state(multi_view_handle *pViewHandle);
+void vp_play_multi_view_show_main_layout(multi_view_handle *pViewHandle);
+void vp_play_multi_view_ff_rew_keyboard_longpress_event_cb(multi_view_handle pViewHandle, bool bRelease, bool bFFseek);
+
+//Focus UI
+void vp_play_multi_view_set_main_layout_focus_out(multi_view_handle *pViewHandle);
+void vp_play_multi_view_set_main_layout_focus_in(multi_view_handle *pViewHandle);
+
+bool vp_play_multi_view_change_to_normal_view(multi_view_handle pViewHandle);
+
diff --git a/playview/src/view/include/vp-play-normal-view.h b/playview/src/view/include/vp-play-normal-view.h
new file mode 100644
index 0000000..e34e9b4
--- /dev/null
+++ b/playview/src/view/include/vp-play-normal-view.h
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+
+
+#include "vp-play-view-priv.h"
+
+typedef enum
+{
+ VP_PLAY_NORMAL_VIEW_POPUP_NONE = 0,
+ VP_PLAY_NORMAL_VIEW_CTX_POPUP,
+ VP_PLAY_NORMAL_VIEW_OTHER_POPUP,
+}vp_normalview_popup_style_e;
+
+typedef void *normal_view_handle;
+
+typedef void (*vp_normal_view_state_cb) (void *pUserData, int nState);
+
+normal_view_handle vp_play_normal_view_create(PlayView *pPlayView, video_play_launching_type_t nLaunchingType);
+void vp_play_normal_view_destroy(normal_view_handle pViewHandle);
+bool vp_play_normal_view_realize(normal_view_handle pViewHandle);
+bool vp_play_normal_view_unrealize(normal_view_handle pViewHandle);
+bool vp_play_normal_view_is_realize(normal_view_handle pViewHandle, bool *bIsRealize);
+bool vp_play_normal_view_pause(normal_view_handle pViewHandle);
+bool vp_play_normal_view_resume(normal_view_handle pViewHandle);
+bool vp_play_normal_view_resume_or_pause(normal_view_handle pViewHandle);
+bool vp_play_normal_view_next_play(normal_view_handle pViewHandle);
+bool vp_play_normal_view_prev_play(normal_view_handle pViewHandle);
+bool vp_play_normal_view_set_url(normal_view_handle pViewHandle, const char *szMediaURL);
+bool vp_play_normal_view_set_video_only(normal_view_handle pViewHandle, bool bVideoOnly);
+bool vp_play_normal_view_get_video_only(normal_view_handle pViewHandle, bool *bVideoOnly);
+bool vp_play_normal_view_set_device_unplug_interrupt(normal_view_handle pViewHandle, bool bDeviceUnplugInterrupt);
+bool vp_play_normal_view_set_rotate(normal_view_handle pViewHandle, video_play_rotate_t nRotate, bool bLayoutHide);
+bool vp_play_normal_view_set_launching_mode(normal_view_handle pViewHandle, video_play_launching_type_t nLaunchingType);
+bool vp_play_normal_view_set_start_position(normal_view_handle pViewHandle, int nStartPosition);
+bool vp_play_normal_view_get_last_position(normal_view_handle pViewHandle, int *nCurPos);
+bool vp_play_normal_view_set_update_last_position(normal_view_handle pViewHandle);
+bool vp_play_normal_view_set_subtitle(normal_view_handle pViewHandle, char *szSubtitle);
+bool vp_play_normal_view_get_subtitle(normal_view_handle pViewHandle, char **szSubtitle);
+bool vp_play_normal_view_get_audio_track(normal_view_handle pViewHandle, int *nAudioTrack);
+bool vp_play_normal_view_get_video_duration(normal_view_handle pViewHandle, int *nDuration);
+bool vp_play_normal_view_set_audio_track(normal_view_handle pViewHandle, int nAudioTrack);
+bool vp_play_normal_view_set_manual_pause(normal_view_handle pViewHandle, bool bStartPause);
+bool vp_play_normal_view_get_manual_pause(normal_view_handle pViewHandle, bool *bManualPause);
+bool vp_play_normal_view_get_pause_status(normal_view_handle pViewHandle, bool *bPause);
+bool vp_play_normal_view_get_sound_filter(normal_view_handle pViewHandle, video_sound_alive_t *nSoundAlive);
+bool vp_play_normal_view_set_sound_filter(normal_view_handle pViewHandle, video_sound_alive_t nSoundAlive);
+bool vp_play_normal_view_update(normal_view_handle pViewHandle);
+bool vp_play_normal_view_rotate_update(normal_view_handle pViewHandle);
+bool vp_play_normal_view_set_share_panel_state(normal_view_handle pViewHandle);
+bool vp_play_normal_view_on_more_menu(normal_view_handle pViewHandle);
+bool vp_play_normal_view_volume_increase(normal_view_handle pViewHandle);
+bool vp_play_normal_view_volume_decrease(normal_view_handle pViewHandle);
+bool vp_play_normal_view_volume_mute(normal_view_handle pViewHandle);
+bool vp_play_normal_view_volume_update(normal_view_handle pViewHandle);
+bool vp_play_normal_view_set_lock_screen(normal_view_handle pViewHandle, bool bLock);
+bool vp_play_normal_view_get_lock_screen(normal_view_handle pViewHandle, bool *bLock);
+void vp_play_normal_view_hide_sound_popup(normal_view_handle pViewHandle);
+void vp_play_normal_view_web_type_disconnect(normal_view_handle pViewHandle);
+void vp_play_normal_view_web_type_reconnect(normal_view_handle pViewHandle);
+void vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(normal_view_handle pViewHandle, bool bRelease, bool bFFseek);
+bool vp_play_normal_view_get_volume_state(normal_view_handle *pViewHandle);
+bool vp_play_normal_view_get_main_layout_show_state(normal_view_handle *pViewHandle);
+vp_normalview_popup_style_e vp_play_normal_view_get_popup_show_state(normal_view_handle *pViewHandle);
+bool vp_play_normal_view_set_tagbuddy_on(normal_view_handle pViewHandle, bool bTagBuddyOn);
+void vp_play_normal_view_show_volume_popup(void *pPlayview);
+void vp_play_normal_view_pause_player(void *pPlayview);
+void vp_play_normal_view_key_create(PlayView *pPlayView, normal_view_handle pViewHandle);
+bool vp_play_normal_view_player_state_changed_get(normal_view_handle pViewHandle);
+bool vp_play_normal_view_stop_player(normal_view_handle pViewHandle);
+bool vp_play_normal_view_play_start(normal_view_handle pViewHandle);
+//Focus UI
+void vp_play_normal_view_set_main_layout_focus_out(normal_view_handle *pViewHandle);
+void vp_play_normal_view_set_main_layout_focus_in(normal_view_handle *pViewHandle);
+bool vp_play_normal_view_get_main_layout_focus_state(normal_view_handle *pViewHandle);
+void vp_play_normal_view_show_main_layout(normal_view_handle *pViewHandle);
+void vp_play_normal_view_set_resume_or_pause(normal_view_handle *pViewHandle);
+void vp_play_normal_view_create_main_layout_hide_timer(normal_view_handle *pViewHandle);
+
+
+//for minicontroller
+bool vp_controller_play_normal_view_pause(normal_view_handle pViewHandle);
+bool vp_controller_play_normal_view_resume(normal_view_handle pViewHandle);
+bool vp_controller_play_normal_view_next_play(normal_view_handle pViewHandle);
+bool vp_controller_play_normal_view_prev_play(normal_view_handle pViewHandle);
+char *vp_controller_normal_view_get_thumbnail(normal_view_handle pViewHandle);
+char *vp_controller_normal_view_get_title(normal_view_handle pViewHandle);
+int vp_controller_normal_view_get_duration(normal_view_handle pViewHandle);
+bool vp_controller_normal_view_pop_view(normal_view_handle pViewHandle);
+int vp_controller_normal_view_get_played_state(normal_view_handle pViewHandle);
+bool vp_controller_normal_view_add_played_state_cb(normal_view_handle pViewHandle, vp_normal_view_state_cb fState_cb);
+
+//db
+void vp_play_normal_view_db_change(normal_view_handle pViewHandle);
+
diff --git a/playview/src/view/include/vp-play-view-priv.h b/playview/src/view/include/vp-play-view-priv.h
new file mode 100644
index 0000000..7a05e29
--- /dev/null
+++ b/playview/src/view/include/vp-play-view-priv.h
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <glib.h>
+#include <stdbool.h>
+#include <Elementary.h>
+#include <Ecore_X.h>
+#include <net_connection.h>
+
+#include "vp-play-view.h"
+#include "vp-play-type-define.h"
+
+typedef struct _PlayViewFunc {
+ void (*vp_play_func_change_mode) (void *pViewHandle, video_play_mode_t nMode, const char *szMediaURL, int nStartPos, bool bManualPause);
+ void (*vp_play_func_exit) (void *pViewHandle);
+}PlayViewFunc;
+
+typedef struct _PlayViewCbFunc {
+ vp_play_view_realize_cb pRealizeCb;
+ vp_play_view_destroy_cb pDestroyCb;
+ vp_play_view_event_key_down_cb pEventKeyDown;
+ vp_play_view_event_key_up_cb pEventKeyUp;
+}PlayViewCbFunc;
+
+typedef struct _PlayView {
+ Evas_Object *pParent;
+ Evas_Object *pWin;
+ Ecore_X_Window nXwinID;
+ Ecore_X_Display *pXDisp;
+ Ecore_X_Window nCallerXwinID;
+
+ bool bAVRCP;
+ bool bWifi;
+
+ bool bStoreDownload;
+ bool bStopAfterRepeat;
+ double dStoreDL_FileSize;
+ char *pStoreOrderId;
+ char *pStoreServerId;
+ char *pStoreAppId;
+ char *pStoreMvId;
+
+ char *szCookie;
+ char *szProxy;
+
+ Evas_Object *pBackground;
+ Evas_Object *pRenderRect;
+ Evas_Object *pConformant;
+ Evas_Object *pMainLayout;
+ Evas_Object *pNaviframe;
+
+ Ecore_Event_Handler *pKeyEventDown;
+ Ecore_Event_Handler *pKeyEventUp;
+ Ecore_Event_Handler *pFocusIn;
+ Ecore_Event_Handler *pFocusOut;
+ Ecore_Event_Handler *pVisiblility;
+ Ecore_Event_Handler *pClientMessage;
+ Ecore_Event_Handler *pDeleteRequest;
+ Ecore_Event_Handler *pPropertyHandler;
+ Ecore_Event_Handler *pMouseInHandler;
+ Ecore_Event_Handler *pMouseOutHandler;
+ Ecore_Event_Handler *pCallerWinEventHandler;
+ Ecore_Event_Handler *pPalmHoldEventHandler;
+
+ Ecore_Pipe *pNotiPipe;
+
+ Ecore_Timer *pSbeamTimer;
+ Ecore_Timer *pVolumeTimer;
+ Ecore_Idler *pHideIdler; //used for hide win
+
+ bool bVolumeIncrease;
+ bool bViewChange;
+ bool bMouseOut;
+ bool bVisible;
+ Ecore_Timer *pMediaLongPressTimer;
+ Ecore_Timer *pMediaKeyTimer;
+ int nMediaKeyPressCount;
+
+ void *pUserData;
+
+ void *pNormalView;
+ void *pMultiView;
+
+ void *pSmartPause;
+ Ecore_Timer *pSmartPauseStartTimer;
+ Ecore_Timer *pSmartPauseEndTimer;
+
+ void *pSensorHandle;
+ void *pSensorPopup;
+
+ GList *pMultiPathList;
+
+ char *szMediaURL;
+ char *szMediaTitle;
+ char *szDeviceID;
+ char *szDMRID;
+
+ int nStartPosition;
+ int nDuration;
+ bool bStartPause;
+ bool bRealized;
+ bool bActivate;
+ bool bDestroy;
+
+ int nAudioIndex;
+ char *szSubtitleURL;
+ bool bManualAppPause;
+
+ video_play_mode_t nPlayMode;
+ video_play_launching_type_t nLaunchingType;
+ video_play_rotate_t nRotate;
+ video_sound_alive_t nSoundAlive;
+ video_play_list_type_t nListType;
+
+ bool bPopupMode;
+ bool bTrimExit;
+ bool bRelaunchCaller;
+
+ PlayViewCbFunc *pCallback;
+ PlayViewFunc *pFunc;
+
+ void *pHollICHandle;
+ bool bKeySpeed;
+ double fPlaySpeed;
+ float fSubtitleSyncValue;
+
+ Ecore_Timer *pHwKeyLongPressTimer;// for longpress HW key
+ Ecore_Timer *pDbUpdateTimer; //db Update
+ connection_h connection;
+} PlayView;
+
diff --git a/playview/src/view/vp-play-multi-view.c b/playview/src/view/vp-play-multi-view.c
new file mode 100644
index 0000000..b04f61b
--- /dev/null
+++ b/playview/src/view/vp-play-multi-view.c
@@ -0,0 +1,4840 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Ecore.h>
+#include <Ecore_Evas.h>
+#include <Ecore_Input.h>
+#include <Ecore_X.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-multi-view.h"
+
+#include "vp-play-popup.h"
+#include "vp-play-subtitle.h"
+#include "vp-play-loading-ani.h"
+#include "vp-play-util.h"
+#include "vp-play-button.h"
+#include "vp-play-config.h"
+#include "vp-play-preference.h"
+
+#include "vp-mm-player.h"
+
+#include "vp-media-contents.h"
+#include "vp-device.h"
+#include "vp-media-key.h"
+#include "vp-sound.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "vp-drm.h"
+#endif
+#include "vp-multi-path.h"
+
+#include "VppDownload.h"
+#include "vp-play-ug.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+
+#define VP_MULTI_DEFAULT_WIDTH ((3+60+342+3) * elm_config_scale_get())
+#define VP_MULTI_DEFAULT_HEIGHT ((3+60+342+3) * elm_config_scale_get())
+#define VP_MULTI_HIDE_LAYOUT_TIMER_INTERVAL 5.0
+#define VP_MULTI_LONG_PRESS_TIMER_INTERVAL 1.0
+
+#define VP_MULTI_SPEED_VALUE_MAX 64
+
+typedef struct _MultiView {
+ PlayView *pPlayView;
+
+ Evas_Object *pWin;
+ Ecore_X_Window nXwinID;
+ Evas_Object *pNaviFrame;
+ Elm_Object_Item *pNaviItem;
+
+ Evas_Object *pLayout;
+ Evas_Object *pVideoSink;
+
+ Evas_Object *pExitBtn;
+ Evas_Object *pFullSizeBtn;
+ Evas_Object *pMinSizeBtn;
+ Evas_Object *pResizeBtn;
+
+ Evas_Object *pImageBufferObj;
+
+ Evas_Object *pPlayBtn;
+ Evas_Object *pPauseBtn;
+ Evas_Object *pPlayFocusBtn;
+ Evas_Object *pPrevBtn;
+ Evas_Object *pNextBtn;
+ Evas_Object *pExitPopupWin;
+ Evas_Object *pPopup;
+ Evas_Object *pMainEventRect;
+ Evas_Object *pGestureRect;
+
+ Evas_Object *pLoadingAni;
+
+ Ecore_Timer *pHideTimer;
+
+ Ecore_Event_Handler *pMouseDownHandle;
+ Ecore_Event_Handler *pMouseUpHandle;
+ Ecore_Event_Handler *pMouseMoveHandle;
+ Ecore_Event_Handler *pConfigureNotify;
+
+ GList *pMediaItemList;
+ video_play_repeat_mode_t nRepeatMode;
+ video_play_launching_type_t nLaunchingType;
+
+ Ecore_Idler *pControlIdler;
+
+ mm_player_handle pPlayerHandle;
+
+ char *szMediaURL;
+ char *szSubtitleURL;
+
+ int nStartPosition;
+ int nCurPosition;
+ bool bManualPause;
+
+ bool bShowLayout;
+ bool bMainFocusState;
+ bool bReapeatMode;
+ bool bActivate;
+ bool bIsRealize;
+ bool bFloatingMode;
+ bool bIsResizeDone;
+ bool bNoContentMode;
+
+ bool bBufferingComplete;
+
+ vp_mm_player_state_t nPlayerState;
+
+ unsigned int nMousePosX;
+ unsigned int nMousePosY;
+ unsigned int nMouseButtons;
+
+ bool bTabStart;
+ bool bMouseDown;
+ video_sound_alive_t nSoundAlive;
+
+ video_play_rotate_t nRotate;
+ media_key_handle pMediaKey;
+
+ VppDownloadHandle pDownloadHandle;
+
+ subtitle_handle pSubtitle;
+ Ecore_Timer *pSubtitleTimer;
+ bool bIsExistSubtitle;
+
+ Evas_Coord_Rectangle nVideoSinkRect;
+
+ bool bSeekComplete;
+ int nDuration;
+ bool bHLSMode;
+
+ Ecore_Timer *pSpeedTimer;
+ bool bSpeedFF;
+ int nSpeedValue;
+ bool bSpeedDown;
+
+ int nAudioTrackIndex;
+
+ bool bCancelKeyPress;
+ double fPlaySpeed;
+ float fSubtitleSyncValue;
+ Ecore_Pipe *pPreparePipe;
+} MultiView;
+
+static bool _vp_play_multi_view_play_start(MultiView *pMultiView,
+ bool bCheckDRM);
+static void _vp_play_multi_view_on_next_play(MultiView *pMultiView,
+ bool bManual);
+static void _vp_play_multi_view_on_prev_play(MultiView *pMultiView,
+ bool bManual, bool bVoice);
+static void _vp_play_multi_view_set_preview(MultiView *pMultiView);
+static void _vp_play_multi_view_set_played_time(MultiView *pMultiView);
+static bool _vp_play_multi_view_check_during_call(MultiView *pMultiView);
+
+static Evas_Object *_vp_play_multi_view_create_image_sink(void *pParent,
+ void
+ *pUserData);
+
+static void _vp_play_multi_view_set_play_state(MultiView *pMultiView);
+static void _vp_play_multi_view_show_layout(MultiView *pMultiView);
+static void _vp_play_multi_view_hide_layout(MultiView *pMultiView);
+static void _vp_play_multi_view_create_layout_hide_timer(MultiView *
+ pMultiView);
+static void _vp_play_multi_view_destroy_handle(MultiView *pMultiView);
+static void _vp_play_multi_view_speed_for_steps(MultiView *pMultiView,
+ bool bSpeedFF);
+
+//Focus UI
+static void _vp_play_multi_view_set_button_focus_sequence(MultiView *
+ pMultiView);
+
+/* callback functions */
+
+static Eina_Bool __vp_multi_hide_layout_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ return EINA_FALSE;
+ }
+
+ _vp_play_multi_view_hide_layout(pMultiView);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_multi_subtitle_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSubtitleTimer);
+
+ vp_play_subtitle_set_text(pMultiView->pSubtitle, NULL);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_multi_speed_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+
+ if (pMultiView->bSpeedDown) {
+ pMultiView->nSpeedValue++;
+ }
+ //SPEED: *2, *4, *8, *16, *32
+ int nSeedVal = pMultiView->nSpeedValue;
+
+ int nStep = (int) pow(2.0, (double)(nSeedVal - 1));
+
+ VideoLogWarning("pMultiView->nSpeedValue : %d",
+ pMultiView->nSpeedValue);
+ if (pMultiView->nSpeedValue >= 2) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_SHOW, "*");
+ } else {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (pMultiView->bManualPause == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state
+ (pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ }
+ return EINA_FALSE;
+ }
+
+ if (nStep > VP_MULTI_SPEED_VALUE_MAX) {
+ nStep = VP_MULTI_SPEED_VALUE_MAX;
+ }
+
+ char szTxt[5] = { 0, };
+ snprintf(szTxt, 5, "%d X", nStep);
+ elm_object_part_text_set(pMultiView->pLayout,
+ VP_PLAY_PART_MULTI_SPEED_TXT, szTxt);
+
+ if (pMultiView->bSeekComplete == FALSE) {
+ VideoLogError("bSeekComplete is fail");
+ return EINA_TRUE;
+ }
+
+ if (pMultiView->bManualPause == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pMultiView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ return EINA_TRUE;
+ }
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ }
+
+ int nSetPosition = 0;
+ int nCurPosition = 0;
+
+ if (!vp_mm_player_get_position
+ (pMultiView->pPlayerHandle, &nCurPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return EINA_TRUE;
+ }
+
+ if (pMultiView->nDuration <= nCurPosition) {
+ VideoLogError("nCurPosition : %d, Duration : %d", nCurPosition,
+ pMultiView->nDuration);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ return EINA_FALSE;
+ }
+
+ if (nCurPosition <= 0 && pMultiView->bSpeedFF == FALSE) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pMultiView->bManualPause == FALSE
+ && pMultiView->bSpeedDown == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state
+ (pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+ }
+
+ if (pMultiView->bSpeedFF) {
+ nSetPosition = nCurPosition + (nStep * 1000);
+ } else {
+ nSetPosition = nCurPosition - (nStep * 1000);
+ }
+
+ if (pMultiView->nDuration < nSetPosition) {
+ nSetPosition = pMultiView->nDuration;
+ }
+
+ if (nSetPosition < 0) {
+ nSetPosition = 0;
+ }
+
+ if (vp_mm_player_set_position
+ (pMultiView->pPlayerHandle, nSetPosition)) {
+ pMultiView->bSeekComplete = FALSE;
+ pMultiView->nCurPosition = nSetPosition;
+ }
+
+ return EINA_TRUE;
+}
+
+static void __vp_multi_error_popup_time_out_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+}
+
+static void __vp_multi_drm_yes_button_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pObj == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_DEL(pObj);
+
+ _vp_play_multi_view_play_start(pMultiView, FALSE);
+
+}
+
+static void __vp_multi_drm_no_button_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pObj == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_DEL(pObj);
+
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+}
+
+static void __vp_multi_view_prepare_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (pMultiView->pPreparePipe != NULL) {
+ ecore_pipe_write(pMultiView->pPreparePipe, pMultiView,
+ sizeof(MultiView));
+ }
+}
+
+static void __vp_multi_view_completed_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_PREVIEW &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MESSAGE &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_EMAIL) {
+ vp_media_contents_set_played_position(pMultiView->szMediaURL, 0);
+ } else if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ }
+ vp_mm_player_unrealize(pMultiView->pPlayerHandle);
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW) {
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc->vp_play_func_exit == NULL) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_play_util_set_unlock_power_key();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ return;
+ }
+
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+
+}
+
+static void __vp_multi_view_seek_completed_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ pMultiView->bSeekComplete = TRUE;
+
+ if (vp_play_util_check_streaming(pMultiView->szMediaURL)) {
+ if (pMultiView->bBufferingComplete == FALSE) {
+ VideoLogWarning("Skip for buffering state");
+ if (pMultiView->nStartPosition > 0) {
+ pMultiView->nStartPosition = 0;
+ pMultiView->bIsRealize = TRUE;
+ }
+ return;
+ }
+ }
+
+ if (pMultiView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pMultiView->pLoadingAni);
+ pMultiView->pLoadingAni = NULL;
+ }
+
+ if (pMultiView->nStartPosition > 0) {
+ if (pMultiView->bManualPause) {
+ vp_mm_player_pause(pMultiView->pPlayerHandle);
+ } else {
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ }
+ pMultiView->nStartPosition = 0;
+ pMultiView->bIsRealize = TRUE;
+ }
+
+ if (pMultiView->bManualPause == FALSE &&
+ pMultiView->pSpeedTimer == NULL) {
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ }
+
+ if (!vp_mm_player_set_subtitle_position
+ (pMultiView->pPlayerHandle,
+ pMultiView->fSubtitleSyncValue * 1000)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+
+}
+
+static void __vp_multi_view_interrupted_cb(vp_mm_player_interrupt_t nCode,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ VideoLogWarning("nInterrupt : %d", nCode);
+
+ if (nCode == VP_MM_PLAYER_INTERRUPTED_COMPLETED) {
+ if (pMultiView->bManualPause == FALSE) {
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ }
+ } else if (nCode == VP_MM_PLAYER_INTERRUPTED_BY_MEDIA) {
+ pMultiView->bManualPause = TRUE;
+ }
+
+ if (nCode == VP_MM_PLAYER_INTERRUPTED_BY_CALL) {
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_UNABLE_TO_PLAY_VIDEO_DURING_CALL);
+ _vp_play_multi_view_set_played_time(pMultiView);
+ _vp_play_multi_view_set_preview(pMultiView);
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return;
+
+ }
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ } else {
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+
+ if (nCode == VP_MM_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT) {
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ //vp_play_util_status_noti_show(VP_VIDEO_STRING_VIDEO_CLOSED_NOTI_POPUP);
+
+ _vp_play_multi_view_set_played_time(pMultiView);
+ _vp_play_multi_view_set_preview(pMultiView);
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return;
+
+ }
+ vp_play_util_set_unlock_power_key();
+ _vp_play_multi_view_set_play_state(pMultiView);
+
+ //pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ }
+}
+
+static void __vp_multi_view_error_cb(vp_mm_player_error_t nError,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VideoLogWarning("Error triggered: 0x%x", nError);
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+ pMultiView->pPopup = NULL;
+
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ switch (nError) {
+ case VP_MM_PLAYER_ERR_OUT_OF_MEMORY:
+ case VP_MM_PLAYER_ERR_INVALID_OPERATION:
+ case VP_MM_PLAYER_ERR_FILE_NO_SPACE_ON_DEVICE:
+ case VP_MM_PLAYER_ERR_INVALID_PARAMETER:
+ vp_play_util_status_noti_show(VP_PLAY_STRING_ERROR_UNABLE_PLAY);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ break;
+ case VP_MM_PLAYER_ERR_NO_SUCH_FILE:
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_FILE_NOT_EXIST);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ break;
+
+
+ case VP_MM_PLAYER_ERR_SEEK_FAILED:
+ VideoLogError("VP_MM_PLAYER_ERR_SEEK_FAILED");
+ break;
+ case VP_MM_PLAYER_ERR_INVALID_STATE:
+ VideoLogError("VP_MM_PLAYER_ERR_INVALID_STATE");
+ break;
+ case VP_MM_PLAYER_ERR_SOUND_POLICY:
+ VideoLogError("VP_MM_PLAYER_ERR_SOUND_POLICY");
+ break;
+ case VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED:
+ VideoLogError("VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED");
+ break;
+ case VP_MM_PLAYER_ERR_NOT_SUPPORTED_FILE:
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_UNSUPPORTED_FORMAT);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+
+ break;
+ case VP_MM_PLAYER_ERR_INVALID_URI:
+ vp_play_util_status_noti_show(VP_PLAY_STRING_ERROR_INVALID_URL);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ break;
+
+ case VP_MM_PLAYER_ERR_CONNECTION_FAILED:
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_CONNECTION_FAILED);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ break;
+ case VP_MM_PLAYER_ERR_DRM_EXPIRED:
+ case VP_MM_PLAYER_ERR_DRM_FUTURE_USE:
+ VideoLogError("DRM BUG");
+ vp_play_util_status_noti_show(VP_PLAY_STRING_ERROR_UNABLE_PLAY);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ break;
+ case VP_MM_PLAYER_ERR_DRM_NO_LICENSE:
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_DIVX_DRM_AUTHORIZATION_ERROR);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ break;
+ default:
+ VideoLogError("UNKNOWN TYPE : %d", nError);
+ break;
+ }
+
+}
+
+static bool _vp_play_multi_view_create_loading_ani(MultiView *pMultiView)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+ pParent = pMultiView->pLayout;
+
+ if (pMultiView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pMultiView->pLoadingAni);
+ pMultiView->pLoadingAni = NULL;
+ }
+
+ pMultiView->pLoadingAni =
+ vp_play_loading_ani_create(pParent, VIDEO_LOADING_SIZE_LARGE);
+ if (pMultiView->pLoadingAni == NULL) {
+ VideoLogError("pLoadingAni create fail");
+ return FALSE;
+ }
+
+ elm_object_part_content_set(pParent,
+ VP_PLAY_SWALLOW_MULTI_LOADING_ANI,
+ pMultiView->pLoadingAni);
+
+ return TRUE;
+}
+
+static void __vp_multi_view_buffering_cb(int nPercent, void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (nPercent == 100) {
+ VideoLogError("Buffering complete");
+ pMultiView->bBufferingComplete = TRUE;
+ if (pMultiView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pMultiView->pLoadingAni);
+ pMultiView->pLoadingAni = NULL;
+ }
+#if 1
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (pMultiView->bManualPause) {
+ vp_mm_player_set_visible(pMultiView->pPlayerHandle, TRUE);
+ vp_mm_player_pause(pMultiView->pPlayerHandle);
+ } else {
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ }
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+#endif
+ } else {
+ pMultiView->bBufferingComplete = FALSE;
+ if (pMultiView->bManualPause == FALSE) {
+ vp_play_util_set_lock_power_key();
+ }
+ // Remove loading animation during speed playback.
+ if (pMultiView->pSpeedTimer) {
+ //
+ } else if (pMultiView->pLoadingAni == NULL) {
+ if (!_vp_play_multi_view_create_loading_ani(pMultiView)) {
+ VideoLogError
+ ("_vp_play_multi_view_create_loading_ani fail");
+ return;
+ }
+ }
+ }
+
+}
+
+static void __vp_multi_view_subtitle_updated_cb(unsigned long nDuration,
+ char *text,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ bool bIsWhiteSpace = vp_play_util_check_white_space(text);
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSubtitleTimer);
+
+ if (bIsWhiteSpace) {
+ vp_play_subtitle_set_text(pMultiView->pSubtitle, "");
+ return;
+ }
+
+ double dTimeInterval = (double) nDuration / (double) 1000;
+
+ pMultiView->pSubtitleTimer = ecore_timer_add(dTimeInterval,
+ __vp_multi_subtitle_timer_cb,
+ (void *) pMultiView);
+
+ vp_play_subtitle_set_text(pMultiView->pSubtitle, text);
+
+
+}
+
+static void __vp_multi_view_pd_message_cb(vp_mm_player_pd_message_t nType,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+}
+
+static void __vp_multi_view_missed_plugin_cb(vp_mm_player_missed_plugin_t
+ nType, void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ if (nType == VP_MM_PLAYER_MISSED_PLUGIN_AUDIO) {
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_UNSUPPORTED_AUDIO);
+ } else if (nType == VP_MM_PLAYER_MISSED_PLUGIN_VIDEO) {
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_ONLY_AUDIO_DATA_SUPPORTED);
+ }
+}
+
+static void __vp_multi_view_image_buffer_cb(char *pBuffer, int nSize,
+ void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VideoLogWarning("%p, %d", pBuffer, nSize);
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ if (pMultiView->pImageBufferObj) {
+ elm_object_part_content_unset(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_IMAGE_BUFFER);
+ VP_EVAS_DEL(pMultiView->pImageBufferObj);
+ }
+
+ vp_play_util_save_file(VP_PLAY_IMAGE_BUFFER_PATH, pBuffer, nSize);
+
+ pMultiView->pImageBufferObj = elm_image_add(pMultiView->pLayout);
+
+ elm_image_file_set(pMultiView->pImageBufferObj,
+ VP_PLAY_IMAGE_BUFFER_PATH, NULL);
+
+ elm_image_resizable_set(pMultiView->pImageBufferObj, EINA_TRUE,
+ EINA_TRUE);
+
+ evas_object_size_hint_weight_set(pMultiView->pImageBufferObj,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pMultiView->pImageBufferObj,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_show(pMultiView->pImageBufferObj);
+
+ elm_object_part_content_set(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_IMAGE_BUFFER,
+ pMultiView->pImageBufferObj);
+}
+
+static void __vp_play_multi_view_imagesink_resize_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ Evas_Coord_Rectangle nOldRect = pMultiView->nVideoSinkRect;
+ Evas_Coord_Rectangle nCurRect = { 0, };
+
+ evas_object_geometry_get(pObj, &nCurRect.x, &nCurRect.y, &nCurRect.w,
+ &nCurRect.h);
+// evas_object_image_fill_set(pObj, 0, 0, nCurRect.w, nCurRect.h);
+// evas_object_image_size_set(pObj, nCurRect.w, nCurRect.h);
+
+ if (nCurRect.x != nOldRect.x ||
+ nCurRect.y != nOldRect.y ||
+ nCurRect.w != nOldRect.w || nCurRect.h != nOldRect.h) {
+ VideoLogWarning("Change Position");
+ }
+
+ bool bShow = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bShow);
+ if (bShow) {
+ bool bIsRealize = FALSE;
+ int nSize = 0;
+ vp_play_subtitle_is_realize(pMultiView->pSubtitle, &bIsRealize);
+ if (bIsRealize) {
+ float fZoom = 1.0;
+ int nWinW = 0;
+ int nWinH = 0;
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ elm_win_screen_size_get(pPlayView->pWin, NULL, NULL, &nWinW,
+ &nWinH);
+
+ fZoom = (float)((float)(nCurRect.w) / (float)(nWinW));
+
+ vp_play_preference_get_subtitle_size_key(&nSize);
+ vp_play_subtitle_set_size(pMultiView->pSubtitle, nSize);
+
+ vp_play_subtitle_set_size_zoom(pMultiView->pSubtitle, fZoom);
+ }
+ }
+}
+
+#ifdef ENABLE_MULTI_VEIW
+static void __vp_play_multi_view_layout_mouse_down_cb(void *pUserData,
+ Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ Evas_Event_Mouse_Down *pMouseDownEvent =
+ (Evas_Event_Mouse_Down *) pEvent;
+ Evas_Coord_Rectangle nCurRect = { 0, };
+ evas_object_geometry_get(pObj, &nCurRect.x, &nCurRect.y, &nCurRect.w,
+ &nCurRect.h);
+
+
+ if (pMultiView->bIsRealize == FALSE) {
+ return;
+ }
+
+ if (pMouseDownEvent->canvas.x > nCurRect.w - VP_MULTI_RESIZE_TERM &&
+ pMouseDownEvent->canvas.y > nCurRect.h - VP_MULTI_RESIZE_TERM) {
+
+ evas_object_size_hint_min_set(pMultiView->pWin,
+ VP_MULTI_DEFAULT_WIDTH,
+ VP_MULTI_DEFAULT_HEIGHT);
+ int x = 0;
+ int y = 0;
+ ecore_x_pointer_last_xy_get(&x, &y);
+ ecore_x_mouse_up_send(pMultiView->nXwinID, x, y, 1);
+ ecore_x_pointer_ungrab();
+ ecore_x_netwm_moveresize_request_send(pMultiView->nXwinID, x, y,
+ ECORE_X_NETWM_DIRECTION_SIZE_BR,
+ 1);
+ }
+
+}
+#endif
+
+static Evas_Event_Flags __vp_multi_view_gesture_n_tab_start_cb(void
+ *pUserData,
+ void
+ *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+ VideoLogWarning("");
+
+ Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo;
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (p->n <= 1) {
+ pMultiView->bTabStart = TRUE;
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __vp_multi_view_gesture_n_tab_end_cb(void
+ *pUserData,
+ void
+ *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+ VideoLogWarning("");
+
+ Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo;
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ pMultiView->bTabStart = FALSE;
+
+ if (p->n == 1) {
+
+ if (pMultiView->bShowLayout == FALSE) {
+ _vp_play_multi_view_show_layout(pMultiView);
+ } else {
+ _vp_play_multi_view_hide_layout(pMultiView);
+ }
+
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __vp_multi_view_gesture_n_tab_abort_cb(void
+ *pUserData,
+ void
+ *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+ VideoLogWarning("");
+
+ //Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo;
+ MultiView *pMultiView = (MultiView *) pUserData;
+ pMultiView->bTabStart = FALSE;
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Eina_Bool __vp_play_multi_view_mouse_down_cb(void *pUserData,
+ int nType,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ MultiView *pMultiView = (MultiView *) pUserData;
+ Ecore_Event_Mouse_Button *pMouseEvent = pEvent;
+
+ if (pMouseEvent->window != pMultiView->nXwinID) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (pMultiView->bMouseDown) {
+ VideoLogWarning("Already mouse Down");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ pMultiView->bMouseDown = TRUE;
+ pMultiView->nMousePosX = pMouseEvent->root.x;
+ pMultiView->nMousePosY = pMouseEvent->root.y;
+ pMultiView->nMouseButtons = pMouseEvent->buttons;
+
+ if (pMultiView->nMouseButtons == 0) {
+ VideoLogWarning("Invalid Mouse button value : %d",
+ pMultiView->nMouseButtons);
+ pMultiView->nMouseButtons = 1;
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+
+}
+
+static Eina_Bool __vp_play_multi_view_mouse_up_cb(void *pUserData,
+ int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ Ecore_Event_Mouse_Button *pMouseEvent = pEvent;
+
+ if (pMouseEvent->window != pMultiView->nXwinID) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pMultiView->bMouseDown) {
+ //VideoLogWarning("Not Mouse Down State");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ pMultiView->bMouseDown = FALSE;
+ pMultiView->nMousePosX = 0;
+ pMultiView->nMousePosY = 0;
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_multi_view_mouse_move_cb(void *pUserData,
+ int nType,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ Ecore_Event_Mouse_Move *pMouseEvent = pEvent;
+
+ if (pMouseEvent->window != pMultiView->nXwinID) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pMultiView->bMouseDown || pMultiView->bTabStart) {
+ //VideoLogWarning("Not Mouse Down State");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ double l =
+ sqrt(pow
+ ((float)(pMultiView->nMousePosX - pMouseEvent->root.x),
+ 2) + pow((float)(pMultiView->nMousePosY -
+ pMouseEvent->root.y), 2));
+
+ if (l >= 30.0f && pMouseEvent->multi.device == 0) {
+ int nX = 0;
+ int nY = 0;
+ ecore_x_pointer_last_xy_get(&nX, &nY);
+ if (nX != pMouseEvent->root.x) {
+ nX = (nX + pMouseEvent->root.x) / 2;
+ }
+ if (nY != pMouseEvent->root.y) {
+ nY = (nY + pMouseEvent->root.y) / 2;
+ }
+
+ ecore_x_mouse_up_send(pMultiView->nXwinID, nX, nY,
+ pMultiView->nMouseButtons);
+ ecore_x_pointer_ungrab();
+
+ ecore_x_netwm_moveresize_request_send(pMultiView->nXwinID, nX, nY,
+ ECORE_X_NETWM_DIRECTION_MOVE,
+ pMultiView->nMouseButtons);
+
+ pMultiView->bMouseDown = FALSE;
+ pMultiView->nMousePosX = 0;
+ pMultiView->nMousePosY = 0;
+ }
+
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_multi_view_configure_cb(void *pUserData,
+ int type, void *pEvent)
+{
+ Ecore_Evas *ee;
+ Ecore_X_Event_Window_Configure *e;
+ int ee_w = 0;
+ int ee_h = 0;
+
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (pMultiView->bIsResizeDone) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ e = pEvent;
+ ee = ecore_evas_ecore_evas_get(evas_object_evas_get
+ (pMultiView->pWin));
+
+ if (!ee) {
+ VideoLogError("[ERR] Ecore_Evas has NULL");
+ return ECORE_CALLBACK_PASS_ON; /* pass on event */
+ }
+
+ ecore_evas_geometry_get(ee, NULL, NULL, &ee_w, &ee_h);
+
+ if (e->win != ecore_evas_window_get(ee)) {
+ VideoLogError("[ERR] Event window and ecore window is different");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ int nAngle = elm_win_rotation_get(pMultiView->pWin);
+ video_play_rotate_t nCurRot = VIDEO_PLAY_ROTATE_NONE;
+ switch (nAngle) {
+ case 0:
+ nCurRot = VIDEO_PLAY_ROTATE_NONE;
+ break;
+ case 90:
+ nCurRot = VIDEO_PLAY_ROTATE_90;
+ break;
+ case 180:
+ nCurRot = VIDEO_PLAY_ROTATE_180;
+ break;
+ case 270:
+ nCurRot = VIDEO_PLAY_ROTATE_270;
+ break;
+ }
+
+ if (pMultiView->bFloatingMode == TRUE) {
+ bool bIsResize = FALSE;
+
+ if (nCurRot == VIDEO_PLAY_ROTATE_NONE ||
+ nCurRot == VIDEO_PLAY_ROTATE_180) {
+ if (e->x == 0 && e->y == 0 && e->w == ee_w && e->h == ee_h) {
+ bIsResize = TRUE;
+ }
+ } else {
+ if (e->x == 0 && e->y == 0 && e->h == ee_w && e->w == ee_h) {
+ bIsResize = TRUE;
+ }
+ }
+
+ if (bIsResize == TRUE) {
+ pMultiView->bFloatingMode = FALSE;
+ pMultiView->bIsResizeDone = TRUE;
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ pPlayView->nRotate = nCurRot;
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ int nCurPos = 0;
+ vp_play_multi_view_get_last_position(pMultiView, &nCurPos);
+
+ VP_EVAS_DISABLE_SET(pMultiView->pExitBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pMultiView->pFullSizeBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pMultiView->pMinSizeBtn, EINA_TRUE);
+
+ pPlayView->pFunc->vp_play_func_change_mode(pPlayView,
+ VIDEO_PLAY_MODE_NORMAL_VIEW,
+ pMultiView->
+ szMediaURL,
+ nCurPos,
+ pMultiView->
+ bManualPause);
+ }
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_multi_view_control_idler_cb(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+
+ pMultiView->pControlIdler = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __vp_play_multi_view_btn_clicked_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ bool bCallOn = FALSE;
+ vp_play_config_get_call_state(&bCallOn);
+
+ if (pMultiView->pExitBtn != pObj && pMultiView->pFullSizeBtn != pObj
+ && pMultiView->pMinSizeBtn != pObj && bCallOn) {
+ VideoLogWarning("Call is On");
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_UNABLE_TO_PLAY_VIDEO_DURING_CALL);
+ return;
+ }
+
+ if (pMultiView->pExitBtn == pObj) {
+ VideoLogWarning("Exit button cliicked");
+
+ _vp_play_multi_view_set_played_time(pMultiView);
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return;
+
+ }
+
+ VideoLogWarning("== BACK ==");
+
+ VP_EVAS_DISABLE_SET(pMultiView->pExitBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pMultiView->pFullSizeBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pMultiView->pMinSizeBtn, EINA_TRUE);
+
+ vp_play_util_set_unlock_power_key();
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ return;
+
+ } else if (pMultiView->pFullSizeBtn == pObj) {
+ // change window size
+ VideoLogWarning("Full Size button cliicked");
+
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ if (!vp_play_util_local_file_check(pMultiView->szMediaURL)) {
+ /* popup show */
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_FILE_NOT_EXIST);
+ elm_exit();
+ return;
+ }
+
+ }
+
+ pMultiView->bActivate = FALSE;
+
+ VP_EVAS_DISABLE_SET(pMultiView->pExitBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pMultiView->pFullSizeBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pMultiView->pMinSizeBtn, EINA_TRUE);
+
+ pMultiView->bFloatingMode = TRUE;
+ pMultiView->bIsResizeDone = FALSE;
+
+ elm_win_floating_mode_set(pMultiView->pWin, EINA_FALSE);
+
+ elm_win_norender_push(pMultiView->pWin);
+ } else if (pMultiView->pMinSizeBtn == pObj) {
+ VideoLogWarning("Min Size button cliicked");
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return;
+ }
+ int nCurPos = 0;
+ vp_play_multi_view_get_last_position(pMultiView, &nCurPos);
+ pPlayView->nStartPosition = nCurPos;
+ elm_win_iconified_set(pMultiView->pWin, EINA_TRUE);
+ } else if (pMultiView->pPlayFocusBtn == pObj) {
+ VideoLogWarning("pPlayFocusBtn click");
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ VideoLogWarning("Pause button");
+ if (pMultiView->bIsRealize) {
+ if (!vp_mm_player_pause(pMultiView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ } else {
+ pMultiView->bManualPause = TRUE;
+ }
+ }
+ } else {
+ VideoLogWarning("Resume button");
+ _vp_play_multi_view_check_during_call(pMultiView);
+
+ if (pMultiView->bSeekComplete == FALSE
+ || pMultiView->pSpeedTimer) {
+ pMultiView->bManualPause = FALSE;
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ }
+ if (pMultiView->bIsRealize) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogWarning("Resume Failed, %d, seek[%d]",
+ pMultiView->nPlayerState,
+ pMultiView->bSeekComplete);
+ if (!vp_play_util_check_streaming(pMultiView->szMediaURL) && pMultiView->nPlayerState != VP_MM_PLAYER_STATE_PLAYING && pMultiView->bSeekComplete == TRUE) { /* vp_mm_player_play will be failed if it try in seeking */
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_UNABLE_PLAY);
+ }
+ } else {
+ pMultiView->bManualPause = FALSE;
+ }
+ }
+ }
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ VP_EVAS_IDLER_DEL(pMultiView->pControlIdler);
+ pMultiView->pControlIdler =
+ ecore_idler_add(__vp_play_multi_view_control_idler_cb,
+ (void *) pMultiView);
+ } else if (pMultiView->pPrevBtn == pObj) {
+ VideoLogWarning("Prev button cliicked");
+ if (pMultiView->bIsRealize == FALSE) {
+ return;
+ }
+
+ if (pMultiView->bHLSMode == FALSE) {
+ if (pMultiView->nSpeedValue < 2) {
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ _vp_play_multi_view_on_prev_play(pMultiView, TRUE, FALSE);
+ }
+ }
+ } else if (pMultiView->pNextBtn == pObj) {
+ VideoLogWarning("Next button cliicked");
+ if (pMultiView->bIsRealize == FALSE) {
+ return;
+ }
+
+ if (pMultiView->bHLSMode == FALSE) {
+ if (pMultiView->nSpeedValue < 2) {
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ _vp_play_multi_view_on_next_play(pMultiView, TRUE);
+ }
+ }
+ } else {
+ VideoLogError("Unknown button cliicked");
+ }
+ return;
+
+}
+
+static void __vp_play_multi_view_btn_press_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (pObj == pMultiView->pNextBtn) {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (pMultiView->bHLSMode == FALSE) {
+ pMultiView->bSpeedFF = TRUE;
+ pMultiView->nSpeedValue = 1;
+ pMultiView->bSpeedDown = TRUE;
+ pMultiView->pSpeedTimer =
+ ecore_timer_add(VP_MULTI_LONG_PRESS_TIMER_INTERVAL,
+ __vp_multi_speed_timer_cb,
+ (void *) pMultiView);
+ }
+ } else if (pObj == pMultiView->pPrevBtn) {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (pMultiView->bHLSMode == FALSE) {
+ pMultiView->bSpeedFF = FALSE;
+ pMultiView->nSpeedValue = 1;
+ pMultiView->bSpeedDown = TRUE;
+ pMultiView->pSpeedTimer =
+ ecore_timer_add(VP_MULTI_LONG_PRESS_TIMER_INTERVAL,
+ __vp_multi_speed_timer_cb,
+ (void *) pMultiView);
+ }
+ } else if (pObj == pMultiView->pResizeBtn) {
+ evas_object_size_hint_min_set(pMultiView->pWin,
+ VP_MULTI_DEFAULT_WIDTH,
+ VP_MULTI_DEFAULT_HEIGHT);
+ int x = 0;
+ int y = 0;
+ ecore_x_pointer_last_xy_get(&x, &y);
+ ecore_x_mouse_up_send(pMultiView->nXwinID, x, y, 1);
+ ecore_x_pointer_ungrab();
+ ecore_x_netwm_moveresize_request_send(pMultiView->nXwinID, x, y,
+ ECORE_X_NETWM_DIRECTION_SIZE_BR,
+ 1);
+ } else if (pObj == pMultiView->pExitBtn) {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_TITLE_CLOSE_BTN_PRESSED,
+ "*");
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ } else if (pObj == pMultiView->pFullSizeBtn) {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_TITLE_FULLSIZE_BTN_PRESSED,
+ "*");
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ } else if (pObj == pMultiView->pMinSizeBtn) {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_TITLE_MINIMIZE_BTN_PRESSED,
+ "*");
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ }
+
+ pMultiView->bMouseDown = FALSE;
+}
+
+
+
+static void __vp_play_multi_view_btn_unpress_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (pObj == pMultiView->pPauseBtn) {
+ _vp_play_multi_view_create_layout_hide_timer(pMultiView);
+ } else if (pObj == pMultiView->pPlayBtn) {
+ _vp_play_multi_view_create_layout_hide_timer(pMultiView);
+ } else if (pObj == pMultiView->pPlayFocusBtn) {
+ _vp_play_multi_view_create_layout_hide_timer(pMultiView);
+ } else if (pObj == pMultiView->pNextBtn) {
+ pMultiView->bSpeedDown = FALSE;
+ _vp_play_multi_view_create_layout_hide_timer(pMultiView);
+ } else if (pObj == pMultiView->pPrevBtn) {
+ pMultiView->bSpeedDown = FALSE;
+ _vp_play_multi_view_create_layout_hide_timer(pMultiView);
+ } else if (pObj == pMultiView->pExitBtn) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_TITLE_CLOSE_BTN_RELEASED,
+ "*");
+ } else if (pObj == pMultiView->pFullSizeBtn) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_TITLE_FULLSIZE_BTN_RELEASED,
+ "*");
+ } else if (pObj == pMultiView->pMinSizeBtn) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_TITLE_MINIMIZE_BTN_RELEASED,
+ "*");
+ }
+
+}
+
+static void __vp_play_multi_view_media_key_event_cb(vp_media_key_event_t
+ nKey, bool bRelease,
+ void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ switch (nKey) {
+ case VP_MEDIA_KEY_PLAY:
+ case VP_MEDIA_KEY_PAUSE:
+ case VP_MEDIA_KEY_PLAYPAUSE:
+ if (bRelease) {
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state
+ (pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ pMultiView->bManualPause = FALSE;
+ } else {
+ if (!vp_mm_player_pause(pMultiView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ pMultiView->bManualPause = TRUE;
+ }
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ break;
+
+ case VP_MEDIA_KEY_PREVIOUS:
+ if (bRelease) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ _vp_play_multi_view_on_prev_play(pMultiView, TRUE, FALSE);
+ }
+ break;
+ case VP_MEDIA_KEY_NEXT:
+ if (bRelease) {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ _vp_play_multi_view_on_next_play(pMultiView, TRUE);
+ }
+ break;
+ case VP_MEDIA_KEY_REWIND:
+ if (bRelease) {
+ pMultiView->bSpeedDown = FALSE;
+
+ if (pMultiView->nSpeedValue < 2) {
+ VideoLogInfo("speed up");
+ _vp_play_multi_view_speed_for_steps(pMultiView, FALSE);
+ }
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pMultiView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogError("play Fail");
+ }
+ pMultiView->bManualPause = FALSE;
+ }
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+ } else {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ pMultiView->bSpeedFF = FALSE;
+ pMultiView->nSpeedValue = 1;
+ pMultiView->bSpeedDown = TRUE;
+ pMultiView->pSpeedTimer =
+ ecore_timer_add(VP_MULTI_LONG_PRESS_TIMER_INTERVAL,
+ __vp_multi_speed_timer_cb,
+ (void *) pMultiView);
+ }
+ break;
+ case VP_MEDIA_KEY_FASTFORWARD:
+ if (bRelease) {
+ pMultiView->bSpeedDown = FALSE;
+
+ if (pMultiView->nSpeedValue < 2) {
+ VideoLogInfo("speed up");
+ _vp_play_multi_view_speed_for_steps(pMultiView, TRUE);
+ }
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pMultiView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogError("play Fail");
+ }
+ pMultiView->bManualPause = FALSE;
+ }
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+ } else {
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ pMultiView->bSpeedFF = TRUE;
+ pMultiView->nSpeedValue = 1;
+ pMultiView->bSpeedDown = TRUE;
+ pMultiView->pSpeedTimer =
+ ecore_timer_add(VP_MULTI_LONG_PRESS_TIMER_INTERVAL,
+ __vp_multi_speed_timer_cb,
+ (void *) pMultiView);
+ }
+ break;
+ case VP_MEDIA_KEY_STOP:
+ if (bRelease) {
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state
+ (pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pMultiView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ }
+ pMultiView->bManualPause = TRUE;
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ break;
+ default:
+ VideoLogWarning("Undefined key : %d", nKey);
+ break;
+ }
+
+ VP_FREE(pMultiView);
+
+}
+
+static void __vp_multi_view_exit_popup_yes_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+ pMultiView->pPopup = NULL;
+ VP_EVAS_DEL(pMultiView->pExitPopupWin);
+ pMultiView->pExitPopupWin = NULL;
+
+ if (pMultiView->pPlayView == NULL) {
+ VideoLogError("pMultiView->pPlayView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ return;
+}
+
+static void __vp_multi_view_exit_popup_no_btn_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+ pMultiView->pPopup = NULL;
+ VP_EVAS_DEL(pMultiView->pExitPopupWin);
+ pMultiView->pExitPopupWin = NULL;
+
+ return;
+}
+
+static void _vp_play_multi_view_check_exit_popup(MultiView *pMultiView)
+{
+ VP_EVAS_DEL(pMultiView->pPopup);
+ VP_EVAS_DEL(pMultiView->pExitPopupWin);
+
+ int w = 0, h = 0;
+ pMultiView->pExitPopupWin =
+ elm_win_add(pMultiView->pWin, "VIDEO_MULTI_VIEW_EXIT_POPUP",
+ ELM_WIN_POPUP_MENU);
+ Ecore_Evas *ee =
+ ecore_evas_ecore_evas_get(evas_object_evas_get
+ (pMultiView->pExitPopupWin));
+ ecore_evas_name_class_set(ee, "APP_POPUP", "APP_POPUP");
+ elm_win_alpha_set(pMultiView->pExitPopupWin, EINA_TRUE);
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ elm_win_screen_size_get(pPlayView->pWin, NULL, NULL, &w, &h);
+ evas_object_resize(pMultiView->pExitPopupWin, w, h);
+
+ if (elm_win_wm_rotation_supported_get(pMultiView->pExitPopupWin)) {
+ const int rots[4] = { APP_DEVICE_ORIENTATION_0,
+ APP_DEVICE_ORIENTATION_90,
+ APP_DEVICE_ORIENTATION_180,
+ APP_DEVICE_ORIENTATION_270
+ };
+ elm_win_wm_rotation_available_rotations_set(pMultiView->
+ pExitPopupWin, rots,
+ 4);
+ }
+
+ /* pass '-1' value to this API then it will unset preferred rotation angle */
+ elm_win_wm_rotation_preferred_rotation_set(pMultiView->pExitPopupWin,
+ -1);
+
+ evas_object_show(pMultiView->pExitPopupWin);
+
+ elm_object_text_set(pMultiView->pPopup, VP_VIDEO_STRING_EXIT_POPUP);
+
+ Evas_Object *cancel_btn = elm_button_add(pMultiView->pPopup);
+ elm_object_style_set(cancel_btn, "popup_button/default");
+ elm_object_text_set(cancel_btn, VP_PLAY_STRING_COM_CANCEL);
+ elm_object_part_content_set(pMultiView->pPopup, "button1",
+ cancel_btn);
+ evas_object_smart_callback_add(cancel_btn, "clicked",
+ __vp_multi_view_exit_popup_no_btn_cb,
+ pMultiView);
+ Evas_Object *ok_btn = elm_button_add(pMultiView->pPopup);
+ elm_object_style_set(ok_btn, "popup_button/default");
+ elm_object_text_set(ok_btn, VP_PLAY_STRING_COM_OK);
+ elm_object_part_content_set(pMultiView->pPopup, "button2", ok_btn);
+ evas_object_smart_callback_add(ok_btn, "clicked",
+ __vp_multi_view_exit_popup_yes_btn_cb,
+ pMultiView);
+
+ evas_object_show(pMultiView->pPopup);
+}
+
+static Eina_Bool __vp_play_multi_view_back_key_event_cb(void *pUserData,
+ Elm_Object_Item *
+ pItem)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ VideoLogError("== BACK EVENT ==");
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+
+ if (pMultiView->bActivate) {
+ _vp_play_multi_view_set_played_time(pMultiView);
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return EINA_FALSE;
+ }
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return EINA_FALSE;
+
+ }
+
+ _vp_play_multi_view_check_exit_popup(pMultiView);
+
+ VideoLogWarning("== BACK ==");
+
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+
+
+
+/* internal functions */
+#if 1
+#endif
+static void _vp_play_multi_view_on_nocontents_mode(MultiView *pMultiView,
+ bool bShow)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+ if (bShow) {
+
+ if (pMultiView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pMultiView->pLoadingAni);
+ pMultiView->pLoadingAni = NULL;
+ }
+ _vp_play_multi_view_hide_layout(pMultiView);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_SIGNAL_SHOW_NOCONTENTS, "*");
+ edje_object_part_text_set(_EDJ(pMultiView->pLayout),
+ VP_PLAY_PART_MULTI_NOCONTENTS_TXT,
+ VP_PLAY_STRING_NO_VIDEOS);
+ pMultiView->bNoContentMode = TRUE;
+ } else {
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_SIGNAL_HIDE_NOCONTENTS, "*");
+ edje_object_part_text_set(_EDJ(pMultiView->pLayout),
+ VP_PLAY_PART_MULTI_NOCONTENTS_TXT, "");
+ pMultiView->bNoContentMode = FALSE;
+ }
+}
+
+static bool _vp_play_multi_view_check_during_call(MultiView *pMultiView)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return FALSE;
+ }
+
+ bool bCallOn = FALSE;
+ vp_play_config_get_call_state(&bCallOn);
+ if (bCallOn) {
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_UNABLE_TO_PLAY_VIDEO_DURING_CALL);
+ }
+
+ return TRUE;
+}
+
+static bool _vp_play_multi_view_check_drm(MultiView *pMultiView,
+ bool *bIsAvailablePlay)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+
+ bool bIsLicense = FALSE;
+ *bIsAvailablePlay = TRUE;
+#ifdef ENABLE_DRM_FEATURE
+ bool bIsDrm = FALSE;
+
+ if (!vp_drm_is_drm_file(pMultiView->szMediaURL, &bIsDrm)) {
+ VideoLogError("vp_drm_is_drm_file is fail");
+ return FALSE;
+ }
+#endif
+#ifdef ENABLE_DRM_FEATURE
+ if (bIsDrm == FALSE) {
+ VideoLogWarning("Not DRM File");
+ return TRUE;
+ } else {
+ VideoLogWarning
+ ("== IS DRM FILE ================================");
+ }
+#endif
+#ifdef ENABLE_DRM_FEATURE
+ if (!vp_drm_is_check_license(pMultiView->szMediaURL, &bIsLicense)) {
+ VideoLogError("vp_drm_is_check_license is fail");
+ return FALSE;
+ }
+#endif
+ if (bIsLicense == FALSE) {
+ VideoLogWarning("bIsLicense is Invalid");
+
+ *bIsAvailablePlay = FALSE;
+
+ char *szMessage = NULL;
+ char *szTitle = NULL;
+
+ szTitle =
+ vp_play_util_get_title_from_path((char *) pMultiView->
+ szMediaURL);
+ szMessage =
+ g_strdup_printf(VP_PLAY_STRING_DRM_CURRENTLY_LOCKED_UNLOCK_Q,
+ szTitle);
+
+ vp_play_util_status_noti_show(szMessage);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+
+ VP_FREE(szMessage);
+ VP_FREE(szTitle);
+
+ return TRUE;
+ }
+#ifdef ENABLE_DRM_FEATURE
+
+ vp_drm_constraint_info stConstraintInfo = { 0, };
+
+ if (!vp_drm_get_constarint_info
+ (pMultiView->szMediaURL, &stConstraintInfo)) {
+ VideoLogError("vp_drm_get_constarint_info is fail");
+ return FALSE;
+ }
+#endif
+ char *szMsg = NULL;
+ char *szTitle = NULL;
+ szTitle =
+ vp_play_util_get_title_from_path((char *)pMultiView->szMediaURL);
+ bool bNotiPopup = FALSE;
+#ifdef ENABLE_DRM_FEATURE
+ while (stConstraintInfo.constraints) {
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_COUNT) {
+ if (stConstraintInfo.remaining_count == 2) {
+ szMsg =
+ g_strdup_printf
+ (VP_PLAY_STRING_DRM_PS_2_MORE_TIME_START_NOW_Q,
+ szMsg);
+ } else if (stConstraintInfo.remaining_count == 1) {
+ szMsg =
+ g_strdup_printf
+ (VP_PLAY_STRING_DRM_PS_1_MORE_TIME_START_NOW_Q,
+ szMsg);
+ } else if (stConstraintInfo.remaining_count == 0) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_DATE_TIME) {
+ if (stConstraintInfo.date_time_expired) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_INTERVAL) {
+ if (stConstraintInfo.remaining_interval_sec == 0) {
+ bNotiPopup = TRUE;
+ } else {
+ int nDays =
+ stConstraintInfo.remaining_interval_sec /
+ VP_ACCUMULATED_DATE + 1;
+ szMsg =
+ g_strdup_printf
+ (VP_PLAY_STRING_DRM_PS_FOR_PD_DAYS_START_NOW_Q, szMsg,
+ nDays);
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_TIMED_COUNT) {
+ if (stConstraintInfo.remaining_timed_count == 2) {
+ szMsg =
+ g_strdup_printf
+ (VP_PLAY_STRING_DRM_PS_2_MORE_TIME_START_NOW_Q,
+ szMsg);
+ } else if (stConstraintInfo.remaining_timed_count == 1) {
+ szMsg =
+ g_strdup_printf
+ (VP_PLAY_STRING_DRM_PS_1_MORE_TIME_START_NOW_Q,
+ szMsg);
+ } else if (stConstraintInfo.remaining_timed_count == 0) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+
+ if (stConstraintInfo.
+ constraints & VP_DRM_CONSTRAINT_ACCUMLATED_TIME) {
+ if (stConstraintInfo.remaining_acc_sec == 0) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+ }
+#endif
+ if (bNotiPopup) {
+ *bIsAvailablePlay = FALSE;
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+ pMultiView->pPopup = NULL;
+
+ char *szMessage = NULL;
+ szMessage =
+ g_strdup_printf(VP_PLAY_STRING_DRM_CURRENTLY_LOCKED_UNLOCK_Q,
+ szTitle);
+
+ pMultiView->pPopup =
+ vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR, szMessage, 3.0,
+ __vp_multi_error_popup_time_out_cb, NULL,
+ NULL, pMultiView);
+
+ evas_object_show(pMultiView->pPopup);
+
+ VP_FREE(szTitle);
+ VP_FREE(szMessage);
+ VP_FREE(szMsg);
+
+ return TRUE;
+ }
+
+ VP_FREE(szTitle);
+
+ if (szMsg) {
+ *bIsAvailablePlay = FALSE;
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+ pMultiView->pPopup = NULL;
+
+ pMultiView->pPopup =
+ vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR, szMsg, 0.0, NULL,
+ NULL, NULL, pMultiView);
+ evas_object_show(pMultiView->pPopup);
+
+ Evas_Object *pButton1 = NULL;
+ Evas_Object *pButton2 = NULL;
+
+ pButton1 = elm_button_add(pMultiView->pPopup);
+ elm_object_style_set(pButton1, "popup_button/default");
+ elm_object_domain_translatable_text_set(pButton1,
+ VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_YES_IDS);
+ elm_object_part_content_set(pMultiView->pPopup, "button1",
+ pButton1);
+ evas_object_smart_callback_add(pButton1, "clicked",
+ __vp_multi_drm_yes_button_cb,
+ (void *) pMultiView);
+
+ pButton2 = elm_button_add(pMultiView->pPopup);
+ elm_object_style_set(pButton2, "popup_button/default");
+ elm_object_domain_translatable_text_set(pButton2,
+ VP_SYS_STR_PREFIX,
+ VP_PLAY_STRING_COM_NO_IDS);
+ elm_object_part_content_set(pMultiView->pPopup, "button2",
+ pButton2);
+
+ evas_object_smart_callback_add(pButton2, "clicked",
+ __vp_multi_drm_no_button_cb,
+ (void *) pMultiView);
+
+
+ VP_FREE(szMsg);
+
+ return TRUE;
+
+ }
+ return TRUE;
+}
+
+#ifndef ENABLE_SUBTITLE
+static void _vp_play_multi_view_free_subtitle_list(GList *pSubtitleList)
+{
+ if (pSubtitleList) {
+ int nCount = 0;
+ int i = 0;
+ nCount = g_list_length(pSubtitleList);
+ for (i = 0; i < nCount; i++) {
+ char *szName = NULL;
+ szName = (char *) g_list_nth_data(pSubtitleList, i);
+ VP_FREE(szName);
+ }
+
+ g_list_free(pSubtitleList);
+ }
+}
+#endif
+
+static bool _vp_play_multi_view_play_start(MultiView *pMultiView,
+ bool bCheckDRM)
+{
+
+ if (!pMultiView) {
+ VideoLogError("No Exist pUserData.");
+ return FALSE;
+ }
+
+ if (pMultiView->bActivate == FALSE) {
+ VideoLogError("pMultiView is NOT realized. skip");
+ return FALSE;
+ }
+
+ if (pMultiView->pPlayerHandle) {
+ vp_mm_player_destroy(pMultiView->pPlayerHandle);
+ pMultiView->pPlayerHandle = NULL;
+ }
+
+ VideoLogInfo("_vp_play_multi_view_play_start");
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pMultiView->pImageBufferObj) {
+ elm_object_part_content_unset(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_IMAGE_BUFFER);
+ VP_EVAS_DEL(pMultiView->pImageBufferObj);
+ }
+
+ pMultiView->bIsExistSubtitle = FALSE;
+ pMultiView->bIsRealize = FALSE;
+ pMultiView->bBufferingComplete = TRUE;
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSubtitleTimer);
+ pMultiView->pSubtitleTimer = NULL;
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogWarning("pPlayView is NULL");
+ return FALSE;
+ }
+
+ VP_FREE(pPlayView->szMediaURL);
+ VP_STRDUP(pPlayView->szMediaURL, pMultiView->szMediaURL);
+
+ _vp_play_multi_view_on_nocontents_mode(pMultiView, FALSE);
+
+ VP_EVAS_DEL(pMultiView->pVideoSink);
+ pMultiView->pVideoSink =
+ _vp_play_multi_view_create_image_sink(pMultiView->pLayout,
+ (void *) pMultiView);
+ if (pMultiView->pVideoSink == NULL) {
+ VideoLogError
+ ("_vp_play_multi_view_create_image_sink handle is null");
+ return FALSE;
+ }
+
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ if (pMultiView->szMediaURL == NULL) {
+ _vp_play_multi_view_on_nocontents_mode(pMultiView, TRUE);
+ pMultiView->bIsRealize = TRUE;
+ return TRUE;
+ }
+
+ if (strlen(pMultiView->szMediaURL) <= 0) {
+ _vp_play_multi_view_on_nocontents_mode(pMultiView, TRUE);
+ pMultiView->bIsRealize = TRUE;
+ return TRUE;
+ }
+
+ if (!vp_play_util_local_file_check(pMultiView->szMediaURL)) {
+ /* popup show */
+ _vp_play_multi_view_on_nocontents_mode(pMultiView, TRUE);
+ pMultiView->bIsRealize = TRUE;
+ return TRUE;
+ }
+ }
+
+ if (bCheckDRM) {
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ bool bIsAvailablePlay = TRUE;
+ if (_vp_play_multi_view_check_drm
+ (pMultiView, &bIsAvailablePlay)) {
+ if (bIsAvailablePlay == FALSE) {
+ VideoLogWarning("Wait Drm popup result");
+ return TRUE;
+ }
+ }
+ }
+ }
+
+ if (pMultiView->nStartPosition == 0) {
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_STORE ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_LIST ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER) {
+ int nStartPos = 0;
+ if (vp_media_contents_get_played_position
+ (pMultiView->szMediaURL, &nStartPos)) {
+ pMultiView->nStartPosition = nStartPos;
+ }
+ }
+ }
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_STORE ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_LIST ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER) {
+ vp_media_contents_set_played_time(pMultiView->szMediaURL);
+ }
+
+ vp_play_subtitle_set_text(pMultiView->pSubtitle, NULL);
+
+ /* mm_player create */
+ pMultiView->pPlayerHandle = vp_mm_player_create();
+ if (pMultiView->pPlayerHandle == NULL) {
+ VideoLogError("vp_mm_player_create fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_user_param
+ (pMultiView->pPlayerHandle, (void *) pMultiView)) {
+ VideoLogError("vp_mm_player_set_user_param fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_REALIZE_ASYNC_CB,
+ (void *) __vp_multi_view_prepare_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_SEEK_COMPLETE_CB,
+ (void *) __vp_multi_view_seek_completed_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_END_OF_STREAM_CB,
+ (void *) __vp_multi_view_completed_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_INTERRUPT_CB,
+ (void *) __vp_multi_view_interrupted_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_ERROR_CB,
+ (void *) __vp_multi_view_error_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_BUFFERING_CB,
+ (void *) __vp_multi_view_buffering_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_SUBTITLE_UPDATE_CB,
+ (void *) __vp_multi_view_subtitle_updated_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_PD_MESSAGE_CB,
+ (void *) __vp_multi_view_pd_message_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_MISSED_PLUGIN_CB,
+ (void *) __vp_multi_view_missed_plugin_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback
+ (pMultiView->pPlayerHandle, VP_MM_PLAYER_IMAGE_BUFFER_CB,
+ (void *) __vp_multi_view_image_buffer_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+
+ if (!vp_mm_player_set_scaling(pMultiView->pPlayerHandle, TRUE)) {
+ VideoLogError("vp_mm_player_set_scaling fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_video_sink(pMultiView->pPlayerHandle,
+ VP_MM_PLAYER_VIDEO_TYPE_EVAS,
+ (void *) pMultiView->pVideoSink)) {
+ VideoLogError("vp_mm_player_set_video_sink fail");
+ _vp_play_multi_view_destroy_handle(pMultiView);
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_hub_download_mode
+ (pMultiView->pPlayerHandle, pPlayView->bStoreDownload)) {
+ VideoLogError("vp_mm_player_set_hub_download_mode fail");
+ }
+
+ char *szSubtitle = NULL;
+
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ char *szTitle =
+ vp_play_util_get_title_from_path((char *) pMultiView->
+ szMediaURL);
+ edje_object_part_text_set(_EDJ(pMultiView->pLayout),
+ VP_PLAY_PART_MULTI_TITLE, szTitle);
+ VP_FREE(szTitle);
+
+ if (pMultiView->szSubtitleURL) {
+ VP_STRDUP(szSubtitle, pMultiView->szSubtitleURL);
+ } else {
+ vp_play_util_get_subtitle_path(pMultiView->szMediaURL,
+ &szSubtitle);
+ }
+
+ if (szSubtitle) {
+ pMultiView->bIsExistSubtitle = TRUE;
+ vp_mm_player_set_subtitle_url(pMultiView->pPlayerHandle,
+ szSubtitle);
+ }
+
+ VP_FREE(pMultiView->szSubtitleURL);
+ VP_FREE(szSubtitle);
+ } else {
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ edje_object_part_text_set(_EDJ(pMultiView->pLayout),
+ VP_PLAY_PART_MULTI_TITLE,
+ VP_PLAY_STRING_STREAMING_PLAYER);
+ if (pPlayView->szCookie) {
+ if (!vp_mm_player_set_cookie
+ (pMultiView->pPlayerHandle, pPlayView->szCookie)) {
+ VideoLogError("vp_mm_player_set_cookie fail");
+ }
+ }
+ if (pPlayView->szProxy) {
+ if (!vp_mm_player_set_proxy
+ (pMultiView->pPlayerHandle, pPlayView->szProxy)) {
+ VideoLogError("vp_mm_player_set_proxy fail");
+ }
+ }
+ } else if (pMultiView->nLaunchingType ==
+ VIDEO_PLAY_TYPE_MULTI_PATH) {
+ char *szMultiPathURL = NULL;
+ char *szMultiSubTitle = NULL;
+ bool bIsSameAP = TRUE;
+ int nMultiPathPosition = 0;
+ int nMultiPathDuration = 0;
+ char *szTitle = NULL;
+
+ vp_multi_path_get_current_item(pMultiView->szMediaURL,
+ &szMultiPathURL, &szTitle,
+ &szMultiSubTitle,
+ &nMultiPathPosition,
+ &nMultiPathDuration,
+ &bIsSameAP,
+ pPlayView->pMultiPathList);
+ pMultiView->nStartPosition = nMultiPathPosition;
+ pMultiView->nDuration = nMultiPathDuration;
+
+ if (szTitle == NULL) {
+ szTitle =
+ vp_play_util_get_title_from_path((char *) pMultiView->
+ szMediaURL);
+ }
+
+ if (szTitle) {
+ edje_object_part_text_set(_EDJ(pMultiView->pLayout),
+ VP_PLAY_PART_MULTI_TITLE,
+ szTitle);
+ } else {
+ edje_object_part_text_set(_EDJ(pMultiView->pLayout),
+ VP_PLAY_PART_MULTI_TITLE,
+ VP_PLAY_STRING_NO_TITLE);
+ }
+
+ if (szMultiSubTitle) {
+ pMultiView->bIsExistSubtitle = TRUE;
+ vp_mm_player_set_subtitle_url(pMultiView->pPlayerHandle,
+ szMultiSubTitle);
+ } else {
+ vp_play_util_status_noti_show
+ (VP_PLAY_STRING_ERROR_SUBTITLE_FAIL);
+ }
+
+ VP_FREE(szTitle);
+ VP_FREE(szMultiPathURL);
+ VP_FREE(szMultiSubTitle);
+ }
+ }
+
+ if (pMultiView->nAudioTrackIndex > 0) {
+ vp_mm_player_set_audio_track(pMultiView->pPlayerHandle,
+ pMultiView->nAudioTrackIndex);
+ }
+
+ if (!vp_mm_player_realize_async
+ (pMultiView->pPlayerHandle, pMultiView->szMediaURL)) {
+ VideoLogError("vp_mm_player_realize_async fail");
+ vp_play_util_status_noti_show(VP_PLAY_STRING_ERROR_UNABLE_PLAY);
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ return TRUE;
+ }
+
+ vp_mm_player_sound_filter_t nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+
+ if (pMultiView->nSoundAlive == VIDEO_SA_NORMAL) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+ } else if (pMultiView->nSoundAlive == VIDEO_SA_VOICE) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_VOICE;
+ } else if (pMultiView->nSoundAlive == VIDEO_SA_MOVIE) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_MOVIE;
+ } else if (pMultiView->nSoundAlive == VIDEO_SA_7_1_CH) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_VITUAL_71;
+
+ video_sound_device_type_t nSoundDevType = VP_SOUND_DEVICE_NONE;
+ vp_sound_get_active_device(&nSoundDevType);
+
+ if (nSoundDevType != VP_SOUND_DEVICE_EARJACK) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+ }
+ }
+
+ if (nSoundFilter != VP_MM_PLAYER_FILTER_NONE) {
+ if (!vp_mm_player_set_sound_filter
+ (pMultiView->pPlayerHandle, nSoundFilter)) {
+ VideoLogWarning("vp_mm_player_set_sound_filter is fail");
+ }
+ }
+// _vp_play_multi_view_show_layout(pMultiView);
+
+ return TRUE;
+}
+
+static void _vp_play_multi_view_on_next_play(MultiView *pMultiView,
+ bool bManual)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+
+ bool bIsExit = FALSE;
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW) {
+ return;
+ }
+
+ pMultiView->nStartPosition = 0;
+ pMultiView->nAudioTrackIndex = 0;
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_NONE) {
+ if (bManual) {
+ return;
+ } else {
+ bIsExit = TRUE;
+ }
+ } else {
+ _vp_play_multi_view_play_start(pMultiView, FALSE);
+ }
+ } else if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ bIsExit = TRUE;
+ } else if (pPlayView->pMultiPathList == NULL) {
+ VideoLogError("pMultiPathList is NULL");
+ bIsExit = TRUE;
+ } else {
+ if (bManual) {
+ _vp_play_multi_view_set_played_time(pMultiView);
+ _vp_play_multi_view_set_preview(pMultiView);
+
+ char *szNextURL = NULL;
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pMultiView->szMediaURL,
+ &szNextURL, &szSubtitle,
+ &nPosition, &nDuration, TRUE,
+ pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+ if (szNextURL) {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ pMultiView->nDuration = nDuration;
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ } else {
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+ return;
+ }
+
+ if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_OFF) {
+ bIsExit = TRUE;
+ } else if (pMultiView->nRepeatMode ==
+ VIDEO_PLAY_REPEAT_ALL_STOP) {
+ char *szNextURL = NULL;
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pMultiView->szMediaURL,
+ &szNextURL, &szSubtitle,
+ &nPosition, &nDuration, FALSE,
+ pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+ if (szNextURL == NULL) {
+ bIsExit = TRUE;
+ } else {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ pMultiView->nDuration = nDuration;
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+ } else if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE) {
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ } else if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ char *szNextURL = NULL;
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pMultiView->szMediaURL,
+ &szNextURL, &szSubtitle,
+ &nPosition, &nDuration, TRUE,
+ pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+ if (szNextURL == NULL) {
+ bIsExit = TRUE;
+ } else {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ pMultiView->nDuration = nDuration;
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+ }
+ }
+ } else {
+ if (bManual) {
+ _vp_play_multi_view_set_played_time(pMultiView);
+ _vp_play_multi_view_set_preview(pMultiView);
+
+ char *szNextURL = NULL;
+ vp_media_contents_get_next_file_path(pMultiView->szMediaURL,
+ &szNextURL, TRUE,
+ pMultiView->
+ pMediaItemList);
+ if (szNextURL) {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ } else {
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+ return;
+ }
+
+ if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_OFF) {
+ bIsExit = TRUE;
+ } else if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL_STOP) {
+ char *szNextURL = NULL;
+ vp_media_contents_get_next_file_path(pMultiView->szMediaURL,
+ &szNextURL, FALSE,
+ pMultiView->
+ pMediaItemList);
+ if (szNextURL == NULL) {
+ bIsExit = TRUE;
+ } else {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+ } else if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE) {
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ } else if (pMultiView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ char *szNextURL = NULL;
+ vp_media_contents_get_next_file_path(pMultiView->szMediaURL,
+ &szNextURL, TRUE,
+ pMultiView->
+ pMediaItemList);
+ if (szNextURL == NULL) {
+ bIsExit = TRUE;
+ } else {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+ }
+ }
+
+ if (bIsExit) {
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (pPlayView->pFunc->vp_play_func_exit == NULL) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+
+ vp_play_util_set_unlock_power_key();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ }
+
+}
+
+static void _vp_play_multi_view_on_prev_play(MultiView *pMultiView,
+ bool bManual, bool bVoice)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+
+ pMultiView->nAudioTrackIndex = 0;
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ _vp_play_multi_view_play_start(pMultiView, FALSE);
+ return;
+ }
+
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pMultiView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+
+ pMultiView->nStartPosition = 0;
+ if (bVoice == FALSE) {
+ if (nPosition > 2000) {
+ vp_mm_player_set_position(pMultiView->pPlayerHandle, 0);
+ return;
+ }
+ }
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW) {
+ return;
+ }
+
+ if (bManual) {
+ _vp_play_multi_view_set_played_time(pMultiView);
+ _vp_play_multi_view_set_preview(pMultiView);
+ }
+
+ char *szPrevURL = NULL;
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (pPlayView == NULL) {
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ return;
+ } else if (pPlayView->pMultiPathList == NULL) {
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ return;
+ } else {
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pMultiView->szMediaURL,
+ &szPrevURL, &szSubtitle,
+ &nPosition, &nDuration, TRUE,
+ pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+ if (szPrevURL) {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szPrevURL);
+ VP_FREE(szPrevURL);
+ pMultiView->nDuration = nDuration;
+ }
+
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+
+ } else {
+ vp_media_contents_get_prev_file_path(pMultiView->szMediaURL,
+ &szPrevURL, TRUE,
+ pMultiView->pMediaItemList);
+ if (szPrevURL) {
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szPrevURL);
+ VP_FREE(szPrevURL);
+ }
+
+ _vp_play_multi_view_play_start(pMultiView, TRUE);
+ }
+
+
+}
+
+static void _vp_play_multi_view_set_preview(MultiView *pMultiView)
+{
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_LIST ||
+ pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER) {
+ bool bIsCloud = FALSE;
+ vp_media_contents_get_cloud_attribute(pMultiView->szMediaURL,
+ &bIsCloud);
+ if (!bIsCloud) {
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (pPlayView->bViewChange == FALSE) {
+ if (vp_file_exists(pMultiView->szMediaURL)) {
+ VideoSecureLogInfo("pMultiView-path = %s",
+ pMultiView->szMediaURL);
+ vp_play_config_set_preview_url_videos(pMultiView->
+ szMediaURL);
+ }
+ }
+ vp_play_preference_set_preview_audio_track(pMultiView->
+ nAudioTrackIndex);
+ }
+ }
+}
+
+static void _vp_play_multi_view_set_played_time(MultiView *pMultiView)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+ PlayView *pPlayView = pMultiView->pPlayView;
+ int nPosition = 0;
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_PREVIEW &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MESSAGE &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_EMAIL &&
+ pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ if (!vp_mm_player_get_position
+ (pMultiView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ } else {
+ if (nPosition == pMultiView->nDuration) {
+ vp_media_contents_set_played_position(pMultiView->
+ szMediaURL, 0);
+
+ } else {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state
+ (pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ nPosition -= 5000;
+ }
+
+ if (nPosition < 0) {
+ nPosition = 0;
+ }
+ vp_media_contents_set_played_position(pMultiView->
+ szMediaURL,
+ nPosition);
+ }
+ }
+ } else if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ int nPosition = 0;
+ if (!vp_mm_player_get_position
+ (pMultiView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ } else {
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (pPlayView->pMultiPathList == NULL) {
+ VideoLogError("pMultiPathList is NULL");
+ return;
+ }
+ vp_multi_path_set_item_position(pMultiView->szMediaURL,
+ nPosition,
+ pPlayView->pMultiPathList);
+ }
+ }
+}
+
+
+static Evas_Object *_vp_play_multi_view_create_layout(Evas_Object *
+ pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_MULTI_MAIN_EDJ,
+ VP_PLAY_EDJ_GROUP_MULTI);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ }
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ evas_object_show(pObj);
+
+ return pObj;
+
+}
+
+static Evas_Object *_vp_play_multi_view_create_image_sink(void *pParent,
+ void *pUserData)
+{
+
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return NULL;
+ }
+
+ MultiView *pMultiView = (MultiView *) pUserData;
+ Evas *pEvas = NULL;
+ Evas_Object *pObj = NULL;
+
+ pEvas = evas_object_evas_get(pParent);
+
+ pObj = evas_object_image_add(pEvas);
+ if (NULL == pObj) {
+ VideoLogError("pObj is NULL");
+ return NULL;
+ }
+
+ evas_object_image_size_set(pObj, VP_MULTI_DEFAULT_WIDTH,
+ VP_MULTI_DEFAULT_HEIGHT);
+ evas_object_resize(pObj, VP_MULTI_DEFAULT_WIDTH,
+ VP_MULTI_DEFAULT_HEIGHT);
+
+ void *pImageBuf = evas_object_image_data_get(pObj, EINA_TRUE);
+ if (NULL == pImageBuf) {
+ VideoLogError("pImageBuf is NULL");
+ VP_EVAS_DEL(pObj);
+ return NULL;
+ }
+
+ int nBufSize = VP_MULTI_DEFAULT_WIDTH * VP_MULTI_DEFAULT_HEIGHT * 4;
+
+ memset(pImageBuf, 0, nBufSize);
+ evas_object_image_data_set(pObj, pImageBuf);
+
+ evas_object_event_callback_add(pObj, EVAS_CALLBACK_RESIZE,
+ __vp_play_multi_view_imagesink_resize_cb,
+ (void *) pMultiView);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_SINK,
+ pObj);
+
+ return pObj;
+
+}
+
+static void _vp_play_multi_view_create_layout_hide_timer(MultiView *
+ pMultiView)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+
+ pMultiView->pHideTimer =
+ ecore_timer_add(VP_MULTI_HIDE_LAYOUT_TIMER_INTERVAL,
+ __vp_multi_hide_layout_timer_cb,
+ (void *) pMultiView);
+
+}
+
+static void _vp_play_multi_view_show_layout(MultiView *pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("pMultiView handle is NULL");
+ return;
+ }
+
+ if (!pMultiView->pLayout) {
+ VideoLogError("pMultiView layout handle is NULL");
+ return;
+ }
+
+ if (pMultiView->bNoContentMode) {
+ VideoLogInfo("No videos show");
+ return;
+ }
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pWin) {
+ VideoLogError("pPlayView->pWin is NULL");
+ return;
+ }
+
+ bool bPlaying = FALSE;
+
+ if (pMultiView->nPlayerState == VP_MM_PLAYER_STATE_PLAYING) {
+ bPlaying = TRUE;
+ }
+
+ evas_object_show(pMultiView->pExitBtn);
+ evas_object_show(pMultiView->pFullSizeBtn);
+ evas_object_show(pMultiView->pMinSizeBtn);
+
+ evas_object_show(pMultiView->pPrevBtn);
+ evas_object_show(pMultiView->pNextBtn);
+
+ elm_object_part_content_unset(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE);
+
+ if (bPlaying) {
+ evas_object_hide(pMultiView->pPlayBtn);
+ evas_object_show(pMultiView->pPauseBtn);
+ elm_object_part_content_set(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE,
+ pMultiView->pPauseBtn);
+ } else {
+ evas_object_hide(pMultiView->pPauseBtn);
+ evas_object_show(pMultiView->pPlayBtn);
+ elm_object_part_content_set(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE,
+ pMultiView->pPlayBtn);
+ }
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_SIGNAL_SHOW_CONTROL, "*");
+
+ pMultiView->bShowLayout = TRUE;
+
+ vp_play_multi_view_set_main_layout_focus_out((void *) pPlayView->
+ pMultiView);
+ _vp_play_multi_view_set_button_focus_sequence(pMultiView);
+ _vp_play_multi_view_create_layout_hide_timer(pMultiView);
+
+}
+
+static void _vp_play_multi_view_hide_layout(MultiView *pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("pMultiView handle is NULL");
+ return;
+ }
+
+ if (!pMultiView->pLayout) {
+ VideoLogError("pMultiView layout handle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ evas_object_hide(pMultiView->pPlayBtn);
+ evas_object_hide(pMultiView->pPauseBtn);
+ evas_object_hide(pMultiView->pPlayFocusBtn);
+ evas_object_hide(pMultiView->pPrevBtn);
+ evas_object_hide(pMultiView->pNextBtn);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_VIEW_SIGNAL_HIDE_CONTROL, "*");
+
+ vp_play_multi_view_set_main_layout_focus_out((void *) pPlayView->
+ pMultiView);
+ pMultiView->bShowLayout = FALSE;
+
+}
+
+static void _vp_play_multi_view_set_play_state(MultiView *pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("No Exist pUserData.");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ pMultiView->nPlayerState = nState;
+
+ elm_object_part_content_unset(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE);
+ switch (nState) {
+ case VP_MM_PLAYER_STATE_NONE:
+ case VP_MM_PLAYER_STATE_IDLE:
+ case VP_MM_PLAYER_STATE_READY:
+ case VP_MM_PLAYER_STATE_PAUSED:
+ VideoLogWarning("VP_MM_PLAYER_STATE_PAUSED");
+ evas_object_hide(pMultiView->pPauseBtn);
+ evas_object_show(pMultiView->pPlayBtn);
+ elm_object_part_content_set(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE,
+ pMultiView->pPlayBtn);
+ vp_play_util_set_unlock_power_key();
+ break;
+ case VP_MM_PLAYER_STATE_PLAYING:
+ VideoLogWarning("VP_MM_PLAYER_STATE_PLAYING");
+ evas_object_hide(pMultiView->pPlayBtn);
+ evas_object_show(pMultiView->pPauseBtn);
+ elm_object_part_content_set(pMultiView->pLayout,
+ VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE,
+ pMultiView->pPauseBtn);
+ vp_play_util_set_lock_power_key();
+ break;
+ case VP_MM_PLAYER_STATE_STOP:
+ break;
+ }
+
+ return;
+}
+
+static bool _vp_play_multi_view_init_buttons(MultiView *pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("play view handle is NULL");
+ return FALSE;
+ }
+
+ if (!pMultiView->pLayout) {
+ VideoLogError("play view layout handle is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pMultiView->pLayout;
+
+ pMultiView->pExitBtn =
+ vp_button_create(pParent, "playview/custom/flat_94_60/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pExitBtn) {
+ VideoLogError("vp_play_util_create_buttonis fail");
+ return FALSE;
+ }
+
+ pMultiView->pFullSizeBtn =
+ vp_button_create(pParent, "playview/custom/flat_94_60/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pFullSizeBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pMultiView->pMinSizeBtn =
+ vp_button_create(pParent, "playview/custom/flat_94_60/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pMinSizeBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pMultiView->pResizeBtn =
+ vp_button_create(pParent, "playview/custom/flat_36_36/default",
+ NULL,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pResizeBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+
+ pMultiView->pPlayBtn =
+ vp_button_create(pParent, "playview/custom/round_center/default",
+ VP_PLAY_STRING_COM_PLAY,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pPlayBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pMultiView->pPauseBtn =
+ vp_button_create(pParent, "playview/custom/round_center/default",
+ VP_PLAY_STRING_COM_PAUSE,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pPauseBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pMultiView->pPlayFocusBtn = vp_button_create(pParent, "focus", NULL,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pPlayFocusBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pMultiView->pPrevBtn =
+ vp_button_create(pParent, "playview/custom/round_left/default",
+ VP_PLAY_STRING_COM_PREVIOUS,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pPrevBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pMultiView->pNextBtn =
+ vp_button_create(pParent, "playview/custom/round_right/default",
+ VP_PLAY_STRING_COM_NEXT,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_multi_view_btn_unpress_cb,
+ (void *) pMultiView);
+ if (!pMultiView->pNextBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ Evas_Object *pIcon = NULL;
+ pIcon =
+ vp_button_create_icon(pMultiView->pResizeBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_RESIZE);
+ elm_object_part_content_set(pMultiView->pResizeBtn,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pMultiView->pResizeBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_RESIZE_PRESS);
+ elm_object_part_content_set(pMultiView->pResizeBtn,
+ VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pMultiView->pResizeBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_RESIZE);
+ elm_object_part_content_set(pMultiView->pResizeBtn,
+ VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+
+ pIcon =
+ vp_button_create_icon(pMultiView->pPlayBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_PLAY);
+ elm_object_part_content_set(pMultiView->pPlayBtn,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pMultiView->pPauseBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_PAUSE);
+ elm_object_part_content_set(pMultiView->pPauseBtn,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pMultiView->pPrevBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_REW);
+ elm_object_part_content_set(pMultiView->pPrevBtn,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon =
+ vp_button_create_icon(pMultiView->pNextBtn,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_MULTI_VIEW_FF);
+ elm_object_part_content_set(pMultiView->pNextBtn,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_CLOSE,
+ pMultiView->pExitBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_FULL_SIZE,
+ pMultiView->pFullSizeBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_MINIMIZE,
+ pMultiView->pMinSizeBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_RESIZE,
+ pMultiView->pResizeBtn);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_PLAY_PAUSE,
+ pMultiView->pPauseBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_PLAY_FOCUS,
+ pMultiView->pPlayFocusBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_REW,
+ pMultiView->pPrevBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_FF,
+ pMultiView->pNextBtn);
+
+ return TRUE;
+}
+
+static bool _vp_play_multi_view_create_gesture_layout(MultiView *
+ pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("pMultiView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pParent = pMultiView->pLayout;
+
+ pMultiView->pMainEventRect = elm_layout_add(pParent);
+ bRet =
+ elm_layout_file_set(pMultiView->pMainEventRect,
+ VP_PLAY_GESTURE_EDJ,
+ VP_PLAY_EDJ_GROUP_GESTURE);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail : %s [%s]",
+ VP_PLAY_GESTURE_EDJ, VP_PLAY_EDJ_GROUP_GESTURE);
+ return FALSE;
+ }
+ elm_object_part_content_set(pParent, "pv.multi.event",
+ pMultiView->pMainEventRect);
+
+ pMultiView->pGestureRect =
+ elm_gesture_layer_add(pMultiView->pMainEventRect);
+ if (pMultiView->pGestureRect == NULL) {
+ VideoLogError("elm_gesture_layer_add is NULL");
+ return FALSE;
+ }
+
+ elm_gesture_layer_cb_set(pMultiView->pGestureRect, ELM_GESTURE_N_TAPS,
+ ELM_GESTURE_STATE_START,
+ __vp_multi_view_gesture_n_tab_start_cb,
+ (void *) pMultiView);
+ elm_gesture_layer_cb_set(pMultiView->pGestureRect, ELM_GESTURE_N_TAPS,
+ ELM_GESTURE_STATE_END,
+ __vp_multi_view_gesture_n_tab_end_cb,
+ (void *) pMultiView);
+ elm_gesture_layer_cb_set(pMultiView->pGestureRect, ELM_GESTURE_N_TAPS,
+ ELM_GESTURE_STATE_ABORT,
+ __vp_multi_view_gesture_n_tab_abort_cb,
+ (void *) pMultiView);
+
+ elm_gesture_layer_attach(pMultiView->pGestureRect,
+ pMultiView->pMainEventRect);
+
+ evas_object_show(pMultiView->pMainEventRect);
+
+ return TRUE;
+}
+
+static bool _vp_play_multi_view_create_subtitle(MultiView *pMultiView)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+ Evas_Object *pObj = NULL;
+ pParent = pMultiView->pLayout;
+
+ pMultiView->pSubtitle =
+ vp_play_subtitle_create(pParent, VP_SUBTITLE_TYPE_MULTI);
+ if (pMultiView->pSubtitle == NULL) {
+ VideoLogError("pSubtitle create fail");
+ return FALSE;
+ }
+
+ pObj = vp_play_subtitle_get_object(pMultiView->pSubtitle);
+ if (pObj == NULL) {
+ VideoLogError("vp_play_subtitle_get_object fail");
+ return FALSE;
+ }
+ bool bShow = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bShow);
+ if (bShow) {
+ char *szFont = NULL;
+ int nSize = 0;
+ int nWinW = 0;
+ int nWinH = 0;
+ float fZoom = 1.0;
+ PlayView *pPlayView = pMultiView->pPlayView;
+ elm_win_screen_size_get(pPlayView->pWin, NULL, NULL, &nWinW,
+ &nWinH);
+
+ fZoom =
+ (float)((float)(VP_MULTI_DEFAULT_WIDTH) / (float)(nWinW));
+
+ vp_play_subtitle_realize(pMultiView->pSubtitle);
+
+ vp_play_preference_get_subtitle_size_key(&nSize);
+
+ vp_play_preference_get_subtitle_size_key(&nSize);
+ vp_play_preference_get_subtitle_font_name_key(&szFont);
+#ifndef SUBTITLE_K_FEATURE
+ video_subtitle_color_t nFontColor = VP_SUBTITLE_COLOR_BLACK;
+ int nFontColorKey = VP_SUBTITLE_COLOR_BLACK;
+
+ int nBGColorKey = VP_SUBTITLE_COLOR_BLACK;
+ video_subtitle_color_t nBGColor = VP_SUBTITLE_COLOR_BLACK;
+
+ vp_play_preference_get_subtitle_font_color_key(&nFontColorKey);
+ vp_play_preference_get_subtitle_bg_color_key(&nBGColorKey);
+
+ if (nFontColorKey == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nFontColor = VP_SUBTITLE_COLOR_BLACK;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_BLUE) {
+ nFontColor = VP_SUBTITLE_COLOR_BLUE;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_GREEN) {
+ nFontColor = VP_SUBTITLE_COLOR_GREEN;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nFontColor = VP_SUBTITLE_COLOR_WHITE;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_RED) {
+ nFontColor = VP_SUBTITLE_COLOR_RED;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_YELLOW) {
+ nFontColor = VP_SUBTITLE_COLOR_YELLOW;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_MAGENTA) {
+ nFontColor = VP_SUBTITLE_COLOR_MAGENTA;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_CYAN) {
+ nFontColor = VP_SUBTITLE_COLOR_CYAN;
+ } else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_CUSTOM) {
+ nFontColor = VP_SUBTITLE_COLOR_CUSTOM;
+ }
+
+ if (nBGColorKey == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nBGColor = VP_SUBTITLE_COLOR_BLACK;
+ } else if (nBGColorKey == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nBGColor = VP_SUBTITLE_COLOR_WHITE;
+ } else if (nBGColorKey == VIDEO_SUBTITLE_COLOR_NONE) {
+ nBGColor = VP_SUBTITLE_COLOR_NONE;
+ }
+
+ vp_play_subtitle_set_color(pMultiView->pSubtitle, nFontColor);
+ vp_play_subtitle_set_bg_color(pMultiView->pSubtitle, nBGColor);
+
+#else
+ int nAlignmentKey = VP_SUBTITLE_ALIGNMENT_CENTER;
+ vp_subtitle_alignment_t nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+ char *szColorHex = NULL;
+ char *szColorBGHex = NULL;
+
+ vp_play_preference_get_subtitle_alignment_key(&nAlignmentKey);
+ if (nAlignmentKey == VIDEO_SUBTITLE_ALIGNMENT_LEFT) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_LEFT;
+ } else if (nAlignmentKey == VIDEO_SUBTITLE_ALIGNMENT_CENTER) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+ } else if (nAlignmentKey == VIDEO_SUBTITLE_ALIGNMENT_RIGHT) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_RIGHT;
+ }
+
+ vp_play_preference_get_subtitle_font_color_hex_key(&szColorHex);
+ if (!szColorHex) {
+ VideoLogError("szColorHex is NULL");
+ }
+
+ vp_play_preference_get_subtitle_bg_color_hex_key(&szColorBGHex);
+ if (!szColorBGHex) {
+ VideoLogError("szColorBGHex is NULL");
+ }
+
+ vp_play_subtitle_set_alignment(pMultiView->pSubtitle, nAlignment);
+ vp_play_subtitle_set_color(pMultiView->pSubtitle, szColorHex);
+ vp_play_subtitle_set_bg_color(pMultiView->pSubtitle,
+ szColorBGHex);
+
+#endif
+ vp_play_subtitle_set_size(pMultiView->pSubtitle, nSize);
+ vp_play_subtitle_set_size_zoom(pMultiView->pSubtitle, fZoom);
+
+ vp_play_subtitle_set_font(pMultiView->pSubtitle, szFont);
+
+ VP_FREE(szFont);
+ }
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_MULTI_SUBTITLE,
+ pObj);
+
+ return TRUE;
+}
+
+static bool _vp_play_multi_view_init_layout(MultiView *pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("play view handle is NULL");
+ return FALSE;
+ }
+
+ pMultiView->pLayout =
+ _vp_play_multi_view_create_layout(pMultiView->pNaviFrame);
+ if (pMultiView->pLayout == NULL) {
+ VideoLogError("_vp_play_multi_view_create_layout handle is null");
+ return FALSE;
+ }
+
+ if (!_vp_play_multi_view_create_gesture_layout(pMultiView)) {
+ VideoLogError
+ ("_vp_play_multi_view_create_gesture_layout is fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_multi_view_init_buttons(pMultiView)) {
+ VideoLogError("_vp_play_multi_view_init_buttons is fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_multi_view_create_subtitle(pMultiView)) {
+ VideoLogError("_vp_play_multi_view_create_subtitle fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_multi_view_create_loading_ani(pMultiView)) {
+ VideoLogError("_vp_play_multi_view_create_loading_ani fail");
+ return FALSE;
+ }
+ Elm_Object_Item *pNaviIt = NULL;
+
+ pNaviIt =
+ elm_naviframe_item_push(pMultiView->pNaviFrame, NULL, NULL, NULL,
+ pMultiView->pLayout, "playview/multiwin");
+ elm_naviframe_item_pop_cb_set(pNaviIt,
+ __vp_play_multi_view_back_key_event_cb,
+ (void *) pMultiView);
+
+ pMultiView->pNaviItem = pNaviIt;
+
+ return TRUE;
+
+}
+
+static void _vp_play_multi_view_evas_focus_in_cb(void *pUserData,
+ Evas *pEvas,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ Evas_Object *pLayout = pUserData;
+ elm_object_signal_emit(pLayout, VP_MULTI_VIEW_TITLE_FOCUS_IN_CONTROL,
+ "*");
+
+ return;
+}
+
+static void _vp_play_multi_view_evas_focus_out_cb(void *pUserData,
+ Evas *pEvas,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ Evas_Object *pLayout = pUserData;
+ elm_object_signal_emit(pLayout, VP_MULTI_VIEW_TITLE_FOCUS_OUT_CONTROL,
+ "*");
+
+ return;
+}
+
+
+static void _vp_play_multi_view_destroy_handle(MultiView *pMultiView)
+{
+ if (!pMultiView) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pMultiView->pPlayerHandle) {
+ vp_mm_player_destroy(pMultiView->pPlayerHandle);
+ pMultiView->pPlayerHandle = NULL;
+ }
+
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSubtitleTimer);
+
+ if (pMultiView->pMediaKey) {
+ vp_media_key_destroy(pMultiView->pMediaKey);
+ pMultiView->pMediaKey = NULL;
+ }
+
+ vp_play_loading_ani_destroy(pMultiView->pLoadingAni);
+ pMultiView->pLoadingAni = NULL;
+
+ vp_play_subtitle_destroy(pMultiView->pSubtitle);
+ pMultiView->pSubtitle = NULL;
+
+ if (pMultiView->pDownloadHandle) {
+ VppDownloadDestroyItem(pMultiView->pDownloadHandle);
+ pMultiView->pDownloadHandle = NULL;
+ }
+
+ VP_FREE(pMultiView->szSubtitleURL);
+ VP_FREE(pMultiView->szMediaURL);
+
+ VP_EVAS_DEL(pMultiView->pPopup);
+ VP_EVAS_DEL(pMultiView->pExitPopupWin);
+
+ VP_EVAS_DEL(pMultiView->pImageBufferObj);
+
+ VP_EVAS_DEL(pMultiView->pExitBtn);
+ VP_EVAS_DEL(pMultiView->pFullSizeBtn);
+ VP_EVAS_DEL(pMultiView->pMinSizeBtn);
+ VP_EVAS_DEL(pMultiView->pResizeBtn);
+ VP_EVAS_DEL(pMultiView->pPlayBtn);
+ VP_EVAS_DEL(pMultiView->pPauseBtn);
+ VP_EVAS_DEL(pMultiView->pPlayFocusBtn);
+ VP_EVAS_DEL(pMultiView->pPrevBtn);
+ VP_EVAS_DEL(pMultiView->pNextBtn);
+ VP_EVAS_DEL(pMultiView->pMainEventRect);
+ VP_EVAS_DEL(pMultiView->pGestureRect);
+
+ VP_EVAS_IDLER_DEL(pMultiView->pControlIdler);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ VP_EVAS_EVENT_HANDLER_DEL(pMultiView->pMouseDownHandle);
+ VP_EVAS_EVENT_HANDLER_DEL(pMultiView->pMouseUpHandle);
+ VP_EVAS_EVENT_HANDLER_DEL(pMultiView->pMouseMoveHandle);
+ VP_EVAS_EVENT_HANDLER_DEL(pMultiView->pConfigureNotify);
+
+ VP_EVAS_DEL(pMultiView->pVideoSink);
+ VP_EVAS_DEL(pMultiView->pLayout);
+
+ VP_EVAS_PIPE_DEL(pMultiView->pPreparePipe);
+
+ if (pMultiView->pWin) {
+ Evas *e = evas_object_evas_get(pMultiView->pWin);
+ evas_event_callback_del(e, EVAS_CALLBACK_CANVAS_FOCUS_IN,
+ _vp_play_multi_view_evas_focus_in_cb);
+ evas_event_callback_del(e, EVAS_CALLBACK_CANVAS_FOCUS_OUT,
+ _vp_play_multi_view_evas_focus_out_cb);
+ }
+}
+
+static void _vp_play_multi_view_prepare_pipe_cb(void *data,
+ void *pipeData,
+ unsigned int nbyte)
+{
+ if (NULL == data) {
+ VideoLogError("data is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) data;
+ int nDuration = 0;
+ if (!vp_mm_player_get_duration(pMultiView->pPlayerHandle, &nDuration)) {
+ VideoLogError("vp_mm_player_get_duration is fail");
+ }
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_WEB
+ && nDuration == 0) {
+ pMultiView->bHLSMode = TRUE;
+ pMultiView->nStartPosition = 0;
+ } else {
+ pMultiView->bHLSMode = FALSE;
+ }
+
+ pMultiView->nDuration = nDuration;
+
+ if (pMultiView->nStartPosition > 0) {
+ if (vp_mm_player_set_position
+ (pMultiView->pPlayerHandle, pMultiView->nStartPosition)) {
+ pMultiView->bSeekComplete = FALSE;
+ }
+ } else {
+ if (vp_play_util_check_streaming(pMultiView->szMediaURL)) {
+ if (pMultiView->bBufferingComplete == FALSE) {
+ VideoLogWarning("Skip for buffering state");
+ return;
+ }
+ }
+
+ pMultiView->bIsRealize = TRUE;
+ pMultiView->bSeekComplete = TRUE;
+
+ if (pMultiView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pMultiView->pLoadingAni);
+ pMultiView->pLoadingAni = NULL;
+ }
+
+ if (pMultiView->bManualPause) {
+ vp_mm_player_set_visible(pMultiView->pPlayerHandle, TRUE);
+ vp_mm_player_pause(pMultiView->pPlayerHandle);
+ } else {
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ }
+ if (!vp_mm_player_set_subtitle_position
+ (pMultiView->pPlayerHandle,
+ pMultiView->fSubtitleSyncValue * 1000)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+ }
+
+ vp_mm_player_set_rate(pMultiView->pPlayerHandle,
+ (float) pMultiView->fPlaySpeed);
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+}
+
+/* external functions */
+multi_view_handle vp_play_multi_view_create(PlayView *pPlayView,
+ video_play_launching_type_t
+ nLaunchingType)
+{
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return NULL;
+ }
+
+ MultiView *pMultiView = NULL;
+
+ pMultiView = calloc(1, sizeof(MultiView));
+
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView alloc fail");
+ return NULL;
+ }
+
+ pMultiView->pPlayView = pPlayView;
+ pMultiView->pWin = pPlayView->pWin;
+ pMultiView->pNaviFrame = pPlayView->pNaviframe;
+ pMultiView->nLaunchingType = nLaunchingType;
+ pMultiView->fPlaySpeed = pPlayView->fPlaySpeed;
+ pMultiView->fSubtitleSyncValue = pPlayView->fSubtitleSyncValue;
+
+ if (!_vp_play_multi_view_init_layout(pMultiView)) {
+ VideoLogError("_vp_play_multi_view_init_layout is fail");
+ _vp_play_multi_view_destroy_handle(pMultiView);
+ return NULL;
+
+ }
+ pMultiView->nXwinID = elm_win_xwindow_get(pMultiView->pWin);
+
+ pMultiView->bMouseDown = FALSE;
+ pMultiView->nMousePosX = 0;
+ pMultiView->nMousePosY = 0;
+ pMultiView->nMouseButtons = 0;
+ pMultiView->bIsResizeDone = TRUE;
+ pMultiView->bNoContentMode = FALSE;
+
+ pMultiView->pMouseDownHandle =
+ ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN,
+ __vp_play_multi_view_mouse_down_cb,
+ (void *) pMultiView);
+ pMultiView->pMouseUpHandle =
+ ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP,
+ __vp_play_multi_view_mouse_up_cb,
+ (void *) pMultiView);
+ pMultiView->pMouseMoveHandle =
+ ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE,
+ __vp_play_multi_view_mouse_move_cb,
+ (void *) pMultiView);
+ pMultiView->pConfigureNotify =
+ ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE,
+ __vp_play_multi_view_configure_cb,
+ (void *) pMultiView);
+
+ // create prepare_cb pipe
+ VP_EVAS_PIPE_DEL(pMultiView->pPreparePipe);
+ pMultiView->pPreparePipe =
+ ecore_pipe_add((Ecore_Pipe_Cb)
+ _vp_play_multi_view_prepare_pipe_cb,
+ (void *) pMultiView);
+
+ if (pPlayView) {
+ pMultiView->pMediaKey =
+ vp_media_key_create(pPlayView->pWin,
+ __vp_play_multi_view_media_key_event_cb);
+ vp_media_key_set_user_data(pMultiView->pMediaKey,
+ (void *) pMultiView);
+ }
+
+ elm_win_indicator_mode_set(pMultiView->pWin, ELM_WIN_INDICATOR_HIDE);
+
+ elm_win_floating_mode_set(pMultiView->pWin, EINA_TRUE);
+
+ evas_object_resize(pMultiView->pWin, VP_MULTI_DEFAULT_WIDTH,
+ VP_MULTI_DEFAULT_HEIGHT);
+
+ Evas *e = evas_object_evas_get(pMultiView->pWin);
+ evas_event_callback_add(e, EVAS_CALLBACK_CANVAS_FOCUS_IN,
+ _vp_play_multi_view_evas_focus_in_cb,
+ pMultiView->pLayout);
+ evas_event_callback_add(e, EVAS_CALLBACK_CANVAS_FOCUS_OUT,
+ _vp_play_multi_view_evas_focus_out_cb,
+ pMultiView->pLayout);
+
+ _vp_play_multi_view_hide_layout(pMultiView);
+
+ bool bMultiPlay = FALSE;
+ vp_play_config_get_multi_play_status(&bMultiPlay);
+ if (!bMultiPlay) {
+ vp_play_config_set_multi_play_status(TRUE);
+ }
+
+ return (multi_view_handle) pMultiView;
+}
+
+void vp_play_multi_view_destroy(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+ elm_win_indicator_mode_set(pMultiView->pWin, ELM_WIN_INDICATOR_SHOW);
+
+ elm_naviframe_item_pop(pMultiView->pNaviFrame);
+
+ vp_media_contents_unset_update_cb();
+
+ vp_play_multi_view_unrealize(pMultiView);
+
+ _vp_play_multi_view_set_preview(pMultiView);
+
+ _vp_play_multi_view_destroy_handle(pMultiView);
+
+}
+
+bool vp_play_multi_view_realize(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ vp_media_key_realize(pMultiView->pMediaKey);
+ pMultiView->bActivate = TRUE;
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ pMultiView->nRepeatMode = VIDEO_PLAY_REPEAT_NONE;
+ } else {
+ int nVal = 0;
+ vp_play_preference_get_repeat_mode_key(&nVal);
+ pMultiView->nRepeatMode = (video_play_repeat_mode_t) nVal;
+ }
+
+ if (pMultiView->pMediaItemList) {
+ vp_media_contents_free_video_items(pMultiView->pMediaItemList);
+ pMultiView->pMediaItemList = NULL;
+ }
+
+ pMultiView->bIsRealize = FALSE;
+ pMultiView->bSeekComplete = TRUE;
+
+ video_play_sort_type_t nType = VIDEO_SORT_BY_NONE;
+ int nSortVal = 0;
+ vp_play_config_get_sort_type_key(&nSortVal);
+
+ nType = (video_play_sort_type_t) nSortVal;
+
+ if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_GALLERY) {
+ char *szFolder =
+ vp_play_util_get_folder_from_path(pMultiView->szMediaURL);
+ vp_media_contents_get_video_items_to_folder
+ (VIDEO_SORT_BY_DATE_MOST_RECENT, szFolder,
+ &(pMultiView->pMediaItemList));
+ VP_FREE(szFolder);
+ } else if (pMultiView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ } else {
+ PlayView *pPlayView = pMultiView->pPlayView;
+
+ if (pPlayView == NULL) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+ if (pPlayView->nListType == VIDEO_PLAY_LIST_TYPE_FOLDER) {
+ char *szFolder =
+ vp_play_util_get_folder_from_path(pMultiView->szMediaURL);
+ vp_media_contents_get_video_items_to_folder(nType, szFolder,
+ &(pMultiView->
+ pMediaItemList));
+ VP_FREE(szFolder);
+ } else {
+ vp_media_contents_get_video_items(nType,
+ &(pMultiView->
+ pMediaItemList));
+ }
+ }
+ if (!_vp_play_multi_view_play_start(pMultiView, TRUE)) {
+ return FALSE;
+ }
+
+ _vp_play_multi_view_check_during_call(pMultiView);
+
+ evas_object_show(pMultiView->pWin);
+ elm_win_activate(pMultiView->pWin);
+
+ return TRUE;
+
+}
+
+bool vp_play_multi_view_unrealize(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+ _vp_play_multi_view_set_played_time(pMultiView);
+
+ if (pMultiView->pPlayerHandle) {
+ vp_mm_player_destroy(pMultiView->pPlayerHandle);
+ pMultiView->pPlayerHandle = NULL;
+ }
+
+ VP_EVAS_DEL(pMultiView->pVideoSink);
+ VP_EVAS_TIMER_DEL(pMultiView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSubtitleTimer);
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ VP_FREE(pMultiView->szSubtitleURL);
+
+ vp_media_key_unrealize(pMultiView->pMediaKey);
+
+ if (pMultiView->pMediaItemList) {
+ vp_media_contents_free_video_items(pMultiView->pMediaItemList);
+ pMultiView->pMediaItemList = NULL;
+ }
+
+ pMultiView->bIsRealize = FALSE;
+
+ vp_play_util_set_unlock_power_key();
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_is_realize(multi_view_handle pViewHandle,
+ bool *bIsRealize)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ *bIsRealize = pMultiView->bIsRealize;
+
+ return TRUE;
+
+}
+
+bool vp_play_multi_view_pause(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ vp_mm_player_pause(pMultiView->pPlayerHandle);
+ _vp_play_multi_view_set_play_state(pMultiView);
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_resume(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+ if (pMultiView->bManualPause == FALSE) {
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ _vp_play_multi_view_check_during_call(pMultiView);
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_resume_or_pause(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pMultiView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ switch (nState) {
+ case VP_MM_PLAYER_STATE_NONE:
+ case VP_MM_PLAYER_STATE_IDLE:
+ case VP_MM_PLAYER_STATE_READY:
+ case VP_MM_PLAYER_STATE_PAUSED:
+ vp_mm_player_play(pMultiView->pPlayerHandle);
+ break;
+ case VP_MM_PLAYER_STATE_PLAYING:
+ vp_mm_player_pause(pMultiView->pPlayerHandle);
+ break;
+ case VP_MM_PLAYER_STATE_STOP:
+ break;
+ }
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+ _vp_play_multi_view_check_during_call(pMultiView);
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_next_play(multi_view_handle pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ _vp_play_multi_view_on_next_play(pMultiView, TRUE);
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_prev_play(multi_view_handle pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ _vp_play_multi_view_on_prev_play(pMultiView, TRUE, FALSE);
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_url(multi_view_handle pViewHandle,
+ const char *szMediaURL)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ if (szMediaURL == NULL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ VP_FREE(pMultiView->szMediaURL);
+ VP_STRDUP(pMultiView->szMediaURL, szMediaURL);
+
+ return TRUE;
+
+}
+
+bool vp_play_multi_view_set_start_position(multi_view_handle pViewHandle,
+ int nStartPosition)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ if (nStartPosition < 0) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ pMultiView->nStartPosition = nStartPosition;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_get_last_position(multi_view_handle pViewHandle,
+ int *nCurPosition)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ int nPosition = 0;
+
+ if (pMultiView->bHLSMode) {
+ *nCurPosition = 0;
+ return TRUE;
+ }
+
+ if (!vp_mm_player_get_position(pMultiView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return FALSE;
+ }
+
+ pMultiView->nCurPosition = nPosition;
+
+ *nCurPosition = nPosition;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_subtitle(multi_view_handle pViewHandle,
+ char *szSubtitle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ VP_FREE(pMultiView->szSubtitleURL);
+
+ VP_STRDUP(pMultiView->szSubtitleURL, szSubtitle);
+
+ return TRUE;
+
+}
+
+bool vp_play_multi_view_get_subtitle(multi_view_handle pViewHandle,
+ char **szSubtitle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ if (!vp_mm_player_get_subtitle_url
+ (pMultiView->pPlayerHandle, szSubtitle)) {
+ VideoLogError("vp_mm_player_get_subtitle_url is fail");
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+bool vp_play_multi_view_get_audio_track(multi_view_handle pViewHandle,
+ int *nAudioTrack)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ *nAudioTrack = pMultiView->nAudioTrackIndex;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_audio_track(multi_view_handle pViewHandle,
+ int nAudioTrack)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ pMultiView->nAudioTrackIndex = nAudioTrack;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_manual_pause(multi_view_handle pViewHandle,
+ bool bManualPause)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ pMultiView->bManualPause = bManualPause;
+
+ return TRUE;
+
+}
+
+bool vp_play_multi_view_get_manual_pause(multi_view_handle pViewHandle,
+ bool *bManualPause)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ *bManualPause = pMultiView->bManualPause;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_rotate(multi_view_handle pViewHandle,
+ video_play_rotate_t nRotate)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ if (pMultiView->pWin == NULL) {
+ VideoLogError("Multi Win is NULL.");
+ return FALSE;
+ }
+
+ if (pMultiView->nRotate == nRotate) {
+ VideoLogWarning("Skip for same rotate");
+ return TRUE;
+ }
+
+ if (nRotate == VIDEO_PLAY_ROTATE_NONE) {
+// elm_win_rotation_set(pMultiView->pWin, 0);
+ } else if (nRotate == VIDEO_PLAY_ROTATE_90) {
+// elm_win_rotation_set(pMultiView->pWin, 90);
+ } else if (nRotate == VIDEO_PLAY_ROTATE_180) {
+// elm_win_rotation_set(pMultiView->pWin, 180);
+ } else if (nRotate == VIDEO_PLAY_ROTATE_270) {
+// elm_win_rotation_set(pMultiView->pWin, 270);
+ }
+
+ pMultiView->nRotate = nRotate;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_get_sound_filter(multi_view_handle pViewHandle,
+ video_sound_alive_t *
+ nSoundAlive)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ *nSoundAlive = pMultiView->nSoundAlive;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_sound_filter(multi_view_handle pViewHandle,
+ video_sound_alive_t nSoundAlive)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ pMultiView->nSoundAlive = nSoundAlive;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_set_launching_mode(multi_view_handle pViewHandle,
+ video_play_launching_type_t
+ nLaunchingType)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ pMultiView->nLaunchingType = nLaunchingType;
+ pMultiView->bManualPause = FALSE;
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_update(multi_view_handle pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_volume_increase(multi_view_handle pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ int nMaxValue = 0;
+ int nCurVal = 0;
+ if (!vp_sound_get_max_volume(&nMaxValue)) {
+ VideoLogError("vp_sound_get_max_volume is fail");
+ return FALSE;
+ }
+
+ if (!vp_sound_get_volume(&nCurVal)) {
+ VideoLogError("vp_sound_get_volume is fail");
+ return FALSE;
+ }
+ nCurVal++;
+
+ if (nCurVal < nMaxValue) {
+ if (!vp_sound_set_volume(nCurVal)) {
+ VideoLogError("vp_sound_set_volume is fail");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_multi_view_volume_decrease(multi_view_handle pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ int nCurVal = 0;
+
+ if (!vp_sound_get_volume(&nCurVal)) {
+ VideoLogError("vp_sound_get_volume is fail");
+ return FALSE;
+ }
+
+ nCurVal--;
+
+ if (nCurVal >= 0) {
+ if (!vp_sound_set_volume(nCurVal)) {
+ VideoLogError("vp_sound_set_volume is fail");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void vp_play_multi_view_web_type_disconnect(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pMultiView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+
+ vp_mm_player_destroy(pMultiView->pPlayerHandle);
+ pMultiView->pPlayerHandle = NULL;
+
+ if (nPosition > 0)
+ pMultiView->nStartPosition = nPosition;
+}
+
+void vp_play_multi_view_web_type_reconnect(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ if (!pMultiView->pPlayView) {
+ VideoLogError("pMultiView->pPlayView is NULL");
+ return;
+ }
+
+ if (pMultiView->nLaunchingType != VIDEO_PLAY_TYPE_WEB) {
+ VideoLogInfo("Not WEB type");
+ return;
+ }
+
+ if (pMultiView->pPlayerHandle) {
+ vp_mm_player_destroy(pMultiView->pPlayerHandle);
+ pMultiView->pPlayerHandle = NULL;
+ }
+
+ PlayView *pPlayView = pMultiView->pPlayView;
+ if (pPlayView->nStartPosition > 0)
+ pMultiView->nStartPosition = pPlayView->nStartPosition;
+
+ VideoLogInfo("pMultiView->nStartPosition : [%d]",
+ pMultiView->nStartPosition);
+ _vp_play_multi_view_play_start(pMultiView, FALSE);
+}
+
+void vp_play_multi_view_set_cancelkey_press(multi_view_handle pViewHandle,
+ bool bCancelKeyPress)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ pMultiView->bCancelKeyPress = bCancelKeyPress;
+}
+
+void vp_play_multi_view_get_cancelkey_press(multi_view_handle pViewHandle,
+ bool *bCancelKeyPress)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ *bCancelKeyPress = pMultiView->bCancelKeyPress;
+}
+
+void vp_play_multi_view_destroy_exit_popup(multi_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ if (pMultiView->pExitPopupWin) {
+ VP_EVAS_DEL(pMultiView->pPopup);
+ VP_EVAS_DEL(pMultiView->pExitPopupWin);
+ }
+}
+
+bool vp_play_multi_view_get_main_layout_show_state(multi_view_handle *
+ pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ return pMultiView->bShowLayout;
+}
+
+
+//Focus UI
+static void _vp_play_multi_view_set_button_focus_sequence(MultiView *
+ pMultiView)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+
+ elm_object_focus_set(pMultiView->pMinSizeBtn, EINA_TRUE);
+
+ vp_play_util_focus_next_object_set(pMultiView->pMinSizeBtn,
+ pMultiView->pFullSizeBtn,
+ ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pMultiView->pMinSizeBtn,
+ pMultiView->pExitBtn,
+ ELM_FOCUS_LEFT);
+ vp_play_util_focus_next_object_set(pMultiView->pMinSizeBtn,
+ pMultiView->pPlayFocusBtn,
+ ELM_FOCUS_DOWN);
+
+ vp_play_util_focus_next_object_set(pMultiView->pFullSizeBtn,
+ pMultiView->pExitBtn,
+ ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pMultiView->pFullSizeBtn,
+ pMultiView->pMinSizeBtn,
+ ELM_FOCUS_LEFT);
+ vp_play_util_focus_next_object_set(pMultiView->pFullSizeBtn,
+ pMultiView->pPlayFocusBtn,
+ ELM_FOCUS_DOWN);
+
+ vp_play_util_focus_next_object_set(pMultiView->pExitBtn,
+ pMultiView->pMinSizeBtn,
+ ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pMultiView->pExitBtn,
+ pMultiView->pFullSizeBtn,
+ ELM_FOCUS_LEFT);
+ vp_play_util_focus_next_object_set(pMultiView->pExitBtn,
+ pMultiView->pPlayFocusBtn,
+ ELM_FOCUS_DOWN);
+
+
+ vp_play_util_focus_next_object_set(pMultiView->pPlayFocusBtn,
+ pMultiView->pNextBtn,
+ ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pMultiView->pPlayFocusBtn,
+ pMultiView->pPrevBtn,
+ ELM_FOCUS_LEFT);
+ vp_play_util_focus_next_object_set(pMultiView->pPlayFocusBtn,
+ pMultiView->pMinSizeBtn,
+ ELM_FOCUS_UP);
+
+ vp_play_util_focus_next_object_set(pMultiView->pNextBtn,
+ pMultiView->pPrevBtn,
+ ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pMultiView->pNextBtn,
+ pMultiView->pPlayFocusBtn,
+ ELM_FOCUS_LEFT);
+ vp_play_util_focus_next_object_set(pMultiView->pNextBtn,
+ pMultiView->pMinSizeBtn,
+ ELM_FOCUS_UP);
+
+ vp_play_util_focus_next_object_set(pMultiView->pPrevBtn,
+ pMultiView->pPlayFocusBtn,
+ ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pMultiView->pPrevBtn,
+ pMultiView->pNextBtn,
+ ELM_FOCUS_LEFT);
+ vp_play_util_focus_next_object_set(pMultiView->pPrevBtn,
+ pMultiView->pMinSizeBtn,
+ ELM_FOCUS_UP);
+
+}
+
+//Focus UI
+void vp_play_multi_view_set_main_layout_focus_out(multi_view_handle *
+ pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+ pMultiView->bMainFocusState = FALSE;
+
+ elm_object_focus_set(pMultiView->pNaviFrame, EINA_FALSE);
+ elm_object_tree_focus_allow_set(pMultiView->pNaviFrame, EINA_FALSE);
+ elm_object_focus_allow_set(pMultiView->pNaviFrame, EINA_FALSE);
+
+ elm_object_focus_set(pMultiView->pLayout, EINA_FALSE);
+ elm_object_tree_focus_allow_set(pMultiView->pLayout, EINA_FALSE);
+ elm_object_focus_allow_set(pMultiView->pLayout, EINA_FALSE);
+}
+
+void vp_play_multi_view_set_main_layout_focus_in(multi_view_handle *
+ pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ if (pMultiView->bMainFocusState == TRUE) {
+ VideoLogInfo("Already Focus In");
+ return;
+ }
+ pMultiView->bMainFocusState = TRUE;
+
+ elm_object_focus_allow_set(pMultiView->pNaviFrame, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pMultiView->pNaviFrame, EINA_TRUE);
+ elm_object_focus_set(pMultiView->pNaviFrame, EINA_TRUE);
+
+ elm_object_focus_allow_set(pMultiView->pLayout, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pMultiView->pLayout, EINA_TRUE);
+ elm_object_focus_set(pMultiView->pLayout, EINA_TRUE);
+
+ elm_object_focus_set(pMultiView->pMinSizeBtn, EINA_TRUE);
+}
+
+bool vp_play_multi_view_get_main_layout_focus_state(multi_view_handle *
+ pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ return pMultiView->bMainFocusState;
+}
+
+void vp_play_multi_view_show_main_layout(multi_view_handle *pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ _vp_play_multi_view_show_layout(pMultiView);
+}
+
+static void _vp_play_multi_view_speed_for_steps(MultiView *pMultiView,
+ bool bSpeedFF)
+{
+ if (pMultiView == NULL) {
+ VideoLogError("pMultiView is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (pMultiView->bSeekComplete == FALSE) {
+ VideoLogError("bSeekComplete is fail");
+ return;
+ }
+
+ int nSetPosition = 0;
+ int nCurPosition = 0;
+
+ if (!vp_mm_player_get_position
+ (pMultiView->pPlayerHandle, &nCurPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return;
+ }
+
+ if (pMultiView->nDuration <= nCurPosition) {
+ _vp_play_multi_view_on_next_play(pMultiView, FALSE);
+ return;
+ }
+
+ VideoLogInfo("pMultiView->nDuration %d", pMultiView->nDuration);
+ if (bSpeedFF) {
+ nSetPosition = nCurPosition + (15 * 1000); //15 sec
+ } else {
+ nSetPosition = nCurPosition - (15 * 1000);
+ }
+
+ if (pMultiView->nDuration < nSetPosition) {
+ nSetPosition = pMultiView->nDuration;
+ }
+
+ if (nSetPosition < 0) {
+ nSetPosition = 0;
+ }
+#if 1
+ if (vp_mm_player_set_position
+ (pMultiView->pPlayerHandle, nSetPosition)) {
+#else
+ if (vp_mm_player_set_position_by_key_frame
+ (pMultiView->pPlayerHandle, nSetPosition)) {
+#endif
+ pMultiView->bSeekComplete = FALSE;
+ pMultiView->nCurPosition = nSetPosition;
+ }
+
+ return;
+}
+
+void
+vp_play_multi_view_ff_rew_keyboard_longpress_event_cb(multi_view_handle
+ pViewHandle,
+ bool bRelease,
+ bool bFFseek)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ if (pMultiView->pSpeedTimer == NULL && bRelease == FALSE) {
+ pMultiView->bSpeedDown = FALSE;
+
+ if (bFFseek)
+ __vp_play_multi_view_media_key_event_cb
+ (VP_MEDIA_KEY_FASTFORWARD, bRelease, pMultiView);
+ else
+ __vp_play_multi_view_media_key_event_cb(VP_MEDIA_KEY_REWIND,
+ bRelease, pMultiView);
+ } else if (pMultiView->pSpeedTimer && bRelease == TRUE) {
+
+ if (pMultiView->nSpeedValue < 2) {
+ VideoLogInfo("speed up");
+ _vp_play_multi_view_speed_for_steps(pMultiView, bFFseek);
+ } else {
+ int nPosition = 0;
+ if (vp_mm_player_get_position
+ (pMultiView->pPlayerHandle, &nPosition)) {
+ if (vp_mm_player_set_position
+ (pMultiView->pPlayerHandle,
+ pMultiView->nCurPosition)) {
+ pMultiView->bSeekComplete = FALSE;
+ }
+ }
+ }
+
+ VP_EVAS_TIMER_DEL(pMultiView->pSpeedTimer);
+
+ elm_object_signal_emit(pMultiView->pLayout,
+ VP_MULTI_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pMultiView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pMultiView->pPlayerHandle)) {
+ VideoLogError("play Fail");
+ }
+ pMultiView->bManualPause = FALSE;
+ }
+
+ _vp_play_multi_view_set_play_state(pMultiView);
+ }
+ VP_FREE(pMultiView);
+}
+
+bool vp_play_multi_view_change_to_normal_view(multi_view_handle
+ pViewHandle)
+{
+ if (pViewHandle == NULL) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ MultiView *pMultiView = (MultiView *) pViewHandle;
+
+ __vp_play_multi_view_btn_clicked_cb(pViewHandle,
+ pMultiView->pFullSizeBtn, NULL);
+
+ return TRUE;
+}
diff --git a/playview/src/view/vp-play-normal-view.c b/playview/src/view/vp-play-normal-view.c
new file mode 100755
index 0000000..5184fb7
--- /dev/null
+++ b/playview/src/view/vp-play-normal-view.c
@@ -0,0 +1,13381 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <math.h>
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-normal-view.h"
+
+#include "vp-play-button.h"
+#include "vp-play-bookmark.h"
+#include "vp-play-progressbar.h"
+#include "vp-play-subtitle.h"
+#include "vp-play-loading-ani.h"
+
+#include "vp-mm-player.h"
+#include "vp-play-popup.h"
+#include "vp-play-preference.h"
+#include "vp-play-config.h"
+#include "vp-play-util.h"
+#include "vp-play-button.h"
+#include "vp-play-volume.h"
+#include "vp-play-volume-popup.h"
+#include "vp-play-brightness-popup.h"
+
+#include "vp-image-util.h"
+#include "vp-media-contents.h"
+
+#include "vp-share.h"
+#include "vp-play-ug.h"
+#include "vp-sound-alive.h"
+#include "vp-sound-path.h"
+#include "vp-audio-track.h"
+
+#include "vp-sound.h"
+#include "vp-subtitle.h"
+#include "vp-subtitle-sync.h"
+#include "vp-subtitle-select.h"
+#include "vp-subtitle-font.h"
+#include "vp-subtitle-size.h"
+#include "vp-subtitle-alignment.h"
+#include "vp-subtitle-color.h"
+#include "vp-subtitle-bg-color.h"
+#include "vp-subtitle-track.h"
+#include "vp-subtitle-edge.h"
+
+#include "vp-repeat.h"
+#include "vp-capture.h"
+#include "vp-play-speed.h"
+#include "vp-setting.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "vp-drm.h"
+#endif
+#include "vp-device.h"
+#include "vp-media-key.h"
+#include "vp-detail.h"
+#include "vp-zoom-guide.h"
+
+#include "vp-multi-path.h"
+
+#include "VppDownload.h"
+
+#include "vp-device-language.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "vp-avrcp.h"
+
+
+#define VP_NORMAL_PROGRESS_TIMER_INTERVAL 0.3
+#define VP_NORMAL_PROGRESS_BAR_START_TERM 26 * elm_config_scale_get()
+#define VP_NORMAL_PROGRESS_BAR_WIDTH_TERM 52 * elm_config_scale_get()
+
+#define VP_NORMAL_HIDE_LAYOUT_TIMER_INTERVAL 5.0
+#define VP_NORMAL_HIDE_LAYOUT_FINISH_TIMER_INTERVAL 2.0 //3.0
+#define VP_NORMAL_WINDOW_LOAD_FINISH_TIMER_INTERVAL 1.5 //wait for window loaded
+
+#define VP_NORMAL_LONG_PRESS_TIMER_INTERVAL 1.0
+#define VP_NORMAL_SUBTITLE_LONG_PRESS_TIMER_INTERVAL 0.5
+
+#define VP_NORMAL_HIDE_SCREEN_LOCK_TIMER_INTERVAL 3.0
+#define VP_NORMAL_MOMENTUM_PRESS_TIMER_INTERVAL 0.2
+#define VP_NORMAL_SCREENSHOT_TIMER_INTERVAL 2.0
+#define VP_NORMAL_EXIT_WAIT_TIMER_INTERVAL 3.0
+#define VP_NORMAL_INDICATOR_HIDE_TIMER_INTERVAL 2.0
+
+#define VP_NORMAL_ALL_BUTTON_L 885
+#define VP_NORMAL_ALL_BUTTON_VSFRP_L 680
+#define VP_NORMAL_ALL_BUTTON_FRP_L 430
+#define VP_NORMAL_ALL_BUTTON_P_L 140
+
+
+#define VP_SUBTITLE_PORTRAIT_POSX 360
+#define VP_SUBTITLE_PORTRAIT_POSY 1335
+#define VP_SUBTITLE_LANDSCAPE_POSX 640
+#define VP_SUBTITLE_LANDSCAPE_POSY 765
+
+#define VP_SUBTITLE_LANDSCAPE_SIZE 1280
+#define VP_SUBTITLE_PORTRAIT_SIZE 720
+
+#define VP_SUBTITLE_MARGIN_SIZE 30
+
+#define VP_NORMAL_SPEED_VALUE_MAX 64
+
+#define VP_NORMAL_VALUE_SEC 60
+
+#define VP_VOICE_MUTE_VALUE 0
+
+#define VP_NORMAL_HIDE_VOLUME_TIMER_INTERVAL 0.05
+
+#define VP_NORMAL_SET_GREP_BOX_SIZE_ID 1
+#define VP_NORMAL_SET_CAPTION_WINDOW_SIZE_ID 2
+#define VP_NORMAL_SET_CAPTION_WINDOW_COLOR_ID 3
+#define VP_NORMAL_SET_CAPTION_WINDOW_OFFSET_ID 4
+
+#define VP_SUBTITLE_SET_GREP_BOX_SIZE_ID 1
+#define VP_SUBTITLE_SET_CAPTION_WINDOW_SIZE_ID 2
+
+#ifdef K_FEATURE_MICROSEEK
+#define VP_NORMAL_SZ_HALF_SPEED "1/2"
+#define VP_NORMAL_SZ_QUARTER_SPEED "1/4"
+#define VP_NORMAL_MICROSEEK_TEXT_HEIGHT (46 * elm_config_scale_get())
+#define VP_NORMAL_MICROSEEK_IMAGE_WIDTH (46 * elm_config_scale_get())
+#define VP_NORMAL_MICROSEEK_IMAGE_HEIGHT (70 * elm_config_scale_get())
+#endif
+
+#ifdef _NATIVE_BUFFER_SYNC
+#define VP_NORMAL_DEFAULT_WIDTH (480 * elm_config_scale_get())
+#define VP_NORMAL_DEFAULT_HEIGHT (800 * elm_config_scale_get())
+#endif
+
+typedef struct _ProgressMouseInfo {
+ int nDownPosX;
+}ProgressMouseInfo;
+
+typedef enum
+{
+ BUTTON_TYPE_NORMAL = 0,
+ BUTTON_TYPE_PRESSED,
+ BUTTON_TYPE_DIM,
+}ButtonType;
+
+#ifdef K_FEATURE_MICROSEEK
+typedef enum
+{
+ SEEK_LEVEL_NORMAL = 1,
+ SEEK_LEVEL_HALF = 2,
+ SEEK_LEVEL_QUARTER = 4,
+}SeekLevel;
+#endif
+
+typedef struct _NormalView
+{
+ PlayView *pPlayView;
+ Ecore_X_Window nXwinID;
+
+ Evas_Object *pNaviFrame;
+ Elm_Object_Item *pNaviItem;
+ Evas_Object *pMainEventRect;
+ Evas_Object *pGestureRect;
+ Evas_Object *pMainLayout;
+#ifdef _NATIVE_BUFFER_SYNC
+ Evas_Object *pVideoSink;
+#endif
+ Evas_Object *pTopControlLayout;
+ Evas_Object *pControlLayout;
+ Evas_Object *pFunctionLayout;
+
+ Evas_Object *pNaviLeftBtn;
+ Evas_Object *pNaviRightBtn;
+
+ Evas_Object *pSoundPathBtn;
+ Evas_Object *pAllsharBtn;
+
+ Evas_Object *pMoreBtn;
+ Evas_Object *pBackBtn;
+
+ Evas_Object *pCtxPopup;
+
+ Evas_Object *pImageBufferObj;
+
+ Evas_Object *pRotateBtn;
+ Evas_Object *pVolumeBtn;
+ Evas_Object *pScreenSizeBtn;
+ Evas_Object *pBookmarkBtn;
+ Evas_Object *pMultiWinBtn;
+ Evas_Object *pRepeatBtn;
+ Evas_Object *pTrimBtn;
+ Evas_Object *pSoundAliveBtn;
+ Evas_Object *pShareBtn;
+ Evas_Object *pLockBtn;
+
+ Evas_Object *pResumeBtn;
+ Evas_Object *pPauseBtn;
+ Evas_Object *pPlayFocusBtn;
+ Evas_Object *pPrevBtn;
+ Evas_Object *pNextBtn;
+
+ Evas_Object *pCaptureBtn;
+ Evas_Object *pCaptureRewBtn;
+ Evas_Object *pCaptureFFBtn;
+ Evas_Object *pPopupBtn;
+
+ Evas_Object *pSpeedBoxCtrl;
+
+ Evas_Object *pPopup;
+
+ Evas_Object *pLoadingAni;
+
+ Ecore_Timer *pHideTimer;
+ Ecore_Timer *pHideFinishTimer;
+ Ecore_Timer *pLockScreenTimer;
+
+ Ecore_Timer *pSpeedTimer;
+ bool bSpeedFF;
+ int nSpeedValue;
+ bool bSpeedDown;
+ bool bKeyPressed;
+
+ Ecore_Timer *pExitWaitTimer;
+
+ Ecore_Idler *pControlIdler;
+ Ecore_Idler *pMultiWinIdler;
+
+ GList *pMediaItemList;
+
+ bool bIsRealize;
+ bool bIsActive;
+ bool bShowLayout;
+ bool bMainFocusState;
+ bool bIsPopupShow;
+ bool bIsSubtitleShow;
+ bool bIsVideoUnsupport;
+
+ /* bookmark part */
+ bookmark_handle pBookmarkHandle;
+ Evas_Object *pBookmarkObj;
+ bool bCaptureComplete;
+ int nCapturePosition;
+ /* progressbar part */
+ Evas_Object *pProgressEvent;
+ Ecore_Timer *pProgressTimer;
+ progressbar_handle pProgressbar;
+ bool bProgressDown;
+#ifdef K_FEATURE_MICROSEEK
+ double nPrevCanvasX;
+ double nPrevPositionX;
+#endif
+ int nCurPosition;
+ bool bHLSMode;
+ int nWaitPos;
+ bool bSeekComplete;
+ bool bSeekPause;
+ bool bSeekResume;
+#ifdef K_FEATURE_MICROSEEK
+ Evas_Object *pMicroSeekTextLayout;
+ Evas_Object *pMicroSeekImageLayout;
+#endif
+#ifdef FLICK_JUMP
+ int nFlickPressX1;
+ int nFlickPressY1;
+ bool bFlickRewind;
+ bool bFlickWaiting;
+ Evas_Object *pFlickJumpSeek;
+#endif
+ bool bBufferingComplete;
+
+ char *szMediaURL;
+ char *szSubtitleURL;
+ int nStartPosition;
+ bool bManualPause;
+
+ mm_player_handle pPlayerHandle;
+ vp_mm_player_display_mode_t nDisplayMode;
+
+ int nDuration;
+ video_play_launching_type_t nLaunchingType;
+ video_play_rotate_t nRotate;
+
+ share_handle pShareHandle;
+
+ volume_handle pVolumeHandle;
+ volume_popup_handle pVolumePopupHandle;
+ brightness_handle pBrightnessHandle;
+
+ sound_alive_handle pSAHandle;
+ int nSoundAlive;
+
+ subtitle_handle pSubtitle;
+ Ecore_Timer *pSubtitleTimer;
+ bool bIsExistSubtitle;
+ subtitle_popup_handle pSubtitlePopup;
+ subtitle_select_handle pSubtitleSelectPopup;
+#ifdef SUBTITLE_K_FEATURE
+ subtitle_alignment_handle pSubtitleAlignmentPopup;
+#endif
+ subtitle_font_handle pSubtitleFontPopup;
+ subtitle_size_handle pSubtitleSizePopup;
+ subtitle_edge_handle pSubtitleEdgePopup;
+ subtitle_color_handle pSubtitleFontColorPopup;
+#ifndef SUBTITLE_K_FEATURE
+ subtitle_bg_color_handle pSubtitleBGColorPopup;
+#else
+ subtitle_color_handle pSubtitleBGColorPopup;
+#endif
+ subtitle_color_handle pSubtitleCaptionWinColorPopup;
+ subtitle_sync_popup pSubtitleSyncPopup;
+ subtitle_track_handle pSubtitleTrackHandle;
+ int nDefaultSubtitleTrackIndex;
+ float fSubtitleSyncValue;
+
+ repeat_handle pRepeatHandle;
+ video_play_repeat_mode_t nRepeatMode;
+
+ sound_path_handle pSoundPathHandle;
+ setting_popup_handle pSettingHandle;
+ detail_handle pDetailHandle;
+
+ audio_track_handle pAudioTrackHandle;
+ int nDefaultAudioTrackIndex;
+
+ media_key_handle pMediaKey;
+ bool bLockScreen;
+ char *szScreenMirrorMacAddr;
+
+ VppDownloadHandle pDownloadHandle;
+ bool bVideoOnlyMode;
+ bool bDeviceRemoveInterrupt;
+
+ int dSubtitleStartTime;
+ int dSubtitleEndTime;
+
+ Ecore_Timer *pMomentTimer;
+ int nGestureStartPosX;
+ int nGestureStartPosY;
+ int nGestureOldPosY;
+ int nMomentDefaultVal;
+ int nMomentWeight;
+ int nMomentStep;
+ int nWindowWidth;
+ int nWindowHeight;
+
+ Ecore_Job *pVolumeJob;
+ Ecore_Job *pBrightnessJob;
+
+ bool bMomentumIncrease;
+
+ play_speed_popup pPlaySpeedPopup;
+ double fPlaySpeed;
+
+ capture_popup_handle pCapturePopup;
+ Ecore_Timer *pScreenShotTimer;
+ Evas_Object *pScreenShot;
+
+ bool bCaptureMode;
+ bool bCaptureBookmark;
+ bool bEarjackConnect;
+
+ zoom_guide_handle pZoomGuide;
+ int nZoomPosX;
+ int nZoomPosY;
+ int nPrevZoomPosX;
+ int nPrevZoomPosY;
+
+ double fActiveZoom;
+ double fZoomValue;
+ double fPrevZoomValue;
+ bool bZoomEnable;
+
+ int nLastVolume;
+
+ Ecore_Pipe *pSeekPipe;
+
+ vp_normal_view_state_cb vp_mini_played_state_cb;
+ bool bKeySpeed;
+ Ecore_Pipe *pPreparePipe;
+ bool bDestroyNavi;
+ bool bSharepopup;
+ bool bSharePanelPause;
+ bool bSharePanelFocusIn; //first focus in is menu popup hide, second is share panel hdie
+
+#ifdef SUBTITLE_K_FEATURE
+ bool bSubtitleDown;
+
+ int nInitSubtitleX;
+ int nInitSubtitleY;
+
+ int nDeltaSubtitleX;
+ int nDeltaSubtitleY;
+
+ int nLongPressX1;
+ int nLongPressY1;
+ int nLongPressX2;
+ int nLongPressY2;
+
+ Ecore_Timer *pSubtitleMoveTimer;
+ int nSubtitleInterval;
+#endif
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ int nSubtitleLanguageCount;
+ bool *pSelectedSubtitleLanguage;
+#endif
+}NormalView;
+
+
+static void _vp_play_normal_view_destroy_handle(NormalView *pNormalView);
+static bool _vp_play_normal_view_set_subtitle_font_config(NormalView *pNormalView);
+static bool _vp_play_normal_view_update_progress_value(NormalView *pNormalView);
+static bool _vp_play_normal_view_play_start(NormalView *pNormalView, bool bCheckDRM);
+static void _vp_play_normal_view_on_next_play(NormalView *pNormalView, bool bManual);
+static void _vp_play_normal_view_on_prev_play(NormalView *pNormalView, bool bManual, bool bVoice);
+static bool _vp_play_normal_view_check_during_call(NormalView *pNormalView);
+static void _vp_play_normal_view_show_audio_only_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_show_video_only_popup(NormalView *pNormalView);
+static bool _vp_play_normal_view_check_audio_only(NormalView *pNormalView);
+static bool _vp_play_normal_view_check_drm_lock(NormalView *pNormalView, bool *bLock);
+static void _vp_play_normal_view_set_played_time(NormalView *pNormalView);
+static void _vp_play_normal_view_screen_capture(NormalView *pNormalView);
+static void _vp_play_normal_view_screen_move(NormalView *pNormalView, bool bFoward);
+
+static void _vp_play_normal_view_create_progress_timer(NormalView *pNormalView);
+static void _vp_play_normal_view_create_layout_hide_timer(NormalView *pNormalView);
+static bool _vp_play_normal_view_create_loading_ani(NormalView *pNormalView);
+static void _vp_play_normal_view_set_play_state(NormalView *pNormalView);
+static double _vp_play_normal_view_get_mouse_pos_ratio(Evas_Object *pObj, int nCurX);
+static void _vp_play_normal_view_all_close_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_show_layout(NormalView *pNormalView);
+static void _vp_play_normal_view_hide_layout(NormalView *pNormalView, bool bNoEffect);
+
+#ifdef ENABLE_GESTURE_ZOOM_FEATURE
+static void _vp_play_normal_view_on_zoom_mode(NormalView *pNormalView);
+#endif
+static void _vp_play_normal_view_on_capture_mode(NormalView *pNormalView);
+static void _vp_play_normal_view_on_share_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_sound_alive_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_sound_path_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_audio_track_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_sync_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_language_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_select_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_font_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_size_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_edge_popup(NormalView *pNormalView);
+
+static void _vp_play_normal_view_on_subtitle_font_color_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_bg_color_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_subtitle_caption_win_color_popup(NormalView *pNormalView);
+
+#ifdef SUBTITLE_K_FEATURE
+//static void _vp_play_normal_view_on_subtitle_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+//static void _vp_play_normal_view_on_subtitle_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+//static void _vp_play_normal_view_on_subtitle_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _vp_play_normal_view_on_subtitle_alignment_popup(NormalView *pNormalView);
+#endif
+
+//static void _vp_play_normal_view_on_repeat_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_setting_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_detail_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_capture_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_play_speed_popup(NormalView *pNormalView);
+static void _vp_play_normal_view_on_play_speed_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _vp_play_normal_view_on_volume_popup(NormalView *pNormalView, bool bToggle);
+static void _vp_play_normal_view_on_bookmark_mode(NormalView *pNormalView, bool bShow);
+static void _vp_play_normal_view_download_sdp(NormalView *pNormalView, char *szSdpPath);
+
+static void _vp_play_normal_view_show_rotate(NormalView *pNormalView);
+static void _vp_play_normal_view_show_volume(NormalView *pNormalView);
+static void _vp_play_normal_view_set_sound_path_state(NormalView *pNormalView);
+static void _vp_play_normal_view_set_rotate_lock_state(NormalView *pNormalView);
+static void _vp_play_normal_view_set_volume_lock_state(NormalView *pNormalView);
+
+static void _vp_normal_set_audio_only_image(NormalView *pNormalView, bool bAudioOnly);
+
+static void __vp_play_normal_view_seek_pipe_cb(void *pUserData, void *pBuf, int nByte);
+static void __vp_normal_error_popup_time_out_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo);
+static void __vp_normal_error_popup_key_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo);
+static void __vp_normal_error_popup_mouse_event_cb(void *pUserData, Evas *pEvas, Evas_Object *pObj, void *pEventInfo);
+static void __vp_normal_completed_cb (void *pUserData);
+
+
+//Focus UI
+static void _vp_play_normal_view_set_button_focus_sequence(NormalView *pNormalView);
+static void _vp_normal_view_speed_for_steps(NormalView *pNormalView, bool bSpeedFF);
+
+static vp_mm_player_state_t pState = VP_MM_PLAYER_STATE_NONE;
+
+#ifdef SUBTITLE_K_FEATURE
+/*Set caption window: size, rel1, color*/
+static void __vp_normal_subtitle_set_caption_window(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (!pNormalView->pSubtitle) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+
+ Evas_Coord ww = 0;
+ Evas_Coord hh = 0;
+ bool bLandscape = FALSE;
+ int width = 0.0;
+ int offset_x = 0.0;
+ vp_subtitle_alignment_t nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+
+ bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+ vp_play_subtitle_get_size_formatted(pNormalView->pSubtitle, &ww, &hh);
+ if (pNormalView->bSubtitleDown) {
+ ww = bLandscape ? VP_SUBTITLE_LANDSCAPE_SIZE : VP_SUBTITLE_PORTRAIT_SIZE;
+ hh += VP_SUBTITLE_MARGIN_SIZE;
+ } else {
+ ww += VP_SUBTITLE_MARGIN_SIZE;
+ hh += VP_SUBTITLE_MARGIN_SIZE;
+ }
+ vp_play_subtitle_get_alignment(pNormalView->pSubtitle, &nAlignment);
+ vp_play_util_set_object_size(_EDJ(vp_play_subtitle_get_object(pNormalView->pSubtitle)),
+ ww, hh, VP_NORMAL_SET_CAPTION_WINDOW_SIZE_ID);
+ width = bLandscape ? VP_SUBTITLE_LANDSCAPE_SIZE : VP_SUBTITLE_PORTRAIT_SIZE;
+ if (nAlignment == VP_SUBTITLE_ALIGNMENT_LEFT) {
+ offset_x = 0;
+ } else if (nAlignment == VP_SUBTITLE_ALIGNMENT_CENTER) {
+ offset_x = (width-ww)/2;
+ } else if (nAlignment == VP_SUBTITLE_ALIGNMENT_RIGHT) {
+ offset_x = width-ww;
+ }
+ VideoLogInfo("nAlignment:%d,offset_x:%d", nAlignment, offset_x);
+ vp_play_util_set_object_offset(_EDJ(vp_play_subtitle_get_object(pNormalView->pSubtitle)),
+ offset_x, 0, VP_NORMAL_SET_CAPTION_WINDOW_OFFSET_ID);
+
+ vp_play_subtitle_set_caption_win_color(pNormalView->pSubtitle, TRUE);
+}
+#endif
+
+/* callback functions */
+
+static void _vp_play_normal_view_set_volume_state(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ Evas_Object *pIcon = NULL;
+
+ pIcon = elm_object_part_content_get(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ VP_EVAS_DEL(pIcon);
+ pIcon = elm_object_part_content_get(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ VP_EVAS_DEL(pIcon);
+ pIcon = elm_object_part_content_get(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+ VP_EVAS_DEL(pIcon);
+
+ elm_object_part_content_unset(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ elm_object_part_content_unset(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ elm_object_part_content_unset(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+
+ int nVolume = 0;
+ bool bMute = FALSE;
+ vp_sound_get_volume(&nVolume);
+
+ VideoLogError("nVolume = %d:%d", nVolume, bMute);
+
+ if ((nVolume == 0) || bMute) {
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_MUTE);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_MUTE_PRESS);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_MUTE_DIM);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ } else {
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_VOLUME);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_VOLUME_PRESS);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_VOLUME_DIM);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ }
+
+}
+
+static void __vp_normal_volume_change_value_cb(int nVolume, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VideoLogWarning("Set Volume: %d", nVolume);
+
+ pNormalView->nLastVolume = nVolume;
+ _vp_play_normal_view_set_volume_state(pNormalView);
+}
+
+/*static void __vp_normal_subtitle_popup_key_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+
+ pNormalView->bIsPopupShow = FALSE;
+}
+*/
+
+static void __vp_normal_popup_key_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+
+ pNormalView->bIsPopupShow = FALSE;
+}
+
+static void __vp_normal_popup_mouse_event_cb(void *pUserData, Evas *pEvas, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ NormalView *pNormalView = (NormalView *)pUserData;
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = FALSE;
+ }
+}
+
+static void __vp_normal_popup_time_out_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = FALSE;
+}
+
+static void __vp_normal_prepare_error_popup_time_out_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pObj);
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE ||
+ pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ // tmpory comment
+ //pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ } else {
+ //_vp_play_normal_view_on_next_play(pNormalView, FALSE);
+ }
+
+}
+
+static void __vp_normal_error_popup_key_event_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+
+ pNormalView->bIsPopupShow = FALSE;
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE ||
+ pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ }
+ else {
+ _vp_play_normal_view_on_next_play(pNormalView, FALSE);
+ }
+
+}
+
+static void __vp_normal_error_popup_mouse_event_cb(void *pUserData, Evas *pEvas, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ Evas_Event_Mouse_Up *ev = pEventInfo;
+
+ if (ev->button == 3) {
+ NormalView *pNormalView = (NormalView *)pUserData;
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = FALSE;
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE ||
+ pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ }
+ else {
+ _vp_play_normal_view_on_next_play(pNormalView, FALSE);
+ }
+ }
+}
+
+static void __vp_normal_error_popup_time_out_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = FALSE;
+
+ _vp_play_normal_view_on_next_play(pNormalView, FALSE);
+}
+
+static Eina_Bool __vp_normal_control_idler_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+
+ pNormalView->pControlIdler = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __vp_normal_sound_alive_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ video_sound_alive_t nSAType = (video_sound_alive_t)nType;
+
+ vp_sound_alive_destroy(pNormalView->pSAHandle);
+ pNormalView->pSAHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }
+
+
+ vp_mm_player_sound_filter_t nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+
+ if (nSAType == VIDEO_SA_NORMAL) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+ }
+ else if (nSAType == VIDEO_SA_VOICE) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_VOICE;
+ }
+ else if (nSAType == VIDEO_SA_MOVIE) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_MOVIE;
+ }
+ else if (nSAType == VIDEO_SA_7_1_CH) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_VITUAL_71;
+
+ video_sound_device_type_t nSoundDevType = VP_SOUND_DEVICE_NONE;
+ vp_sound_get_active_device(&nSoundDevType);
+ if (nSoundDevType != VP_SOUND_DEVICE_EARJACK && nSoundDevType != VP_SOUND_DEVICE_BLUETOOTH) {
+ /* show popup */
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ pNormalView->bIsPopupShow = TRUE;
+ char *szMsg = g_strdup_printf(VP_PLAY_STRING_71CH_ONLY_EARPHONE, "7.1");
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ NULL,
+ szMsg,
+ 0.0, NULL,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+ VP_FREE(szMsg);
+
+ Evas_Object *pBtn = NULL;
+ pBtn = elm_button_add(pNormalView->pPopup);
+ elm_object_style_set (pBtn, "popup_button/default");
+ elm_object_domain_translatable_text_set(pBtn, VP_SYS_STR_PREFIX, VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pNormalView->pPopup, "button1", pBtn);
+ evas_object_smart_callback_add(pBtn, "clicked", __vp_normal_popup_key_event_cb, (void*)pNormalView);
+ evas_object_show(pNormalView->pPopup);
+
+ return;
+ }
+ } else {
+ return;
+
+ }
+
+ pNormalView->nSoundAlive = nSAType;
+ if (!vp_play_preference_set_sound_alive_status(nSAType)) {
+ VideoLogError("vp_play_preference_set_sound_alive_status failed");
+ }
+
+ if (!vp_mm_player_set_sound_filter(pNormalView->pPlayerHandle, nSoundFilter)) {
+ VideoLogWarning("vp_mm_player_set_sound_filter is fail");
+ }
+}
+
+static void __vp_normal_sound_path_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ vp_play_volume_update_value(pNormalView->pVolumeHandle);
+
+ vp_sound_path_destroy(pNormalView->pSoundPathHandle);
+ pNormalView->pSoundPathHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ _vp_play_normal_view_set_sound_path_state(pNormalView);
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("play Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }
+
+}
+
+/*
+static void __vp_normal_repeat_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }
+
+ video_play_repeat_mode_t nRepeatMode = (video_play_repeat_mode_t)nType;
+
+ vp_repeat_destroy(pNormalView->pRepeatHandle);
+ pNormalView->pRepeatHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+
+ if (nRepeatMode != VIDEO_PLAY_REPEAT_NONE) {
+ pNormalView->nRepeatMode = nRepeatMode;
+ }
+}
+*/
+
+static void __vp_normal_setting_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_setting_destroy(pNormalView->pSettingHandle);
+ pNormalView->pSettingHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType == VP_SETTING_MODE_NONE || nType == VP_SETTING_MODE_PLAY_SPEED) {
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ } else {
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }
+ }
+
+ switch (nType)
+ {
+ case VP_SETTING_MODE_PLAY_SPEED:
+ _vp_play_normal_view_on_play_speed_popup(pNormalView);
+ break;
+ case VP_SETTING_MODE_SOUND_ALIVE:
+ _vp_play_normal_view_on_sound_alive_popup(pNormalView);
+ break;
+ case VP_SETTING_MODE_AUDIO_TRACK:
+ _vp_play_normal_view_on_audio_track_popup(pNormalView);
+ break;
+ case VP_SETTING_MODE_CAPTURE:
+ _vp_play_normal_view_on_capture_popup(pNormalView);
+ break;
+ }
+}
+
+static void __vp_normal_capture_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (nType != -1) {
+ pNormalView->bCaptureMode= (bool)nType;
+ }
+ vp_play_preference_set_capture_on_key(pNormalView->bCaptureMode);
+
+ vp_capture_popup_destroy(pNormalView->pCapturePopup);
+ pNormalView->pCapturePopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+}
+
+static void __vp_normal_play_speed_popup_update_cb(double fValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_mm_player_set_rate(pNormalView->pPlayerHandle, (float)fValue);
+}
+
+static void __vp_normal_play_speed_popup_done_cb(double fValue, bool bSetValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_play_speed_popup_destroy(pNormalView->pPlaySpeedPopup);
+ pNormalView->pPlaySpeedPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Play Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+
+ if (bSetValue) {
+ pNormalView->fPlaySpeed = fValue;
+ if (pNormalView->pPlayView != NULL) {
+ pNormalView->pPlayView->fPlaySpeed = fValue;
+ }
+
+ if ((fValue - 0.05) > 1.000 || (fValue + 0.05) < 1.000)
+ {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_SHOW, "*");
+ elm_object_signal_callback_add(pNormalView->pMainLayout, "elm,action,click", "", _vp_play_normal_view_on_play_speed_popup_cb, pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ } else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE, "*");
+ }
+ char szTxt[5] = {0,};
+ snprintf(szTxt, 5, "%1.1fX", (float)pNormalView->fPlaySpeed);
+ elm_object_part_text_set(pNormalView->pMainLayout, VP_PLAY_PART_NORMAL_PLAYING_SPEED_TXT, szTxt);
+ }
+ vp_mm_player_set_rate(pNormalView->pPlayerHandle, (float)pNormalView->fPlaySpeed);
+}
+
+static void __vp_normal_subtitle_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_mode_t nSubtitleMode = (vp_subtitle_mode_t)nType;
+
+ if (nSubtitleMode == VP_SUBTITLE_MODE_CLOSE) {
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ vp_play_subtitle_text_update(pNormalView->pSubtitle, NULL);
+ bool bShow = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bShow);
+ if (bShow) {
+ vp_play_subtitle_realize(pNormalView->pSubtitle);
+ vp_mm_player_set_deactivate_subtitle(pNormalView->pPlayerHandle, FALSE);
+ } else {
+ vp_play_subtitle_unrealize(pNormalView->pSubtitle);
+ vp_mm_player_set_deactivate_subtitle(pNormalView->pPlayerHandle, TRUE);
+ }
+ vp_subtitle_destroy(pNormalView->pSubtitlePopup);
+ pNormalView->pSubtitlePopup = NULL;
+ pNormalView->bIsSubtitleShow = FALSE;
+ }
+
+ switch (nSubtitleMode)
+ {
+ case VP_SUBTITLE_MODE_NONE:
+ case VP_SUBTITLE_MODE_CLOSE:
+ break;
+ case VP_SUBTITLE_MODE_ACTIVATION:
+ {
+ bool bShow = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bShow);
+ if (bShow) {
+ vp_play_subtitle_realize(pNormalView->pSubtitle);
+ vp_mm_player_set_deactivate_subtitle(pNormalView->pPlayerHandle, FALSE);
+ }
+ else {
+ vp_play_subtitle_unrealize(pNormalView->pSubtitle);
+ vp_mm_player_set_deactivate_subtitle(pNormalView->pPlayerHandle, TRUE);
+ }
+ }
+ break;
+ case VP_SUBTITLE_MODE_SYNC:
+ _vp_play_normal_view_on_subtitle_sync_popup(pNormalView);
+ break;
+ case VP_SUBTITLE_MODE_LANGUAGE:
+ _vp_play_normal_view_on_subtitle_language_popup(pNormalView);
+ break;
+#ifdef SUBTITLE_K_FEATURE
+ case VP_SUBTITLE_MODE_ALIGNMENT:
+ _vp_play_normal_view_on_subtitle_alignment_popup(pNormalView);
+ break;
+#endif
+ case VP_SUBTITLE_MODE_SELECT:
+ _vp_play_normal_view_on_subtitle_select_popup(pNormalView);
+ break;
+ case VP_SUBTITLE_MODE_FONT:
+ _vp_play_normal_view_on_subtitle_font_popup(pNormalView);
+ break;
+ case VP_SUBTITLE_MODE_SIZE:
+ _vp_play_normal_view_on_subtitle_size_popup(pNormalView);
+ break;
+//#ifdef SUBTITLE_K_FEATURE
+ case VP_SUBTITLE_MODE_EDGE:
+ _vp_play_normal_view_on_subtitle_edge_popup(pNormalView);
+ break;
+ case VP_SUBTITLE_MODE_TEXT:
+ _vp_play_normal_view_on_subtitle_font_color_popup(pNormalView);
+ break;
+ case VP_SUBTITLE_MODE_BG_COLOR:
+
+ _vp_play_normal_view_on_subtitle_bg_color_popup(pNormalView);
+ break;
+#ifdef SUBTITLE_K_FEATURE
+ case VP_SUBTITLE_MODE_CAPTION_WINDOW:
+ _vp_play_normal_view_on_subtitle_caption_win_color_popup(pNormalView);
+ break;
+#endif
+ }
+}
+
+static void __vp_normal_subtitle_sync_popup_update_cb(float fValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ /* set subtitle sync value */
+
+ int nPosition = fValue * 1000;
+
+ if (!vp_mm_player_set_subtitle_position(pNormalView->pPlayerHandle, nPosition)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+}
+
+static void __vp_normal_subtitle_sync_popup_done_cb(float fValue, bool bSetValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_sync_popup_destroy(pNormalView->pSubtitleSyncPopup);
+ pNormalView->pSubtitleSyncPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bSetValue) {
+ /* set subtitle sync value */
+ int nPosition = fValue * 1000;
+ pNormalView->fSubtitleSyncValue = fValue;
+ pNormalView->pPlayView->fSubtitleSyncValue = fValue;
+ if (!vp_mm_player_set_subtitle_position(pNormalView->pPlayerHandle, nPosition)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+ } else {
+ /* set subtitle sync value */
+ int nPosition = pNormalView->fSubtitleSyncValue * 1000;
+
+ if (!vp_mm_player_set_subtitle_position(pNormalView->pPlayerHandle, nPosition)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+ }
+}
+
+
+static void __vp_normal_subtitle_size_popup_done_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_size_destroy(pNormalView->pSubtitleSizePopup);
+ pNormalView->pSubtitleSizePopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType != -1) {
+ vp_play_subtitle_set_size(pNormalView->pSubtitle, nType);
+ vp_play_subtitle_set_size_zoom(pNormalView->pSubtitle, 1.0);
+ vp_play_preference_set_subtitle_size_key(nType);
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ #ifdef SUBTITLE_K_FEATURE
+ /*Set caption window: size, rel1, color*/
+ __vp_normal_subtitle_set_caption_window(pNormalView);
+ #endif
+ }
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+
+/*
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+*/
+}
+
+
+static void __vp_normal_subtitle_font_popup_done_cb(char *szFontName, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (szFontName) {
+ vp_play_subtitle_set_font(pNormalView->pSubtitle, szFontName);
+ vp_play_preference_set_subtitle_font_name_key(szFontName);
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ #ifdef SUBTITLE_K_FEATURE
+ /*Set caption window: size, rel1, color*/
+ __vp_normal_subtitle_set_caption_window(pNormalView);
+ #endif
+ }
+
+ vp_subtitle_font_destroy(pNormalView->pSubtitleFontPopup);
+ pNormalView->pSubtitleFontPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+/*
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+*/
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+}
+
+static void __vp_normal_subtitle_select_button_popup_done_cb(char *option, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (!strcmp(option, "settings")) {
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+ } else {
+ vp_subtitle_select_destroy(pNormalView->pSubtitleSelectPopup);
+ pNormalView->pSubtitleSelectPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }
+}
+
+static void __vp_normal_subtitle_select_popup_done_cb(char *szFilePath, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ char *szSubtitle = NULL;
+
+ vp_subtitle_select_destroy(pNormalView->pSubtitleSelectPopup);
+ pNormalView->pSubtitleSelectPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ if (!szFilePath) {
+ goto SELECT_DONE;
+ }
+ if (!strcmp(szFilePath, VP_PLAY_STRING_SUBTITLE_OFF)) {
+ pNormalView->bIsExistSubtitle = FALSE;
+ vp_mm_player_set_deactivate_subtitle(pNormalView->pPlayerHandle, TRUE);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_HIDE, "*");
+ goto SELECT_DONE;
+ } else {
+ bool bOn = FALSE;
+ vp_play_preference_get_subtitle_show_key(&bOn);
+ if (bOn) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_PORTRAIT, "*");
+ pNormalView->bIsExistSubtitle = TRUE;
+ vp_mm_player_set_deactivate_subtitle(pNormalView->pPlayerHandle, FALSE);
+ }
+ }
+ VP_FREE(pNormalView->szSubtitleURL);
+ VP_STRDUP(pNormalView->szSubtitleURL, szFilePath);
+ vp_mm_player_get_subtitle_url(pNormalView->pPlayerHandle, &szSubtitle);
+
+ if (szSubtitle) {
+ if (strcmp(szSubtitle, szFilePath) == 0) {
+ goto SELECT_DONE;
+ }
+ }
+/*
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ pNormalView->nStartPosition = nPosition;
+ }
+*/
+ pNormalView->bIsExistSubtitle = vp_mm_player_set_subtitle_url(pNormalView->pPlayerHandle,szFilePath);
+
+SELECT_DONE:
+ VP_FREE(szSubtitle);
+
+ /*if (pNormalView->bIsExistSubtitle) {
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+ }*/
+}
+
+#ifndef SUBTITLE_K_FEATURE
+static void __vp_normal_subtitle_font_color_popup_done_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_color_destroy(pNormalView->pSubtitleFontColorPopup);
+ pNormalView->pSubtitleFontColorPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType != -1) {
+
+ video_subtitle_color_t nColor = VP_SUBTITLE_COLOR_BLACK;
+ if (nType == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nColor = VP_SUBTITLE_COLOR_BLACK;
+ }
+ else if (nType == VIDEO_SUBTITLE_COLOR_BLUE) {
+ nColor = VP_SUBTITLE_COLOR_BLUE;
+ }
+ else if (nType == VIDEO_SUBTITLE_COLOR_GREEN) {
+ nColor = VP_SUBTITLE_COLOR_GREEN;
+ }
+ else if (nType == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nColor = VP_SUBTITLE_COLOR_WHITE;
+ }
+ //need to improve....
+
+ vp_play_subtitle_set_color(pNormalView->pSubtitle, nColor);
+
+ vp_play_preference_set_subtitle_font_color_key(nType);
+
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ }
+
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+
+ /*if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }*/
+}
+
+static void __vp_normal_subtitle_bg_color_popup_done_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_bg_color_destroy(pNormalView->pSubtitleBGColorPopup);
+ pNormalView->pSubtitleBGColorPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType != -1) {
+ video_subtitle_color_t nColor = VP_SUBTITLE_COLOR_BLACK;
+ if (nType == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nColor = VP_SUBTITLE_COLOR_BLACK;
+ }
+ else if (nType == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nColor = VP_SUBTITLE_COLOR_WHITE;
+ }
+ else if (nType == VIDEO_SUBTITLE_COLOR_NONE) {
+ nColor = VP_SUBTITLE_COLOR_NONE;
+ }
+ vp_play_subtitle_set_bg_color(pNormalView->pSubtitle, nColor);
+ vp_play_preference_set_subtitle_bg_color_key(nType);
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ }
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+
+ /*if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }*/
+}
+
+#else
+static void __vp_normal_subtitle_font_color_popup_done_hex_cb(char *pColorHex, bool bSetValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ char *pSelectColorHex = strdup(pColorHex);
+
+ vp_subtitle_color_destroy(pNormalView->pSubtitleFontColorPopup);
+ pNormalView->pSubtitleFontColorPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bSetValue) {
+ VideoLogInfo("pSelectColorHex =%s", pSelectColorHex);
+
+ if (pSelectColorHex != NULL) {
+ vp_play_subtitle_set_color(pNormalView->pSubtitle, pSelectColorHex);
+
+ vp_play_preference_set_subtitle_font_color_hex_key(pSelectColorHex);
+
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+
+ }
+ }
+
+ VP_FREE(pSelectColorHex);
+
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+}
+
+static void __vp_normal_subtitle_bg_color_popup_done_hex_cb(char *pColorHex, bool bSetValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ char *pSelectColorHex = strdup(pColorHex);
+
+ vp_subtitle_color_destroy(pNormalView->pSubtitleBGColorPopup);
+ pNormalView->pSubtitleBGColorPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bSetValue) {
+ VideoLogInfo("pSelectColorHex =%s", pSelectColorHex);
+ if (pSelectColorHex != NULL) {
+ vp_play_subtitle_set_bg_color(pNormalView->pSubtitle, pSelectColorHex);
+
+ vp_play_preference_set_subtitle_bg_color_hex_key(pSelectColorHex);
+
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+
+ }
+ }
+
+ VP_FREE(pSelectColorHex);
+
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+}
+
+static void __vp_normal_subtitle_caption_win_color_popup_done_hex_cb(char *pColorHex, bool bSetValue, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ char *pSelectColorHex = strdup(pColorHex);
+
+ vp_subtitle_color_destroy(pNormalView->pSubtitleCaptionWinColorPopup);
+ pNormalView->pSubtitleCaptionWinColorPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bSetValue) {
+ VideoLogInfo("pSelectColorHex =%s", pSelectColorHex);
+ if (pSelectColorHex != NULL) {
+ vp_play_preference_set_subtitle_caption_win_color_hex_key(pSelectColorHex);
+ vp_play_subtitle_set_caption_win_color(pNormalView->pSubtitle, TRUE);
+ }
+ }
+
+ VP_FREE(pSelectColorHex);
+
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+}
+
+#endif
+
+static void __vp_normal_subtitle_track_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_track_destroy(pNormalView->pSubtitleTrackHandle);
+ pNormalView->pSubtitleTrackHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType >= 0) {
+
+ /*if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }*/
+
+ pNormalView->nDefaultSubtitleTrackIndex = nType;
+ #ifndef _SUBTITLE_MULTI_LANGUAGE
+ vp_mm_player_set_subtitle_track(pNormalView->pPlayerHandle, pNormalView->nDefaultSubtitleTrackIndex);
+ #endif
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+
+ }
+ else {
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+ }
+
+}
+
+
+
+static void __vp_normal_detail_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("resume Fail");
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+
+}
+
+
+static void __vp_normal_audio_track_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ }
+
+ vp_audio_track_destroy(pNormalView->pAudioTrackHandle);
+ pNormalView->pAudioTrackHandle = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+ if (nType != -1) {
+ pNormalView->nDefaultAudioTrackIndex = nType;
+
+ vp_mm_player_set_audio_track(pNormalView->pPlayerHandle, pNormalView->nDefaultAudioTrackIndex);
+ }
+
+}
+
+static Evas_Event_Flags __vp_normal_gesture_n_tab_start_cb(void *pUserData , void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_n_tab_end_cb(void *pUserData , void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo;
+ NormalView *pNormalView = (NormalView *)pUserData;
+ VideoLogInfo("gesture tab = %d" ,p->n);
+
+ if (p->n == 1) {
+ if (pNormalView->pVolumeHandle) {
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ }
+
+ if (bIsRealize) {
+ if (!vp_play_volume_unrealize(pNormalView->pVolumeHandle)) {
+ VideoLogWarning("vp_play_volume_unrealize is fail");
+ }
+ }
+ }
+
+ if (pNormalView->bShowLayout) {
+ _vp_play_normal_view_hide_layout(pNormalView, FALSE);
+ }
+ else {
+ _vp_play_normal_view_show_layout(pNormalView);
+ }
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_n_tab_abort_cb(void *pUserData , void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+#ifdef ENABLE_VOLUME_BRIGHTNESS_POPUP
+static void __vp_normal_volume_job_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bIsActive == FALSE) {
+ VideoLogError("Not Active mode");
+ return;
+ }
+ if (!pNormalView->pVolumePopupHandle) {
+ if (!pNormalView->pPlayView) {
+ VideoLogError("pNormalView->pPlayView is NULL");
+ return;
+ }
+
+ Evas_Object *pParent = pNormalView->pPlayView->pWin;
+ pNormalView->pVolumePopupHandle = vp_play_volume_popup_create(pParent);
+ if (!pNormalView->pVolumePopupHandle) {
+ VideoLogError("pNormalView->pVolumePopupHandle is NULL");
+ return;
+ }
+ }
+
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_volume_popup_is_realize(pNormalView->pVolumePopupHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_popup_is_realize is fail");
+ return;
+ }
+ if (bIsRealize == FALSE) {
+ bool bLandscape = FALSE;
+
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ bLandscape = TRUE;
+ }
+
+ if (!vp_play_volume_popup_set_landscape_mode(pNormalView->pVolumePopupHandle, bLandscape)) {
+ VideoLogWarning("vp_play_volume_popup_set_landscape_mode is fail");
+ }
+
+ if (!vp_play_volume_popup_realize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_realize is fail");
+ }
+ }
+ if (pNormalView->bMomentumIncrease) {
+ int nMaxVal = 0;
+ if (!vp_play_volume_popup_set_value(pNormalView->pVolumePopupHandle, pNormalView->nMomentDefaultVal + pNormalView->nMomentWeight)) {
+ VideoLogWarning("vp_play_volume_popup_set_value is fail");
+ }
+
+ if (vp_play_volume_popup_get_max_value(&nMaxVal)) {
+ if (pNormalView->nMomentDefaultVal + pNormalView->nMomentWeight >= nMaxVal) {
+ pNormalView->nGestureStartPosY = pNormalView->nGestureOldPosY;
+ pNormalView->nMomentDefaultVal = nMaxVal;
+ }
+ }
+ }
+ else {
+ if (!vp_play_volume_popup_set_value(pNormalView->pVolumePopupHandle, pNormalView->nMomentDefaultVal - pNormalView->nMomentWeight)) {
+ VideoLogWarning("vp_play_volume_popup_set_value is fail");
+ }
+
+ if (pNormalView->nMomentDefaultVal - pNormalView->nMomentWeight <= 0) {
+ pNormalView->nGestureStartPosY = pNormalView->nGestureOldPosY;
+ pNormalView->nMomentDefaultVal = 0;
+ }
+ }
+
+ VP_EVAS_JOB_DEL(pNormalView->pVolumeJob);
+
+}
+
+static void __vp_normal_brightness_job_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bIsActive == FALSE) {
+ VideoLogError("Not Active mode");
+ return;
+ }
+ if (!pNormalView->pBrightnessHandle) {
+ if (!pNormalView->pPlayView) {
+ VideoLogError("pNormalView->pPlayView is NULL");
+ return;
+ }
+
+ Evas_Object *pParent = pNormalView->pPlayView->pWin;
+ pNormalView->pBrightnessHandle = vp_play_brightness_create(pParent);
+ if (!pNormalView->pBrightnessHandle) {
+ VideoLogError("pNormalView->pBrightnessHandle is NULL");
+ return;
+ }
+ }
+
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_brightness_is_realize(pNormalView->pBrightnessHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_brightness_is_realize is fail");
+ return;
+ }
+ if (bIsRealize == FALSE) {
+ bool bLandscape = FALSE;
+
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ bLandscape = TRUE;
+ }
+
+ if (!vp_play_brightness_set_landscape_mode(pNormalView->pBrightnessHandle, bLandscape)) {
+ VideoLogWarning("vp_play_brightness_set_landscape_mode is fail");
+ }
+
+ if (!vp_play_brightness_realize(pNormalView->pBrightnessHandle)) {
+ VideoLogWarning("vp_play_brightness_realize is fail");
+ }
+ }
+
+ if (pNormalView->bMomentumIncrease) {
+ int nMaxVal = 0;
+ if (!vp_play_brightness_set_value(pNormalView->pBrightnessHandle, pNormalView->nMomentDefaultVal + pNormalView->nMomentWeight)) {
+ VideoLogWarning("vp_play_brightness_set_value is fail");
+ }
+
+ if (vp_play_brightness_get_max_value(&nMaxVal)) {
+ if (pNormalView->nMomentDefaultVal + pNormalView->nMomentWeight >= nMaxVal) {
+ pNormalView->nGestureStartPosY = pNormalView->nGestureOldPosY;
+ pNormalView->nMomentDefaultVal = nMaxVal;
+ }
+ }
+ }
+ else {
+ int nMinVal = 0;
+ if (!vp_play_brightness_set_value(pNormalView->pBrightnessHandle, pNormalView->nMomentDefaultVal - pNormalView->nMomentWeight)) {
+ VideoLogWarning("vp_play_brightness_set_value is fail");
+ }
+
+ if (vp_play_brightness_get_min_value(&nMinVal)) {
+ if (pNormalView->nMomentDefaultVal - pNormalView->nMomentWeight <= nMinVal) {
+ pNormalView->nGestureStartPosY = pNormalView->nGestureOldPosY;
+ pNormalView->nMomentDefaultVal = nMinVal;
+ }
+ }
+ }
+ VP_EVAS_JOB_DEL(pNormalView->pBrightnessJob);
+
+}
+#endif
+
+#ifdef ENABLE_VOLUME_BRIGHTNESS_POPUP
+static Eina_Bool __vp_normal_momentum_press_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+#ifdef SUBTITLE_K_FEATURE
+ if (pNormalView->bSubtitleDown) {
+ VideoLogError("Skip for subtitle down");
+ return EINA_FALSE;
+ }
+#endif
+
+ pNormalView->pMomentTimer = NULL;
+ bool bVolumeMode = FALSE;
+
+ if (pNormalView->nGestureStartPosX < (pNormalView->nWindowWidth/2)) {
+ bVolumeMode = TRUE;
+ }
+
+ if (bVolumeMode) {
+ VP_EVAS_JOB_DEL(pNormalView->pVolumeJob);
+ pNormalView->pVolumeJob = ecore_job_add(__vp_normal_volume_job_cb,(void *)pNormalView);
+ }
+ else {
+ VP_EVAS_JOB_DEL(pNormalView->pBrightnessJob);
+ pNormalView->pBrightnessJob = ecore_job_add(__vp_normal_brightness_job_cb,(void *)pNormalView);
+ }
+
+ return EINA_FALSE;
+}
+#endif
+
+static Evas_Event_Flags __vp_normal_gesture_momentum_start_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) pEventInfo;
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (pNormalView->bLockScreen) {
+ return EVAS_EVENT_FLAG_NONE;
+ }
+#ifdef SUBTITLE_K_FEATURE
+ if (pNormalView->pSubtitleMoveTimer || pNormalView->bSubtitleDown) {
+ VideoLogWarning("Longpress subtitle");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+#endif
+ pNormalView->nGestureOldPosY = p->y1;
+ pNormalView->nGestureStartPosY = p->y1;
+
+ int nWidth, nHeight;
+ bool bLandscape = FALSE;
+
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ bLandscape = TRUE;
+ }
+ elm_win_screen_size_get(pNormalView->pPlayView->pWin, NULL, NULL, &nWidth, &nHeight);
+ if (bLandscape) {
+ pNormalView->nWindowWidth = nHeight;
+ pNormalView->nWindowHeight = nWidth;
+ }
+ else {
+
+ pNormalView->nWindowWidth = nWidth;
+ pNormalView->nWindowHeight = nHeight;
+ }
+
+ if (pNormalView->bZoomEnable == FALSE) {
+#ifdef ENABLE_VOLUME_BRIGHTNESS_POPUP
+ bool bVolumeMode = FALSE;
+ int nMaxVal = 0;
+ int nMinVal = 0;
+
+ pNormalView->nGestureStartPosX = p->x1;
+ pNormalView->nMomentWeight = 0;
+
+ if (p->x1 < (pNormalView->nWindowWidth/2)) {
+ bVolumeMode = TRUE;
+ }
+
+ bool bIsVolumeRealize = FALSE;
+
+ if (pNormalView->pVolumeHandle) {
+ vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsVolumeRealize);
+ }
+
+ if (bVolumeMode && bIsVolumeRealize) {
+ if (pNormalView->pVolumePopupHandle) {
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+ }
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+
+ if (bVolumeMode) {
+ if (!vp_play_volume_popup_get_value(&pNormalView->nMomentDefaultVal)) {
+ VideoLogError("vp_play_volume_popup_get_value is fail");
+ }
+ if (!vp_play_volume_popup_get_max_value(&nMaxVal)) {
+ VideoLogError("vp_play_volume_popup_get_max_value is fail");
+ }
+ }
+ else {
+
+ if (!vp_play_brightness_get_value(&pNormalView->nMomentDefaultVal)) {
+ VideoLogError("vp_play_brightness_get_value is fail");
+ }
+ if (!vp_play_brightness_get_max_value(&nMaxVal)) {
+ VideoLogError("vp_play_brightness_get_max_value is fail");
+ }
+ if (!vp_play_brightness_get_min_value(&nMinVal)) {
+ VideoLogError("vp_play_brightness_get_min_value is fail");
+ }
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pMomentTimer);
+ pNormalView->pMomentTimer = NULL;
+
+ pNormalView->pMomentTimer = ecore_timer_add(VP_NORMAL_MOMENTUM_PRESS_TIMER_INTERVAL,
+ __vp_normal_momentum_press_timer_cb, (void *)pNormalView);
+
+ if (nMaxVal <= 0) {
+ nMaxVal = 1;
+ }
+ pNormalView->nMomentStep = (pNormalView->nWindowHeight/2) / (nMaxVal-nMinVal);
+#endif
+ }
+ else {
+ pNormalView->nGestureStartPosX = p->x2;
+ pNormalView->nGestureStartPosY = p->y2;
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_momentum_move_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) pEventInfo;
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+#ifdef SUBTITLE_K_FEATURE
+ if (pNormalView->pSubtitleMoveTimer || pNormalView->bSubtitleDown) {
+ VideoLogWarning("Longpress subtitle");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+#endif
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ _vp_play_normal_view_show_layout(pNormalView);
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (p->n != 1) {
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (pNormalView->bZoomEnable == FALSE) {
+#ifdef ENABLE_VOLUME_BRIGHTNESS_POPUP
+ if (pNormalView->pMomentTimer ||
+ pNormalView->bLockScreen) {
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (pNormalView->bShowLayout) {
+ _vp_play_normal_view_hide_layout(pNormalView, FALSE);
+ }
+
+ int nDiff = 0;
+ bool bVolumeMode = FALSE;
+ if (pNormalView->nMomentStep <= 0) {
+ pNormalView->nMomentStep = 1;
+ }
+
+ if (p->x1 < (pNormalView->nWindowWidth/2)) {
+ bVolumeMode = TRUE;
+ }
+
+ bool bIsVolumeRealize = FALSE;
+
+ if (pNormalView->pVolumeHandle) {
+ vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsVolumeRealize);
+ }
+
+ if (bVolumeMode && bIsVolumeRealize) {
+ if (pNormalView->pVolumePopupHandle) {
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+ }
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (pNormalView->nGestureStartPosY < p->y2) {
+ pNormalView->bMomentumIncrease = FALSE;
+ nDiff = p->y2 - pNormalView->nGestureStartPosY;
+ } else {
+ pNormalView->bMomentumIncrease = TRUE;
+ nDiff = pNormalView->nGestureStartPosY - p->y2;
+ }
+
+ pNormalView->nGestureOldPosY = p->y2;
+ pNormalView->nMomentWeight = nDiff / pNormalView->nMomentStep;
+
+ if (bVolumeMode) {
+ VP_EVAS_JOB_DEL(pNormalView->pVolumeJob);
+ pNormalView->pVolumeJob = ecore_job_add(__vp_normal_volume_job_cb,(void *)pNormalView);
+ } else {
+ VP_EVAS_JOB_DEL(pNormalView->pBrightnessJob);
+ pNormalView->pBrightnessJob = ecore_job_add(__vp_normal_brightness_job_cb,(void *)pNormalView);
+ }
+#endif
+ }
+ else {
+ int nDiffX = 0;
+ int nDiffY = 0;
+ int nWidth = 0;
+ int nHeight = 0;
+ double fX = 0.0;
+ double fY = 0.0;
+
+ nDiffX = p->x2 - pNormalView->nGestureStartPosX;
+ nDiffY = p->y2 - pNormalView->nGestureStartPosY;
+
+ vp_zoom_guide_get_move_position(pNormalView->pZoomGuide, &fX, &fY);
+ Evas_Coord_Rectangle rtSrc = {0,};
+ Evas_Coord_Rectangle rtDst = {0,};
+ Evas_Coord_Rectangle rtResult = {0,};
+
+ elm_win_screen_size_get(pNormalView->pPlayView->pWin, NULL, NULL, &nWidth, &nHeight);
+
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ rtDst.w = nHeight;
+ rtDst.h = nWidth;
+ }
+ else {
+ rtDst.w = nWidth;
+ rtDst.h = nHeight;
+ }
+ vp_mm_player_get_resolution(pNormalView->pPlayerHandle, &(rtSrc.w), &(rtSrc.h));
+
+ vp_play_util_calculator_position(rtSrc, rtDst, &rtResult, pNormalView->nDisplayMode);
+
+ fX -= (double)nDiffX/rtResult.w;
+ fY -= (double)nDiffY/rtResult.h;
+
+ pNormalView->nGestureStartPosX = p->x2;
+ pNormalView->nGestureStartPosY = p->y2;
+
+ vp_zoom_guide_set_move_position(pNormalView->pZoomGuide, fX, fY);
+ //vp_zoom_guide_get_move_position(pNormalView->pZoomGuide, &fX, &fY);
+ vp_zoom_guide_get_real_position(pNormalView->pZoomGuide, &fX, &fY);
+
+ //VideoLogError("ZoomValue : [%f], offset_x : [%d], offset_y : [%d]", pNormalView->fZoomValue, (int)(fX * rtSrc.w), (int)(fY * rtSrc.h));
+ vp_mm_player_set_zoom(pNormalView->pPlayerHandle, pNormalView->fZoomValue, (int)(fX * rtSrc.w), (int)(fY * rtSrc.h));
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_momentum_end_cb(void *pUserData, void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+#ifdef SUBTITLE_K_FEATURE
+ if (pNormalView->pSubtitleMoveTimer || pNormalView->bSubtitleDown) {
+ VideoLogWarning("Longpress subtitle");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+#endif
+
+ if (pNormalView->bZoomEnable == FALSE) {
+#ifdef ENABLE_VOLUME_BRIGHTNESS_POPUP
+ VP_EVAS_TIMER_DEL(pNormalView->pMomentTimer);
+ pNormalView->pMomentTimer = NULL;
+
+ VP_EVAS_JOB_DEL(pNormalView->pVolumeJob);
+ VP_EVAS_JOB_DEL(pNormalView->pBrightnessJob);
+
+ if (!vp_play_brightness_unrealize(pNormalView->pBrightnessHandle)) {
+ VideoLogWarning("vp_play_brightness_unrealize is fail");
+ }
+
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+#endif
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+#ifdef ENABLE_GESTURE_ZOOM_FEATURE
+static Evas_Event_Flags __vp_normal_gesture_zoom_start_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ _vp_play_normal_view_show_layout(pNormalView);
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ Elm_Gesture_Zoom_Info *pZoomInfo = (Elm_Gesture_Zoom_Info *) pEventInfo;
+
+ pNormalView->fActiveZoom = pZoomInfo->zoom;
+
+ pNormalView->nZoomPosX = pZoomInfo->x;
+ pNormalView->nZoomPosY = pZoomInfo->y;
+
+ pNormalView->nPrevZoomPosX = 0;
+ pNormalView->nPrevZoomPosY = 0;
+ pNormalView->fPrevZoomValue = 0;
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_zoom_move_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ Elm_Gesture_Zoom_Info *pZoomInfo = (Elm_Gesture_Zoom_Info *) pEventInfo;
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ double fVal = pZoomInfo->zoom/ pNormalView->fActiveZoom;
+
+ pNormalView->fActiveZoom = pZoomInfo->zoom;
+
+ pNormalView->fZoomValue = pNormalView->fZoomValue * fVal;
+
+ if (pNormalView->fZoomValue < 1.0) {
+ pNormalView->fZoomValue = 1.0;
+ } else if (pNormalView->fZoomValue > 3.0) {
+ pNormalView->fZoomValue = 3.0;
+ }
+
+ // event filtering
+ bool bLandscape = FALSE;
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ bLandscape = TRUE;
+ }
+ if (bLandscape && fabs(pNormalView->fPrevZoomValue - pNormalView->fZoomValue)< 0.05) {
+// VideoLogWarning("same ZoomValue. skip it");
+ return EVAS_EVENT_FLAG_ON_HOLD;
+ }
+
+ _vp_play_normal_view_on_zoom_mode(pNormalView);
+
+ double fX = 0.0;
+ double fY = 0.0;
+ int nSrcW = 0;
+ int nSrcH = 0;
+
+ vp_mm_player_get_resolution(pNormalView->pPlayerHandle, &nSrcW, &nSrcH);
+ vp_zoom_guide_get_real_position(pNormalView->pZoomGuide, &fX, &fY);
+
+ // event filtering
+ if ((pNormalView->fZoomValue > 1.0 && pNormalView->fZoomValue < 3.0) &&
+ (pNormalView->nPrevZoomPosX == (int)(fX * nSrcW)) && (pNormalView->nPrevZoomPosY == (int)(fY * nSrcH))) {
+// VideoLogWarning("skip same position");
+ return EVAS_EVENT_FLAG_ON_HOLD;
+ }
+
+ pNormalView->nPrevZoomPosX = (int)(fX * nSrcW);
+ pNormalView->nPrevZoomPosY = (int)(fY * nSrcH);
+ pNormalView->fPrevZoomValue = pNormalView->fZoomValue;
+
+// VideoLogError("ZoomValue : [%f], offset_x : [%d], offset_y : [%d]", pNormalView->fZoomValue, (int)(fX * nSrcW), (int)(fY * nSrcH));
+ vp_mm_player_set_zoom(pNormalView->pPlayerHandle, pNormalView->fZoomValue, (int)(fX * nSrcW), (int)(fY * nSrcH));
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_zoom_end_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ Elm_Gesture_Zoom_Info *pZoomInfo = (Elm_Gesture_Zoom_Info *) pEventInfo;
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ double fVal = pZoomInfo->zoom/ pNormalView->fActiveZoom;
+
+ pNormalView->fActiveZoom = pZoomInfo->zoom;
+
+ pNormalView->fZoomValue = pNormalView->fZoomValue * fVal;
+
+ if (pNormalView->fZoomValue < 1.0) {
+ pNormalView->fZoomValue = 1.0;
+ } else if (pNormalView->fZoomValue > 3.0) {
+ pNormalView->fZoomValue = 3.0;
+ }
+
+ _vp_play_normal_view_on_zoom_mode(pNormalView);
+
+ pNormalView->nPrevZoomPosX = 0;
+ pNormalView->nPrevZoomPosY = 0;
+ pNormalView->fPrevZoomValue = 0;
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_zoom_abort_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+#endif
+
+
+static Evas_Event_Flags __vp_normal_gesture_double_click_start_cb(void *pUserData, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_double_click_end_cb(void *pUserData, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ Elm_Gesture_Taps_Info *pEvent = (Elm_Gesture_Taps_Info *) pEventInfo;
+
+ if (pNormalView->bZoomEnable && pEvent->n == 1) {
+ pNormalView->fZoomValue = 1.0;
+#ifdef ENABLE_GESTURE_ZOOM_FEATURE
+ _vp_play_normal_view_on_zoom_mode(pNormalView);
+#endif
+ }
+ else if (pEvent->n == 1) {
+
+ if (pNormalView->bLockScreen) {
+ _vp_play_normal_view_show_layout(pNormalView);
+ } else {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ pNormalView->bManualPause = TRUE;
+ }
+ else {
+ bool bSpeedMode = FALSE;
+
+ if (pNormalView->pSpeedTimer) {
+ bSpeedMode = TRUE;
+ }
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (bSpeedMode) {
+ int nPosition = 0;
+ if (vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogDebug("nPosition[%d], curPosition[%d]", nPosition, pNormalView->nCurPosition);
+
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, pNormalView->nCurPosition)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nWaitPos = -1;
+ }else {
+ pNormalView->nWaitPos = nPosition;
+ }
+ }
+ }
+
+ pNormalView->nSpeedValue = 1;
+ pNormalView->bSpeedDown = TRUE;
+
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Resume Fail");
+ }
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+
+ pNormalView->bManualPause = FALSE;
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_double_click_abort_cb(void *pUserData, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+#ifdef FLICK_JUMP
+static Evas_Event_Flags __vp_normal_gesture_flick_start_cb(void *pUserData, void *event_info)
+{
+ Elm_Gesture_Line_Info *pEvent = (Elm_Gesture_Line_Info *) event_info;
+
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ VideoLogWarning("flick started");
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bFlickWaiting == TRUE) {
+ VideoLogWarning("seek is not complete. ignore signal");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (!pNormalView->pFlickJumpSeek) {
+ pNormalView->nFlickPressX1 = pEvent->momentum.x1;
+ pNormalView->nFlickPressY1 = pEvent->momentum.y1;
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Eina_Bool __vp_normal_flickjump_seek(void *pUserData, bool rewind)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ int nSetPosition = 0;
+ int nCurPosition = 0;
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nCurPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return EINA_TRUE;
+ }
+
+ if (rewind) {
+ if (nCurPosition - 5000 < 0) {
+ nSetPosition = 0;
+ } else {
+ nSetPosition = nCurPosition - 5000;
+ }
+ }
+ else {
+ if (nCurPosition + 5000 > pNormalView->nDuration) {
+ nSetPosition = pNormalView->nDuration;
+ } else {
+ nSetPosition = nCurPosition + 5000;
+ }
+ }
+
+ pNormalView->bFlickWaiting = TRUE;
+
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, nSetPosition)) {
+ pNormalView->nWaitPos = -1;
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nCurPosition = nSetPosition;
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nSetPosition);
+ }
+
+ return EINA_TRUE;
+}
+
+static void __vp_normal_flickjump_seek_del_cb(void *pUserData, Evas * e, Evas_Object *obj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, __vp_normal_flickjump_seek_del_cb);
+ NormalView *pNormalView = (NormalView *)pUserData;
+ pNormalView->pFlickJumpSeek = NULL;
+}
+
+static void __vp_normal_flickjump_layout_position(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (pNormalView->pFlickJumpSeek) {
+ int nFlickSeekImageWidth = 80;
+ int nFlickSeekImageHeight = 60;
+ int nFlickSeekLeftMargin = 8;
+ int nScreenWidth = 0;
+ int nScreenHeight = 0;
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ nScreenWidth = 1280;
+ nScreenHeight = 720;
+ } else {
+ nScreenWidth = 720;
+ nScreenHeight = 1280;
+ }
+ if (pNormalView->bFlickRewind == FALSE)
+ evas_object_move(pNormalView->pFlickJumpSeek, nScreenWidth - (nFlickSeekLeftMargin+nFlickSeekImageWidth/2), (nScreenHeight-nFlickSeekImageHeight/2)/2);
+ else
+ evas_object_move(pNormalView->pFlickJumpSeek, nFlickSeekLeftMargin+nFlickSeekImageWidth/2, (nScreenHeight-nFlickSeekImageHeight/2)/2);
+ }
+}
+
+static void __vp_normal_gesture_flick_animation_done_cb(void *data, Evas_Object * obj, const char *emission, const char *source)
+{
+ if (!data) {
+ VideoLogError("data is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)data;
+
+ if (emission)
+ {
+ if (!g_strcmp0(emission, "rew_animation_done") || !g_strcmp0(emission, "ff_animation_done"))
+ {
+ if (pNormalView->bFlickWaiting == TRUE) {
+ if (pNormalView->bFlickRewind == TRUE) {
+ if (pNormalView->pFlickJumpSeek)
+ elm_object_signal_emit(pNormalView->pFlickJumpSeek, VP_NORMAL_SIGNAL_FLICKJUMP_FF, "*");
+ } else {
+ if (pNormalView->pFlickJumpSeek)
+ elm_object_signal_emit(pNormalView->pFlickJumpSeek, VP_NORMAL_SIGNAL_FLICKJUMP_REW, "*");
+ }
+ } else {
+ VP_EVAS_DEL(pNormalView->pFlickJumpSeek);
+ }
+ }
+ }
+}
+
+static Evas_Event_Flags __vp_normal_gesture_flick_end_cb(void *pUserData, void *event_info)
+{
+ Elm_Gesture_Line_Info *pEvent = (Elm_Gesture_Line_Info *) event_info;
+
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ VideoLogWarning("gesture flick end");
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (pNormalView->pFlickJumpSeek || pNormalView->nFlickPressX1 == 0 || pNormalView->nFlickPressY1 == 0) {
+ VideoLogWarning("seek is not complete. ignore signal");
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (pNormalView->fZoomValue > 1.0) {
+ VideoLogWarning("Current zoom level : [%f]", pNormalView->fZoomValue);
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW &&
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE &&
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL &&
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ VideoLogWarning("pNormalView->nLaunchingType : [%d]. not support gesture flick in this mode", pNormalView->nLaunchingType);
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ pNormalView->pFlickJumpSeek = elm_layout_add(pNormalView->pMainLayout);
+ elm_layout_file_set(pNormalView->pFlickJumpSeek, VP_PLAY_NORMAL_MAIN_EDJ, VP_PLAY_EDJ_GROUP_FLICKJUMP_SEEK);
+ evas_object_size_hint_weight_set(pNormalView->pFlickJumpSeek, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pFlickJumpSeek, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(pNormalView->pFlickJumpSeek, EVAS_CALLBACK_DEL, __vp_normal_flickjump_seek_del_cb, (void *)pNormalView);
+ edje_object_signal_callback_add(_EDJ(pNormalView->pFlickJumpSeek), "*", "*", __vp_normal_gesture_flick_animation_done_cb, (void *)pNormalView);
+ evas_object_hide(pNormalView->pFlickJumpSeek);
+
+ if (pNormalView->nFlickPressX1 > pEvent->momentum.x2) {
+ pNormalView->bFlickRewind = TRUE;
+ elm_object_signal_emit(pNormalView->pFlickJumpSeek, VP_NORMAL_SIGNAL_FLICKJUMP_FF, "*");
+ __vp_normal_flickjump_layout_position(pNormalView);
+ __vp_normal_flickjump_seek(pNormalView, TRUE);
+ } else if (pNormalView->nFlickPressX1 < pEvent->momentum.x2) {
+ pNormalView->bFlickRewind = FALSE;
+ elm_object_signal_emit(pNormalView->pFlickJumpSeek, VP_NORMAL_SIGNAL_FLICKJUMP_REW, "*");
+ __vp_normal_flickjump_layout_position(pNormalView);
+ __vp_normal_flickjump_seek(pNormalView, FALSE);
+ }
+
+ char *szTxt = NULL;
+ char *szPdSECS = VP_PLAY_STRING_PD_SECS;
+ szTxt = g_strdup_printf(szPdSECS, 5);
+
+ if (pNormalView->bFlickRewind == FALSE) {
+ elm_object_part_text_set(pNormalView->pFlickJumpSeek, VP_PLAY_PART_FLICKJUMP_SEEK_REW_TEXT, szTxt);
+ } else {
+ elm_object_part_text_set(pNormalView->pFlickJumpSeek, VP_PLAY_PART_FLICKJUMP_SEEK_FF_TEXT, szTxt);
+ }
+ VP_FREE(szTxt);
+
+ evas_object_show(pNormalView->pFlickJumpSeek);
+
+ pNormalView->nFlickPressX1 = 0;
+ pNormalView->nFlickPressY1 = 0;
+
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags __vp_normal_gesture_flick_abort_cb(void *pUserData, void *event_info)
+{
+ VideoLogWarning("flick abort");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bFlickWaiting == FALSE) {
+ pNormalView->nFlickPressX1 = 0;
+ pNormalView->nFlickPressY1 = 0;
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+#endif // FLICK_JUMP
+
+#ifdef K_FEATURE_MICROSEEK
+static void __vp_normal_progress_microseek_textlayout_del_cb(void *pUserData, Evas * e, Evas_Object *obj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, __vp_normal_progress_microseek_textlayout_del_cb);
+ NormalView *pNormalView = (NormalView *)pUserData;
+ pNormalView->pMicroSeekTextLayout = NULL;
+}
+
+static void __vp_normal_progress_microseek_imagelayout_del_cb(void *pUserData, Evas * e, Evas_Object *obj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, __vp_normal_progress_microseek_imagelayout_del_cb);
+ NormalView *pNormalView = (NormalView *)pUserData;
+ pNormalView->pMicroSeekImageLayout = NULL;
+}
+
+#endif
+
+static void __vp_normal_progress_mouse_down_cb(void *pUserData, Evas * e, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VideoLogWarning("Mouse Down");
+
+ if (pNormalView->bIsRealize == FALSE) {
+ VideoLogWarning("Skip for not realized");
+ return;
+ }
+
+ if (pNormalView->bHLSMode) {
+ VideoLogWarning("Skip for HLS");
+ return;
+ }
+
+ Evas_Event_Mouse_Down *pMouseDownEvent = (Evas_Event_Mouse_Down *)pEvent;
+
+ double dRatio = _vp_play_normal_view_get_mouse_pos_ratio(pNormalView->pProgressEvent, pMouseDownEvent->canvas.x);
+ elm_object_signal_emit(pNormalView->pProgressEvent, VP_NORMAL_SIGNAL_PROGRESS_PRESS, "*");
+
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+ pNormalView->pProgressTimer = NULL;
+
+ int nCurPos = dRatio * pNormalView->nDuration;
+
+#ifdef K_FEATURE_MICROSEEK
+ pNormalView->nPrevCanvasX = (double)pMouseDownEvent->canvas.x;
+ pNormalView->nPrevPositionX = (double)pNormalView->nPrevCanvasX;
+
+ VP_EVAS_DEL(pNormalView->pMicroSeekTextLayout);
+
+ pNormalView->pMicroSeekTextLayout = elm_layout_add(pNormalView->pMainLayout);
+ elm_layout_file_set(pNormalView->pMicroSeekTextLayout, VP_PLAY_NORMAL_MAIN_EDJ, VP_PLAY_EDJ_GROUP_MICROSEEK_TEXT);
+ evas_object_size_hint_weight_set(pNormalView->pMicroSeekTextLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pMicroSeekTextLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(pNormalView->pMicroSeekTextLayout, EVAS_CALLBACK_DEL, __vp_normal_progress_microseek_textlayout_del_cb, (void *)pNormalView);
+ evas_object_hide(pNormalView->pMicroSeekTextLayout);
+
+ pNormalView->pMicroSeekImageLayout = elm_layout_add(pNormalView->pMainLayout);
+ elm_layout_file_set(pNormalView->pMicroSeekImageLayout, VP_PLAY_NORMAL_MAIN_EDJ, VP_PLAY_EDJ_GROUP_MICROSEEK_IMAGE);
+ evas_object_size_hint_weight_set(pNormalView->pMicroSeekImageLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pMicroSeekImageLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(pNormalView->pMicroSeekImageLayout, EVAS_CALLBACK_DEL, __vp_normal_progress_microseek_imagelayout_del_cb, (void *)pNormalView);
+ evas_object_hide(pNormalView->pMicroSeekImageLayout);
+
+#endif
+
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nCurPos);
+
+ pNormalView->bProgressDown = TRUE;
+
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL)) {
+ if (pNormalView->bManualPause == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ }
+
+ return;
+ } else {
+ if (pNormalView->bManualPause == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ VideoLogInfo("nState:%d", nState);
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ }
+ }
+ }
+}
+
+static void __vp_normal_progress_mouse_up_cb(void *pUserData, Evas * e, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+#ifdef K_FEATURE_MICROSEEK
+#else
+ Evas_Event_Mouse_Up *pMouseUpEvent = (Evas_Event_Mouse_Up *)pEvent;
+#endif
+
+ VideoLogWarning("Mouse Up");
+ if (pNormalView->bIsRealize == FALSE || pNormalView->bProgressDown == FALSE) {
+ VideoLogWarning("Skip for not realized or prgress down");
+ return;
+ }
+ if (pNormalView->bHLSMode) {
+ VideoLogWarning("Skip for HLS");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+#ifdef K_FEATURE_MICROSEEK
+ double dRatio = _vp_play_normal_view_get_mouse_pos_ratio(pNormalView->pProgressEvent, pNormalView->nPrevPositionX);
+#else
+ double dRatio = _vp_play_normal_view_get_mouse_pos_ratio(pNormalView->pProgressEvent, pMouseUpEvent->canvas.x);
+#endif
+ elm_object_signal_emit(pNormalView->pProgressEvent, VP_NORMAL_SIGNAL_PROGRESS_UNPRESS, "*");
+ if (fabs(dRatio - 1.0) < 1.0e-6) {
+ VideoLogWarning("It is the end of the video!");
+ __vp_normal_completed_cb(pNormalView);
+ return;
+ }
+
+ int nCurPos = dRatio * pNormalView->nDuration;
+
+#ifdef K_FEATURE_MICROSEEK
+ VP_EVAS_DEL(pNormalView->pMicroSeekTextLayout);
+ VP_EVAS_DEL(pNormalView->pMicroSeekImageLayout);
+
+ pNormalView->nPrevCanvasX = 0.0;
+ pNormalView->nPrevPositionX = 0.0;
+#endif
+
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nCurPos);
+
+ pNormalView->bProgressDown = FALSE;
+
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL)) {
+ if (pNormalView->bSeekComplete == FALSE) {
+ pNormalView->nWaitPos = nCurPos;
+ VideoLogWarning("== REAL SEEK SET == [%d]", pNormalView->nWaitPos);
+ }
+ else {
+ VideoLogWarning("== REAL SEEK == [%d]", nCurPos);
+
+ pNormalView->bBufferingComplete = TRUE;
+
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, nCurPos)) {
+ pNormalView->nWaitPos = -1;
+ pNormalView->bSeekComplete = FALSE;
+ if (pNormalView->pLoadingAni) {
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ }
+ } else {
+ _vp_play_normal_view_update_progress_value(pNormalView);
+ }
+ }
+
+ return;
+ }
+
+ if (pNormalView->bSeekComplete == FALSE) {
+ pNormalView->nWaitPos = nCurPos;
+ VideoLogWarning("== REAL SEEK SET == [%d]", pNormalView->nWaitPos);
+ }
+ else {
+ VideoLogWarning("== REAL SEEK == [%d]", nCurPos);
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, nCurPos)) {
+ pNormalView->nWaitPos = -1;
+ pNormalView->bSeekComplete = FALSE;
+ if (pNormalView->pLoadingAni) {
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ }
+ } else {
+ _vp_play_normal_view_update_progress_value(pNormalView);
+ }
+ }
+
+}
+
+static void __vp_normal_progress_del_cb(void *pUserData, Evas * e, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogError("pNormalView->pProgressEvent is free");
+ NormalView *pNormalView = (NormalView *)pUserData;
+ pNormalView->pProgressEvent = NULL;
+}
+
+
+static void __vp_normal_progress_mouse_move_cb(void *pUserData, Evas * e, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ Evas_Event_Mouse_Move *pMouseMoveEvent = (Evas_Event_Mouse_Move *)pEvent;
+ if (pNormalView->bHLSMode) {
+ VideoLogWarning("Skip for HLS");
+ return;
+ }
+
+ if (pNormalView->bIsRealize == FALSE || pNormalView->bProgressDown == FALSE) {
+ VideoLogWarning("Skip for not realized or prgress down");
+ return;
+ }
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for lock mode");
+ __vp_normal_progress_mouse_up_cb(pUserData, NULL, NULL, pEvent);
+ return;
+ }
+
+ if (pNormalView->bProgressDown == FALSE || pNormalView->bIsRealize == FALSE) {
+ VideoLogWarning("Skip for not realized or prgress down");
+ return;
+ }
+
+#ifdef K_FEATURE_MICROSEEK
+ bool bLandscape = FALSE;
+ int nScreenWidth = 0;
+ int nScreenHeight = 0;
+ int nControllerHeight = 0;
+ int nSeek_Height = 0;
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ bLandscape = TRUE;
+ nScreenWidth = 1280;
+ nScreenHeight = 720;
+ nControllerHeight = 180;
+ nSeek_Height = (VP_NORMAL_MICROSEEK_TEXT_HEIGHT + ((6 + 70 + 40) * elm_config_scale_get()));
+ } else {
+ nScreenWidth = 720;
+ nScreenHeight = 1280;
+ nControllerHeight = 293;
+ nSeek_Height = (VP_NORMAL_MICROSEEK_TEXT_HEIGHT + ((6 + 70 + 20) * elm_config_scale_get()));
+ }
+
+// VideoLogWarning("canvas.x[%d] canvas.y[%d]", pMouseMoveEvent->cur.canvas.x, pMouseMoveEvent->cur.canvas.y);
+
+ double dDistance = 0;
+ SeekLevel Level = SEEK_LEVEL_NORMAL;
+ dDistance = (pMouseMoveEvent->cur.canvas.x - pNormalView->nPrevCanvasX);
+
+ if (pMouseMoveEvent->cur.canvas.y > (nScreenHeight-nControllerHeight)) {
+ Level = SEEK_LEVEL_NORMAL;
+ } else if (pMouseMoveEvent->cur.canvas.y > (nScreenHeight-nControllerHeight-nSeek_Height)) {
+ Level = SEEK_LEVEL_HALF;
+ dDistance = dDistance/2;
+ } else {
+ Level = SEEK_LEVEL_QUARTER;
+ dDistance = dDistance/4;
+ }
+
+ pNormalView->nPrevCanvasX = (double)pMouseMoveEvent->cur.canvas.x;
+
+ // Calc position
+ if (Level == SEEK_LEVEL_NORMAL) {
+ pNormalView->nPrevPositionX = (double)pMouseMoveEvent->cur.canvas.x;
+ } else {
+ pNormalView->nPrevPositionX = pNormalView->nPrevPositionX + dDistance;
+ }
+
+
+ if (Level == SEEK_LEVEL_NORMAL) {
+ if (pNormalView->pMicroSeekTextLayout) {
+ elm_object_signal_emit(pNormalView->pMicroSeekTextLayout, VP_NORMAL_SIGNAL_MICROSEEK_TEXT_HIDE, "*");
+ }
+ if (pNormalView->pMicroSeekImageLayout) {
+ elm_object_signal_emit(pNormalView->pMicroSeekImageLayout, VP_NORMAL_SIGNAL_MICROSEEK_IMAGE_HIDE, "*");
+ }
+ } else {
+ Evas_Coord nTextWidth = -1, nTextHeight = -1;
+ // Text Layout move
+ if (pNormalView->pMicroSeekTextLayout) {
+ char *szTxt = NULL;
+ char *szPsSpeed = VP_PLAY_STRING_SCRUBBING_AT_PSX_SPEED;
+
+ if (Level == SEEK_LEVEL_HALF) {
+ szTxt = g_strdup_printf(szPsSpeed, VP_NORMAL_SZ_HALF_SPEED);
+ } else if (Level == SEEK_LEVEL_QUARTER) {
+ szTxt = g_strdup_printf(szPsSpeed, VP_NORMAL_SZ_QUARTER_SPEED);
+ }
+
+ elm_object_part_text_set(pNormalView->pMicroSeekTextLayout, VP_NORMAL_SIGNAL_MICROSEEK_SPEED_TEXT, szTxt);
+ edje_object_size_min_restricted_calc(_EDJ(pNormalView->pMicroSeekTextLayout), &nTextWidth, &nTextHeight, nTextWidth, nTextHeight);
+ evas_object_resize(pNormalView->pMicroSeekTextLayout, nTextWidth, nTextHeight);
+
+ int nTextPositionX = (int)pNormalView->nPrevPositionX - nTextWidth/2;
+
+ if (nTextPositionX <0)
+ nTextPositionX = 0;
+ else if (nTextPositionX + nTextWidth > nScreenWidth) {
+ nTextPositionX = nScreenWidth - nTextWidth;
+ }
+
+ if (Level == SEEK_LEVEL_HALF) {
+ evas_object_move(pNormalView->pMicroSeekTextLayout, nTextPositionX, nScreenHeight-nControllerHeight-nSeek_Height);
+ } else if (Level == SEEK_LEVEL_QUARTER) {
+ evas_object_move(pNormalView->pMicroSeekTextLayout, nTextPositionX, nScreenHeight-nControllerHeight-nSeek_Height*2);
+ }
+ elm_object_signal_emit(pNormalView->pMicroSeekTextLayout, VP_NORMAL_SIGNAL_MICROSEEK_TEXT_SHOW, "*");
+ evas_object_show(pNormalView->pMicroSeekTextLayout);
+
+ VP_FREE(szTxt);
+
+ // Image Layout move
+ if (pNormalView->pMicroSeekImageLayout) {
+ Evas_Coord nImageWidth = -1, nImageHeight = -1;
+ edje_object_size_min_restricted_calc(_EDJ(pNormalView->pMicroSeekImageLayout), &nImageWidth, &nImageHeight, nImageWidth, nImageHeight);
+ evas_object_resize(pNormalView->pMicroSeekImageLayout, nImageWidth, nImageHeight);
+
+ int nImagePositionX = (int)pNormalView->nPrevPositionX - nImageWidth/2;
+
+ int nImageLeftPadding = 0;
+ int nImageRightPadding = 0;
+ if (bLandscape) {
+ nImageLeftPadding = 28+112;
+ nImageRightPadding = 28+162;
+ } else {
+ nImageLeftPadding = 6;
+ nImageRightPadding = 26;
+ }
+
+ if (nImagePositionX < nImageLeftPadding)
+ nImagePositionX = nImageLeftPadding;
+ else if (nImagePositionX > nScreenWidth-nImageRightPadding) {
+ nImagePositionX = nScreenWidth-nImageRightPadding;
+ }
+
+ if (Level == SEEK_LEVEL_HALF) {
+ evas_object_move(pNormalView->pMicroSeekImageLayout, nImagePositionX, nScreenHeight-nControllerHeight-nSeek_Height + nTextHeight + 6);
+ } else if (Level == SEEK_LEVEL_QUARTER) {
+ evas_object_move(pNormalView->pMicroSeekImageLayout, nImagePositionX, nScreenHeight-nControllerHeight-nSeek_Height*2 + nTextHeight + 6);
+ }
+ elm_object_signal_emit(pNormalView->pMicroSeekImageLayout, VP_NORMAL_SIGNAL_MICROSEEK_IMAGE_SHOW, "*");
+ evas_object_show(pNormalView->pMicroSeekImageLayout);
+ }
+ }
+ }
+
+ double dRatio = _vp_play_normal_view_get_mouse_pos_ratio(pNormalView->pProgressEvent, (int)pNormalView->nPrevPositionX , bLandscape);
+
+#else
+
+ double dRatio = _vp_play_normal_view_get_mouse_pos_ratio(pNormalView->pProgressEvent, pMouseMoveEvent->cur.canvas.x);
+#endif
+ int nCurPos = dRatio * pNormalView->nDuration;
+
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nCurPos);
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ return;
+ }
+
+ if (pNormalView->bSeekComplete == FALSE) {
+ pNormalView->nWaitPos = nCurPos;
+ }
+ else {
+ VideoLogWarning("== I FRMAE SEEK == [%d]", nCurPos);
+ if (vp_mm_player_set_position_by_key_frame(pNormalView->pPlayerHandle, nCurPos)) {
+ pNormalView->nWaitPos = -1;
+ pNormalView->bSeekComplete = FALSE;
+ }
+ }
+}
+
+static void __vp_normal_focus_key_down_cb(void *pUserData, Evas * e, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ Evas_Event_Key_Down *ev = pEvent;
+
+ if (!ev)
+ return;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ VideoLogInfo("KEY: %s", ev->keyname);
+
+ if (!strcmp(ev->keyname, "Left")) {
+ if (pNormalView->bKeySpeed == FALSE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, FALSE, FALSE);
+ pNormalView->bKeySpeed = TRUE;
+ }
+ } else if (!strcmp(ev->keyname, "Right")) {
+ if (pNormalView->bKeySpeed == FALSE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, FALSE, TRUE);
+ pNormalView->bKeySpeed = TRUE;
+ }
+ }
+}
+
+static void __vp_normal_focus_key_up_cb(void *pUserData, Evas * e, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ Evas_Event_Key_Down *ev = pEvent;
+
+ if (!ev)
+ return;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ VideoLogInfo("KEY: %s", ev->keyname);
+
+ if (!strcmp(ev->keyname, "Left")) {
+ if (pNormalView->bKeySpeed == TRUE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, TRUE, FALSE);
+ pNormalView->bKeySpeed = FALSE;
+ }
+ } else if (!strcmp(ev->keyname, "Right")) {
+ if (pNormalView->bKeySpeed == TRUE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, TRUE, TRUE);
+ pNormalView->bKeySpeed = FALSE;
+ }
+ }
+}
+
+static void __vp_normal_bookmark_capture_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ int nCount = 0;
+
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &(pNormalView->nCapturePosition))) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+
+ if (pNormalView->bCaptureComplete == FALSE) {
+ VideoLogWarning("Not Complete capture");
+ return;
+ }
+
+ if (!vp_play_bookmark_get_item_count(pNormalView->pBookmarkHandle, &nCount)) {
+ VideoLogWarning("vp_play_bookmark_get_item_count is fail");
+ return;
+ }
+
+ if (nCount > VP_BOOKMARK_ITEM_MAX_COUNT - 1) {
+ VideoLogWarning("Skip for max item count");
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_BOOKMARK_LIST_FULL,
+ 3.0, __vp_normal_popup_time_out_cb,
+ NULL, NULL,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ return;
+ }
+
+ unsigned long long lAvailableSpace = vp_play_util_get_disk_available_space(VP_PLAY_DATA_DIR);
+
+ if (lAvailableSpace < VP_MB(100)) {
+ VideoLogWarning("Skip for not enough memory");
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_COM_ENOUGH_MEMORY,
+ 3.0, __vp_normal_popup_time_out_cb,
+ NULL, NULL,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ return;
+ }
+
+ pNormalView->bCaptureComplete = FALSE;
+ pNormalView->bCaptureBookmark = TRUE;
+ if (!vp_mm_player_capture_start(pNormalView->pPlayerHandle)) {
+ pNormalView->bCaptureComplete = TRUE;
+ VideoLogError("vp_mm_player_capture_start fail");
+ }
+}
+
+static void __vp_normal_bookmark_item_select_cb(int nPos, const char *szPath, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (nPos == -1 && szPath == NULL) {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ return;
+ }
+
+ if (pNormalView->bSeekComplete == FALSE) {
+ pNormalView->nWaitPos = nPos;
+ }
+ else {
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, nPos)) {
+ pNormalView->nWaitPos = -1;
+ pNormalView->bSeekComplete = FALSE;
+
+ if (pNormalView->pLoadingAni) {
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ }
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nPos);
+ }
+ }
+
+ _vp_play_normal_view_show_layout(pNormalView);
+}
+
+static Eina_Bool __vp_normal_hide_layout_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ pNormalView->pHideTimer = NULL;
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ return EINA_FALSE;
+ }
+
+ _vp_play_normal_view_hide_layout(pNormalView, FALSE);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_normal_hide_layout_finish_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (pNormalView->pSubtitleTimer) {
+ VideoLogError("Skip for Subtitle");
+ return EINA_TRUE;
+ }
+
+ if (pNormalView->pVolumeJob) {
+ VideoLogError("Skip for pVolumeJob");
+ return EINA_TRUE;
+ }
+
+ if (pNormalView->pBrightnessJob) {
+ VideoLogError("Skip for pBrightnessJob");
+ return EINA_TRUE;
+ }
+
+ pNormalView->pHideFinishTimer = NULL;
+
+ if (pNormalView->pImageBufferObj == NULL &&
+ pNormalView->bIsPopupShow == FALSE &&
+ pNormalView->bIsSubtitleShow == FALSE &&
+ pPlayView->bMouseOut == FALSE &&
+ pNormalView->bVideoOnlyMode == FALSE &&
+ pNormalView->bCaptureMode == FALSE) {
+ vp_play_util_fb_visible_off(pPlayView->pWin, FALSE);
+ }
+ vp_device_set_frame_rate(40);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_normal_subtitle_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+
+ if (nPosition > pNormalView->dSubtitleStartTime &&
+ nPosition < pNormalView->dSubtitleEndTime) {
+ return EINA_TRUE;
+ }
+
+ pNormalView->pSubtitleTimer = NULL;
+
+ vp_play_subtitle_set_text(pNormalView->pSubtitle, NULL);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_normal_screenshot_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pScreenShot);
+ pNormalView->pScreenShot = NULL;
+
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_PORTRAIT);
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_LANDSCAPE);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SCREEN_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_ROTATE_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_VOLUME_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE, "*");
+
+ pNormalView->pScreenShotTimer = NULL;
+
+ return EINA_FALSE;
+}
+
+
+static Eina_Bool __vp_normal_dlna_speed_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+
+ pNormalView->pSpeedTimer = NULL;
+ return EINA_FALSE;
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ NULL,
+ VP_PLAY_STRING_UNABLE_TO_FF_REW,
+ 0.0, NULL,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ Evas_Object *pBtn = NULL;
+ pBtn = elm_button_add(pNormalView->pPopup);
+ elm_object_style_set (pBtn, "popup_button/default");
+ elm_object_domain_translatable_text_set(pBtn, VP_SYS_STR_PREFIX, VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pNormalView->pPopup, "button1", pBtn);
+ evas_object_smart_callback_add(pBtn, "clicked", __vp_normal_popup_key_event_cb, (void*)pNormalView);
+ evas_object_show(pNormalView->pPopup);
+
+ pNormalView->pSpeedTimer = NULL;
+
+ return EINA_FALSE;
+}
+
+
+static Eina_Bool __vp_normal_speed_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+
+ if (pNormalView->bSpeedDown) {
+ pNormalView->nSpeedValue++;
+ }
+
+ //SPEED: *2, *8, *32
+ //int nSeedVal = pNormalView->nSpeedValue - (pNormalView->nSpeedValue%2);
+
+ //SPEED: *2, *4, *8, *16, *32
+ int nSeedVal = pNormalView->nSpeedValue;
+
+ int nStep = (int) pow(2.0, (double)(nSeedVal - 1));
+
+ VideoLogWarning("pNormalView->nSpeedValue : %d", pNormalView->nSpeedValue);
+ if (pNormalView->nSpeedValue >= 2) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_SHOW, "*");
+ } else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (pNormalView->bManualPause == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ pNormalView->pSpeedTimer = NULL;
+ }
+
+ return EINA_FALSE;
+ }
+
+ if (nStep > VP_NORMAL_SPEED_VALUE_MAX) {
+ nStep = VP_NORMAL_SPEED_VALUE_MAX;
+ }
+
+ char szTxt[5] = {0,};
+ snprintf(szTxt, 5, "%d X", nStep);
+ elm_object_part_text_set(pNormalView->pMainLayout, VP_PLAY_PART_NORMAL_SPEED_TXT, szTxt);
+
+ if (pNormalView->bSeekComplete == FALSE) {
+ VideoLogError("bSeekComplete is fail");
+ return EINA_TRUE;
+ }
+
+ if (pNormalView->nSpeedValue >1) {
+ // during FAST FF/REW moving(player state is paused). don't allow sleep mode
+ vp_play_util_set_lock_power_key();
+ }
+
+ int nSetPosition = 0;
+ int nCurPosition = 0;
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nCurPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return EINA_TRUE;
+ }
+
+ if (pNormalView->nDuration <= nCurPosition) {
+ VideoLogWarning("nCurPosition : %d, Duration : %d", nCurPosition, pNormalView->nDuration);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ _vp_play_normal_view_on_next_play(pNormalView, FALSE);
+ pNormalView->pSpeedTimer = NULL;
+ return EINA_FALSE;
+ }
+
+ if (nCurPosition <= 0 && pNormalView->bSpeedFF == FALSE) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (pNormalView->bManualPause == FALSE && pNormalView->bSpeedDown == FALSE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ pNormalView->pSpeedTimer = NULL;
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+ }
+
+ if (pNormalView->bSpeedFF) {
+ nSetPosition = nCurPosition + (nStep * 1000);
+ }
+ else {
+ nSetPosition = nCurPosition - (nStep * 1000);
+ }
+
+ if (pNormalView->nDuration < nSetPosition) {
+ nSetPosition = pNormalView->nDuration;
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ }
+
+ if (nSetPosition < 0) {
+ nSetPosition = 0;
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ }
+ if (pNormalView->pProgressTimer)
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+
+ if (vp_mm_player_set_position_by_key_frame(pNormalView->pPlayerHandle, nSetPosition)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nCurPosition = nSetPosition;
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nSetPosition);
+ }
+
+ return EINA_TRUE;
+}
+
+
+
+static void __vp_normal_show_finish_cb(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ //NormalView *pNormalView = (NormalView *)pUserData;
+}
+
+static void __vp_normal_hide_finish_cb(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pWin) {
+ VideoLogError("pPlayView->pWin is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+ pNormalView->pHideFinishTimer = ecore_timer_add(VP_NORMAL_HIDE_LAYOUT_FINISH_TIMER_INTERVAL,
+ __vp_normal_hide_layout_finish_timer_cb, (void *)pNormalView);
+
+#ifndef SUBTITLE_K_FEATURE
+ if (pNormalView->nDisplayMode != VP_MM_PLAYER_DISPLAY_FULL_SCREEN) {
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_NONE || pNormalView->nRotate == VIDEO_PLAY_ROTATE_180) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_PORTRAIT, "*");
+ }
+ else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_HIDE, "*");
+ }
+ }
+ else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_HIDE, "*");
+ }
+#endif
+}
+
+
+
+static Eina_Bool __vp_normal_progressbar_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (!_vp_play_normal_view_update_progress_value(pNormalView)) {
+ pNormalView->pProgressTimer = NULL;
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+
+static Eina_Bool __vp_normal_lockscreen_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_LOCKSCREEN_HIDE, "*");
+
+ pNormalView->pLockScreenTimer = NULL;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_normal_exit_wait_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ pNormalView->pExitWaitTimer = NULL;
+
+ return EINA_FALSE;
+}
+
+
+static void __vp_normal_prepare_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (pNormalView->pPreparePipe != NULL) {
+ ecore_pipe_write(pNormalView->pPreparePipe, pNormalView, sizeof(NormalView));
+ }
+}
+
+static void __vp_normal_completed_cb (void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+#ifdef FLICK_JUMP
+ pNormalView->bFlickWaiting = FALSE;
+ VP_EVAS_DEL(pNormalView->pFlickJumpSeek);
+#endif
+
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_PREVIEW &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MESSAGE &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_EMAIL &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ vp_media_contents_set_played_position(pNormalView->szMediaURL, 0);
+ }
+ else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ vp_multi_path_set_item_position(pNormalView->szMediaURL, 0, pPlayView->pMultiPathList);
+ }
+
+ vp_mm_player_unrealize(pNormalView->pPlayerHandle);
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW) {
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ VideoLogWarning("== Auto Off ==");
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ return;
+ }
+
+ _vp_play_normal_view_on_next_play(pNormalView, FALSE);
+}
+
+
+static void __vp_play_normal_view_seek_pipe_cb(void *pUserData, void *pBuf, int nByte)
+{
+ if (!pUserData) {
+ VideoLogError("NormalView handle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->nWaitPos >= 0) {
+ if (pNormalView->bProgressDown == TRUE) {
+ VideoLogWarning("== I-FRAME SEEK ==[%d]", pNormalView->nWaitPos);
+ if (vp_mm_player_set_position_by_key_frame(pNormalView->pPlayerHandle, pNormalView->nWaitPos)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nWaitPos = -1;
+ return;
+ }
+ }
+ else {
+ VideoLogWarning("== REAL SEEK ==[%d]", pNormalView->nWaitPos);
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, pNormalView->nWaitPos)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nWaitPos = -1;
+ return;
+ }
+ }
+ pNormalView->nWaitPos = -1;
+ }
+}
+
+static void __vp_normal_seek_completed_cb (void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+ VideoLogWarning("%d", pNormalView->nWaitPos);
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView handle is NULL");
+ return;
+ }
+
+ if (!pPlayView->pWin) {
+ VideoLogError("pPlayView->pWin handle is NULL");
+ return;
+ }
+
+ pNormalView->bSeekComplete = TRUE;
+
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL)) {
+ if (pNormalView->bBufferingComplete == FALSE) {
+ VideoLogError("Skip for buffering state : buffering complete(false) so, set StartPosition 0");
+ if (pNormalView->nStartPosition > 0) {
+ pNormalView->nStartPosition = 0;
+ pNormalView->bIsRealize = TRUE;
+ }
+ return;
+ }
+ }
+#ifdef FLICK_JUMP
+ pNormalView->bFlickWaiting = FALSE;
+#endif
+
+ if (pNormalView->pLoadingAni) {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ vp_play_loading_ani_destroy(pNormalView->pLoadingAni);
+ pNormalView->pLoadingAni = NULL;
+ }
+
+ if (pPlayView->bAVRCP) {
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ } else {
+ vp_avrcp_noti_track_position(nPosition);
+ }
+ }
+
+ if (pNormalView->nStartPosition > 0) {
+ bool bLCDOffStatus = FALSE;
+
+ vp_play_config_get_lcd_off_state(&bLCDOffStatus);
+ if (bLCDOffStatus && (pNormalView->bVideoOnlyMode == FALSE)) {
+ VideoLogError("Invalid LCD Status");
+ //elm_exit();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ return;
+ }
+
+ if (pNormalView->bManualPause|| pNormalView->bSharepopup) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ }
+ else {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ }
+
+ if (!vp_mm_player_set_subtitle_position(pNormalView->pPlayerHandle, pNormalView->fSubtitleSyncValue*1000)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ pNormalView->nStartPosition = 0;
+ pNormalView->bIsRealize = TRUE;
+
+ return;
+ }
+
+ if (pNormalView->bProgressDown == TRUE) {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+ }
+
+ if (pNormalView->bIsRealize == FALSE) {
+ pNormalView->nStartPosition = 0;
+ pNormalView->bIsRealize = TRUE;
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ //_vp_play_normal_view_show_layout(pNormalView);
+ return;
+ }
+
+ if (pNormalView->nWaitPos >= 0) {
+ if (pNormalView->pSeekPipe) {
+ ecore_pipe_write(pNormalView->pSeekPipe, pNormalView, sizeof(NormalView));
+ }
+ }
+
+ if (pNormalView->bManualPause == FALSE &&
+ pNormalView->bProgressDown == FALSE &&
+ !pNormalView->pSpeedTimer) {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+
+}
+static void __vp_normal_interrupted_cb (vp_mm_player_interrupt_t nCode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VideoLogWarning("== %d ==", nCode);
+
+ if (nCode == VP_MM_PLAYER_INTERRUPTED_COMPLETED) {
+ if (pNormalView->bManualPause == FALSE) {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ }
+ }
+ else if (nCode == VP_MM_PLAYER_INTERRUPTED_BY_MEDIA) {
+ pNormalView->bManualPause = TRUE;
+ }
+ else if (nCode == VP_MM_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG) {
+ if (pNormalView->bDeviceRemoveInterrupt) {
+ if (pNormalView->bManualPause == FALSE) {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ }
+ pNormalView->bDeviceRemoveInterrupt = FALSE;
+ }
+ }
+ else if (nCode == VP_MM_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT) {
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView->pFunc is NULL");
+ return;
+
+ }
+ elm_exit();
+ return;
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+}
+
+static void __vp_normal_error_cb (vp_mm_player_error_t nError, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VideoLogWarning("Error triggered: 0x%x", nError);
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ Evas_Object *pParent = pPlayView->pWin;
+ switch (nError)
+ {
+ case VP_MM_PLAYER_ERR_OUT_OF_MEMORY:
+ case VP_MM_PLAYER_ERR_INVALID_OPERATION:
+ case VP_MM_PLAYER_ERR_FILE_NO_SPACE_ON_DEVICE:
+ case VP_MM_PLAYER_ERR_INVALID_PARAMETER:
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNABLE_PLAY,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ break;
+ case VP_MM_PLAYER_ERR_NO_SUCH_FILE:
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_FILE_NOT_EXIST,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ break;
+
+
+ case VP_MM_PLAYER_ERR_SEEK_FAILED:
+ VideoLogWarning("VP_MM_PLAYER_ERR_SEEK_FAILED");
+ break;
+ case VP_MM_PLAYER_ERR_INVALID_STATE:
+ VideoLogWarning("VP_MM_PLAYER_ERR_INVALID_STATE");
+ break;
+ case VP_MM_PLAYER_ERR_SOUND_POLICY:
+ VideoLogWarning("VP_MM_PLAYER_ERR_SOUND_POLICY");
+ break;
+ case VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED:
+ VideoLogWarning("VP_MM_PLAYER_ERR_VIDEO_CAPTUR_FAILED");
+ break;
+ case VP_MM_PLAYER_ERR_NOT_SUPPORTED_FILE:
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNSUPPORTED_FORMAT,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ break;
+ case VP_MM_PLAYER_ERR_INVALID_URI:
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_INVALID_URL,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ break;
+
+ case VP_MM_PLAYER_ERR_CONNECTION_FAILED:
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_CONNECTION_FAILED,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ break;
+ case VP_MM_PLAYER_ERR_DRM_EXPIRED:
+ case VP_MM_PLAYER_ERR_DRM_FUTURE_USE:
+ VideoLogWarning("DRM BUG");
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNABLE_PLAY,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ break;
+ case VP_MM_PLAYER_ERR_DRM_NO_LICENSE:
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_DIVX_DRM_AUTHORIZATION_ERROR,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ break;
+ default:
+ VideoLogWarning("UNKNOWN TYPE : %d", nError);
+ break;
+ }
+
+}
+
+static void _vp_normal_view_loading_ani_layout_del_cb(void *data, Evas *e,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!data) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)data;
+ pNormalView->pLoadingAni = NULL;
+}
+
+static bool _vp_play_normal_view_create_loading_ani(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+ pParent = pNormalView->pMainLayout;
+
+ if (pNormalView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pNormalView->pLoadingAni);
+ pNormalView->pLoadingAni = NULL;
+ }
+
+ pNormalView->pLoadingAni = vp_play_loading_ani_create(pParent, VIDEO_LOADING_SIZE_LARGE);
+ if (!pNormalView->pLoadingAni) {
+ VideoLogError("pLoadingAni create fail");
+ return FALSE;
+ }
+ evas_object_event_callback_add(pNormalView->pLoadingAni, EVAS_CALLBACK_DEL, _vp_normal_view_loading_ani_layout_del_cb, (void *)pNormalView);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_LOADING_ANI, pNormalView->pLoadingAni);
+
+ return TRUE;
+}
+
+static void __vp_normal_buffering_cb (int nPercent, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (nPercent == 100) {
+ VideoLogError("Buffering complete");
+ pNormalView->bBufferingComplete = TRUE;
+ if (pNormalView->pLoadingAni) {
+ vp_play_loading_ani_destroy(pNormalView->pLoadingAni);
+ pNormalView->pLoadingAni = NULL;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView handle is NULL");
+ return;
+ }
+
+ if (pNormalView->nSpeedValue > 1) {
+ VideoLogWarning("pNormalView->nSpeedValue : [%d]", pNormalView->nSpeedValue);
+ } else {
+ if (pNormalView->bManualPause || pPlayView->bActivate == FALSE) {
+ vp_mm_player_set_visible(pNormalView->pPlayerHandle, TRUE);
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ }
+ else {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ }
+ }
+ else {
+ pNormalView->bBufferingComplete = FALSE;
+ if (pNormalView->bManualPause == FALSE) {
+ vp_play_util_set_lock_power_key();
+ }
+ // Remove loading animation during speed playback.
+ if (pNormalView->pSpeedTimer) {
+ //
+ } else if (!pNormalView->pLoadingAni) {
+ if (!_vp_play_normal_view_create_loading_ani(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_loading_ani fail");
+ return;
+ }
+ }
+ }
+}
+
+static void __vp_normal_subtitle_updated_cb (unsigned long nDuration, char *text, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("%s", text);
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+ int tDuration = 0;
+ vp_mm_player_get_duration(pNormalView->pPlayerHandle, &tDuration);
+ if (nPosition >= tDuration) {
+ __vp_normal_completed_cb(pNormalView);
+ }
+
+ bool bIsWhiteSpace = vp_play_util_check_white_space(text);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSubtitleTimer);
+
+ if (pNormalView->bVideoOnlyMode) {
+ return;
+ }
+
+ if (bIsWhiteSpace) {
+ vp_play_subtitle_set_text(pNormalView->pSubtitle, "");
+ elm_object_signal_emit(vp_play_subtitle_get_object(pNormalView->pSubtitle), VP_SUBTITLE_SIGNAL_CAPTION_WINDOW_HIDE, "*");
+ elm_object_signal_emit(vp_play_subtitle_get_object(pNormalView->pSubtitle), VP_SUBTITLE_SIGNAL_GREP_BOX_HIDE, "*");
+ return;
+ }
+
+ double dTimeInterval = (double)nDuration / (double)1000;
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+
+ pNormalView->dSubtitleStartTime = nPosition;
+ pNormalView->dSubtitleEndTime = nPosition + nDuration;
+
+ pNormalView->pSubtitleTimer = ecore_timer_add(dTimeInterval,
+ __vp_normal_subtitle_timer_cb, (void *)pNormalView);
+
+ vp_play_subtitle_set_text(pNormalView->pSubtitle, text);
+#ifdef SUBTITLE_K_FEATURE
+ /*Set caption window: size, rel1, color*/
+ __vp_normal_subtitle_set_caption_window(pNormalView);
+#endif
+}
+
+
+static void __vp_normal_pd_message_cb (vp_mm_player_pd_message_t nType, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+}
+
+
+static void __vp_normal_video_captured_cb (unsigned char *pFrame, int nWidth, int nHeight, unsigned int nSize, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bCaptureBookmark) {
+ char *szFileName = NULL;
+ char *szVideoID = NULL;
+
+ float nScale = 0.0;
+ int nDestW = 0;
+ int nDestH = 0;
+
+ if (!vp_media_contents_get_video_id(pNormalView->szMediaURL, &szVideoID)) {
+ VideoLogError("vp_media_contents_get_video_id is Fail");
+ return;
+ }
+
+ szFileName = calloc(1, sizeof(char) * VP_URL_LEN_MAX);
+ if (!szFileName) {
+ VideoLogError("failed to allocate memory");
+ VP_FREE(szVideoID);
+ return;
+ }
+ snprintf(szFileName, VP_URL_LEN_MAX, "%s/%s",VP_PLAY_DATA_DIR, szVideoID);
+
+ if (!vp_file_exists(szFileName)) {
+ if (!vp_mkdir(szFileName)) {
+ VideoSecureLogError("Make directory Fail : %s", szFileName);
+ pNormalView->bCaptureComplete = TRUE;
+
+ VP_FREE(szFileName);
+ VP_FREE(szVideoID);
+ return;
+ }
+ }
+ memset(szFileName, 0, sizeof(char) * VP_URL_LEN_MAX);
+
+ snprintf(szFileName, VP_URL_LEN_MAX, "%s/%s/%d.jpg", VP_PLAY_DATA_DIR, szVideoID, pNormalView->nCapturePosition);
+
+ if (nWidth > nHeight) {
+ nScale = 146.0 / nWidth;
+ }
+ else {
+ nScale = 88.0 / nHeight;
+ }
+
+ nDestW = nWidth * nScale;
+ nDestH = nHeight * nScale;
+
+ if (vp_image_util_image_resize_save(szFileName, pFrame, nWidth, nHeight, nDestW, nDestH, 100)) {
+ if (!vp_play_bookmark_insert_item(pNormalView->pBookmarkHandle, szFileName, pNormalView->nCapturePosition)) {
+ VideoLogError("vp_play_bookmark_insert_item is Fail");
+ }
+ }
+ VP_FREE(szFileName);
+ VP_FREE(szVideoID);
+ }
+ else {
+
+ if (!vp_file_exists(VP_PLAY_SCREEN_SHOT_DIR)) {
+ if (!vp_mkdir(VP_PLAY_SCREEN_SHOT_DIR)) {
+ VideoSecureLogError("Make directory Fail : %s", VP_PLAY_SCREEN_SHOT_DIR);
+ }
+ }
+
+ char *szFileName = NULL;
+ char *szTitle = NULL;
+ szTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+
+ szFileName = calloc(1, sizeof(char) * VP_URL_LEN_MAX);
+ if (!szFileName) {
+ VideoLogError("failed to allocate memory");
+ VP_FREE(szTitle);
+ return;
+ }
+
+ snprintf(szFileName, VP_URL_LEN_MAX, "%s/%s_%d.jpg",VP_PLAY_SCREEN_SHOT_DIR, szTitle, pNormalView->nCapturePosition);
+
+ if (vp_image_util_image_save(szFileName, pFrame, nWidth, nHeight, 100)) {
+ vp_media_contents_update_db(szFileName);
+ bool bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+ vp_media_contents_update_db(szFileName);
+ VP_EVAS_DEL(pNormalView->pScreenShot);
+ pNormalView->pScreenShot = NULL;
+
+ pNormalView->pScreenShot = vp_button_create_image(pNormalView->pMainLayout, szFileName, NULL);
+
+ if (!pNormalView->pScreenShot) {
+ VideoLogError("Scrennshot is NULL ####");
+ }
+ else {
+ evas_object_size_hint_weight_set(pNormalView->pScreenShot, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pScreenShot, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pNormalView->pScreenShot);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SCREEN_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_ROTATE_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_VOLUME_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE, "*");
+
+ if (bLandscape) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SCREEN_LANDSCAPE_SHOW, "*");
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_LANDSCAPE, pNormalView->pScreenShot);
+ }
+ else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SCREEN_PORTRAIT_SHOW, "*");
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_PORTRAIT, pNormalView->pScreenShot);
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pScreenShotTimer);
+ pNormalView->pScreenShotTimer = ecore_timer_add(VP_NORMAL_SCREENSHOT_TIMER_INTERVAL,
+ __vp_normal_screenshot_timer_cb, (void *)pNormalView);
+ }
+
+ }
+
+ VP_FREE(szFileName);
+ VP_FREE(szTitle);
+ }
+
+ pNormalView->bCaptureComplete = TRUE;
+}
+
+static void __vp_normal_missed_plugin_cb (vp_mm_player_missed_plugin_t nType, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogWarning("nType=%d", nType);
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+#if 1
+ if (nType == VP_MM_PLAYER_MISSED_PLUGIN_AUDIO) {
+ _vp_play_normal_view_show_video_only_popup(pNormalView);
+ }
+ else if (nType == VP_MM_PLAYER_MISSED_PLUGIN_VIDEO) {
+ _vp_play_normal_view_show_audio_only_popup(pNormalView);
+ }
+#else /* Disabled. please use ecore_pipe if need to use popup. */
+ Evas_Object *pParent = pPlayView->pWin;
+ if (nType == VP_MM_PLAYER_MISSED_PLUGIN_AUDIO) {
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT,
+ NULL,
+ VP_PLAY_STRING_ERROR_UNSUPPORTED_AUDIO,
+ 3.0,__vp_normal_popup_time_out_cb,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ } else if (nType == VP_MM_PLAYER_MISSED_PLUGIN_VIDEO) {
+ pNormalView->pPopup = vp_popup_create(pParent,
+ POPUP_STYLE_DEFAULT,
+ NULL,
+ VP_PLAY_STRING_ERROR_UNSUPPORTED_VIDEO,
+ 3.0, __vp_normal_popup_time_out_cb,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ pNormalView->bIsVideoUnsupport = TRUE;
+
+ VP_EVAS_DISABLE_SET(pNormalView->pBookmarkBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_TRUE);
+ }
+#endif
+}
+
+static void __vp_normal_image_buffer_cb (char *pBuffer, int nSize, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VideoLogWarning("%p, %d", pBuffer, nSize);
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (pNormalView->pImageBufferObj) {
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER);
+ VP_EVAS_DEL(pNormalView->pImageBufferObj);
+ }
+ vp_play_util_save_file(VP_PLAY_IMAGE_BUFFER_PATH, pBuffer, nSize);
+
+ pNormalView->pImageBufferObj = elm_image_add(pNormalView->pMainLayout);
+ elm_image_file_set(pNormalView->pImageBufferObj, VP_PLAY_IMAGE_BUFFER_PATH, NULL);
+
+ evas_object_size_hint_weight_set(pNormalView->pImageBufferObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pImageBufferObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER, pNormalView->pImageBufferObj);
+ evas_object_show(pNormalView->pImageBufferObj);
+}
+#if 1
+static void _vp_normal_set_audio_only_image(NormalView *pNormalView, bool bAudioOnly)
+{
+ if (pNormalView->pImageBufferObj) {
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER);
+ VP_EVAS_DEL(pNormalView->pImageBufferObj);
+ }
+
+ if (bAudioOnly == TRUE) {
+ pNormalView->pImageBufferObj = vp_button_create_image(pNormalView->pMainLayout,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_NORMAL_AUDIO_ERROR_IMG);
+ evas_object_size_hint_weight_set(pNormalView->pImageBufferObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pImageBufferObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_color_set(pNormalView->pImageBufferObj, 255, 255, 255, 255);
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_ERROR_IMAGE, pNormalView->pImageBufferObj);
+ evas_object_show(pNormalView->pImageBufferObj);
+ /*double dImageAspectRatio = (double)270/214;
+
+ pNormalView->pImageBufferObj = vp_button_create_image(pNormalView->pMainLayout,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_NORMAL_AUDIO_ONLY_IMG);
+ evas_object_size_hint_weight_set(pNormalView->pImageBufferObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pNormalView->pImageBufferObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_size_hint_max_set(pNormalView->pImageBufferObj, 720, 720/dImageAspectRatio);
+ elm_image_aspect_fixed_set(pNormalView->pImageBufferObj, EINA_TRUE);
+
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER, pNormalView->pImageBufferObj);
+ evas_object_show(pNormalView->pImageBufferObj);*/
+ }
+}
+#endif
+
+static void __vp_normal_ctx_popup_dismiss_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pObj) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+}
+
+static void __vp_normal_ctx_popup_share_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+ if (pNormalView->bSharepopup) {
+ VideoLogWarning("Share popup is creating, ignore this event");
+ return;
+ }
+
+ _vp_play_normal_view_on_share_popup(pNormalView);
+}
+
+static void __vp_normal_ctx_popup_subtitle_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ /*If it is playing video, pause video*/
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ _vp_play_normal_view_on_subtitle_select_popup(pNormalView);
+}
+
+
+static void __vp_normal_del_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ NormalView *pNormalView = (NormalView*)data;
+
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }
+}
+
+static void __vp_normal_del_popup_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ NormalView *pNormalView = (NormalView*)data;
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (pNormalView->szMediaURL) {
+ char *szPreviewURL = NULL;
+ vp_play_config_get_preview_url_videos(&szPreviewURL);
+
+ if (szPreviewURL) {
+ if (!g_strcmp0(szPreviewURL, pNormalView->szMediaURL))
+ {
+ VideoLogInfo("Erase preview url.");
+ vp_play_config_set_preview_url_videos("");
+ }
+ }
+ VP_FREE(szPreviewURL);
+
+ vp_media_contents_del_video(pNormalView->szMediaURL);
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = FALSE;
+
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ }
+}
+
+static void __vp_normal_ctx_popup_delete_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = vp_two_button_popup_create( pPlayView->pWin,
+ VP_PLAY_STRING_POPUP_DELETE,
+ VP_PLAY_STRING_POPUP_DELETE_CONTENT,
+ VP_PLAY_STRING_CANCEL,
+ __vp_normal_del_popup_cancel_cb,
+ VP_PLAY_STRING_POPUP_DELETE,
+ __vp_normal_del_popup_delete_cb,
+ (const void*)pNormalView );
+
+ pNormalView->bIsPopupShow = TRUE;
+ eext_object_event_callback_add(pNormalView->pPopup, EEXT_CALLBACK_BACK, __vp_normal_del_popup_cancel_cb, (void*)pNormalView);
+
+}
+
+/*
+static void __vp_normal_ctx_popup_repeat_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ pNormalView->pRepeatHandle = vp_repeat_create(pPlayView->pWin,
+ pNormalView->szMediaURL,
+ __vp_normal_repeat_popup_close_cb);
+
+
+ if (!pNormalView->pRepeatHandle) {
+ VideoLogError("vp_repeat_create fail");
+ return;
+ }
+ if (!vp_repeat_set_user_data(pNormalView->pRepeatHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_repeat_set_user_data is fail");
+ }
+
+ if (!vp_repeat_realize(pNormalView->pRepeatHandle)) {
+ VideoLogWarning("vp_repeat_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+*/
+
+static void __vp_normal_ctx_popup_setting_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ _vp_play_normal_view_on_setting_popup(pNormalView);
+}
+
+/*
+static void __vp_normal_ctx_popup_sound_alive_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ _vp_play_normal_view_on_sound_alive_popup(pNormalView);
+}*/
+
+static void __vp_normal_ctx_popup_play_speed_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ _vp_play_normal_view_on_play_speed_popup(pNormalView);
+}
+
+static void __vp_normal_ctx_popup_detail_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ _vp_play_normal_view_on_detail_popup(pNormalView);
+}
+
+static bool _vp_play_normal_view_show_lock_screen(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (pNormalView->bLockScreen == FALSE) {
+ return FALSE;
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pLockScreenTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_LOCKSCREEN_SHOW, "*");
+
+ pNormalView->pLockScreenTimer =
+ ecore_timer_add(VP_NORMAL_HIDE_SCREEN_LOCK_TIMER_INTERVAL,
+ __vp_normal_lockscreen_timer_cb, (void *)pNormalView);
+
+ return TRUE;
+}
+
+static void __vp_normal_more_btn_clicked_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for bLockScreen");
+ _vp_play_normal_view_show_lock_screen(pNormalView);
+ return;
+ }
+
+ if (pNormalView->bIsRealize == FALSE) {
+ VideoLogWarning("Skip for not realized");
+ return;
+ }
+
+ if (!vp_play_volume_unrealize(pNormalView->pVolumeHandle)) {
+ VideoLogWarning("vp_play_volume_unrealize is fail");
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ VideoLogWarning("Skip for VIDEO_PLAY_TYPE_MULTI_PATH mode.");
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL)) {
+ VideoLogWarning("url is streaming. don't need to show detail");
+ return;
+ }
+ }
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW) {
+ VideoLogInfo("current launching type not support menu.");
+ return;
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ VideoLogInfo("current launching type not support menu.");
+ return;
+ }
+ if (strstr(pPlayView->szMediaURL,"/.") != NULL) {
+ VideoLogInfo("hidden file not suport menu.");
+ return;
+ }
+ pNormalView->pCtxPopup = elm_ctxpopup_add(pPlayView->pWin);
+
+ if (!pNormalView->pCtxPopup) {
+ VideoLogError("pNormalView->pCtxPopup is NULL");
+ return;
+ }
+ eext_object_event_callback_add(pNormalView->pCtxPopup, EEXT_CALLBACK_BACK, __vp_normal_ctx_popup_dismiss_cb, (void *)pNormalView);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+ elm_object_style_set(pNormalView->pCtxPopup , "more/default");
+ evas_object_smart_callback_add(pNormalView->pCtxPopup , "dismissed", __vp_normal_ctx_popup_dismiss_cb, (void *)pNormalView);
+ elm_ctxpopup_auto_hide_disabled_set(pNormalView->pCtxPopup, EINA_TRUE);
+
+#ifdef ENABLE_DRM_FEATURE
+ bool bDRMLock = FALSE;
+ bool bPlayReady = FALSE;
+#endif
+ char *szMediaID = NULL;
+
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ vp_media_contents_get_video_id(pNormalView->szMediaURL, &szMediaID);
+ if (!szMediaID) {
+ }
+ }
+ VP_FREE(szMediaID);
+#ifdef ENABLE_DRM_FEATURE
+ _vp_play_normal_view_check_drm_lock(pNormalView, &bDRMLock);
+
+ vp_drm_is_playready_drm_file(pNormalView->szMediaURL, &bPlayReady);
+#endif
+ //bool bIsPersonal = FALSE;
+
+ switch (pNormalView->nLaunchingType)
+ {
+ case VIDEO_PLAY_TYPE_STORE:
+ case VIDEO_PLAY_TYPE_LIST:
+ case VIDEO_PLAY_TYPE_GALLERY:
+ case VIDEO_PLAY_TYPE_MYFILE:
+ case VIDEO_PLAY_TYPE_OTHER:
+
+ /* Share via */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_SHARE, NULL, __vp_normal_ctx_popup_share_cb, (void *)pNormalView);
+
+ /* delete */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_DELETE, NULL, __vp_normal_ctx_popup_delete_cb, (void *)pNormalView);
+
+ /* Play speed */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_PLAY_SPEED, NULL, __vp_normal_ctx_popup_play_speed_cb, (void *)pNormalView);
+
+ /* subtitles */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_SUBTITLE, NULL, __vp_normal_ctx_popup_subtitle_cb, (void *)pNormalView);
+
+ /* repeat mode */
+ //elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_REPEAT_SETTING, NULL, __vp_normal_ctx_popup_repeat_cb, (void *)pNormalView);
+
+ /* Sound alive */
+ //elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_SOUND_ALIVE, NULL, __vp_normal_ctx_popup_sound_alive_cb, (void *)pNormalView);
+
+ /* Details */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_COM_DETAILS, NULL, __vp_normal_ctx_popup_detail_cb, (void *)pNormalView);
+ break;
+
+ case VIDEO_PLAY_TYPE_MESSAGE:
+ case VIDEO_PLAY_TYPE_EMAIL:
+
+ /* Play speed */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_PLAY_SPEED, NULL, __vp_normal_ctx_popup_play_speed_cb, (void *)pNormalView);
+
+ /* subtitles */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_SUBTITLE, NULL, __vp_normal_ctx_popup_subtitle_cb, (void *)pNormalView);
+ break;
+
+ case VIDEO_PLAY_TYPE_WEB:
+
+ /* Settings */
+ if (FALSE) {
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_POPUP_SETTINGS, NULL, __vp_normal_ctx_popup_setting_cb, (void *)pNormalView);
+ }
+ break;
+
+ case VIDEO_PLAY_TYPE_MULTI_PATH:
+ /* Details */
+ elm_ctxpopup_item_append(pNormalView->pCtxPopup, VP_PLAY_STRING_COM_DETAILS, NULL, __vp_normal_ctx_popup_detail_cb, (void *)pNormalView);
+ break;
+
+ case VIDEO_PLAY_TYPE_PREVIEW:
+ break;
+ }
+
+ int nW = 0;
+ int nH = 0;
+
+ Evas_Coord_Rectangle rect = {0,};
+ elm_win_screen_size_get(pPlayView->pWin, &rect.x, &rect.y, &rect.w, &rect.h);
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_NONE) {
+ nW = rect.w/2;
+ nH = rect.h;
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90) {
+ nW = rect.h/2;
+ nH = rect.w;
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_180) {
+ nW = rect.w/2;
+ nH = rect.h;
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ nW = rect.h/2;
+ nH = rect.w;
+ }
+
+ evas_object_move(pNormalView->pCtxPopup, nW, nH);
+
+
+ evas_object_show(pNormalView->pCtxPopup);
+}
+
+void vp_play_normal_view_pause_player(void *pPlayview)
+{
+ if (!pPlayview)
+ return;
+ PlayView *vPlayview = (PlayView *)pPlayview;
+ NormalView *pNormalView = vPlayview->pNormalView;
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ pNormalView->bManualPause = TRUE;
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+}
+
+void vp_play_normal_view_show_volume_popup(void *pPlayview)
+{
+ if (!pPlayview)
+ return;
+ PlayView *vPlayview = (PlayView *)pPlayview;
+ NormalView *pNormalView = vPlayview->pNormalView;
+ pNormalView->pVolumePopupHandle = NULL;
+ vp_play_volume_update_value(pNormalView->pVolumeHandle);
+ _vp_play_normal_view_on_volume_popup(pNormalView, FALSE);
+ vp_play_volume_set_focus_in(pNormalView->pVolumeHandle);
+}
+
+static void __vp_normal_function_btn_clicked_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pObj != pNormalView->pVolumeBtn && pObj != pNormalView->pScreenSizeBtn && pObj != pNormalView->pLockBtn) {
+ return;
+ }
+
+ if (pObj == pNormalView->pVolumeBtn) {
+ VideoLogWarning("pVolumeBtn button");
+ vp_play_volume_update_value(pNormalView->pVolumeHandle);
+ _vp_play_normal_view_on_volume_popup(pNormalView, TRUE);
+ vp_play_volume_set_focus_in(pNormalView->pVolumeHandle);
+ }
+ else if (pObj == pNormalView->pBookmarkBtn) {
+ VideoLogWarning("pBookmarkBtn button");
+
+ bool bIsRealize = FALSE;
+ if (!vp_play_bookmark_is_realize(pNormalView->pBookmarkHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_bookmark_is_realize fail");
+ return;
+ }
+ if (bIsRealize) {
+ _vp_play_normal_view_on_bookmark_mode(pNormalView, FALSE);
+ }
+ else {
+ _vp_play_normal_view_on_bookmark_mode(pNormalView, TRUE);
+ }
+ }
+ else if (pObj == pNormalView->pShareBtn) {
+ VideoLogWarning("pShareBtn button");
+ _vp_play_normal_view_on_share_popup(pNormalView);
+ }
+ else if (pObj == pNormalView->pLockBtn) {
+ VideoLogWarning("pLockBtn button");
+ if (!pNormalView->bLockScreen) {
+ pNormalView->bLockScreen = TRUE;
+ vp_play_normal_view_set_lock_screen(pNormalView, pNormalView->bLockScreen);
+ }
+ else {
+ pNormalView->bLockScreen = FALSE;
+ vp_play_normal_view_set_lock_screen(pNormalView, pNormalView->bLockScreen);
+ }
+ }
+ else if (pObj == pNormalView->pSoundAliveBtn) {
+ VideoLogWarning("pSoundAliveBtn button");
+ _vp_play_normal_view_on_sound_alive_popup(pNormalView);
+ }
+ else if (pObj == pNormalView->pRepeatBtn) {
+ VideoLogWarning("pRepeatBtn button");
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_NONE) {
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_ONE;
+
+ Evas_Object *pIcon = NULL;
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_ONE);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_ONE_PRESS);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_ONE_DIM);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE) {
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_ALL;
+
+ Evas_Object *pIcon = NULL;
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_ALL);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_ALL_PRESS);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_ALL_DIM);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_NONE;
+ Evas_Object *pIcon = NULL;
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_OFF);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_OFF_PRESS);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRepeatBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_REPEAT_OFF_DIM);
+ elm_object_part_content_set(pNormalView->pRepeatBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ }
+ }
+ else if (pObj == pNormalView->pScreenSizeBtn) {
+ VideoLogWarning("pScreenSizeBtn button");
+
+ if (pNormalView->nDisplayMode == VP_MM_PLAYER_DISPLAY_FULL_SCREEN) {
+ VideoLogWarning(" VP_MM_PLAYER_DISPLAY_LETTER_BOX");
+ pNormalView->nDisplayMode = VP_MM_PLAYER_DISPLAY_LETTER_BOX;
+ vp_play_preference_set_screen_mode_key(pNormalView->nDisplayMode);
+
+ vp_mm_player_set_display_mode(pNormalView->pPlayerHandle, pNormalView->nDisplayMode);
+
+ Evas_Object *pIcon = NULL;
+ pIcon = elm_object_part_content_get(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE_DIM);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ return;
+ }
+ else if (pNormalView->nDisplayMode == VP_MM_PLAYER_DISPLAY_LETTER_BOX) {
+ VideoLogWarning("VP_MM_PLAYER_DISPLAY_FULL_SCREEN");
+ pNormalView->nDisplayMode = VP_MM_PLAYER_DISPLAY_FULL_SCREEN;
+ vp_play_preference_set_screen_mode_key(pNormalView->nDisplayMode);
+
+ vp_mm_player_set_display_mode(pNormalView->pPlayerHandle, pNormalView->nDisplayMode);
+
+ Evas_Object *pIcon = NULL;
+ pIcon = elm_object_part_content_get(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+ pIcon = elm_object_part_content_get(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_2_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_2_MODE_PRESS);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_2_MODE_DIM);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ return;
+ }
+ }
+}
+
+static void __vp_normal_control_btn_clicked_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView handle is NULL");
+ return;
+ }
+
+ if (pNormalView->bIsRealize == FALSE) {
+ VideoLogWarning("Skip for not realized");
+ return;
+ }
+
+ if (pObj == pNormalView->pPauseBtn) {
+ VideoLogWarning("Pause button");
+ vp_util_release_cpu();
+
+ if (pNormalView->bBufferingComplete == FALSE) {
+ VideoLogWarning("Bufferring is not completed. ignore pause signal");
+ } else {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ }
+
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+
+ pNormalView->bManualPause = TRUE;
+ }
+ else if (pObj == pNormalView->pResumeBtn) {
+ VideoLogWarning("Resume button");
+ vp_util_lock_cpu();
+ _vp_play_normal_view_check_during_call(pNormalView);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ pNormalView->nSpeedValue = 1;
+ pNormalView->bSpeedDown = TRUE;
+
+ if (pNormalView->bBufferingComplete == FALSE) {
+ VideoLogWarning("Bufferring is not completed. ignore pause signal");
+ } else {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Resume Fail");
+ }
+ }
+
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+
+ pNormalView->bManualPause = FALSE;
+ }
+ else if (pObj == pNormalView->pPlayFocusBtn) {
+ VideoLogWarning("pPlayFocusBtn click");
+ Evas_Object *pObj = elm_object_part_content_get(pNormalView->pControlLayout, VP_PLAY_SWALLOW_NORMAL_PLAY);
+ if (pNormalView->pPauseBtn == pObj) {
+
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+
+ pNormalView->bManualPause = TRUE;
+ } else {
+ _vp_play_normal_view_check_during_call(pNormalView);
+
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Resume Fail");
+ }
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+
+ pNormalView->bManualPause = FALSE;
+ }
+ }
+ else if (pObj == pNormalView->pPrevBtn) {
+ VideoLogWarning("Prev button");
+ if (pNormalView->bHLSMode == FALSE) {
+ if (pNormalView->nSpeedValue < 2) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ _vp_play_normal_view_on_prev_play(pNormalView, TRUE, FALSE);
+ }
+ }
+ }
+ else if (pObj == pNormalView->pNextBtn) {
+ VideoLogWarning("Next button");
+ if (pNormalView->bHLSMode == FALSE) {
+ if (pNormalView->nSpeedValue < 2 && strstr (pPlayView->szMediaURL,"/.") == NULL) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ _vp_play_normal_view_on_next_play(pNormalView, TRUE);
+ }
+ }
+ }
+ else if (pObj == pNormalView->pRotateBtn) {
+ VideoLogWarning("Rotate button");
+
+ bool bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (bLandscape) {
+ pPlayView->nRotate = VIDEO_PLAY_ROTATE_NONE;
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 0);
+ vp_play_normal_view_set_rotate((normal_view_handle) pNormalView, VIDEO_PLAY_ROTATE_NONE, TRUE);
+ } else {
+ pPlayView->nRotate = VIDEO_PLAY_ROTATE_270;
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 270);
+ vp_play_normal_view_set_rotate((normal_view_handle) pNormalView, VIDEO_PLAY_ROTATE_270, TRUE);
+ }
+ } else if (pObj == pNormalView->pSoundPathBtn) {
+ VideoLogWarning("SoundPath button");
+ _vp_play_normal_view_on_sound_path_popup(pNormalView);
+
+ } else if (pObj == pNormalView->pCaptureBtn) {
+ bool bDRMLock = FALSE;
+
+ _vp_play_normal_view_check_drm_lock(pNormalView, &bDRMLock);
+ if (bDRMLock) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ NULL,
+ VP_PLAY_STRING_ERROR_UNABLE_CAPTURE_DRM_CONTENT,
+ 0.0, NULL,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ Evas_Object *pBtn = NULL;
+ pBtn = elm_button_add(pNormalView->pPopup);
+ elm_object_style_set (pBtn, "popup_button/default");
+ elm_object_domain_translatable_text_set(pBtn, VP_SYS_STR_PREFIX, VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pNormalView->pPopup, "button1", pBtn);
+ evas_object_smart_callback_add(pBtn, "clicked", __vp_normal_popup_key_event_cb, (void*)pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ return;
+ }
+
+ if (pNormalView->bIsVideoUnsupport) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ NULL,
+ VP_PLAY_STRING_ERROR_UNSUPPORTED_FORMAT,
+ 0.0, NULL,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ Evas_Object *pBtn = NULL;
+ pBtn = elm_button_add(pNormalView->pPopup);
+ elm_object_style_set (pBtn, "popup_button/default");
+ elm_object_domain_translatable_text_set(pBtn, VP_SYS_STR_PREFIX, VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pNormalView->pPopup, "button1", pBtn);
+ evas_object_smart_callback_add(pBtn, "clicked", __vp_normal_popup_key_event_cb, (void*)pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ return;
+ }
+ unsigned long long lAvailableSpace = vp_play_util_get_disk_available_space(VP_PLAY_DATA_DIR);
+
+ if (lAvailableSpace < VP_MB(100)) {
+ VideoLogWarning("Skip for not enough memory");
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_COM_ENOUGH_MEMORY,
+ 3.0, __vp_normal_popup_time_out_cb,
+ NULL, NULL,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ return;
+ }
+
+ _vp_play_normal_view_hide_layout(pNormalView, TRUE);
+ _vp_play_normal_view_screen_capture(pNormalView);
+ }
+ else if (pObj == pNormalView->pCaptureRewBtn) {
+ _vp_play_normal_view_screen_move(pNormalView, FALSE);
+ }
+ else if (pObj == pNormalView->pCaptureFFBtn) {
+ _vp_play_normal_view_screen_move(pNormalView, TRUE);
+ }
+ else {
+ VideoLogWarning("Unknown button");
+ }
+}
+
+static void __vp_normal_control_btn_press_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+ bool bSpeedMode = FALSE;
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (pNormalView->bKeyPressed == TRUE) {
+ VideoLogInfo("Key has been pressed");
+ return;
+ }
+ pNormalView->bKeyPressed = TRUE;
+
+ if (pNormalView->pSpeedTimer) {
+ bSpeedMode = TRUE;
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pObj == pNormalView->pNextBtn) {
+ VideoLogInfo("pNextBtn Press");
+ if (pNormalView->bHLSMode == FALSE) {
+ pNormalView->bSpeedFF = TRUE;
+ pNormalView->nSpeedValue = 1;
+ pNormalView->bSpeedDown = TRUE;
+ pNormalView->pSpeedTimer = ecore_timer_add(VP_NORMAL_LONG_PRESS_TIMER_INTERVAL,
+ __vp_normal_speed_timer_cb,
+ (void *)pNormalView);
+ }
+ else {
+ pNormalView->pSpeedTimer = ecore_timer_add(VP_NORMAL_LONG_PRESS_TIMER_INTERVAL,
+ __vp_normal_dlna_speed_timer_cb,
+ (void *)pNormalView);
+ }
+
+ }
+ else if (pObj == pNormalView->pPrevBtn) {
+ VideoLogInfo("pPrevBtn Press");
+ if (pNormalView->bHLSMode == FALSE) {
+ pNormalView->bSpeedFF = FALSE;
+ pNormalView->nSpeedValue = 1;
+ pNormalView->bSpeedDown = TRUE;
+ pNormalView->pSpeedTimer = ecore_timer_add(VP_NORMAL_LONG_PRESS_TIMER_INTERVAL,
+ __vp_normal_speed_timer_cb,
+ (void *)pNormalView);
+ }
+ else {
+ pNormalView->pSpeedTimer = ecore_timer_add(VP_NORMAL_LONG_PRESS_TIMER_INTERVAL,
+ __vp_normal_dlna_speed_timer_cb,
+ (void *)pNormalView);
+ }
+ }
+ else if (pObj == pNormalView->pResumeBtn) {
+ if (bSpeedMode) {
+ int nPosition = 0;
+ if (vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogDebug("nPosition[%d], curPosition[%d]", nPosition, pNormalView->nCurPosition);
+
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, pNormalView->nCurPosition)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nWaitPos = -1;
+ }else {
+ pNormalView->nWaitPos = nPosition;
+ }
+ }
+ }
+ }
+ else if (pObj == pNormalView->pPlayFocusBtn) {
+ VideoLogInfo("pPlayFocusBtn Press");
+ Evas_Object *pObj = elm_object_part_content_get(pNormalView->pControlLayout, VP_PLAY_SWALLOW_NORMAL_PLAY);
+ if (pNormalView->pResumeBtn == pObj) {
+ if (bSpeedMode) {
+ int nPosition = 0;
+ if (vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, pNormalView->nCurPosition)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nWaitPos = -1;
+ }else {
+ pNormalView->nWaitPos = nPosition;
+ }
+ }
+ }
+ }
+ }
+}
+
+static void __vp_normal_control_btn_unpress_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ pNormalView->bKeyPressed = FALSE;
+
+ if (pObj == pNormalView->pPauseBtn) {
+ }
+ else if (pObj == pNormalView->pResumeBtn) {
+ }
+ else if (pObj == pNormalView->pNextBtn) {
+ pNormalView->bSpeedDown = FALSE;
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (!pNormalView->pProgressTimer) {
+ _vp_play_normal_view_create_progress_timer(pNormalView);
+ }
+ }
+ else if (pObj == pNormalView->pPrevBtn) {
+ pNormalView->bSpeedDown = FALSE;
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ if (!pNormalView->pProgressTimer) {
+ _vp_play_normal_view_create_progress_timer(pNormalView);
+ }
+ }
+ else if (pObj == pNormalView->pAllsharBtn) {
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+ }
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+}
+
+static void __vp_normal_media_key_event_cb(vp_media_key_event_t nKey, bool bRelease, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (pNormalView->bSharepopup) {
+ VideoLogWarning("bSharepopup is TRUE");
+ return;
+ }
+
+ switch (nKey)
+ {
+ case VP_MEDIA_KEY_PLAY:
+ case VP_MEDIA_KEY_PAUSE:
+ case VP_MEDIA_KEY_PLAYPAUSE:
+ if (bRelease) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ pNormalView->bManualPause = FALSE;
+ }
+ else {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ pNormalView->bManualPause = TRUE;
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ break;
+
+ case VP_MEDIA_KEY_PREVIOUS:
+ if (bRelease) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ _vp_play_normal_view_on_prev_play(pNormalView, TRUE, FALSE);
+ }
+ break;
+ case VP_MEDIA_KEY_NEXT:
+ if (bRelease) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ _vp_play_normal_view_on_next_play(pNormalView, TRUE);
+ }
+ break;
+ case VP_MEDIA_KEY_REWIND:
+ if (bRelease) {
+ pNormalView->bSpeedDown = FALSE;
+
+ if (pNormalView->nSpeedValue < 2) {
+ VideoLogInfo("speed up");
+ _vp_normal_view_speed_for_steps(pNormalView, FALSE);
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogError("play Fail");
+ }
+ pNormalView->bManualPause = FALSE;
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ pNormalView->bSpeedFF = FALSE;
+ pNormalView->nSpeedValue = 1;
+ pNormalView->bSpeedDown = TRUE;
+ pNormalView->pSpeedTimer = ecore_timer_add(VP_NORMAL_LONG_PRESS_TIMER_INTERVAL,
+ __vp_normal_speed_timer_cb,
+ (void *)pNormalView);
+ }
+ break;
+ case VP_MEDIA_KEY_FASTFORWARD:
+ if (bRelease) {
+ pNormalView->bSpeedDown = FALSE;
+
+ if (pNormalView->nSpeedValue < 2) {
+ VideoLogInfo("speed up");
+ _vp_normal_view_speed_for_steps(pNormalView, TRUE);
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogError("play Fail");
+ }
+ pNormalView->bManualPause = FALSE;
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ pNormalView->bSpeedFF = TRUE;
+ pNormalView->nSpeedValue = 1;
+ pNormalView->bSpeedDown = TRUE;
+ pNormalView->pSpeedTimer = ecore_timer_add(VP_NORMAL_LONG_PRESS_TIMER_INTERVAL,
+ __vp_normal_speed_timer_cb,
+ (void *)pNormalView);
+ }
+ break;
+ case VP_MEDIA_KEY_STOP:
+ if (bRelease) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ }
+ pNormalView->bManualPause = TRUE;
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ break;
+ default:
+ VideoLogWarning("Undefined key : %d", nKey);
+ break;
+ }
+
+}
+
+/*
+ this function is for only for keyboard FF/REW key longpress case
+ because of different FF/REW long press scenario in keyboard
+ video -> play a file -> pause -> key down FF button(long press) -> move seek -> key up FF button -> seek stop -> stay pause
+ video -> play a file -> playing -> key down FF button(long press) -> move seek -> key up FF button -> seek stop -> resume
+*/
+void vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(normal_view_handle pViewHandle, bool bRelease, bool bFFseek)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (pNormalView->pSpeedTimer== NULL && bRelease == FALSE) {
+ if (bFFseek)
+ __vp_normal_media_key_event_cb(VP_MEDIA_KEY_FASTFORWARD, bRelease, pNormalView);
+ else
+ __vp_normal_media_key_event_cb(VP_MEDIA_KEY_REWIND, bRelease, pNormalView);
+ } else if (pNormalView->pSpeedTimer && bRelease == TRUE) {
+ if (pNormalView->nSpeedValue < 2) {
+ VideoLogInfo("speed up");
+ _vp_normal_view_speed_for_steps(pNormalView, bFFseek);
+ } else {
+ int nPosition = 0;
+ if (vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, pNormalView->nCurPosition)) {
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nWaitPos = -1;
+ } else {
+ pNormalView->nWaitPos = nPosition;
+ }
+ }
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogError("play Fail");
+ }
+ pNormalView->bManualPause = FALSE;
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+}
+
+static void _vp_normal_view_speed_for_steps(NormalView *pNormalView, bool bSpeedFF)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (pNormalView->bSeekComplete == FALSE) {
+ VideoLogError("bSeekComplete is fail");
+ return;
+ }
+
+ int nSetPosition = 0;
+ int nCurPosition = 0;
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nCurPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return;
+ }
+
+ if (pNormalView->nDuration <= nCurPosition) {
+ _vp_play_normal_view_on_next_play(pNormalView, FALSE);
+ return;
+ }
+
+ VideoLogInfo("pNormalView->nDuration %d", pNormalView->nDuration);
+ if (bSpeedFF) {
+ nSetPosition = nCurPosition + (15 * 1000);//15 sec
+ }
+ else {
+ nSetPosition = nCurPosition - (15 * 1000);
+ }
+
+ if (pNormalView->nDuration < nSetPosition) {
+ nSetPosition = pNormalView->nDuration;
+ }
+
+ if (nSetPosition < 0) {
+ nSetPosition = 0;
+ }
+
+#if 1
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, nSetPosition)) {
+#else
+ if (vp_mm_player_set_position_by_key_frame(pNormalView->pPlayerHandle, nSetPosition)) {
+#endif
+ pNormalView->bSeekComplete = FALSE;
+ pNormalView->nCurPosition = nSetPosition;
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nSetPosition);
+ }
+
+ return;
+}
+
+//Focus UI
+void vp_play_normal_view_set_main_layout_focus_out(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->bMainFocusState = FALSE;
+
+ elm_object_focus_set(pNormalView->pNaviFrame, EINA_FALSE);
+ elm_object_tree_focus_allow_set(pNormalView->pNaviFrame, EINA_FALSE);
+ elm_object_focus_allow_set(pNormalView->pNaviFrame, EINA_FALSE);
+
+ elm_object_focus_set(pNormalView->pMainLayout, EINA_FALSE);
+ elm_object_tree_focus_allow_set(pNormalView->pMainLayout, EINA_FALSE);
+ elm_object_focus_allow_set(pNormalView->pMainLayout, EINA_FALSE);
+}
+
+void vp_play_normal_view_set_main_layout_focus_in(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (pNormalView->bMainFocusState == TRUE) {
+ VideoLogInfo("Already Focus In");
+ return;
+ }
+ pNormalView->bMainFocusState = TRUE;
+
+ elm_object_focus_allow_set(pNormalView->pNaviFrame, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pNormalView->pNaviFrame, EINA_TRUE);
+ elm_object_focus_set(pNormalView->pNaviFrame, EINA_TRUE);
+
+ elm_object_focus_allow_set(pNormalView->pMainLayout, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pNormalView->pMainLayout, EINA_TRUE);
+ elm_object_focus_set(pNormalView->pMainLayout, EINA_TRUE);
+
+ elm_object_focus_set(pNormalView->pAllsharBtn, EINA_TRUE);
+}
+
+void vp_play_normal_view_set_resume_or_pause(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ pNormalView->bManualPause = TRUE;
+ } else {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ pNormalView->bManualPause = FALSE;
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+}
+
+void vp_play_normal_view_show_main_layout(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ _vp_play_normal_view_show_layout(pNormalView);
+}
+
+void vp_play_normal_view_create_main_layout_hide_timer(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+}
+
+static void _vp_play_normal_view_set_button_focus_sequence(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ bool bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+
+ elm_object_focus_set(pNormalView->pVolumeBtn, EINA_TRUE);
+
+ vp_play_util_focus_next_object_set(pNormalView->pPrevBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pPlayFocusBtn, pNormalView->pPrevBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pPlayFocusBtn, pNormalView->pNextBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pNextBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pAllsharBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_DOWN);
+ if (pNormalView->pSoundPathBtn) {
+ vp_play_util_focus_next_object_set(pNormalView->pAllsharBtn, pNormalView->pSoundPathBtn, ELM_FOCUS_NEXT);
+ } else {
+ vp_play_util_focus_next_object_set(pNormalView->pAllsharBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_NEXT);
+ }
+ vp_play_util_focus_next_object_set(pNormalView->pSoundPathBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_DOWN);
+ vp_play_util_focus_next_object_set(pNormalView->pSoundPathBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_NEXT);
+
+ if (bLandscape == TRUE) {
+ vp_play_util_focus_next_object_set(pNormalView->pVolumeBtn, pNormalView->pBookmarkBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pBookmarkBtn, pNormalView->pVolumeBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pBookmarkBtn, pNormalView->pPrevBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pPrevBtn, pNormalView->pBookmarkBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pNextBtn, pNormalView->pMultiWinBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pMultiWinBtn, pNormalView->pNextBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pMultiWinBtn, pNormalView->pScreenSizeBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pScreenSizeBtn, pNormalView->pMultiWinBtn, ELM_FOCUS_LEFT);
+ } else {
+ vp_play_util_focus_next_object_set(pNormalView->pBookmarkBtn, pNormalView->pMultiWinBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pMultiWinBtn, pNormalView->pBookmarkBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pVolumeBtn, pNormalView->pPrevBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pPrevBtn, pNormalView->pVolumeBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pNextBtn, pNormalView->pScreenSizeBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pScreenSizeBtn, pNormalView->pNextBtn, ELM_FOCUS_LEFT);
+
+ vp_play_util_focus_next_object_set(pNormalView->pVolumeBtn, pNormalView->pBookmarkBtn, ELM_FOCUS_UP);
+ vp_play_util_focus_next_object_set(pNormalView->pBookmarkBtn, pNormalView->pVolumeBtn, ELM_FOCUS_DOWN);
+ }
+}
+
+bool vp_play_normal_view_get_volume_state(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ bool bIsRealize = FALSE;
+
+ if (pNormalView->pVolumeHandle) {
+ if (!vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ }
+ }
+
+ return bIsRealize;
+}
+
+bool vp_play_normal_view_get_main_layout_focus_state(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ return pNormalView->bMainFocusState;
+}
+
+bool vp_play_normal_view_get_main_layout_show_state(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ return pNormalView->bShowLayout;
+}
+
+vp_normalview_popup_style_e vp_play_normal_view_get_popup_show_state(normal_view_handle *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return VP_PLAY_NORMAL_VIEW_POPUP_NONE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ vp_normalview_popup_style_e nPopUpShow = VP_PLAY_NORMAL_VIEW_POPUP_NONE;
+
+ if (pNormalView->pCtxPopup) {
+ nPopUpShow = VP_PLAY_NORMAL_VIEW_CTX_POPUP;
+ } else if (pNormalView->bIsPopupShow || pNormalView->bIsSubtitleShow) {
+ nPopUpShow = VP_PLAY_NORMAL_VIEW_OTHER_POPUP;
+ }
+
+ return nPopUpShow;
+}
+
+static void __vp_normal_naviframe_back_btn_cb(void *pUserData, Evas_Object *obj, void *event_info)
+{
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ _vp_play_normal_view_set_played_time(pNormalView);
+ vp_play_view_destroy(pNormalView);
+
+ return;
+}
+
+static Eina_Bool __vp_normal_naviframe_pop_cb(void *pUserData, Elm_Object_Item *pItem)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("Skip for bLockScreen");
+ _vp_play_normal_view_show_lock_screen(pNormalView);
+ return EINA_FALSE;
+ }
+
+ if (pNormalView->bIsActive) {
+ if (pNormalView->pExitWaitTimer) {
+ _vp_play_normal_view_set_played_time(pNormalView);
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return EINA_FALSE;
+ }
+
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return EINA_FALSE;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return EINA_FALSE;
+ }
+
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ VideoLogWarning("== BACK ==");
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+
+ return EINA_FALSE;
+ }
+ else {
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return EINA_FALSE;
+ }
+
+ if (pPlayView->bDestroy) {
+ pNormalView->pNaviFrame = NULL; // it will be deleted when return TRUE
+ return EINA_TRUE;
+ }
+
+ vp_play_util_status_noti_show(VP_PLAY_STRING_COM_WAIT_BACK);
+
+ pNormalView->pExitWaitTimer = ecore_timer_add(VP_NORMAL_EXIT_WAIT_TIMER_INTERVAL,
+ __vp_normal_exit_wait_timer_cb, (void *)pNormalView);
+
+ return EINA_FALSE;
+ }
+ }
+
+ if (pNormalView->bDestroyNavi) {
+ VideoLogWarning("bDestroyNavi is TRUE.");
+ pNormalView->pNaviFrame = NULL; // it will be deleted when return TRUE
+
+ return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+static void __vp_normal_sdp_download_state_change_cb(VppDownloadHandle pDownloadHandle, VppDownloadState eState, const char *szPath, void *pUserData)
+{
+ VideoLogWarning("eState : [%d]", eState);
+
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ if (!pDownloadHandle) {
+ VideoLogError("pDownloadHandle == NULL!!!");
+ return;
+ }
+
+ if (eState == VPP_DOWNLOAD_STATE_COMPLETED) {
+ char *szDownloadedFilePath = VppDownloadGetDownloadedFilePath(pDownloadHandle);
+
+ if (szDownloadedFilePath) {
+ VideoLogWarning("szDownloadedFilePath : %s", szDownloadedFilePath);
+ VP_FREE(pNormalView->szMediaURL);
+ pNormalView->szMediaURL = g_strdup(szDownloadedFilePath);
+ }
+
+ VP_FREE(szDownloadedFilePath);
+ if (!vp_mm_player_realize_async(pNormalView->pPlayerHandle,pNormalView->szMediaURL)) {
+ VideoLogError("vp_mm_player_realize_async fail");
+ VppDownloadDestroyItem(pNormalView->pDownloadHandle);
+ pNormalView->pDownloadHandle = NULL;
+ return;
+ }
+
+ VppDownloadDestroyItem(pNormalView->pDownloadHandle);
+ pNormalView->pDownloadHandle = NULL;
+ } else if (eState == VPP_DOWNLOAD_STATE_FAILED || eState == VPP_DOWNLOAD_STATE_CANCELED) {
+ if (!vp_mm_player_realize_async(pNormalView->pPlayerHandle,pNormalView->szMediaURL)) {
+
+ VppDownloadDestroyItem(pNormalView->pDownloadHandle);
+ pNormalView->pDownloadHandle = NULL;
+
+ VideoLogError("vp_mm_player_realize_async fail");
+ return;
+ }
+ VppDownloadDestroyItem(pNormalView->pDownloadHandle);
+ pNormalView->pDownloadHandle = NULL;
+ }
+}
+
+static void __vp_normal_main_layout_resize_cb(void *pUserData, Evas *pEvas, Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return;
+ }
+ //if needed, to do
+}
+
+/*szColorHex:#RGBA ---> nColor:ARGB*/
+static unsigned int _vp_play_normal_view_convert_color_to_argb(char *szColorHex)
+{
+ unsigned int nColor = 0;
+ char *szColor = g_strdup_printf("%s%6.6s", (szColorHex+7), (szColorHex+1));
+ nColor = strtoul(szColor, NULL, 16);
+ VideoLogInfo("szColorHex:%s, szColor: %s, nColor:%0x", szColorHex, szColor, nColor);
+ VP_FREE(szColor);
+
+ return nColor;
+}
+
+/* internal functions */
+static bool _vp_play_normal_view_set_subtitle_font_config(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogError("pNormalView pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ /* set subtitle option */
+ char *szFontFamilyName = NULL;
+ int nSubtitleSize = VIDEO_SUBTITLE_SIZE_MEDIUM;
+ int nSubtitleSizeValue = VP_SUBTITLE_SIZE_MEDIUM_VALUE;
+ unsigned int nFontColor = 0;
+ unsigned int nBGColor = 0;
+ int nAlignment = VIDEO_SUBTITLE_ALIGNMENT_CENTER;
+
+ vp_play_preference_get_subtitle_font_name_key(&szFontFamilyName);
+ vp_play_preference_get_subtitle_size_key(&nSubtitleSize);
+
+ if (nSubtitleSize == VIDEO_SUBTITLE_SIZE_SMALL) {
+ nSubtitleSizeValue = VP_SUBTITLE_SIZE_SMALL_VALUE;
+ }
+ else if (nSubtitleSize == VIDEO_SUBTITLE_SIZE_MEDIUM) {
+ nSubtitleSizeValue = VP_SUBTITLE_SIZE_MEDIUM_VALUE;
+ }
+ else if (nSubtitleSize == VIDEO_SUBTITLE_SIZE_LARGE) {
+ nSubtitleSizeValue = VP_SUBTITLE_SIZE_LARGE_VALUE;
+ }
+#ifndef SUBTITLE_K_FEATURE
+ int nFontColorKey = VP_SUBTITLE_COLOR_BLACK;
+ int nBGColorKey = VP_SUBTITLE_COLOR_BLACK;
+
+ vp_play_preference_get_subtitle_font_color_key(&nFontColorKey);
+
+ if (nFontColorKey == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nFontColor = 0xff000000;
+ }
+ else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_BLUE) {
+ nFontColor = 0xff0000ff;
+ }
+ else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_GREEN) {
+ nFontColor = 0xff00ff00;
+ }
+ else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nFontColor = 0xffffffff;
+ }
+
+ vp_play_preference_get_subtitle_bg_color_key(&nBGColorKey);
+
+ if (nBGColorKey == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nBGColor = 0xff000000;
+ }
+ else if (nBGColorKey == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nBGColor = 0xffffffff;
+ }
+ else if (nBGColorKey == VIDEO_SUBTITLE_COLOR_NONE) {
+ nBGColor = 0x00000000;
+ }
+
+#else
+ char *szColorHex = NULL;
+ vp_play_preference_get_subtitle_font_color_hex_key(&szColorHex);
+ if (szColorHex != NULL) {
+ nFontColor = _vp_play_normal_view_convert_color_to_argb(szColorHex);
+ }
+
+ char *szBGColorHex = NULL;
+ vp_play_preference_get_subtitle_bg_color_hex_key(&szBGColorHex);
+ if (szBGColorHex != NULL) {
+ nBGColor = _vp_play_normal_view_convert_color_to_argb(szBGColorHex);
+
+ }
+
+ vp_play_preference_get_subtitle_alignment_key(&nAlignment);
+
+#endif
+ if (!vp_mm_player_set_subtitle_font(pNormalView->pPlayerHandle, szFontFamilyName, NULL, nSubtitleSizeValue)) {
+ VideoLogError("vp_mm_player_set_subtitle_font fail");
+ }
+ if (!vp_mm_player_set_subtitle_font_color(pNormalView->pPlayerHandle, nFontColor, nBGColor)) {
+ VideoLogError("vp_mm_player_set_subtitle_font_color fail");
+ }
+ VP_FREE(szFontFamilyName);
+
+ if (!vp_mm_player_subtitle_ignore_markup_tags(pNormalView->pPlayerHandle, FALSE)) {
+ VideoLogError("vp_mm_player_subtitle_ignore_markup_tags fail");
+ }
+
+ if (!vp_mm_player_subtitle_set_alignment_in_line(pNormalView->pPlayerHandle, nAlignment)) {
+ VideoLogError("vp_mm_player_subtitle_set_alignment_in_line fail");
+ }
+
+ if (!vp_mm_player_subtitle_set_alignment_horizontal(pNormalView->pPlayerHandle, nAlignment)) {
+ VideoLogError("vp_mm_player_subtitle_set_alignment_horizontal fail");
+ }
+
+ if (!vp_mm_player_subtitle_apply_alignment_right_away(pNormalView->pPlayerHandle)) {
+ VideoLogError("vp_mm_player_subtitle_apply_alignment_right_away fail");
+ }
+
+ return TRUE;
+}
+
+static bool _vp_play_normal_view_update_progress_value(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ int nPosition = 0;
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (pNormalView->bHLSMode) {
+ VideoLogWarning("Skip for HLS");
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+ return FALSE;
+ }
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ int nBufferingPosition = 0;
+ vp_mm_player_get_buffering_position(pNormalView->pPlayerHandle, &nBufferingPosition);
+ vp_play_progressbar_set_buffering_position(pNormalView->pProgressbar, nBufferingPosition);
+ }
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ nPosition += 1000;
+ }
+ if (nPosition > pNormalView->nDuration) {
+ nPosition = pNormalView->nDuration;
+ }
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nPosition);
+
+ pNormalView->nCurPosition = nPosition;
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ pPlayView->nStartPosition = nPosition;
+ }
+
+ return TRUE;
+
+}
+
+static bool _vp_play_normal_view_check_during_call(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ bool bCallOn = FALSE;
+ vp_play_config_get_call_state(&bCallOn);
+ if (bCallOn) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ NULL,
+ VP_PLAY_STRING_UNABLE_TO_PLAY_VIDEO_DURING_CALL,
+ 3.0, __vp_normal_popup_time_out_cb,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ }
+
+ return TRUE;
+}
+
+static void _vp_play_normal_view_show_audio_only_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ VideoLogInfo("Show toast popup: Only audio data supported by this file. Now playing video.");
+ _vp_normal_set_audio_only_image(pNormalView, TRUE);
+ vp_play_util_status_noti_show(VP_PLAY_STRING_ERROR_ONLY_AUDIO_DATA_SUPPORTED);
+}
+
+static void _vp_play_normal_view_show_video_only_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ VideoLogInfo("Show toast popup: Only video data supported by this file. Now playing video.");
+ _vp_normal_set_audio_only_image(pNormalView, FALSE);
+ vp_play_util_status_noti_show(VP_PLAY_STRING_ERROR_ONLY_VIDEO_DATA_SUPPORTED);
+}
+
+static bool _vp_play_normal_view_check_audio_only(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ /* Audio only */
+ char *audio_codec = NULL;
+ char *video_codec = NULL;
+ bool b_audio_only = FALSE;
+ bool b_video_only = FALSE;
+ if (vp_mm_player_get_codecinfo(pNormalView->pPlayerHandle, &audio_codec, &video_codec)) {
+ VideoLogWarning("audio_codec=%s, video_codec=%s", audio_codec, video_codec);
+ if (video_codec == NULL || strlen(video_codec) <= 1) {
+ if (audio_codec != NULL && strlen(audio_codec) > 1) {
+ b_audio_only = TRUE;
+ }
+ }
+
+ if (audio_codec == NULL || strlen(audio_codec) <= 1) {
+ if (video_codec != NULL && strlen(video_codec) > 1) {
+ b_video_only = TRUE;
+ }
+ }
+
+ VP_FREE(audio_codec);
+ VP_FREE(video_codec);
+ }
+
+ VideoLogWarning("b_audio_only=%d, b_video_only=%d", b_audio_only, b_video_only);
+
+ if (b_audio_only) {
+ VideoLogInfo("Only audio data supported.");
+ _vp_play_normal_view_show_audio_only_popup(pNormalView);
+ } else {
+ _vp_normal_set_audio_only_image(pNormalView, FALSE);
+ }
+
+ if (b_video_only) {
+ VideoLogInfo("Only video data supported.");
+ _vp_play_normal_view_show_video_only_popup(pNormalView);
+ }
+
+ return TRUE;
+}
+
+
+static bool _vp_play_normal_view_check_drm_lock(NormalView *pNormalView, bool *bLock)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+
+ if (!pNormalView->szMediaURL) {
+ return FALSE;
+ }
+
+ *bLock = FALSE;
+#ifdef ENABLE_DRM_FEATURE
+ bool bIsDrm = FALSE;
+
+ if (vp_drm_is_drm_file(pNormalView->szMediaURL, &bIsDrm)) {
+ if (bIsDrm) {
+ bool bIsFWLock = FALSE;
+ bool bIsDivX = FALSE;
+ bool bIsPlayReadyDRM = FALSE;
+
+ if (vp_drm_is_check_forward_lock(pNormalView->szMediaURL, &bIsFWLock)) {
+ if (bIsFWLock) {
+ *bLock = TRUE;
+ }
+ }
+ if (vp_drm_is_divx_drm_file(pNormalView->szMediaURL, &bIsDivX)) {
+ if (bIsDivX) {
+ *bLock = TRUE;
+ }
+ }
+
+ if (vp_drm_is_playready_drm_file(pNormalView->szMediaURL, &bIsPlayReadyDRM)) {
+ if (bIsPlayReadyDRM) {
+ *bLock = TRUE;
+ }
+ }
+ }
+ }
+#endif
+ return TRUE;
+}
+
+#ifdef ENABLE_DRM_FEATURE
+static bool _vp_play_normal_view_check_drm(NormalView *pNormalView, bool *bIsAvailablePlay)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+
+ *bIsAvailablePlay = TRUE;
+
+ bool bIsDrm = FALSE;
+ //bool bIsLicense = FALSE;
+ bool bIsDivXDRM = FALSE;
+
+ if (!vp_drm_is_drm_file(pNormalView->szMediaURL, &bIsDrm)) {
+ VideoLogError("vp_drm_is_drm_file is fail");
+ return FALSE;
+ }
+
+ if (bIsDrm == FALSE) {
+ VideoLogWarning("Not DRM File");
+ return TRUE;
+ }
+ else {
+ VideoLogWarning("== IS DRM FILE ================================");
+ }
+
+ if (pNormalView->pPlayView->bStoreDownload == TRUE)
+ {
+ bool bCheckLicense = FALSE;
+ if (!vp_drm_is_check_license(pNormalView->szMediaURL, &bCheckLicense))
+ {
+ VideoLogError("vp_drm_is_check_license is fail");
+
+ *bIsAvailablePlay = FALSE;
+
+ return FALSE;
+ }
+
+ if (bCheckLicense == FALSE)
+ {
+ if (!vp_store_license_acquisition( pNormalView->szMediaURL,
+ pNormalView->pPlayView->pStoreAppId,
+ pNormalView->pPlayView->pStoreOrderId,
+ pNormalView->pPlayView->pStoreMvId,
+ pNormalView->pPlayView->pStoreServerId,
+ _vp_play_normal_view_store_la_cb,
+ (const void*)pNormalView ))
+ {
+ VideoLogError("vp_store_license_acquisition is fail");
+
+ *bIsAvailablePlay = FALSE;
+
+ return FALSE;
+ }
+
+ return FALSE;
+ }
+ }
+
+ if (!vp_drm_is_divx_drm_file(pNormalView->szMediaURL, &bIsDivXDRM)) {
+ VideoLogError("vp_drm_is_divx_drm_file is fail");
+ return FALSE;
+ }
+
+ if (bIsDivXDRM == FALSE) {
+ return TRUE;
+
+ if (!vp_drm_is_check_license(pNormalView->szMediaURL, &bIsLicense)) {
+ VideoLogError("vp_drm_is_check_license is fail");
+ *bIsAvailablePlay = FALSE;
+ return FALSE;
+ }
+
+
+ if (bIsLicense == FALSE) {
+ VideoLogWarning("bIsLicense is Invalid");
+
+ *bIsAvailablePlay = FALSE;
+
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ char *szMessage = NULL;
+ char *szTitleTemp = NULL;
+
+ szTitleTemp = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+ szMessage = g_strdup_printf(VP_PLAY_STRING_DRM_CURRENTLY_LOCKED_UNLOCK_Q, szTitleTemp);
+
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT,
+ VP_PLAY_STRING_COM_ERROR,
+ szMessage,
+ 3.0,__vp_normal_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_FREE(szMessage);
+ VP_FREE(szTitleTemp);
+
+ return TRUE;
+ }
+ }
+
+ vp_drm_constraint_info stConstraintInfo = {0,};
+
+ if (!vp_drm_get_constarint_info(pNormalView->szMediaURL, &stConstraintInfo)) {
+ VideoLogError("vp_drm_get_constarint_info is fail");
+ return FALSE;
+ }
+
+ char *szMsg = NULL;
+ char *szTitle = NULL;
+ szTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+
+ if (bIsDivXDRM) {
+ if (stConstraintInfo.status == VP_DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED) {
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_DIVX_DRM_AUTHORIZATION_ERROR,
+ 3.0,__vp_normal_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_FREE(szTitle);
+
+ return TRUE;
+ }
+
+ while (stConstraintInfo.constraints)
+ {
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_COUNT) {
+ if (stConstraintInfo.remaining_count == 0) {
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DIVX_DRM_RENTAL_EXPIRED_ERROR, stConstraintInfo.original_count - stConstraintInfo.remaining_count, stConstraintInfo.original_count);
+ }
+ else {
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DIVX_DRM_RENTAL_CONFIRMATION_CHOICE, stConstraintInfo.original_count - stConstraintInfo.remaining_count, stConstraintInfo.original_count);
+ }
+ break;
+ }
+ }
+ }
+ else {
+ bool bNotiPopup = FALSE;
+
+ while (stConstraintInfo.constraints)
+ {
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_COUNT) {
+ if (stConstraintInfo.remaining_count == 2) {
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DRM_PS_2_MORE_TIME_START_NOW_Q, szTitle);
+ }
+ else if (stConstraintInfo.remaining_count == 1) {
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DRM_PS_1_MORE_TIME_START_NOW_Q, szTitle);
+ }
+ else if (stConstraintInfo.remaining_count == 0) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_DATE_TIME) {
+ if (stConstraintInfo.date_time_expired) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_INTERVAL) {
+ if (stConstraintInfo.remaining_interval_sec == 0) {
+ bNotiPopup = TRUE;
+ }
+ else {
+ int nDays = stConstraintInfo.remaining_interval_sec / VP_ACCUMULATED_DATE + 1;
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DRM_PS_FOR_PD_DAYS_START_NOW_Q, szTitle, nDays);
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_TIMED_COUNT) {
+ if (stConstraintInfo.remaining_timed_count == 2) {
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DRM_PS_2_MORE_TIME_START_NOW_Q, szTitle);
+ } else if (stConstraintInfo.remaining_timed_count == 1) {
+ szMsg = g_strdup_printf(VP_PLAY_STRING_DRM_PS_1_MORE_TIME_START_NOW_Q, szTitle);
+ } else if (stConstraintInfo.remaining_timed_count == 0) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+
+ if (stConstraintInfo.constraints & VP_DRM_CONSTRAINT_ACCUMLATED_TIME) {
+ if (stConstraintInfo.remaining_acc_sec == 0) {
+ bNotiPopup = TRUE;
+ }
+ break;
+ }
+ }
+ }
+
+ VP_FREE(szMsg);
+ VP_FREE(szTitle);
+
+ return TRUE;
+}
+#endif
+
+#ifndef ENABLE_SUBTITLE
+
+static void _vp_play_normal_view_free_subtitle_list(GList *pSubtitleList)
+{
+ if (pSubtitleList) {
+ int nCount = 0;
+ int i = 0;
+ nCount = g_list_length(pSubtitleList);
+ for (i = 0; i < nCount ; i++)
+ {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pSubtitleList, i);
+ VP_FREE(szName);
+ }
+
+ g_list_free(pSubtitleList);
+ }
+}
+#endif
+
+#ifdef _NATIVE_BUFFER_SYNC
+static Evas_Object *_vp_play_normal_view_create_image_sink(void *pParent, void *pUserData)
+{
+
+ if (!pUserData) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return NULL;
+ }
+
+// NormalView *pNormalView = (NormalView *)pUserData;
+ Evas *pEvas = NULL;
+ Evas_Object *pObj = NULL;
+
+ pEvas = evas_object_evas_get(pParent);
+
+ pObj = evas_object_image_add(pEvas);
+ if (NULL == pObj) {
+ VideoLogError("pObj is NULL");
+ return NULL;
+ }
+
+ evas_object_image_size_set(pObj, VP_NORMAL_DEFAULT_WIDTH, VP_NORMAL_DEFAULT_HEIGHT);
+ evas_object_image_fill_set(pObj, 0, 0, VP_NORMAL_DEFAULT_WIDTH, VP_NORMAL_DEFAULT_HEIGHT);
+ evas_object_resize(pObj, VP_NORMAL_DEFAULT_WIDTH, VP_NORMAL_DEFAULT_HEIGHT);
+
+ void *pImageBuf = evas_object_image_data_get(pObj, EINA_TRUE);
+ if (NULL == pImageBuf) {
+ VideoLogError("pImageBuf is NULL");
+ VP_EVAS_DEL(pObj);
+ return NULL;
+ }
+
+ int nBufSize = VP_NORMAL_DEFAULT_WIDTH * VP_NORMAL_DEFAULT_HEIGHT * 4;
+
+ memset(pImageBuf, 0, nBufSize);
+ evas_object_image_data_set(pObj,pImageBuf);
+
+// evas_object_event_callback_add(pObj, EVAS_CALLBACK_RESIZE,
+// __vp_play_multi_view_imagesink_resize_cb, (void *)pNormalView);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_SINK, pObj);
+
+ return pObj;
+
+}
+#endif
+
+bool vp_play_normal_view_play_start(normal_view_handle pViewHandle) {
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ _vp_play_normal_view_play_start(pNormalView,FALSE);
+ return TRUE;
+}
+
+static bool _vp_play_normal_view_play_start(NormalView *pNormalView, bool bCheckDRM)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+ VideoLogWarning(">>");
+
+ if (pNormalView->bIsActive == FALSE) {
+ VideoLogError("pNormalView is NOT realized. skip");
+ return FALSE;
+ }
+
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSubtitleTimer);
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogWarning("pPlayView is NULL");
+ return FALSE;
+ }
+ if (pNormalView->pZoomGuide) {
+ vp_zoom_guide_destroy(pNormalView->pZoomGuide);
+ pNormalView->pZoomGuide = NULL;
+ }
+
+ if (pNormalView->pImageBufferObj) {
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER);
+ VP_EVAS_DEL(pNormalView->pImageBufferObj);
+ }
+
+ pNormalView->fZoomValue = 1.0;
+ pNormalView->bIsVideoUnsupport = FALSE;
+ pNormalView->bBufferingComplete = TRUE;
+ pNormalView->bCaptureComplete = TRUE;
+ pNormalView->bDeviceRemoveInterrupt = FALSE;
+
+ _vp_play_normal_view_all_close_popup(pNormalView);
+
+ VP_FREE(pPlayView->szMediaURL);
+ VP_STRDUP(pPlayView->szMediaURL, pNormalView->szMediaURL);
+ VideoSecureLogInfo("== PLAY START : %s ==", pNormalView->szMediaURL);
+
+#ifdef _NATIVE_BUFFER_SYNC
+ VP_EVAS_DEL(pNormalView->pVideoSink);
+ pNormalView->pVideoSink = _vp_play_normal_view_create_image_sink(pNormalView->pMainLayout, (void *)pNormalView);
+ if (!pNormalView->pVideoSink) {
+ VideoLogError("_vp_play_normal_view_create_image_sink handle is null");
+ return FALSE;
+ }
+#endif
+
+ pNormalView->pSubtitleTimer = NULL;
+ pNormalView->bIsExistSubtitle = FALSE;
+ pNormalView->fPlaySpeed = pNormalView->pPlayView->fPlaySpeed;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ if (!vp_play_util_local_file_check(pNormalView->szMediaURL)) {
+ /* popup show */
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_FILE_NOT_EXIST,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+
+ return TRUE;
+ }
+ }
+
+ if (bCheckDRM) {
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ bool bIsAvailablePlay = TRUE;
+#ifdef ENABLE_DRM_FEATURE
+ if (_vp_play_normal_view_check_drm(pNormalView, &bIsAvailablePlay)) {
+ if (bIsAvailablePlay == FALSE) {
+ VideoLogWarning("Wait Drm popup result");
+ return TRUE;
+ }
+ }
+ else
+#endif
+ {
+ if (pNormalView->pPlayView->bStoreDownload == TRUE)
+ {
+ if (bIsAvailablePlay == FALSE)
+ {
+ VideoLogWarning("license acquisition failed!!!");
+
+ Evas_Object *pPopup = NULL;
+ pPopup = vp_popup_create(pNormalView->pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNABLE_PLAY,
+ 3.0, __vp_normal_prepare_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+ evas_object_show(pPopup);
+
+ pNormalView->bIsPopupShow = TRUE;
+
+ return FALSE;
+ }
+ else
+ {
+ VideoLogWarning("need license acquisition");
+ return FALSE;
+ }
+ }
+ }
+ }
+ }
+
+ if (pNormalView->nStartPosition == 0) {
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_STORE ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_LIST ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER) {
+ int nStartPos = 0;
+ if (vp_media_contents_get_played_position(pNormalView->szMediaURL, &nStartPos)) {
+ pNormalView->nStartPosition = nStartPos;
+ }
+ }
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_STORE ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_LIST ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER) {
+ vp_media_contents_set_played_time(pNormalView->szMediaURL);
+ }
+
+ vp_play_subtitle_set_text(pNormalView->pSubtitle, NULL);
+
+ if (bCheckDRM) {
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ bool bDRMLock = FALSE;
+ _vp_play_normal_view_check_drm_lock(pNormalView, &bDRMLock);
+ if (bDRMLock) {
+ VP_EVAS_DISABLE_SET(pNormalView->pBookmarkBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_TRUE);
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pBookmarkBtn, EINA_FALSE);
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_FALSE);
+ }
+ } else {
+ if (pNormalView->bVideoOnlyMode == FALSE) {
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_FALSE);
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_TRUE);
+ }
+ }
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL) {
+ char *szMediaID = NULL;
+ bool bReturn = FALSE;
+ bReturn = vp_media_contents_get_video_id(pNormalView->szMediaURL, &szMediaID);
+ if (!szMediaID || bReturn == FALSE) {
+ VP_EVAS_DISABLE_SET(pNormalView->pTrimBtn, EINA_TRUE);
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pTrimBtn, EINA_FALSE);
+ }
+ VP_FREE(szMediaID);
+ }
+ if (pNormalView->pPlayerHandle) {
+ vp_mm_player_destroy(pNormalView->pPlayerHandle);
+ pNormalView->pPlayerHandle = NULL;
+ }
+
+ if (pNormalView->pLoadingAni) {
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ }
+
+ /* mm_player create */
+ if (!vp_mm_player_set_hw_decoder(TRUE)) {
+ VideoLogError("vp_mm_player_set_user_param fail");
+ _vp_play_normal_view_destroy_handle(pNormalView);
+ return FALSE;
+ }
+
+ pNormalView->pPlayerHandle = vp_mm_player_create();
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogError("vp_mm_player_create fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_user_param(pNormalView->pPlayerHandle, (void *) pNormalView)) {
+ VideoLogError("vp_mm_player_set_user_param fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_REALIZE_ASYNC_CB, (void *)__vp_normal_prepare_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_SEEK_COMPLETE_CB, (void *)__vp_normal_seek_completed_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_END_OF_STREAM_CB, (void *)__vp_normal_completed_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_INTERRUPT_CB, (void *)__vp_normal_interrupted_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_ERROR_CB, (void *)__vp_normal_error_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_BUFFERING_CB, (void *)__vp_normal_buffering_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_SUBTITLE_UPDATE_CB, (void *)__vp_normal_subtitle_updated_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_PD_MESSAGE_CB, (void *)__vp_normal_pd_message_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_CAPTURE_VIDEO_CB, (void *)__vp_normal_video_captured_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_MISSED_PLUGIN_CB, (void *)__vp_normal_missed_plugin_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (!vp_mm_player_set_callback(pNormalView->pPlayerHandle, VP_MM_PLAYER_IMAGE_BUFFER_CB, (void *)__vp_normal_image_buffer_cb)) {
+ VideoLogError("vp_mm_player_set_callback fail");
+ return FALSE;
+ }
+
+ if (pNormalView->pBookmarkHandle) {
+ vp_play_bookmark_set_media_url(pNormalView->pBookmarkHandle, pNormalView->szMediaURL);
+ }
+
+#ifdef _NATIVE_BUFFER_SYNC
+ if (!vp_mm_player_set_video_sink(pNormalView->pPlayerHandle,
+ VP_MM_PLAYER_VIDEO_TYPE_EVAS,
+ (void *)pNormalView->pVideoSink)) {
+ VideoLogError("vp_mm_player_set_video_sink fail");
+ _vp_play_normal_view_destroy_handle(pNormalView);
+ return FALSE;
+ }
+#else
+ //if (!vp_mm_player_set_video_sink(pNormalView->pPlayerHandle, VP_MM_PLAYER_VIDEO_TYPE_X11, (void *)GET_DISPLAY(pNormalView->pPlayView->pWin))) {
+ if (!vp_mm_player_set_video_sink(pNormalView->pPlayerHandle, VP_MM_PLAYER_VIDEO_TYPE_X11, (void *)(pNormalView->pPlayView->pWin))) {
+ VideoLogError("vp_mm_player_set_video_sink fail");
+ return FALSE;
+ }
+#endif
+
+ if (!vp_mm_player_set_hub_download_mode(pNormalView->pPlayerHandle, pPlayView->bStoreDownload)) {
+ VideoLogError("vp_mm_player_set_hub_download_mode fail");
+ }
+
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_NONE) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_0);
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_90);
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_180) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_180);
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_270);
+ }
+
+ vp_mm_player_sound_filter_t nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+
+ if (pNormalView->nSoundAlive == VIDEO_SA_NORMAL) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+ }
+ else if (pNormalView->nSoundAlive == VIDEO_SA_VOICE) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_VOICE;
+ }
+ else if (pNormalView->nSoundAlive == VIDEO_SA_MOVIE) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_MOVIE;
+ }
+ else if (pNormalView->nSoundAlive == VIDEO_SA_7_1_CH) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_VITUAL_71;
+
+ video_sound_device_type_t nSoundDevType = VP_SOUND_DEVICE_NONE;
+ vp_sound_get_active_device(&nSoundDevType);
+
+ if (nSoundDevType != VP_SOUND_DEVICE_EARJACK) {
+ nSoundFilter = VP_MM_PLAYER_FILTER_NONE;
+ }
+ }
+
+ vp_mm_player_set_display_mode(pNormalView->pPlayerHandle, pNormalView->nDisplayMode);
+
+ if (nSoundFilter != VP_MM_PLAYER_FILTER_NONE) {
+ if (!vp_mm_player_set_sound_filter(pNormalView->pPlayerHandle, nSoundFilter)) {
+ VideoLogWarning("vp_mm_player_set_sound_filter is fail");
+ }
+ }
+
+ if (pNormalView->nDefaultAudioTrackIndex > 0) {
+ vp_mm_player_set_audio_track(pNormalView->pPlayerHandle, pNormalView->nDefaultAudioTrackIndex);
+ }
+
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (pPlayView->szMediaTitle) {
+ elm_object_item_text_set(pNormalView->pNaviItem, pPlayView->szMediaTitle);
+ } else {
+ char *szTitle = NULL;
+ szTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+ if (szTitle) {
+ elm_object_item_text_set(pNormalView->pNaviItem, szTitle);
+ }
+ VP_FREE(szTitle);
+ }
+ if (!vp_mm_player_realize_async(pNormalView->pPlayerHandle,pNormalView->szMediaURL)) {
+ VideoLogError("vp_mm_player_realize_async fail");
+
+ //_vp_play_normal_view_show_layout(pNormalView);
+ Evas_Object *pPopup = NULL;
+ pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNABLE_PLAY,
+ 3.0, __vp_normal_prepare_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+
+ evas_object_show(pPopup);
+
+ pNormalView->bIsPopupShow = TRUE;
+
+ return TRUE;
+ }
+ }
+ else {
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ VideoLogInfo("VIDEO_PLAY_TYPE_WEB:%s", pNormalView->szMediaURL);
+ if (pPlayView->szMediaTitle) {
+ elm_object_item_text_set(pNormalView->pNaviItem, pPlayView->szMediaTitle);
+ } else {
+ elm_object_item_text_set(pNormalView->pNaviItem, VP_PLAY_STRING_STREAMING_PLAYER);
+ }
+ if (pPlayView->szCookie) {
+ if (!vp_mm_player_set_cookie(pNormalView->pPlayerHandle, pPlayView->szCookie)) {
+ VideoLogError("vp_mm_player_set_cookie fail");
+ }
+ }
+ if (pPlayView->szProxy) {
+ if (!vp_mm_player_set_proxy(pNormalView->pPlayerHandle, pPlayView->szProxy)) {
+ VideoLogError("vp_mm_player_set_proxy fail");
+ }
+ }
+ char *szSdpPath = NULL;
+ szSdpPath = vp_play_util_get_sdp_url((const char *)pNormalView->szMediaURL);
+ if (vp_play_util_check_sdp_url((const char *)szSdpPath))
+ {
+ _vp_play_normal_view_download_sdp(pNormalView, pNormalView->szMediaURL);
+ //_vp_play_normal_view_show_layout(pNormalView);
+
+ return TRUE;
+ }
+ VP_FREE(szSdpPath);
+
+ if (!vp_mm_player_realize_async(pNormalView->pPlayerHandle,pNormalView->szMediaURL)) {
+ VideoLogError("vp_mm_player_realize_async fail");
+ //_vp_play_normal_view_show_layout(pNormalView);
+ Evas_Object *pPopup = NULL;
+ pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNABLE_PLAY,
+ 3.0, __vp_normal_prepare_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+ evas_object_show(pPopup);
+
+ pNormalView->bIsPopupShow = TRUE;
+
+ return TRUE;
+ }
+ }
+ else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ char *szTitle = NULL;
+ char *szMultiPathURL = NULL;
+ char *szSubtitleForMultiPath = NULL;
+ int nMultiPathPosition = 0;
+ int nMultiPathDuration = 0;
+ bool bIsSameAP = TRUE;
+
+
+ vp_multi_path_get_current_item(pNormalView->szMediaURL, &szMultiPathURL, &szTitle, &szSubtitleForMultiPath, &nMultiPathPosition, &nMultiPathDuration, &bIsSameAP, pPlayView->pMultiPathList);
+ if (szSubtitleForMultiPath) {
+ if (strlen(szSubtitleForMultiPath) > 0) {
+ if (vp_file_exists(szSubtitleForMultiPath)) {
+ pNormalView->bIsExistSubtitle = TRUE;
+ VideoSecureLogInfo("SUBTITLE : %s", szSubtitleForMultiPath);
+ vp_mm_player_set_subtitle_url(pNormalView->pPlayerHandle,szSubtitleForMultiPath);
+ VP_FREE(pNormalView->szSubtitleURL);
+ } else {
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_SUBTITLE_FAIL,
+ 3.0, __vp_normal_error_popup_time_out_cb,
+ __vp_normal_error_popup_key_event_cb,
+ __vp_normal_error_popup_mouse_event_cb,
+ pNormalView);
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ }
+ }
+ }
+
+ if (!szTitle) {
+ szTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+ }
+
+ if (szTitle) {
+ elm_object_item_text_set(pNormalView->pNaviItem, szTitle);
+ }
+ else {
+ elm_object_item_text_set(pNormalView->pNaviItem, VP_PLAY_STRING_NO_TITLE);
+ }
+
+ if (pNormalView->nStartPosition == 0)
+ pNormalView->nStartPosition = nMultiPathPosition;
+
+ if (nMultiPathDuration>0)
+ pNormalView->nDuration = nMultiPathDuration;
+
+ VP_FREE(szMultiPathURL);
+ VP_FREE(szSubtitleForMultiPath);
+ VP_FREE(szTitle);
+
+ if (!vp_mm_player_realize_async(pNormalView->pPlayerHandle,pNormalView->szMediaURL)) {
+ VideoLogError("vp_mm_player_realize_async fail");
+ Evas_Object *pPopup = NULL;
+ pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_ERROR_UNABLE_PLAY,
+ 3.0, __vp_normal_prepare_error_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+ evas_object_show(pPopup);
+
+ pNormalView->bIsPopupShow = TRUE;
+
+ return TRUE;
+ }
+ }
+ }
+ //_vp_play_normal_view_show_layout(pNormalView);
+ vp_play_util_set_lock_power_key();
+
+ VideoLogWarning("<<");
+
+ return TRUE;
+}
+
+
+static void _vp_play_normal_view_on_next_play(NormalView *pNormalView, bool bManual)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW) {
+ return;
+ }
+
+ bool bIsExit = FALSE;
+
+ pNormalView->nStartPosition = 0;
+ pNormalView->nDefaultAudioTrackIndex = 0;
+ pNormalView->nSpeedValue = 1;
+
+ _vp_play_normal_view_on_bookmark_mode(pNormalView, FALSE);
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_NONE) {
+ if (bManual) {
+ return;
+ }
+ else {
+ bIsExit = TRUE;
+ }
+ }
+ else {
+ _vp_play_normal_view_play_start(pNormalView, FALSE);
+ }
+ }
+ else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ bIsExit = TRUE;
+ }
+ else if (!pPlayView->pMultiPathList) {
+ VideoLogError("pMultiPathList is NULL");
+ bIsExit = TRUE;
+ } else {
+ if (bManual) {
+ _vp_play_normal_view_set_played_time(pNormalView);
+
+ char *szNextURL = NULL;
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pNormalView->szMediaURL, &szNextURL, &szSubtitle, &nPosition, &nDuration, TRUE, pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+ if (szNextURL) {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ pNormalView->nStartPosition = nPosition;
+ pNormalView->nDuration = nDuration;
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ else {
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ return;
+ }
+
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_NONE) {
+ bIsExit = TRUE;
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_OFF) {
+ bIsExit = TRUE;
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL_STOP) {
+ char *szNextURL = NULL;
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pNormalView->szMediaURL, &szNextURL, &szSubtitle, &nPosition, &nDuration, FALSE, pPlayView->pMultiPathList);
+
+ VP_FREE(szSubtitle);
+
+ if (!szNextURL) {
+ bIsExit = TRUE;
+ }
+ else {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ pNormalView->nDuration = nDuration;
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE) {
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ char *szNextURL = NULL;
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pNormalView->szMediaURL, &szNextURL, &szSubtitle, &nPosition, &nDuration, TRUE, pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+ if (!szNextURL) {
+ bIsExit = TRUE;
+ }
+ else {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ pNormalView->nDuration = nDuration;
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ }
+ }
+ }
+ else {
+ if (bManual) {
+ _vp_play_normal_view_set_played_time(pNormalView);
+ char *szNextURL = NULL;
+ vp_media_contents_get_next_file_path(pNormalView->szMediaURL, &szNextURL, TRUE, pNormalView->pMediaItemList);
+
+ VideoSecureLogInfo("pNormalView->szMediaURL is %s", pNormalView->szMediaURL);
+ if (szNextURL) {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ pNormalView->bManualPause = FALSE;
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ else {
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ return;
+ }
+
+ if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_NONE) {
+ bIsExit = TRUE;
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_OFF) {
+ bIsExit = TRUE;
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL_STOP) {
+ char *szNextURL = NULL;
+ vp_media_contents_get_next_file_path(pNormalView->szMediaURL, &szNextURL, FALSE, pNormalView->pMediaItemList);
+ if (!szNextURL) {
+ bIsExit = TRUE;
+ }
+ else {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ONE) {
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ else if (pNormalView->nRepeatMode == VIDEO_PLAY_REPEAT_ALL) {
+ char *szNextURL = NULL;
+ vp_media_contents_get_next_file_path(pNormalView->szMediaURL, &szNextURL, TRUE, pNormalView->pMediaItemList);
+ if (!szNextURL) {
+ bIsExit = TRUE;
+ }
+ else {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szNextURL);
+ VP_FREE(szNextURL);
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+ }
+ }
+
+ if (bIsExit) {
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ }
+}
+
+static void _vp_play_normal_view_on_prev_play(NormalView *pNormalView, bool bManual, bool bVoice)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ pNormalView->nDefaultAudioTrackIndex = 0;
+ pNormalView->nSpeedValue = 1;
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ _vp_play_normal_view_play_start(pNormalView, FALSE);
+ return;
+ }
+
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+
+ pNormalView->nStartPosition = 0;
+ if (bVoice == FALSE) {
+ if (nPosition > 2000) {
+ vp_mm_player_set_position(pNormalView->pPlayerHandle, 0);
+
+ if (pNormalView->bManualPause) {
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, 0);
+ }
+ return;
+ }
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_PREVIEW ||
+ (pPlayView && (strstr(pPlayView->szMediaURL,"/.") != NULL))) {
+ return;
+ }
+
+ if (bManual) {
+ _vp_play_normal_view_set_played_time(pNormalView);
+ }
+
+ char *szPrevURL = NULL;
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (!pPlayView) {
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ return;
+ }
+ else if (pPlayView->pMultiPathList== NULL) {
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ return;
+ }
+ else {
+ char *szSubtitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+ vp_multi_path_get_next_item(pNormalView->szMediaURL, &szPrevURL, &szSubtitle, &nPosition, &nDuration, TRUE, pPlayView->pMultiPathList);
+ VP_FREE(szSubtitle);
+
+ if (szPrevURL) {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szPrevURL);
+ VP_FREE(szPrevURL);
+ pNormalView->nDuration = nDuration;
+ }
+
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ }
+
+ }
+ else {
+ vp_media_contents_get_prev_file_path(pNormalView->szMediaURL, &szPrevURL, TRUE, pNormalView->pMediaItemList);
+ VideoSecureLogInfo("pNormalView->szMediaURL pre is %s", pNormalView->szMediaURL);
+ if (szPrevURL) {
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szPrevURL);
+ VP_FREE(szPrevURL);
+ }
+
+ _vp_play_normal_view_on_bookmark_mode(pNormalView, FALSE);
+ _vp_play_normal_view_play_start(pNormalView, TRUE);
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ pNormalView->bManualPause = FALSE;
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+}
+
+static void _vp_play_normal_view_set_played_time(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ //PlayView *pPlayView = pNormalView->pPlayView;
+ int nPosition = 0;
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_PREVIEW &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MESSAGE &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_EMAIL &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ } else {
+ if (nPosition == pNormalView->nDuration) {
+ vp_media_contents_set_played_position(pNormalView->szMediaURL, 0);
+
+ } else {
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ nPosition -= 5000;
+ }
+
+ if (nPosition < 0) {
+ nPosition = 0;
+ }
+ vp_media_contents_set_played_position(pNormalView->szMediaURL, nPosition);
+ }
+ }
+ }
+ else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+ else {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pMultiPathList) {
+ VideoLogError("pMultiPathList is NULL");
+ return;
+ }
+ if (nPosition >= pNormalView->nDuration) {
+ nPosition = 0;
+ }
+ vp_multi_path_set_item_position(pNormalView->szMediaURL, nPosition, pPlayView->pMultiPathList);
+ }
+
+ }
+ if (pNormalView->nLaunchingType== VIDEO_PLAY_TYPE_LIST ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER) {
+ bool bIsCloud = FALSE;
+ vp_media_contents_get_cloud_attribute(pNormalView->szMediaURL, &bIsCloud);
+ if (!bIsCloud)
+ {
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (pPlayView->bViewChange == FALSE) {
+ if (vp_file_exists(pNormalView->szMediaURL)) {
+ vp_play_config_set_preview_url_videos(pNormalView->szMediaURL);
+ }
+ }
+ vp_play_preference_set_preview_audio_track(pNormalView->nDefaultAudioTrackIndex);
+ }
+ }
+}
+
+static void _vp_play_normal_view_screen_capture(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_mm_player_get_position(pNormalView->pPlayerHandle, &(pNormalView->nCapturePosition));
+
+ if (pNormalView->bCaptureComplete == FALSE) {
+ VideoLogWarning("Not Complete capture");
+ return;
+ }
+
+ pNormalView->bCaptureComplete = FALSE;
+ pNormalView->bCaptureBookmark = FALSE;
+
+ if (!vp_mm_player_capture_start(pNormalView->pPlayerHandle)) {
+ pNormalView->bCaptureComplete = TRUE;
+ VideoLogError("vp_mm_player_capture_start fail");
+ }
+
+}
+
+
+static void _vp_play_normal_view_screen_move(NormalView *pNormalView, bool bFoward)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ int nSetPosition = 0;
+ int nCurPosition = 0;
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nCurPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return;
+ }
+
+
+ if (bFoward) {
+ nSetPosition = nCurPosition + 1000;
+ }
+ else {
+ nSetPosition = nCurPosition - 1000;
+ }
+
+ if (pNormalView->nDuration < nSetPosition) {
+ nSetPosition = pNormalView->nDuration;
+ }
+
+ if (nSetPosition < 0) {
+ nSetPosition = 0;
+ }
+
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, nSetPosition)) {
+ pNormalView->nWaitPos = -1;
+ pNormalView->bSeekComplete = FALSE;
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, nSetPosition);
+ }
+}
+
+#ifdef ENABLE_GESTURE_ZOOM_FEATURE
+static void _vp_play_normal_view_on_zoom_mode(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogWarning("Player Handle is NULL");
+ return;
+ }
+
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL)) {
+ VideoLogWarning("Skip for streaming");
+ return;
+ }
+
+ if (pNormalView->fZoomValue > 1.0) {
+ pNormalView->bZoomEnable = TRUE;
+ if (!pNormalView->pZoomGuide) {
+ VP_EVAS_TIMER_DEL(pNormalView->pMomentTimer);
+
+ VP_EVAS_JOB_DEL(pNormalView->pVolumeJob);
+ VP_EVAS_JOB_DEL(pNormalView->pBrightnessJob);
+
+ if (!vp_play_brightness_unrealize(pNormalView->pBrightnessHandle)) {
+ VideoLogWarning("vp_play_brightness_unrealize is fail");
+ }
+
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+
+ pNormalView->pZoomGuide = vp_zoom_guide_create(pNormalView->pMainLayout);
+ vp_zoom_guide_realize(pNormalView->pZoomGuide);
+ Evas_Object *pZoomGuideLayout = vp_zoom_guide_get_object(pNormalView->pZoomGuide);
+ if (pZoomGuideLayout) {
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_ZOOM_GUIDE, pZoomGuideLayout);
+ }
+ else {
+ VideoLogError("pZoomGuideLayout is NULL");
+ }
+
+ Evas_Coord_Rectangle rtSrc = {0,};
+ Evas_Coord_Rectangle rtDst = {0,};
+ Evas_Coord_Rectangle rtResult = {0,};
+ int nWidth = 0;
+ int nHeight = 0;
+
+ elm_win_screen_size_get(pNormalView->pPlayView->pWin, NULL, NULL, &nWidth, &nHeight);
+
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ rtDst.w = nHeight;
+ rtDst.h = nWidth;
+ }
+ else {
+ rtDst.w = nWidth;
+ rtDst.h = nHeight;
+ }
+ vp_mm_player_get_resolution(pNormalView->pPlayerHandle, &(rtSrc.w), &(rtSrc.h));
+ vp_play_util_calculator_position(rtSrc, rtDst, &rtResult, pNormalView->nDisplayMode);
+ vp_zoom_guide_set_move_position(pNormalView->pZoomGuide, (double)pNormalView->nZoomPosX/rtDst.w, (double)pNormalView->nZoomPosY/rtDst.h);
+ float fPosX = pNormalView->nZoomPosX/rtResult.w;
+ float fPosY = pNormalView->nZoomPosY/rtResult.h;
+ if (fPosX > 1.0) {
+ fPosX = 1.0;
+ }
+
+ if (fPosY > 1.0) {
+ fPosY = 1.0;
+ }
+
+ if (fPosX < 0.0) {
+ fPosX = 0.0;
+ }
+
+ if (fPosY < 0.0) {
+ fPosY = 0.0;
+ }
+ }
+ // event filtering
+ bool bLandscape = FALSE;
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90 || pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ bLandscape = TRUE;
+ }
+ if (bLandscape && fabs(pNormalView->fPrevZoomValue - pNormalView->fZoomValue)< 0.05) {
+// VideoLogWarning("same ZoomValue. skip it");
+ return;
+ }
+
+ vp_zoom_guide_set_zoom_value(pNormalView->pZoomGuide, pNormalView->fZoomValue);
+ pNormalView->fPrevZoomValue = pNormalView->fZoomValue;
+ }
+ else {
+ pNormalView->fZoomValue = 1.0;
+ pNormalView->bZoomEnable = FALSE;
+ vp_zoom_guide_set_zoom_value(pNormalView->pZoomGuide, pNormalView->fZoomValue);
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_ZOOM_GUIDE);
+
+ //VideoLogError("ZoomValue : [%f], offset_x : [%d], offset_y : [%d]", pNormalView->fZoomValue, 0, 0);
+ vp_mm_player_set_zoom(pNormalView->pPlayerHandle, pNormalView->fZoomValue, 0, 0);
+
+ vp_zoom_guide_destroy(pNormalView->pZoomGuide);
+ pNormalView->pZoomGuide = NULL;
+ }
+}
+#endif
+
+
+static void _vp_play_normal_view_on_capture_mode(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ Evas_Object *pParent = NULL;
+ pParent = pNormalView->pTopControlLayout;
+ if (!pParent) {
+ VideoLogError("pParent is NULL");
+ return;
+ }
+ vp_play_preference_get_capture_on_key(&pNormalView->bCaptureMode);
+
+ elm_object_part_content_unset(pParent, VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE);
+ elm_object_part_content_unset(pParent, VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE_REW);
+ elm_object_part_content_unset(pParent, VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE_FF);
+
+ VP_EVAS_DEL(pNormalView->pCaptureBtn);
+ VP_EVAS_DEL(pNormalView->pCaptureRewBtn);
+ VP_EVAS_DEL(pNormalView->pCaptureFFBtn);
+
+ if (!pNormalView->szMediaURL) {
+ return;
+ }
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ return;
+ }
+
+ if (pNormalView->bCaptureMode) {
+ pNormalView->pCaptureBtn = vp_button_create(
+ pNormalView->pNaviFrame, "playview/custom/flat_63_63/default",
+ NULL,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ Evas_Object *pIcon = NULL;
+ pIcon = vp_button_create_icon(pNormalView->pCaptureBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE);
+ elm_object_part_content_set(pNormalView->pCaptureBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_PRESS);
+ elm_object_part_content_set(pNormalView->pCaptureBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_DIM);
+ elm_object_part_content_set(pNormalView->pCaptureBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE, pNormalView->pCaptureBtn);
+
+ evas_object_show(pNormalView->pCaptureBtn);
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PAUSED ||
+ (nState != VP_MM_PLAYER_STATE_PLAYING && pNormalView->bManualPause)) {
+ pNormalView->pCaptureRewBtn = vp_button_create(
+ pNormalView->pNaviFrame, "playview/custom/flat_63_63/default",
+ NULL,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+
+ pNormalView->pCaptureFFBtn = vp_button_create(
+ pNormalView->pNaviFrame, "playview/custom/flat_63_63/default",
+ NULL,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureRewBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_REW);
+ elm_object_part_content_set(pNormalView->pCaptureRewBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureRewBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_REW_PRESS);
+ elm_object_part_content_set(pNormalView->pCaptureRewBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureRewBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_REW_DIM);
+ elm_object_part_content_set(pNormalView->pCaptureRewBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureFFBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_FF);
+ elm_object_part_content_set(pNormalView->pCaptureFFBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureFFBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_FF_PRESS);
+ elm_object_part_content_set(pNormalView->pCaptureFFBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pCaptureFFBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_CAPTURE_FF_DIM);
+ elm_object_part_content_set(pNormalView->pCaptureFFBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE_REW, pNormalView->pCaptureRewBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_TOP_CAPTURE_FF, pNormalView->pCaptureFFBtn);
+
+ evas_object_show(pNormalView->pCaptureRewBtn);
+ evas_object_show(pNormalView->pCaptureFFBtn);
+ }
+
+ }
+}
+
+static void _vp_play_normal_view_on_share_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ bool bDRMLock = FALSE;
+
+ _vp_play_normal_view_check_drm_lock(pNormalView, &bDRMLock);
+ if (bDRMLock) {
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin,
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN,
+ VP_PLAY_STRING_COM_ERROR,
+ VP_PLAY_STRING_DRM_UNABLE_TO_SHARE_DRM_FILE,
+ 3.0, __vp_normal_popup_time_out_cb,
+ NULL, NULL, pNormalView);
+
+ evas_object_show(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = TRUE;
+ return;
+ }
+
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ pNormalView->bSharePanelPause = FALSE;
+ pNormalView->bSharePanelFocusIn = FALSE;
+ VideoLogInfo("share popup: bSharePanelPause = %d", pNormalView->bManualPause);
+ if (!pNormalView->bManualPause) {
+ pNormalView->bSharePanelPause = TRUE;
+ //pNormalView->bManualPause = TRUE;
+ }
+
+ if (vp_play_app_launch_share_panel(pPlayView->pWin, pNormalView->szMediaURL, (void *)pNormalView)) {
+ pNormalView->bSharepopup = TRUE;
+
+ } else {
+ pNormalView->bSharepopup = FALSE;
+ VideoLogError("Launch share app failed");
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_sound_alive_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ vp_sound_alive_destroy(pNormalView->pSAHandle);
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ pNormalView->pSAHandle = vp_sound_alive_create(pPlayView->pWin,
+ pNormalView->szMediaURL,
+ __vp_normal_sound_alive_popup_close_cb,
+ pNormalView->nSoundAlive);
+ if (!pNormalView->pSAHandle) {
+ VideoLogError("vp_sound_alive_create fail");
+ return;
+ }
+ if (!vp_sound_alive_set_user_data(pNormalView->pSAHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_share_set_user_data is fail");
+ }
+
+ if (!vp_sound_alive_realize(pNormalView->pSAHandle)) {
+ VideoLogWarning("vp_share_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+
+static void _vp_play_normal_view_on_sound_path_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_sound_path_destroy(pNormalView->pSoundPathHandle);
+ pNormalView->pSoundPathHandle = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ pNormalView->pSoundPathHandle = vp_sound_path_create(pPlayView->pWin,
+ __vp_normal_sound_path_popup_close_cb);
+ if (!pNormalView->pSoundPathHandle) {
+ VideoLogError("vp_sound_path_create fail");
+ return;
+ }
+ if (!vp_sound_path_set_user_data(pNormalView->pSoundPathHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_sound_path_set_user_data is fail");
+ }
+
+ if (!vp_sound_path_realize(pNormalView->pSoundPathHandle)) {
+ VideoLogWarning("vp_sound_path_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_audio_track_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ }
+
+ vp_audio_track_destroy(pNormalView->pAudioTrackHandle);
+ pNormalView->pAudioTrackHandle = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ pNormalView->pAudioTrackHandle = vp_audio_track_create(pPlayView->pWin,
+ __vp_normal_audio_track_popup_close_cb,
+ pNormalView->nDefaultAudioTrackIndex);
+ if (!pNormalView->pAudioTrackHandle) {
+ VideoLogError("vp_audio_track_create fail");
+ return;
+ }
+
+ if (!vp_audio_track_set_user_data(pNormalView->pAudioTrackHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_audio_track_set_user_data is fail");
+ }
+
+ int nCount = 0;
+ if (vp_mm_player_get_audio_track_count(pNormalView->pPlayerHandle, &nCount)) {
+ if (nCount > 1) {
+ int nIdx = 0;
+ for (nIdx = 0; nIdx < nCount; nIdx++)
+ { char *szCode = NULL;
+
+ if (vp_mm_player_get_audio_track_language_code(pNormalView->pPlayerHandle, nIdx, &szCode)) {
+ vp_audio_track_add_Item(pNormalView->pAudioTrackHandle, szCode, nIdx);
+ }
+ else {
+ vp_audio_track_add_Item(pNormalView->pAudioTrackHandle, VP_PLAY_STRING_COM_UNKNOWN, nIdx);
+ }
+ VP_FREE(szCode);
+ }
+ }
+ else {
+ char *szTrack = g_strdup_printf("%s %d", VP_PLAY_STRING_AUDIO_TRACK, 0);
+ vp_audio_track_add_Item(pNormalView->pAudioTrackHandle, szTrack, 0);
+ VP_FREE(szTrack);
+ }
+ }
+ else {
+ char *szTrack = g_strdup_printf("%s %d", VP_PLAY_STRING_AUDIO_TRACK, 0);
+ vp_audio_track_add_Item(pNormalView->pAudioTrackHandle, szTrack, 0);
+ VP_FREE(szTrack);
+ }
+
+ if (!vp_audio_track_realize(pNormalView->pAudioTrackHandle)) {
+ VideoLogWarning("vp_audio_track_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_subtitle_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ SubtitleInfo *pSubtitleInfo = NULL;
+ pSubtitleInfo = calloc(1, sizeof(SubtitleInfo));
+ if (!pSubtitleInfo) {
+ VideoLogError("pSubtitleInfo alloc fail");
+ return;
+ }
+ bool bIsClosedCaption = FALSE;
+ bIsClosedCaption = vp_mm_player_is_closed_caption_exist(pNormalView->pPlayerHandle);
+
+ pSubtitleInfo->bClosedCaption = bIsClosedCaption;
+ pSubtitleInfo->fSync = pNormalView->fSubtitleSyncValue;
+ int nCount = 0;
+ char *szSubtitle = NULL;
+
+ if (vp_mm_player_get_subtitle_track_count(pNormalView->pPlayerHandle, &nCount)) {
+ if (nCount > 0) {
+ char *szCode = NULL;
+ #ifdef _SUBTITLE_MULTI_LANGUAGE
+ if (pNormalView->pSelectedSubtitleLanguage && nCount == pNormalView->nSubtitleLanguageCount) {
+ int index = 0;
+ VP_FREE(pSubtitleInfo->szLanguage);
+ for (; index < nCount; ++index) {
+ if (pNormalView->pSelectedSubtitleLanguage[index]) {
+ char *szName = NULL;
+ vp_mm_player_get_subtitle_track_language_code(pNormalView->pPlayerHandle, index, &szCode);
+ vp_subtitle_track_get_name(szCode, &szName);
+ if (!pSubtitleInfo->szLanguage) {
+ pSubtitleInfo->szLanguage = g_strdup(szName);
+ } else {
+ char *szTmp = g_strdup(pSubtitleInfo->szLanguage);
+ VP_FREE(pSubtitleInfo->szLanguage);
+ pSubtitleInfo->szLanguage = g_strdup_printf("%s,%s", szTmp, szName);
+ VP_FREE(szTmp);
+ }
+ VP_FREE(szName);
+ VP_FREE(szCode);
+ }
+ }
+ }
+ else
+ #endif
+ {
+ vp_mm_player_get_subtitle_track_language_code(pNormalView->pPlayerHandle, pNormalView->nDefaultSubtitleTrackIndex, &szCode);
+ vp_subtitle_track_get_name(szCode, &(pSubtitleInfo->szLanguage));
+ VP_FREE(szCode);
+ }
+ }
+ else {
+ pSubtitleInfo->szLanguage = g_strdup_printf("%s", VP_PLAY_STRING_COM_UNKNOWN);
+ }
+ }
+
+ if (!pSubtitleInfo->szLanguage) {
+ pSubtitleInfo->szLanguage = g_strdup_printf("%s", VP_PLAY_STRING_COM_UNKNOWN);
+ }
+
+ vp_play_preference_get_subtitle_font_name_key(&(pSubtitleInfo->szFontName));
+ if (pSubtitleInfo->szFontName) {
+ if (strcmp(pSubtitleInfo->szFontName, "Tizen") == 0) {
+ VP_FREE(pSubtitleInfo->szFontName);
+ pSubtitleInfo->szFontName = g_strdup_printf("%s", VP_PLAY_STRING_FONT_DEFAULT);
+ }
+ }
+ vp_play_preference_get_subtitle_size_key(&(pSubtitleInfo->nFontSize));
+ vp_play_preference_get_subtitle_edge_key(&(pSubtitleInfo->nEdge));
+
+#ifndef SUBTITLE_K_FEATURE
+ vp_play_preference_get_subtitle_font_color_key(&(pSubtitleInfo->nTextColor));
+ vp_play_preference_get_subtitle_bg_color_key(&(pSubtitleInfo->nBGColor));
+#else
+ vp_play_preference_get_subtitle_font_color_hex_key(&(pSubtitleInfo->pTextColorHex));
+ vp_play_preference_get_subtitle_bg_color_hex_key(&(pSubtitleInfo->pBGColorHex));
+ vp_play_preference_get_subtitle_caption_win_color_hex_key(&(pSubtitleInfo->pCaptionWinColorHex));
+
+ int nAlignment = VIDEO_SUBTITLE_ALIGNMENT_CENTER;
+ vp_play_preference_get_subtitle_alignment_key(&nAlignment);
+ pSubtitleInfo->eAlignment = nAlignment;
+#endif
+ vp_mm_player_get_subtitle_url(pNormalView->pPlayerHandle, &szSubtitle);
+ if (szSubtitle) {
+ VP_STRDUP(pSubtitleInfo->szURL, szSubtitle);
+ }
+
+ VP_FREE(szSubtitle);
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ pSubtitleInfo->bSupportSelect = FALSE;
+ }
+ else {
+ pSubtitleInfo->bSupportSelect = TRUE;
+ }
+ vp_play_subtitle_get_text(pNormalView->pSubtitle, &pSubtitleInfo->szText);
+ vp_play_subtitle_get_size_zoom(pNormalView->pSubtitle, &pSubtitleInfo->fZoom);
+
+ if (pNormalView->pSubtitlePopup) {
+ VideoLogWarning("pSubtitlePopup has been created");
+ vp_subtitle_update(pNormalView->pSubtitlePopup, pSubtitleInfo);
+ } else {
+ pNormalView->pSubtitlePopup = vp_subtitle_create(pPlayView->pWin, pSubtitleInfo,
+ __vp_normal_subtitle_popup_close_cb);
+
+ if (!pNormalView->pSubtitlePopup) {
+ VideoLogError("vp_subtitle_create fail");
+
+ VP_FREE(pSubtitleInfo->szURL);
+ VP_FREE(pSubtitleInfo->szText);
+ VP_FREE(pSubtitleInfo->szLanguage);
+ VP_FREE(pSubtitleInfo->szFontName);
+
+ VP_FREE(pSubtitleInfo);
+ return;
+ }
+ if (!vp_subtitle_set_user_data(pNormalView->pSubtitlePopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_realize(pNormalView->pSubtitlePopup)) {
+ VideoLogWarning("vp_subtitle_realize is fail");
+ }
+ }
+
+ VP_FREE(pSubtitleInfo->szLanguage);
+ VP_FREE(pSubtitleInfo->szFontName);
+ VP_FREE(pSubtitleInfo->szText);
+ VP_FREE(pSubtitleInfo->szURL);
+ VP_FREE(pSubtitleInfo);
+
+ pNormalView->bIsSubtitleShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_subtitle_sync_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ pNormalView->pSubtitleSyncPopup = vp_subtitle_sync_popup_create(pPlayView->pWin,
+ pNormalView->fSubtitleSyncValue,
+ __vp_normal_subtitle_sync_popup_update_cb,
+ __vp_normal_subtitle_sync_popup_done_cb);
+
+ if (!pNormalView->pSubtitleSyncPopup) {
+ VideoLogError("vp_subtitle_sync_popup_create fail");
+ return;
+ }
+ if (!vp_subtitle_sync_popup_set_user_data(pNormalView->pSubtitleSyncPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_sync_popup_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_sync_popup_realize(pNormalView->pSubtitleSyncPopup)) {
+ VideoLogWarning("vp_subtitle_sync_popup_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+/*static bool _vp_play_normal_view_selected_subtitle_language_cb(int nTrackNum, void *pUserData)
+{
+ VideoLogInfo("nTrackNum is %d", nTrackNum);
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogError("pPlayerHandle is NULL");
+ return FALSE;
+ }
+
+ if (nTrackNum >= 0)
+ pNormalView->pSelectedSubtitleLanguage[nTrackNum] = true;
+
+ return TRUE;
+}*/
+
+static void _vp_play_normal_view_selected_subtitle_language(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ VP_FREE(pNormalView->pSelectedSubtitleLanguage);
+ pNormalView->pSelectedSubtitleLanguage = calloc(pNormalView->nSubtitleLanguageCount, sizeof(int));
+
+// if (!vp_mm_player_track_foreach_selected_subtitle_language(pNormalView->pPlayerHandle,
+// _vp_play_normal_view_selected_subtitle_language_cb,
+// pNormalView)) {
+// VideoLogError("vp_mm_player_track_foreach_selected_subtitle_language failed");
+// return;
+// }
+}
+
+static void _vp_play_normal_view_subtitle_add_language_cb(int index, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ if (!pNormalView->pSelectedSubtitleLanguage) {
+ VideoLogError("pSelectedSubtitleLanguage is NULL");
+ return;
+ }
+
+ if (index < 0 || index > pNormalView->nSubtitleLanguageCount) {
+ VideoLogError("Invalid index");
+ return;
+ }
+
+ if (pNormalView->pSelectedSubtitleLanguage[index]) {
+ VideoLogWarning("index:%d has been added", index);
+ } else {
+ if (!vp_mm_player_add_subtitle_language(pNormalView->pPlayerHandle, index)) {
+ VideoLogError("vp_mm_player_add_subtitle_language:%d failed", index);
+ } else {
+ VideoLogInfo("vp_mm_player_add_subtitle_language:%d successed", index);
+ pNormalView->pSelectedSubtitleLanguage[index] = true;
+ }
+ }
+}
+
+static void _vp_play_normal_view_subtitle_remove_language_cb(int index, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pUserData;
+ if (!pNormalView->pPlayerHandle) {
+ VideoLogError("pPlayerHandle is NULL");
+ return;
+ }
+
+ if (!pNormalView->pSelectedSubtitleLanguage) {
+ VideoLogError("pSelectedSubtitleLanguage is NULL");
+ return;
+ }
+
+ if (index < 0 || index > pNormalView->nSubtitleLanguageCount) {
+ VideoLogError("Invalid index");
+ return;
+ }
+
+ if (pNormalView->pSelectedSubtitleLanguage[index]) {
+ if (!vp_mm_player_remove_subtitle_language(pNormalView->pPlayerHandle, index)) {
+ VideoLogError("vp_mm_player_remove_subtitle_language:%d failed", index);
+ } else {
+ VideoLogInfo("vp_mm_player_remove_subtitle_language:%d successed", index);
+ pNormalView->pSelectedSubtitleLanguage[index] = false;
+ }
+ } else {
+ VideoLogWarning("index:%d has not been selected", index);
+ }
+}
+
+#endif
+static void _vp_play_normal_view_on_subtitle_language_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ }
+
+ vp_subtitle_track_destroy(pNormalView->pSubtitleTrackHandle);
+ pNormalView->pSubtitleTrackHandle = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ pNormalView->pSubtitleTrackHandle = vp_subtitle_track_create(pPlayView->pWin,
+ __vp_normal_subtitle_track_popup_close_cb);
+#else
+ pNormalView->pSubtitleTrackHandle = vp_subtitle_track_create(pPlayView->pWin,
+ __vp_normal_subtitle_track_popup_close_cb,
+ pNormalView->nDefaultSubtitleTrackIndex);
+#endif
+ if (!pNormalView->pSubtitleTrackHandle) {
+ VideoLogError("vp_subtitle_track_create fail");
+ return;
+ }
+
+ if (!vp_subtitle_track_set_user_data(pNormalView->pSubtitleTrackHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_track_set_user_data is fail");
+ }
+
+ int nCount = 0;
+ if (vp_mm_player_get_subtitle_track_count(pNormalView->pPlayerHandle, &nCount)) {
+ VideoLogInfo("== TRACK : %d ==", nCount);
+ if (nCount > 0) {
+ #ifdef _SUBTITLE_MULTI_LANGUAGE
+ pNormalView->nSubtitleLanguageCount = nCount;
+ _vp_play_normal_view_selected_subtitle_language(pNormalView);
+ #endif
+ int nIdx = 0;
+ for (nIdx = 0; nIdx < nCount; nIdx++)
+ { char *szCode = NULL;
+ if (vp_mm_player_get_subtitle_track_language_code(pNormalView->pPlayerHandle, nIdx, &szCode)) {
+ VideoLogWarning("== language : %s ==", szCode);
+ #ifdef _SUBTITLE_MULTI_LANGUAGE
+ vp_subtitle_track_add_Item(pNormalView->pSubtitleTrackHandle, szCode, nIdx, pNormalView->pSelectedSubtitleLanguage[nIdx]);
+ #else
+ vp_subtitle_track_add_Item(pNormalView->pSubtitleTrackHandle, szCode, nIdx);
+ #endif
+ }
+ VP_FREE(szCode);
+ }
+ #ifdef _SUBTITLE_MULTI_LANGUAGE
+ vp_subtitle_track_set_add_language_cb(pNormalView->pSubtitleTrackHandle, _vp_play_normal_view_subtitle_add_language_cb);
+ vp_subtitle_track_set_remove_language_cb(pNormalView->pSubtitleTrackHandle, _vp_play_normal_view_subtitle_remove_language_cb);
+ #endif
+ }
+ else {
+ char *szTrack = g_strdup_printf("%s %d", VP_PLAY_STRING_COM_DEFAULT, 0);
+ #ifdef _SUBTITLE_MULTI_LANGUAGE
+ vp_subtitle_track_add_Item(pNormalView->pSubtitleTrackHandle, szTrack, 0, true);
+ #else
+ vp_subtitle_track_add_Item(pNormalView->pSubtitleTrackHandle, szTrack, 0);
+ #endif
+ VP_FREE(szTrack);
+ }
+ } else {
+ char *szTrack = g_strdup_printf("%s %d", VP_PLAY_STRING_COM_DEFAULT, 0);
+ #ifdef _SUBTITLE_MULTI_LANGUAGE
+ vp_subtitle_track_add_Item(pNormalView->pSubtitleTrackHandle, szTrack, 0, true);
+ #else
+ vp_subtitle_track_add_Item(pNormalView->pSubtitleTrackHandle, szTrack, 0);
+ #endif
+ VP_FREE(szTrack);
+ }
+
+ if (!vp_subtitle_track_realize(pNormalView->pSubtitleTrackHandle)) {
+ VideoLogWarning("vp_subtitle_track_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+}
+
+#ifdef SUBTITLE_K_FEATURE
+static void __vp_normal_subtitle_alignment_popup_done_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_alignment_destroy(pNormalView->pSubtitleAlignmentPopup);
+ pNormalView->pSubtitleAlignmentPopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType != -1) {
+
+ vp_subtitle_alignment_t nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+ if (nType == VIDEO_SUBTITLE_ALIGNMENT_LEFT) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_LEFT;
+ }
+ else if (nType == VIDEO_SUBTITLE_ALIGNMENT_CENTER) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+ }
+ else if (nType == VIDEO_SUBTITLE_ALIGNMENT_RIGHT) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_RIGHT;
+ }
+
+ vp_play_subtitle_set_alignment(pNormalView->pSubtitle, nAlignment);
+
+ vp_play_preference_set_subtitle_alignment_key(nType);
+
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+
+ /*Set caption window: size, rel1, color*/
+ __vp_normal_subtitle_set_caption_window(pNormalView);
+ }
+
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+
+ /*if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }*/
+}
+
+static void _vp_play_normal_view_on_subtitle_alignment_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ int nAlignment = 0;
+ vp_play_preference_get_subtitle_alignment_key(&nAlignment);
+
+ pNormalView->pSubtitleAlignmentPopup = vp_subtitle_alignment_create(pPlayView->pWin,
+ __vp_normal_subtitle_alignment_popup_done_cb,
+ nAlignment);
+
+ if (!pNormalView->pSubtitleAlignmentPopup) {
+ VideoLogError("vp_subtitle_alignment_create fail");
+ return;
+ }
+ if (!vp_subtitle_alignment_set_user_data(pNormalView->pSubtitleAlignmentPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_alignment_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_alignment_realize(pNormalView->pSubtitleAlignmentPopup)) {
+ VideoLogWarning("vp_subtitle_alignment_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+}
+#endif
+
+static void _vp_play_normal_view_on_subtitle_select_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ char *szSubtitle = NULL;
+ GList *pItemList = NULL;
+ char *szDir = NULL;
+ szDir = vp_play_util_get_folder_from_path(pNormalView->szMediaURL);
+#ifdef ENABLE_SUBTITLE
+ bool bIsExistSubtitlesInFolder = FALSE;
+// bIsExistSubtitlesInFolder = vp_play_util_is_exist_subtitle_from_path(szDir);
+ bIsExistSubtitlesInFolder = vp_play_util_get_subtitle_path_list(&pItemList);
+ if (bIsExistSubtitlesInFolder && pItemList) {
+
+ if (g_list_length(pItemList) > 0) {
+ bIsExistSubtitlesInFolder = TRUE;
+ } else {
+ g_list_free(pItemList);
+ pItemList = NULL;
+ }
+
+ } else {
+ VideoLogInfo("bIsExistSubtitlesInFolder && pItemList failed");
+ bIsExistSubtitlesInFolder = FALSE;
+ }
+
+ /*if (bIsExistSubtitlesInFolder == FALSE) {
+ VP_EVAS_DEL(pNormalView->pPopup);
+
+ pNormalView->bIsPopupShow = TRUE;
+ pNormalView->pPopup = vp_popup_create(pPlayView->pWin, POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ NULL,
+ VP_PLAY_STRING_ERROR_NO_SUBTITLE,
+ 0.0, NULL,
+ __vp_normal_popup_key_event_cb,
+ __vp_normal_popup_mouse_event_cb,
+ pNormalView);
+
+ Evas_Object *pBtn = NULL;
+ pBtn = elm_button_add(pNormalView->pPopup);
+ elm_object_style_set (pBtn, "popup_button/default");
+ elm_object_domain_translatable_text_set(pBtn, VP_SYS_STR_PREFIX, VP_PLAY_STRING_COM_OK_IDS);
+ elm_object_part_content_set(pNormalView->pPopup, "button1", pBtn);
+ evas_object_smart_callback_add(pBtn, "clicked", __vp_normal_subtitle_popup_key_event_cb, (void*)pNormalView);
+ evas_object_show(pNormalView->pPopup);
+
+ VP_FREE(szDir);
+
+ return;
+ }*/
+#endif
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ }
+
+#ifdef ENABLE_SUBTITLE
+ //vp_play_util_get_subtitles_from_path(szDir, &pItemList);
+#else
+ vp_play_util_get_subtitle_path_list(&pItemList);
+#endif
+ VP_FREE(szDir);
+ vp_mm_player_get_subtitle_url(pNormalView->pPlayerHandle, &szSubtitle);
+ pNormalView->pSubtitleSelectPopup = vp_subtitle_select_create(pPlayView->pWin, __vp_normal_subtitle_select_popup_done_cb, __vp_normal_subtitle_select_button_popup_done_cb,
+ pItemList, szSubtitle, !(pNormalView->bIsExistSubtitle));
+ VP_FREE(szSubtitle);
+ if (pItemList) {
+
+ int nCount = 0;
+ int i = 0;
+ nCount = g_list_length(pItemList);
+ for (i = 0; i < nCount; i++)
+ {
+ char *szName = NULL;
+ szName = (char *)g_list_nth_data(pItemList, i);
+ VP_FREE(szName);
+ }
+
+ g_list_free(pItemList);
+ pItemList = NULL;
+ }
+
+ if (!pNormalView->pSubtitleSelectPopup) {
+ VideoLogError("vp_subtitle_select_create fail");
+ return;
+ }
+ if (!vp_subtitle_select_set_user_data(pNormalView->pSubtitleSelectPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_select_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_select_realize(pNormalView->pSubtitleSelectPopup)) {
+ VideoLogWarning("vp_subtitle_select_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_subtitle_font_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ char *szFont = NULL;
+ vp_play_preference_get_subtitle_font_name_key(&szFont);
+
+ pNormalView->pSubtitleFontPopup = vp_subtitle_font_create(pPlayView->pWin,
+ __vp_normal_subtitle_font_popup_done_cb,
+ szFont);
+ VP_FREE(szFont);
+
+ if (!pNormalView->pSubtitleFontPopup) {
+ VideoLogError("vp_subtitle_font_create fail");
+ return;
+ }
+ if (!vp_subtitle_font_set_user_data(pNormalView->pSubtitleFontPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_font_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_font_realize(pNormalView->pSubtitleFontPopup)) {
+ VideoLogWarning("vp_subtitle_font_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+
+}
+
+
+static void _vp_play_normal_view_on_subtitle_size_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ int nSize = 0;
+ vp_play_preference_get_subtitle_size_key(&nSize);
+
+ pNormalView->pSubtitleSizePopup = vp_subtitle_size_create(pPlayView->pWin,
+ __vp_normal_subtitle_size_popup_done_cb,
+ nSize);
+
+ if (!pNormalView->pSubtitleSizePopup) {
+ VideoLogError("vp_subtitle_size_create fail");
+ return;
+ }
+ if (!vp_subtitle_size_set_user_data(pNormalView->pSubtitleSizePopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_size_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_size_realize(pNormalView->pSubtitleSizePopup)) {
+ VideoLogWarning("vp_subtitle_size_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void __vp_normal_subtitle_edge_popup_done_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ // to do
+ NormalView *pNormalView = (NormalView *)pUserData;
+
+ vp_subtitle_edge_destroy(pNormalView->pSubtitleEdgePopup);
+ pNormalView->pSubtitleEdgePopup = NULL;
+ pNormalView->bIsPopupShow = FALSE;
+
+ if (nType != -1) {
+ vp_play_subtitle_set_edge(pNormalView->pSubtitle, nType);
+ vp_play_preference_set_subtitle_edge_key(nType);
+ //_vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ /*Set caption window: size, rel1, color*/
+ __vp_normal_subtitle_set_caption_window(pNormalView);
+ }
+
+ if (bPause) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ _vp_play_normal_view_on_subtitle_popup(pNormalView);
+
+ /*if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ }*/
+}
+
+static void _vp_play_normal_view_on_subtitle_edge_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ int nEdge = 0;
+ vp_play_preference_get_subtitle_edge_key(&nEdge);
+
+ pNormalView->pSubtitleEdgePopup = vp_subtitle_edge_create(pPlayView->pWin,
+ __vp_normal_subtitle_edge_popup_done_cb,
+ nEdge);
+
+ if (!pNormalView->pSubtitleEdgePopup) {
+ VideoLogError("vp_subtitle_size_create fail");
+ return;
+ }
+ if (!vp_subtitle_edge_set_user_data(pNormalView->pSubtitleEdgePopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_size_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_edge_realize(pNormalView->pSubtitleEdgePopup)) {
+ VideoLogWarning("vp_subtitle_size_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_subtitle_font_color_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ int nColor = 0;
+ vp_play_preference_get_subtitle_font_color_key(&nColor);
+
+#ifndef SUBTITLE_K_FEATURE
+ pNormalView->pSubtitleFontColorPopup = vp_subtitle_color_create(pPlayView->pWin,
+ __vp_normal_subtitle_font_color_popup_done_cb,
+ nColor);
+#else
+ char *szColorHex = NULL;
+ vp_play_preference_get_subtitle_font_color_hex_key(&szColorHex);
+ if (!szColorHex) {
+ VideoLogError("szColorHex is NULL");
+ }
+ else
+ {
+ pNormalView->pSubtitleFontColorPopup = vp_subtitle_color_hex_create(pPlayView->pWin,
+ __vp_normal_subtitle_font_color_popup_done_hex_cb,
+ szColorHex);
+ }
+ VP_FREE(szColorHex);
+#endif
+
+ if (!pNormalView->pSubtitleFontColorPopup) {
+ VideoLogError("vp_subtitle_color_create fail");
+ return;
+ }
+ if (!vp_subtitle_color_set_user_data(pNormalView->pSubtitleFontColorPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_font_color_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_color_realize(pNormalView->pSubtitleFontColorPopup)) {
+ VideoLogWarning("vp_subtitle_color_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+
+static void _vp_play_normal_view_on_subtitle_bg_color_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+#ifndef SUBTITLE_K_FEATURE
+ int nColor = 0;
+ vp_play_preference_get_subtitle_bg_color_key(&nColor);
+
+ pNormalView->pSubtitleBGColorPopup = vp_subtitle_bg_color_create(pPlayView->pWin,
+ __vp_normal_subtitle_bg_color_popup_done_cb,
+ nColor);
+#else
+ char *szColorHex = NULL;
+ vp_play_preference_get_subtitle_bg_color_hex_key(&szColorHex);
+ if (!szColorHex) {
+ VideoLogError("szColorHex is NULL");
+ }
+ else //prevent issue fix
+ {
+ pNormalView->pSubtitleBGColorPopup = vp_subtitle_color_hex_create(pPlayView->pWin,
+ __vp_normal_subtitle_bg_color_popup_done_hex_cb,
+ szColorHex);
+ VP_FREE(szColorHex);
+ }
+#endif
+
+ if (!pNormalView->pSubtitleBGColorPopup) {
+ VideoLogError("vp_subtitle_bg_color_create fail");
+ return;
+ }
+ if (!vp_subtitle_color_set_user_data(pNormalView->pSubtitleBGColorPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_color_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_color_realize(pNormalView->pSubtitleBGColorPopup)) {
+ VideoLogWarning("vp_subtitle_color_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_subtitle_caption_win_color_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ char *szColorHex = NULL;
+ vp_play_preference_get_subtitle_caption_win_color_hex_key(&szColorHex);
+ if (!szColorHex) {
+ VideoLogError("szColorHex is NULL");
+ }
+ else
+ {
+ pNormalView->pSubtitleCaptionWinColorPopup = vp_subtitle_color_hex_create(pPlayView->pWin,
+ __vp_normal_subtitle_caption_win_color_popup_done_hex_cb,
+ szColorHex);
+ }
+ VP_FREE(szColorHex);
+
+
+ if (!pNormalView->pSubtitleCaptionWinColorPopup) {
+ VideoLogError("vp_subtitle_color_hex_create fail");
+ return;
+ }
+ if (!vp_subtitle_color_set_user_data(pNormalView->pSubtitleCaptionWinColorPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_subtitle_color_set_user_data is fail");
+ }
+
+ if (!vp_subtitle_color_realize(pNormalView->pSubtitleCaptionWinColorPopup)) {
+ VideoLogWarning("vp_subtitle_color_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+}
+
+static void _vp_play_normal_view_on_capture_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_capture_popup_destroy(pNormalView->pCapturePopup);
+ pNormalView->pCapturePopup = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_play_preference_get_capture_on_key(&pNormalView->bCaptureMode);
+
+ pNormalView->pCapturePopup = vp_capture_popup_create(pPlayView->pWin,
+ pNormalView->bCaptureMode,
+ __vp_normal_capture_popup_close_cb);
+ if (!pNormalView->pCapturePopup) {
+ VideoLogError("vp_capture_popup_create fail");
+ return;
+ }
+ if (!vp_capture_popup_set_user_data(pNormalView->pCapturePopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_capture_popup_set_user_data is fail");
+ }
+
+ if (!vp_capture_popup_realize(pNormalView->pCapturePopup)) {
+ VideoLogWarning("vp_capture_popup_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+static void _vp_play_normal_view_on_play_speed_popup_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ NormalView *pNormalView = (NormalView *)data;
+ _vp_play_normal_view_on_play_speed_popup(pNormalView);
+}
+
+static void _vp_play_normal_view_on_play_speed_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_play_speed_popup_destroy(pNormalView->pPlaySpeedPopup);
+ pNormalView->pPlaySpeedPopup = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ pNormalView->pPlaySpeedPopup = vp_play_speed_popup_create(pPlayView->pWin,
+ pNormalView->fPlaySpeed,
+ __vp_normal_play_speed_popup_update_cb,
+ __vp_normal_play_speed_popup_done_cb);
+
+ if (!pNormalView->pPlaySpeedPopup) {
+ VideoLogError("vp_play_speed_popup_create fail");
+ return;
+ }
+ if (!vp_play_speed_popup_set_user_data(pNormalView->pPlaySpeedPopup, (void *)pNormalView)) {
+ VideoLogWarning("vp_play_speed_popup_set_user_data is fail");
+ }
+
+ if (!vp_play_speed_popup_realize(pNormalView->pPlaySpeedPopup)) {
+ VideoLogWarning("vp_play_speed_popup_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+}
+
+
+static void _vp_play_normal_view_on_setting_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_setting_destroy(pNormalView->pSettingHandle);
+ pNormalView->pSettingHandle = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ if (!vp_play_preference_get_sound_alive_status(&pNormalView->nSoundAlive)) {
+ VideoLogError("vp_play_preference_get_sound_alive_status failed");
+ }
+ bool bEarjack = vp_sound_device_is_enable(VP_SOUND_DEVICE_EARJACK, pNormalView->pPlayView);
+ if (bEarjack == FALSE && pNormalView->nSoundAlive == VIDEO_SA_7_1_CH) {
+ pNormalView->nSoundAlive = VIDEO_SA_NORMAL;
+ if (!vp_play_preference_set_sound_alive_status(pNormalView->nSoundAlive)) {
+ VideoLogError("vp_play_preference_set_sound_alive_status failed");
+ }
+ if (!vp_mm_player_set_sound_filter(pNormalView->pPlayerHandle, VP_MM_PLAYER_FILTER_NONE)) {
+ VideoLogWarning("vp_mm_player_set_sound_filter is fail");
+ }
+ }
+
+ SettingInfo *pSettingInfo = NULL;
+ pSettingInfo = calloc(1, sizeof(SettingInfo));
+ if (!pSettingInfo) {
+ VideoLogError("failed to allocate memory");
+ return;
+ }
+
+ char *szDir = NULL;
+ szDir = vp_play_util_get_folder_from_path(pNormalView->szMediaURL);
+
+ pSettingInfo->fSpeed = pNormalView->fPlaySpeed;
+ pSettingInfo->nSoundAlive = pNormalView->nSoundAlive;
+ pSettingInfo->nRepeatMode = pNormalView->nRepeatMode;
+ pSettingInfo->bExternalMode = pNormalView->bVideoOnlyMode;
+ if (pNormalView->bIsExistSubtitle == FALSE) {
+ pSettingInfo->bSelectSubtitle = vp_play_util_is_exist_subtitle_from_path(szDir);
+ }
+ else {
+ pSettingInfo->bSelectSubtitle = TRUE;
+ }
+
+ VP_FREE(szDir);
+
+ pSettingInfo->bStreaming = FALSE;
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ pSettingInfo->bStreaming = TRUE;
+ }
+#ifdef ENABLE_DRM_FEATURE
+ vp_drm_is_drm_file(pNormalView->szMediaURL, &(pSettingInfo->bDrm));
+#endif
+ char *szCode = NULL;
+ int nCount = 0;
+ if (vp_mm_player_get_audio_track_count(pNormalView->pPlayerHandle, &nCount)) {
+ if (nCount > 1) {
+ if (vp_mm_player_get_audio_track_language_code(pNormalView->pPlayerHandle, pNormalView->nDefaultAudioTrackIndex, &szCode)) {
+ vp_audio_track_get_name(szCode, &(pSettingInfo->szAudioTrack));
+ }
+ else {
+ pSettingInfo->szAudioTrack = g_strdup_printf("%s",VP_PLAY_STRING_COM_UNKNOWN);
+ }
+ }
+ else {
+ pSettingInfo->szAudioTrack = g_strdup_printf("%s %d", VP_PLAY_STRING_AUDIO_TRACK, 0);
+ }
+ }
+ else {
+ pSettingInfo->szAudioTrack = g_strdup_printf("%s %d", VP_PLAY_STRING_AUDIO_TRACK, 0);
+ }
+ VP_FREE(szCode);
+
+ vp_play_preference_get_capture_on_key(&pSettingInfo->bCapture);
+
+ pNormalView->pSettingHandle = vp_setting_create(pPlayView->pWin, pSettingInfo,
+ __vp_normal_setting_popup_close_cb);
+ if (!pNormalView->pSettingHandle) {
+ VideoLogError("vp_setting_create fail");
+
+ VP_FREE(pSettingInfo->szAudioTrack);
+ VP_FREE(pSettingInfo);
+ return;
+ }
+
+ VP_FREE(pSettingInfo->szAudioTrack);
+ VP_FREE(pSettingInfo);
+
+ if (!vp_setting_set_user_data(pNormalView->pSettingHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_setting_set_user_data is fail");
+ }
+
+ if (!vp_setting_realize(pNormalView->pSettingHandle)) {
+ VideoLogWarning("vp_setting_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+}
+
+static void _vp_play_normal_view_on_detail_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pNormalView->bVideoOnlyMode == FALSE && nState == VP_MM_PLAYER_STATE_PLAYING) {
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogError("Pause Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ vp_detail_info *pDetailInfo = NULL;
+
+ pDetailInfo = calloc(1, sizeof(vp_detail_info));
+ if (!pDetailInfo) {
+ VideoLogError("pDetailInfo is alloc fail");
+ return;
+ }
+ int nWidth = 0;
+ int nHeight = 0;
+ double dLatitude = 0.0;
+ double dLongitude = 0.0;
+ char *szModifiedTime = NULL;
+ char *szTitle = NULL;
+ char *szFileDate = NULL;
+ int nDuration = 0;
+
+#ifdef ENABLE_DRM_FEATURE
+ vp_drm_is_drm_file(pNormalView->szMediaURL, &(pDetailInfo->bDrm));
+ vp_drm_is_playready_drm_file(pNormalView->szMediaURL, &(pDetailInfo->bPlayready));
+ _vp_play_normal_view_check_drm_lock(pNormalView, &(pDetailInfo->bForwardLock));
+#endif
+ if (pDetailInfo->bPlayready == FALSE) { /* Just check it for performance */
+ vp_media_contents_get_content_info(pNormalView->szMediaURL, &szTitle, &nWidth, &nHeight, &nDuration, &dLatitude, &dLongitude, &szModifiedTime);
+ if (szTitle) {
+ pDetailInfo->szTitle = vp_play_util_get_title_from_path(szTitle);
+ } else {
+ pDetailInfo->szTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+ }
+
+ if (nWidth == 0) {
+ vp_media_metadata_get_width(pNormalView->szMediaURL, &nWidth);
+ }
+ if (nHeight == 0) {
+ vp_media_metadata_get_height(pNormalView->szMediaURL, &nHeight);
+ }
+ } else {
+ pDetailInfo->szTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+ }
+
+ vp_play_util_get_file_info(pNormalView->szMediaURL, &pDetailInfo->szSize, &pDetailInfo->szDate, &pDetailInfo->szFormat);
+
+ VP_FREE(szTitle);
+ VP_FREE(szFileDate);
+ if (!szModifiedTime && pDetailInfo->szDate) {
+ pDetailInfo->szLastModified = g_strdup(pDetailInfo->szDate);
+ } else {
+ pDetailInfo->szLastModified = g_strdup(szModifiedTime);
+ }
+ pDetailInfo->szResolution = g_strdup_printf("%d X %d", nWidth, nHeight);
+ pDetailInfo->szLatitude = g_strdup_printf("%f", dLatitude);
+ pDetailInfo->szLongitude = g_strdup_printf("%f", dLongitude);
+
+ if (vp_file_exists((const char*)pNormalView->szMediaURL)) {
+ pDetailInfo->szLocation = vp_dir_get((const char*)pNormalView->szMediaURL);
+ }
+
+ pNormalView->pDetailHandle = vp_detail_create(pPlayView->pWin, __vp_normal_detail_popup_close_cb, pDetailInfo);
+ if (!pNormalView->pDetailHandle) {
+ VideoLogError("vp_detail_create fail");
+
+ VP_FREE(pDetailInfo->szTitle);
+ VP_FREE(pDetailInfo->szFormat);
+ VP_FREE(pDetailInfo->szDate);
+ VP_FREE(pDetailInfo->szSize);
+ VP_FREE(pDetailInfo->szLastModified);
+ VP_FREE(pDetailInfo->szResolution);
+ VP_FREE(pDetailInfo->szLatitude);
+ VP_FREE(pDetailInfo->szLongitude);
+ VP_FREE(pDetailInfo->szLocation);
+ VP_FREE(pDetailInfo);
+ return;
+ }
+ if (!vp_detail_set_user_data(pNormalView->pDetailHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_detail_set_user_data is fail");
+ }
+
+ if (!vp_detail_realize(pNormalView->pDetailHandle)) {
+ VideoLogWarning("vp_detail_realize is fail");
+ }
+ pNormalView->bIsPopupShow = TRUE;
+
+ VP_FREE(pDetailInfo->szTitle);
+ VP_FREE(pDetailInfo->szFormat);
+ VP_FREE(pDetailInfo->szDate);
+ VP_FREE(pDetailInfo->szSize);
+ VP_FREE(pDetailInfo->szResolution);
+ VP_FREE(pDetailInfo->szLatitude);
+ VP_FREE(pDetailInfo->szLongitude);
+ VP_FREE(pDetailInfo->szLocation);
+ VP_FREE(pDetailInfo);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+}
+
+static void _vp_play_normal_view_on_volume_popup(NormalView *pNormalView, bool bToggle)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ bool bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+ bool bIsRealize = FALSE;
+
+ if (pNormalView->pVolumePopupHandle) {
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+ }
+ if (!pNormalView->pVolumeHandle) {
+ if (!pNormalView->pPlayView) {
+ VideoLogError("pNormalView->pPlayView is NULL");
+ return;
+ }
+
+ Evas_Object *pParent = pNormalView->pPlayView->pWin;
+
+ pNormalView->pVolumeHandle = vp_play_volume_create(pParent, pNormalView->pPlayerHandle, __vp_normal_volume_change_value_cb);
+ if (!pNormalView->pVolumeHandle) {
+ VideoLogError("pNormalView->pVolumeHandle is NULL");
+ return;
+ }
+ if (!vp_play_volume_set_user_data(pNormalView->pVolumeHandle, (void *)pNormalView)) {
+ VideoLogWarning("vp_play_volume_set_user_data is fail");
+ return;
+ }
+ if (!pNormalView->bLockScreen) {
+ vp_play_volume_set_mouse_callbacks(pNormalView->pVolumeHandle, pNormalView->pPlayView->pWin);
+ } else {
+ vp_play_volume_unset_mouse_callbacks(pNormalView->pVolumeHandle, pNormalView->pPlayView->pWin);
+ }
+ }
+ Evas_Object *pParent = pNormalView->pPlayView->pWin;
+ if (!vp_play_volume_set_landscape_mode(pNormalView->pVolumeHandle, bLandscape, pParent)) {
+ VideoLogWarning("vp_play_volume_set_landscape_mode is fail");
+ return;
+ }
+
+ if (!vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ return;
+ }
+
+ if (bIsRealize && bToggle) {
+ if (!vp_play_volume_unrealize(pNormalView->pVolumeHandle)) {
+ VideoLogWarning("vp_play_volume_unrealize is fail");
+ }
+ }
+ else {
+ if (!vp_play_volume_update_value(pNormalView->pVolumeHandle)) {
+ VideoLogWarning("vp_play_volume_update_value is fail");
+ }
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ if (!vp_play_volume_realize(pNormalView->pVolumeHandle, pNormalView->pPlayView->pWin)) {
+ VideoLogWarning("vp_play_volume_realize is fail");
+ }
+ }
+}
+
+static void _vp_play_normal_view_on_bookmark_mode(NormalView *pNormalView, bool bShow)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (bShow) {
+ _vp_play_normal_view_show_layout(pNormalView);
+ }
+
+ if (bShow) {
+ pNormalView->bCaptureComplete = TRUE;
+ vp_play_bookmark_realize(pNormalView->pBookmarkHandle);
+#ifndef SUBTITLE_K_FEATURE
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_BOOKMARK_ON, "*");
+#endif
+ elm_object_part_content_set(pNormalView->pControlLayout, VP_PLAY_SWALLOW_NORMAL_BOOKMARK, pNormalView->pBookmarkObj);
+ }
+ else {
+ pNormalView->bCaptureComplete = TRUE;
+#ifndef SUBTITLE_K_FEATURE
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_BOOKMARK_OFF, "*");
+#endif
+ elm_object_part_content_unset(pNormalView->pControlLayout, VP_PLAY_SWALLOW_NORMAL_BOOKMARK);
+ vp_play_bookmark_unrealize(pNormalView->pBookmarkHandle);
+ }
+}
+
+static void _vp_play_normal_view_download_sdp(NormalView *pNormalView, char *szSdpPath)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (!szSdpPath) {
+ VideoLogError("szSubtitlePath is NULL");
+ return;
+ }
+
+ if (pNormalView->pDownloadHandle) {
+ VppDownloadDestroyItem(pNormalView->pDownloadHandle);
+ pNormalView->pDownloadHandle = NULL;
+ }
+
+ VppDownloadCallback pFunc = {0,};
+
+ pFunc.stateChangedCb = __vp_normal_sdp_download_state_change_cb;
+
+ VideoSecureLogDebug(" ############### %s ##########################",szSdpPath);
+ pNormalView->pDownloadHandle = VppDownloadCreateItem(szSdpPath, VP_PLAY_SDP_TEMP_DIR, NULL, VPP_DOWNLOAD_ITEM_TYPE_VIDEO_FILE, pFunc, (void *)pNormalView);
+
+ if (!pNormalView->pDownloadHandle) {
+ VideoLogError("pDownloadHandle is NULL");
+ return;
+ }
+
+ if (!VppDownloadRequestAppend(pNormalView->pDownloadHandle)) {
+ VideoLogError("VppDownloadRequestAppend is fail");
+ return;
+ }
+
+}
+
+static void _vp_play_normal_view_all_close_popup(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (pNormalView->pPopup) {
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->pPopup = NULL;
+ }
+
+ if (pNormalView->pCtxPopup) {
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+ pNormalView->pCtxPopup = NULL;
+ }
+
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ if (pNormalView->pSubtitlePopup) {
+ vp_subtitle_destroy(pNormalView->pSubtitlePopup);
+ pNormalView->pSubtitlePopup = NULL;
+ pNormalView->bIsSubtitleShow = FALSE;
+ }
+
+ if (pNormalView->pSubtitleSelectPopup) {
+ vp_subtitle_select_destroy(pNormalView->pSubtitleSelectPopup);
+ pNormalView->pSubtitleSelectPopup = NULL;
+ }
+
+ if (pNormalView->pSubtitleFontPopup) {
+ vp_subtitle_font_destroy(pNormalView->pSubtitleFontPopup);
+ pNormalView->pSubtitleFontPopup = NULL;
+ }
+
+ if (pNormalView->pSubtitleFontColorPopup) {
+ vp_subtitle_color_destroy(pNormalView->pSubtitleFontColorPopup);
+ pNormalView->pSubtitleFontColorPopup = NULL;
+ }
+
+ if (pNormalView->pSubtitleBGColorPopup) {
+ vp_subtitle_bg_color_destroy(pNormalView->pSubtitleBGColorPopup);
+ pNormalView->pSubtitleBGColorPopup = NULL;
+ }
+
+ if (pNormalView->pSubtitleEdgePopup) {
+ vp_subtitle_edge_destroy(pNormalView->pSubtitleEdgePopup);
+ pNormalView->pSubtitleEdgePopup = NULL;
+ }
+
+ if (pNormalView->pSubtitleSizePopup) {
+ vp_subtitle_size_destroy(pNormalView->pSubtitleSizePopup);
+ pNormalView->pSubtitleSizePopup = NULL;
+ }
+
+ if (pNormalView->pSubtitleSyncPopup) {
+ vp_subtitle_sync_popup_destroy(pNormalView->pSubtitleSyncPopup);
+ pNormalView->pSubtitleSyncPopup = NULL;
+ }
+
+ if (pNormalView->pRepeatHandle) {
+ vp_repeat_destroy(pNormalView->pRepeatHandle);
+ pNormalView->pRepeatHandle = NULL;
+ }
+
+ if (pNormalView->pSAHandle) {
+ vp_sound_alive_destroy(pNormalView->pSAHandle);
+ pNormalView->pSAHandle = NULL;
+ }
+
+ if (pNormalView->pSoundPathHandle) {
+ vp_sound_path_destroy(pNormalView->pSoundPathHandle);
+ pNormalView->pSoundPathHandle = NULL;
+ }
+
+ if (pNormalView->pAudioTrackHandle) {
+ vp_audio_track_destroy(pNormalView->pAudioTrackHandle);
+ pNormalView->pAudioTrackHandle = NULL;
+ }
+
+ if (pNormalView->pSettingHandle) {
+ vp_setting_destroy(pNormalView->pSettingHandle);
+ pNormalView->pSettingHandle = NULL;
+ }
+
+ if (pNormalView->pCapturePopup) {
+ vp_capture_popup_destroy(pNormalView->pCapturePopup);
+ pNormalView->pCapturePopup = NULL;
+ }
+
+ if (pNormalView->pPlaySpeedPopup) {
+ vp_mm_player_set_rate(pNormalView->pPlayerHandle, (float)pNormalView->fPlaySpeed);
+ vp_play_speed_popup_destroy(pNormalView->pPlaySpeedPopup);
+ pNormalView->pPlaySpeedPopup = NULL;
+ }
+
+ pNormalView->bIsPopupShow = FALSE;
+}
+
+static void _vp_play_normal_view_show_layout(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (!pNormalView->pNaviItem) {
+ VideoLogError("pNaviItem is NULL");
+ return;
+ }
+
+ if (pNormalView->bLockScreen) {
+ VideoLogError("bLockScreen is TRUE");
+ vp_play_normal_view_set_lock_screen(pNormalView, pNormalView->bLockScreen);
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pWin) {
+ VideoLogError("pPlayView->pWin is NULL");
+ return;
+ }
+
+ vp_device_set_frame_rate(60);
+
+ //_vp_play_normal_view_update_progress_value(pNormalView);
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pScreenShotTimer);
+
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_PORTRAIT);
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_LANDSCAPE);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SCREEN_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_ROTATE_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_VOLUME_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE, "*");
+
+ VP_EVAS_DEL(pNormalView->pScreenShot);
+ pNormalView->pScreenShot = NULL;
+
+ elm_object_item_signal_emit(pNormalView->pNaviItem, VP_NORMAL_SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
+ _vp_play_normal_view_show_rotate(pNormalView);
+ _vp_play_normal_view_show_volume(pNormalView);
+
+ bool bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+ if (bLandscape) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_LANDSCAPE_SHOW, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_LANDSCAPE_SHOW, "*");
+ elm_object_signal_emit(pNormalView->pControlLayout, VP_NORMAL_SIGNAL_CONTROL_LANDSCAPE_MODE, "*");
+ elm_object_signal_emit(pNormalView->pFunctionLayout, VP_NORMAL_SIGNAL_FUNCTION_LANDSCAPE_MODE, "*");
+ vp_play_progressbar_set_landscape_mode(pNormalView->pProgressbar, TRUE);
+ }
+ else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PORTRAIT_SHOW, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_PORTRAIT_SHOW, "*");
+ elm_object_signal_emit(pNormalView->pControlLayout, VP_NORMAL_SIGNAL_CONTROL_PORTRAIT_MODE, "*");
+ elm_object_signal_emit(pNormalView->pFunctionLayout, VP_NORMAL_SIGNAL_FUNCTION_PORTRAIT_MODE, "*");
+ vp_play_progressbar_set_landscape_mode(pNormalView->pProgressbar, FALSE);
+ }
+
+ bool bIsRealize = FALSE;
+ if (pNormalView->pBookmarkHandle) {
+ vp_play_bookmark_is_realize(pNormalView->pBookmarkHandle, &bIsRealize);
+ if (bIsRealize) {
+#ifndef SUBTITLE_K_FEATURE
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_BOOKMARK_ON, "*");
+#endif
+ }
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+ pNormalView->bShowLayout = TRUE;
+ vp_play_normal_view_set_main_layout_focus_out((void *)pPlayView->pNormalView);
+ _vp_play_normal_view_set_button_focus_sequence(pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+}
+
+static void _vp_play_normal_view_hide_layout(NormalView *pNormalView, bool bNoEffect)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ if (!pNormalView->pNaviItem) {
+ VideoLogError("pNaviItem is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pNormalView->pBookmarkHandle) {
+ bool bIsRealize = FALSE;
+ bool bEditMode = FALSE;
+ bool bPressed = FALSE;
+ if (!vp_play_bookmark_is_realize(pNormalView->pBookmarkHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_bookmark_is_realize fail");
+ }
+ if (bIsRealize) {
+ if (!vp_play_bookmark_get_edit_mode(pNormalView->pBookmarkHandle, &bEditMode)) {
+ VideoLogWarning("vp_play_bookmark_get_edit_mode fail");
+ }
+ if (bEditMode) {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ return;
+ }
+
+ if (!vp_play_bookmark_get_pressed_status(pNormalView->pBookmarkHandle, &bPressed)) {
+ VideoLogWarning("vp_play_bookmark_get_pressed_status fail");
+ }
+
+ if (bPressed) {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ return;
+ }
+ }
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pScreenShotTimer);
+
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_PORTRAIT);
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_SCREENSHOT_LANDSCAPE);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SCREEN_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_ROTATE_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_VOLUME_HIDE, "*");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE, "*");
+
+ VP_EVAS_DEL(pNormalView->pScreenShot);
+ pNormalView->pScreenShot = NULL;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+
+ if (bNoEffect) {
+ elm_object_item_signal_emit(pNormalView->pNaviItem, VP_NORMAL_SIGNAL_NAVIFRAME_TITLE_NO_EFFECT_HIDE, "elm");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_HIDE, "*");
+ }
+ else {
+ elm_object_item_signal_emit(pNormalView->pNaviItem, VP_NORMAL_SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_HIDE, "*");
+ }
+ vp_play_normal_view_set_main_layout_focus_out((void *)pPlayView->pNormalView);
+ pNormalView->bShowLayout = FALSE;
+}
+
+static double _vp_play_normal_view_get_mouse_pos_ratio(Evas_Object *pObj, int nCurX)
+{
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return 0.0;
+ }
+
+ int nWidth = 0;
+ int nCurrent = 0;
+ double dRatio = 0.0;
+
+ evas_object_geometry_get(pObj, NULL, NULL, &nWidth, NULL);
+
+ nCurrent = nCurX - (VP_NORMAL_PROGRESS_BAR_START_TERM);
+ nWidth = nWidth - (VP_NORMAL_PROGRESS_BAR_WIDTH_TERM);
+
+ if (nCurrent < 0) {
+ nCurrent = 0;
+ } else if (nCurrent > nWidth) {
+ nCurrent = nWidth;
+ }
+
+ dRatio = (double)nCurrent / nWidth;
+
+ return dRatio;
+}
+
+static void _vp_play_normal_view_create_progress_timer(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+
+ pNormalView->pProgressTimer =
+ ecore_timer_add(VP_NORMAL_PROGRESS_TIMER_INTERVAL,
+ __vp_normal_progressbar_timer_cb, (void *)pNormalView);
+}
+
+static void _vp_play_normal_view_create_layout_hide_timer(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ pNormalView->pHideTimer = ecore_timer_add(VP_NORMAL_HIDE_LAYOUT_TIMER_INTERVAL,
+ __vp_normal_hide_layout_timer_cb, (void *)pNormalView);
+
+}
+
+static void _vp_play_normal_view_show_rotate(NormalView *pNormalView)
+{
+ bool bLockState = FALSE;
+
+ if (!vp_play_config_get_rotate_lock_status(&bLockState)) {
+ VideoLogError("vp_play_config_get_rotate_lock_status is fail");
+ return;
+ }
+
+ if (!bLockState) {
+ if (pNormalView->pMainLayout) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_ROTATE_SHOW, "*");
+ }
+ }
+}
+
+static void _vp_play_normal_view_show_volume(NormalView *pNormalView)
+{
+ bool bLockState = FALSE;
+
+ /*if (!vp_play_config_get_rotate_lock_status(&bLockState)) {
+ VideoLogError("vp_play_config_get_rotate_lock_status is fail");
+ return;
+ }*/
+
+ if (!bLockState) {
+ if (pNormalView->pMainLayout) {
+ if ((pNormalView->fPlaySpeed - 0.05) > 1.000 || (pNormalView->fPlaySpeed + 0.05) < 1.000)
+ {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_SHOW, "*");
+ elm_object_signal_callback_add(pNormalView->pMainLayout, "elm,action,click", "", _vp_play_normal_view_on_play_speed_popup_cb, pNormalView);
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ } else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_PLAYING_SPEED_HIDE, "*");
+ }
+ char szTxt[5] = {0,};
+ snprintf(szTxt, 5, "%1.1fX", (float)pNormalView->fPlaySpeed);
+ elm_object_part_text_set(pNormalView->pMainLayout, VP_PLAY_PART_NORMAL_PLAYING_SPEED_TXT, szTxt);
+ }
+ bool bLandscape = vp_play_util_get_landscape_check(pNormalView->nRotate);
+ if (bLandscape) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_VOLUME_LANDSCAPE_SHOW, "*");
+ }
+ else
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_VOLUME_PORTRAIT_SHOW, "*");
+ }
+}
+
+static void _vp_play_normal_view_set_rotate_lock_state(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ bool bLockState = FALSE;
+
+ if (!vp_play_config_get_rotate_lock_status(&bLockState)) {
+ VideoLogError("vp_play_config_get_rotate_lock_status is fail");
+ return;
+ }
+
+ /*if (!pNormalView->pSoundPathBtn) {
+ elm_object_item_part_content_unset(pNormalView->pNaviItem, "title_right_btn");
+ }
+ else*/
+ {
+ if (pNormalView->pMainLayout) {
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_ROTATE);
+ }
+ }
+
+ VP_EVAS_DEL(pNormalView->pRotateBtn);
+ pNormalView->pRotateBtn = NULL;
+
+
+ Evas_Object *pParent = NULL;
+ if (!pNormalView->pSoundPathBtn) {
+ pParent = pNormalView->pMainLayout;
+
+ } else if (pNormalView->pFunctionLayout) {
+
+ pParent = pNormalView->pFunctionLayout;
+
+ } else {
+
+ pParent = pNormalView->pMainLayout;
+ }
+
+ if (!bLockState) {
+ pNormalView->pRotateBtn = vp_button_create(
+ pParent, "playview/custom/flat_46_46/default",
+ VP_PLAY_STRING_COM_ROTATE,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+
+ Evas_Object *pIcon = NULL;
+ pIcon = vp_button_create_icon(pNormalView->pRotateBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_ROTATE);
+ elm_object_part_content_set(pNormalView->pRotateBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRotateBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_ROTATE_PRESS);
+ elm_object_part_content_set(pNormalView->pRotateBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pRotateBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_ROTATE_DIM);
+ elm_object_part_content_set(pNormalView->pRotateBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ /*if (!pNormalView->pSoundPathBtn) {
+ elm_object_item_part_content_set(pNormalView->pNaviItem, "title_right_btn", pNormalView->pRotateBtn);
+ }
+ else */
+ {
+ if (pNormalView->pMainLayout) {
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_ROTATE, pNormalView->pRotateBtn);
+ }
+ }
+ }
+
+}
+
+static void _vp_play_normal_view_set_volume_lock_state(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ bool bLockState = FALSE;
+
+ /*if (!vp_play_config_get_rotate_lock_status(&bLockState)) {
+ VideoLogError("vp_play_config_get_rotate_lock_status is fail");
+ return;
+ }*/
+
+ /*if (!pNormalView->pSoundPathBtn) {
+ elm_object_item_part_content_unset(pNormalView->pNaviItem, "title_right_btn");
+ }
+ else*/
+ {
+ if (pNormalView->pMainLayout) {
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_VOLUME);
+ }
+ }
+
+ VP_EVAS_DEL(pNormalView->pVolumeBtn);
+ pNormalView->pVolumeBtn = NULL;
+
+
+ Evas_Object *pParent = NULL;
+ if (pNormalView->pSoundPathBtn == NULL)
+ {
+ pParent = pNormalView->pMainLayout;
+
+ } else if (pNormalView->pFunctionLayout) {
+
+ pParent = pNormalView->pFunctionLayout;
+
+ } else {
+
+ pParent = pNormalView->pMainLayout;
+ }
+
+ if (!bLockState) {
+ pNormalView->pVolumeBtn = vp_button_create(
+ pParent, "playview/custom/flat_46_46/default", VP_PLAY_STRING_COM_VOLUME,
+ (Evas_Smart_Cb)__vp_normal_function_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pVolumeBtn) {
+ VideoLogError("elm_button_add is fail");
+ return;
+ }
+ Evas_Object *pIcon = NULL;
+ int nVolume = 0;
+ vp_sound_get_volume(&nVolume);
+
+ VideoLogError("nVolume = %d:", nVolume);
+
+ if ((nVolume == 0)) {
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_MUTE);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_MUTE_PRESS);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_MUTE_DIM);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ } else {
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_VOLUME);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_VOLUME_PRESS);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pVolumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_VOLUME_DIM);
+ elm_object_part_content_set(pNormalView->pVolumeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ }
+
+ if (pNormalView->pMainLayout) {
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_VOLUME, pNormalView->pVolumeBtn);
+ }
+ }
+}
+
+static void _vp_play_normal_view_set_sound_path_state(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ VideoLogInfo("set_sound_path");
+
+ bool bSoundPath = FALSE;
+ bool bEarjack = FALSE;
+
+ vp_sound_path_destroy(pNormalView->pSoundPathHandle);
+ pNormalView->pSoundPathHandle = NULL;
+
+ vp_sound_is_sound_path_enable(&bSoundPath);
+
+ bEarjack = vp_sound_device_is_enable(VP_SOUND_DEVICE_EARJACK, pNormalView->pPlayView);
+
+ if (pNormalView->bEarjackConnect != bEarjack) {
+ if (bEarjack == FALSE) {
+ pNormalView->bManualPause = TRUE;
+ }
+ }
+
+ pNormalView->bEarjackConnect = bEarjack;
+
+ if (!vp_play_preference_get_sound_alive_status(&pNormalView->nSoundAlive)) {
+ VideoLogError("vp_play_preference_get_sound_alive_status failed");
+ }
+ if (bEarjack == FALSE && pNormalView->nSoundAlive == VIDEO_SA_7_1_CH) {
+ pNormalView->nSoundAlive = VIDEO_SA_NORMAL;
+ if (!vp_play_preference_set_sound_alive_status(pNormalView->nSoundAlive)) {
+ VideoLogError("vp_play_preference_set_sound_alive_status failed");
+ }
+ if (!vp_mm_player_set_sound_filter(pNormalView->pPlayerHandle, VP_MM_PLAYER_FILTER_NONE)) {
+ VideoLogWarning("vp_mm_player_set_sound_filter is fail");
+ }
+ }
+
+ elm_object_item_part_content_unset(pNormalView->pNaviItem, "title_right_btn");
+ VideoLogInfo("rotate_lock_state_sound:%d", bSoundPath);
+
+ VP_EVAS_DEL(pNormalView->pSoundPathBtn);
+ pNormalView->pSoundPathBtn = NULL;
+
+ if (bSoundPath) {
+ VP_EVAS_DEL(pNormalView->pRotateBtn);
+ pNormalView->pRotateBtn = NULL;
+
+ video_sound_device_type_t nType = VP_SOUND_DEVICE_NONE;
+ vp_sound_get_active_device(&nType);
+ char *szIconPath = VP_PLAY_NORMAL_RES_SPEAKER;
+ switch (nType)
+ {
+ case VP_SOUND_DEVICE_SPEAKER:
+ szIconPath = VP_PLAY_NORMAL_RES_SPEAKER;
+ break;
+
+ case VP_SOUND_DEVICE_EARJACK:
+ szIconPath = VP_PLAY_NORMAL_RES_EARPHONE;
+ break;
+
+ case VP_SOUND_DEVICE_BLUETOOTH:
+ szIconPath = VP_PLAY_NORMAL_RES_BLUETOOTH_HEADSET;
+ break;
+
+ case VP_SOUND_DEVICE_HDMI:
+ szIconPath = VP_PLAY_NORMAL_RES_ICON_HDMI;
+ break;
+
+ case VP_SOUND_DEVICE_MIRRORING:
+ szIconPath = VP_PLAY_NORMAL_RES_MIRRORING;
+ break;
+
+ case VP_SOUND_DEVICE_USB_AUDIO:
+ szIconPath = VP_PLAY_NORMAL_RES_USB_AUDIOE;
+ break;
+
+ default:
+ szIconPath = VP_PLAY_NORMAL_RES_SPEAKER;
+ break;
+ }
+
+ pNormalView->pSoundPathBtn = vp_navirame_button_create(pNormalView->pNaviFrame, "playview/custom/navi_button/default", VP_PLAY_RESROUCE_EDJ_PATH,
+ (const char *)szIconPath, (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb, (void *)pNormalView);
+
+ elm_object_item_part_content_set(pNormalView->pNaviItem, "title_right_btn", pNormalView->pSoundPathBtn);
+ }
+}
+
+static void _vp_play_normal_view_set_play_state(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+ if (!pPlayView->pWin) {
+ VideoLogError("pPlayView->pWin is NULL");
+ return;
+ }
+
+ Evas_Object *pParent = NULL;
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ pParent = pNormalView->pControlLayout;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (pPlayView->bAVRCP && nState != VP_MM_PLAYER_STATE_NONE && nState != VP_MM_PLAYER_STATE_IDLE) {
+ vp_avrcp_noti_player_state(nState);
+ }
+
+ elm_object_part_content_unset(pParent, VP_PLAY_SWALLOW_NORMAL_PLAY);
+ evas_object_hide(pNormalView->pPauseBtn);
+ evas_object_hide(pNormalView->pResumeBtn);
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ VideoLogWarning("VP_MM_PLAYER_STATE_PLAYING");
+ evas_object_show(pNormalView->pPauseBtn);
+// elm_object_focus_set(pNormalView->pPauseBtn, EINA_TRUE);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_PLAY, pNormalView->pPauseBtn);
+ evas_object_hide(pNormalView->pResumeBtn);
+
+ if (!pNormalView->pProgressTimer) {
+ _vp_play_normal_view_create_progress_timer(pNormalView);
+ }
+ vp_play_util_set_lock_power_key();
+ vp_play_progressbar_set_opacity(pNormalView->pProgressbar, FALSE);
+ }
+ else {
+ VideoLogWarning("Play_Status[%d]", nState);
+ evas_object_show(pNormalView->pResumeBtn);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_PLAY, pNormalView->pResumeBtn);
+ evas_object_hide(pNormalView->pPauseBtn);
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+
+ if (nState == VP_MM_PLAYER_STATE_PAUSED) {
+ vp_device_set_screen_off(FALSE);
+ }
+ vp_play_util_set_unlock_power_key();
+ }
+
+ VideoLogWarning("STATUS[%d]", nState);
+}
+
+static Evas_Object *_vp_play_normal_view_create_main_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet = elm_layout_file_set(pObj, VP_PLAY_NORMAL_MAIN_EDJ, VP_PLAY_EDJ_GROUP_NORMAL_MAIN);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail : %s [%s]", VP_PLAY_NORMAL_MAIN_EDJ, VP_PLAY_EDJ_GROUP_NORMAL_MAIN);
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static bool _vp_play_normal_view_create_gesture_layout(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("Parent is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+ PlayView *pPlayView = pNormalView->pPlayView;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pParent = pPlayView->pMainLayout;
+
+ pNormalView->pMainEventRect = elm_layout_add(pParent);
+ bRet = elm_layout_file_set(pNormalView->pMainEventRect, VP_PLAY_GESTURE_EDJ, VP_PLAY_EDJ_GROUP_GESTURE);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail : %s [%s]", VP_PLAY_GESTURE_EDJ, VP_PLAY_EDJ_GROUP_GESTURE);
+ return FALSE;
+ }
+ elm_object_part_content_set(pParent, "elm.swallow.event", pNormalView->pMainEventRect);
+
+ pNormalView->pGestureRect = elm_gesture_layer_add(pNormalView->pMainEventRect);
+ if (!pNormalView->pGestureRect) {
+ VideoLogError("elm_gesture_layer_add is NULL");
+ return FALSE;
+ }
+ elm_gesture_layer_hold_events_set(pNormalView->pGestureRect, EINA_FALSE);
+
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_TAPS,
+ ELM_GESTURE_STATE_START, __vp_normal_gesture_n_tab_start_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_TAPS,
+ ELM_GESTURE_STATE_END, __vp_normal_gesture_n_tab_end_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_TAPS,
+ ELM_GESTURE_STATE_ABORT, __vp_normal_gesture_n_tab_abort_cb, (void *)pNormalView);
+
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_MOMENTUM,
+ ELM_GESTURE_STATE_START, __vp_normal_gesture_momentum_start_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_MOMENTUM,
+ ELM_GESTURE_STATE_END, __vp_normal_gesture_momentum_end_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_MOMENTUM,
+ ELM_GESTURE_STATE_ABORT, __vp_normal_gesture_momentum_end_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_MOMENTUM,
+ ELM_GESTURE_STATE_MOVE, __vp_normal_gesture_momentum_move_cb, (void *)pNormalView);
+
+#ifdef ENABLE_GESTURE_ZOOM_FEATURE
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_ZOOM,
+ ELM_GESTURE_STATE_START, __vp_normal_gesture_zoom_start_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_ZOOM,
+ ELM_GESTURE_STATE_END, __vp_normal_gesture_zoom_end_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_ZOOM,
+ ELM_GESTURE_STATE_ABORT, __vp_normal_gesture_zoom_abort_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_ZOOM,
+ ELM_GESTURE_STATE_MOVE, __vp_normal_gesture_zoom_move_cb, (void *)pNormalView);
+#endif
+
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_DOUBLE_TAPS,
+ ELM_GESTURE_STATE_START, __vp_normal_gesture_double_click_start_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_DOUBLE_TAPS,
+ ELM_GESTURE_STATE_END, __vp_normal_gesture_double_click_end_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_DOUBLE_TAPS,
+ ELM_GESTURE_STATE_ABORT, __vp_normal_gesture_double_click_abort_cb, (void *)pNormalView);
+
+#ifdef FLICK_JUMP
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_FLICKS,
+ ELM_GESTURE_STATE_START, __vp_normal_gesture_flick_start_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_FLICKS,
+ ELM_GESTURE_STATE_END, __vp_normal_gesture_flick_end_cb, (void *)pNormalView);
+ elm_gesture_layer_cb_set(pNormalView->pGestureRect, ELM_GESTURE_N_FLICKS,
+ ELM_GESTURE_STATE_ABORT, __vp_normal_gesture_flick_abort_cb, (void *)pNormalView);
+#endif
+
+ elm_gesture_layer_line_angular_tolerance_set(pNormalView->pGestureRect, 60); // 60 degree ??
+
+ elm_gesture_layer_attach(pNormalView->pGestureRect, pNormalView->pMainEventRect);
+
+ evas_object_show(pNormalView->pMainEventRect);
+
+ return TRUE;
+}
+
+static Evas_Object *_vp_play_normal_view_create_top_control_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet = elm_layout_file_set(pObj, VP_PLAY_NORMAL_TOP_CONTROL_EDJ, VP_PLAY_EDJ_GROUP_NORMAL_TOP_CONTROL);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_normal_view_create_control_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet = elm_layout_file_set(pObj, VP_PLAY_NORMAL_CONTROL_EDJ, VP_PLAY_EDJ_GROUP_NORMAL_CONTROL);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_normal_view_create_function_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet = elm_layout_file_set(pObj, VP_PLAY_NORMAL_FUNCTION_EDJ_PATH, VP_PLAY_EDJ_GROUP_NORMAL_FUNCTION);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static void _vp_normal_view_top_layout_del_cb(void *data, Evas *e,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!data) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)data;
+ pNormalView->pTopControlLayout = NULL;
+}
+
+static bool _vp_play_normal_view_create_top_control(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ VideoLogInfo("create top control");
+
+ pNormalView->pTopControlLayout = _vp_play_normal_view_create_top_control_layout(pNormalView->pMainLayout);
+ if (!pNormalView->pTopControlLayout) {
+ VideoLogError("pNormalView->pTopControlLayout is NULL");
+ return FALSE;
+ }
+ evas_object_event_callback_add(pNormalView->pTopControlLayout, EVAS_CALLBACK_DEL, _vp_normal_view_top_layout_del_cb, (void *)pNormalView);
+
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_TOP_CONTROL, pNormalView->pTopControlLayout);
+
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_set_sound_path_state(pNormalView);
+
+ return TRUE;
+}
+
+static void _vp_play_normal_view_control_layout_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ if (!data) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)data;
+ if (pNormalView->pControlLayout) {
+ evas_object_event_callback_del(pNormalView->pControlLayout, EVAS_CALLBACK_DEL, _vp_play_normal_view_control_layout_del_cb);
+ pNormalView->pControlLayout = NULL;
+ pNormalView->pResumeBtn = NULL;
+ pNormalView->pPauseBtn = NULL;
+ pNormalView->pPlayFocusBtn = NULL;
+ pNormalView->pPrevBtn = NULL;
+ pNormalView->pNextBtn = NULL;
+ pNormalView->pVolumeBtn = NULL;
+ pNormalView->pScreenSizeBtn = NULL;
+ }
+}
+
+static void _vp_play_normal_view_bookmark_object_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ if (!data) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)data;
+ if (pNormalView->pBookmarkObj) {
+ evas_object_event_callback_del(pNormalView->pBookmarkObj, EVAS_CALLBACK_DEL, _vp_play_normal_view_bookmark_object_del_cb);
+ pNormalView->pBookmarkObj = NULL;
+ }
+}
+
+static bool _vp_play_normal_view_create_main_control(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+
+ pNormalView->pControlLayout = _vp_play_normal_view_create_control_layout(pNormalView->pMainLayout);
+ if (!pNormalView->pControlLayout) {
+ VideoLogError("pNormalView->pControlLayout is NULL");
+ return FALSE;
+ }
+
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pControlLayout, NULL);
+
+ elm_object_part_content_set(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_CONTROL, pNormalView->pControlLayout);
+ evas_object_event_callback_add(pNormalView->pControlLayout, EVAS_CALLBACK_DEL,
+ _vp_play_normal_view_control_layout_del_cb,
+ (void *)pNormalView);
+
+ pParent = pNormalView->pControlLayout;
+
+ pNormalView->pResumeBtn = vp_button_create(
+ pParent, "playview/custom/circle_1/default", VP_PLAY_STRING_COM_PLAY,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pResumeBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pPauseBtn = vp_button_create(
+ pParent, "playview/custom/circle_1_focus/default", VP_PLAY_STRING_COM_PAUSE,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pPauseBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pPlayFocusBtn = vp_button_create(
+ pParent, "focus", NULL,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pPlayFocusBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pPrevBtn = vp_button_create(
+ pParent, "playview/custom/circle_2/default", VP_PLAY_STRING_COM_PREVIOUS,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pPrevBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pNextBtn = vp_button_create(
+ pParent, "playview/custom/circle_3/default", VP_PLAY_STRING_COM_NEXT,
+ (Evas_Smart_Cb)__vp_normal_control_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pNextBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pScreenSizeBtn = vp_button_create(
+ pParent, "playview/custom/flat_56_56/default", NULL,
+ (Evas_Smart_Cb)__vp_normal_function_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ evas_object_color_set(pNormalView->pScreenSizeBtn, 0, 166, 191, 255);
+ if (!pNormalView->pScreenSizeBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pPopupBtn = vp_button_create(
+ pParent, "playview/custom/flat_56_56/default", NULL,
+ NULL,
+ NULL,
+ NULL,
+ (void *)pNormalView);
+ evas_object_color_set(pNormalView->pPopupBtn, 0, 166, 191, 255);
+ if (!pNormalView->pPopupBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ pNormalView->pLockBtn = vp_button_create(
+ pNormalView->pMainLayout, "playview/custom/flat_46_46/default", NULL,
+ (Evas_Smart_Cb)__vp_normal_function_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pLockBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ Evas_Object *pIcon = NULL;
+
+ //elm_object_focus_allow_set(pNormalView->pPauseBtn, EINA_TRUE);
+ //elm_object_focus_allow_set(pNormalView->pResumeBtn, EINA_TRUE);
+ //elm_object_focus_set(pNormalView->pPauseBtn, EINA_TRUE);
+ //elm_object_focus_set(pNormalView->pResumeBtn, EINA_TRUE);
+
+ //elm_object_focus_custom_chain_append(pParent, pNormalView->pPlayFocusBtn, NULL);
+
+ pIcon = vp_button_create_icon(pNormalView->pResumeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_RESUME);
+ elm_object_part_content_set(pNormalView->pResumeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pPauseBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_PAUSE);
+ elm_object_part_content_set(pNormalView->pPauseBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pPrevBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_PREV);
+ //elm_object_part_content_set(pNormalView->pPrevBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pNextBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_NEXT);
+ //elm_object_part_content_set(pNormalView->pNextBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pPopupBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_POPUP_PLAYER);
+ elm_object_part_content_set(pNormalView->pPopupBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pPopupBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_POPUP_PLAYER);
+ elm_object_part_content_set(pNormalView->pPopupBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ if (pNormalView->nDisplayMode == VP_MM_PLAYER_DISPLAY_FULL_SCREEN) {
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_2_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_2_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_2_MODE_DIM);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ } else if (pNormalView->nDisplayMode == VP_MM_PLAYER_DISPLAY_ORIGIN_SIZE) {
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+ } else if (pNormalView->nDisplayMode == VP_MM_PLAYER_DISPLAY_ORIGIN_OR_LETTER) {
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_3_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_3_MODE_PRESS);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_3_MODE_DIM);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ }
+ else {
+ pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE);
+ elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE_PRESS);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ //pIcon = vp_button_create_icon(pNormalView->pScreenSizeBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_SCREEN_1_MODE_DIM);
+ //elm_object_part_content_set(pNormalView->pScreenSizeBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+ }
+
+
+ if (pNormalView->pResumeBtn) {
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_PLAY, pNormalView->pResumeBtn);
+
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pResumeBtn, NULL);
+ }
+
+ if (pNormalView->pPlayFocusBtn) {
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_PLAY_FOCUS, pNormalView->pPlayFocusBtn);
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pPlayFocusBtn, NULL);
+ }
+
+ if (pNormalView->pPrevBtn) {
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_REW, pNormalView->pPrevBtn);
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pPrevBtn, NULL);
+ }
+
+ if (pNormalView->pNextBtn) {
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_FF, pNormalView->pNextBtn);
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pNextBtn, NULL);
+ }
+
+ if (pNormalView->pScreenSizeBtn) {
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_SCREENSIZE, pNormalView->pScreenSizeBtn);
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pScreenSizeBtn, NULL);
+ }
+ if (pNormalView->pPopupBtn) {
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_POPUP_PLAYER, pNormalView->pPopupBtn);
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pPopupBtn, NULL);
+ }
+ vp_play_util_focus_next_object_set(pNormalView->pVolumeBtn, pNormalView->pPrevBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pPrevBtn, pNormalView->pPlayFocusBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pPlayFocusBtn, pNormalView->pNextBtn, ELM_FOCUS_RIGHT);
+ vp_play_util_focus_next_object_set(pNormalView->pNextBtn, pNormalView->pScreenSizeBtn, ELM_FOCUS_RIGHT);
+
+
+ if ( pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_STORE ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_LIST ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_GALLERY||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_OTHER ||
+ pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MYFILE) {
+
+ pNormalView->pBookmarkHandle = vp_play_bookmark_create(pParent);
+ pNormalView->pBookmarkObj = vp_play_bookmark_get_object(pNormalView->pBookmarkHandle);
+ evas_object_event_callback_add(pNormalView->pBookmarkObj, EVAS_CALLBACK_DEL,
+ _vp_play_normal_view_bookmark_object_del_cb,
+ (void *)pNormalView);
+ vp_play_bookmark_set_user_param(pNormalView->pBookmarkHandle, (void *)pNormalView);
+ vp_play_bookmark_set_capture_callback(pNormalView->pBookmarkHandle, __vp_normal_bookmark_capture_cb);
+ vp_play_bookmark_set_item_select_callback(pNormalView->pBookmarkHandle, __vp_normal_bookmark_item_select_cb);
+ }
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+ _vp_play_normal_view_set_volume_lock_state(pNormalView);
+
+ return TRUE;
+}
+
+static void _vp_normal_view_function_layout_del_cb(void *data, Evas *e,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!data) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)data;
+ pNormalView->pTopControlLayout = NULL;
+ pNormalView->pBookmarkBtn = NULL;
+ pNormalView->pMultiWinBtn = NULL;
+ pNormalView->pRepeatBtn = NULL;
+ pNormalView->pTrimBtn = NULL;
+ pNormalView->pSoundAliveBtn = NULL;
+ pNormalView->pShareBtn = NULL;
+}
+
+static bool _vp_play_normal_view_create_function_control(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ pNormalView->pFunctionLayout = _vp_play_normal_view_create_function_layout(pNormalView->pMainLayout);
+ if (!pNormalView->pFunctionLayout) {
+ VideoLogError("pNormalView->pFunctionLayout is NULL");
+ return FALSE;
+ }
+ evas_object_event_callback_add(pNormalView->pFunctionLayout, EVAS_CALLBACK_DEL, _vp_normal_view_function_layout_del_cb, (void *)pNormalView);
+ elm_object_part_content_set(pNormalView->pControlLayout, VP_PLAY_SWALLOW_NORMAL_FUNCTION, pNormalView->pFunctionLayout);
+ elm_object_focus_custom_chain_append(pNormalView->pMainLayout, pNormalView->pFunctionLayout, NULL);
+
+ return TRUE;
+}
+
+static bool _vp_play_normal_view_create_progressbar(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+
+ pParent = pNormalView->pControlLayout;
+
+ pNormalView->pProgressbar = vp_play_progressbar_create(pParent, VIDEO_PROGRESSBAR_TYPE_NORMAL);
+ if (!pNormalView->pProgressbar) {
+ VideoLogError("pProgressbar create fail");
+ return FALSE;
+ }
+
+ pNormalView->pProgressEvent = vp_play_progressbar_get_object(pNormalView->pProgressbar);
+ if (!pNormalView->pProgressEvent) {
+ VideoLogError("vp_play_progressbar_get_object fail");
+ return FALSE;
+ }
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_PROGRESS, pNormalView->pProgressEvent);
+
+ evas_object_event_callback_add(pNormalView->pProgressEvent, EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_normal_progress_mouse_down_cb, (void *)pNormalView);
+
+ evas_object_event_callback_add(pNormalView->pProgressEvent, EVAS_CALLBACK_MOUSE_UP,
+ __vp_normal_progress_mouse_up_cb, (void *)pNormalView);
+
+ evas_object_event_callback_add(pNormalView->pProgressEvent, EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_normal_progress_mouse_move_cb, (void *)pNormalView);
+
+ evas_object_event_callback_add(pNormalView->pProgressEvent, EVAS_CALLBACK_DEL,
+ __vp_normal_progress_del_cb, (void *)pNormalView);
+
+ Evas_Object *pProgressFocus = vp_play_progressbar_get_focus_object(pNormalView->pProgressbar);
+
+ evas_object_event_callback_add(pProgressFocus, EVAS_CALLBACK_KEY_DOWN,
+ __vp_normal_focus_key_down_cb, (void *)pNormalView);
+ evas_object_event_callback_add(pProgressFocus, EVAS_CALLBACK_KEY_UP,
+ __vp_normal_focus_key_up_cb, (void *)pNormalView);
+
+
+ return TRUE;
+}
+
+static bool _vp_play_normal_view_create_subtitle(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = NULL;
+ Evas_Object *pObj = NULL;
+
+#ifdef SUBTITLE_K_FEATURE
+ //PlayView *pPlayView = pNormalView->pPlayView;
+ //pParent = pPlayView->pMainLayout;
+ pParent = pNormalView->pMainLayout;
+ VideoLogError("1");
+#else
+ pParent = pNormalView->pMainLayout;
+ VideoLogError("2");
+#endif
+
+
+ pNormalView->pSubtitle = vp_play_subtitle_create(pParent, VP_SUBTITLE_TYPE_NORMAL);
+ if (!pNormalView->pSubtitle) {
+ VideoLogError("pSubtitle create fail");
+ return FALSE;
+ }
+
+ pObj = vp_play_subtitle_get_object(pNormalView->pSubtitle);
+ if (!pObj) {
+ VideoLogError("vp_play_subtitle_get_object fail");
+ return FALSE;
+ }
+
+ vp_play_subtitle_realize(pNormalView->pSubtitle);
+ char *szFont = NULL;
+ int nSize = 0;
+
+#ifdef SUBTITLE_K_FEATURE
+ int nAlignmentKey = VP_SUBTITLE_ALIGNMENT_CENTER;
+ vp_subtitle_alignment_t nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+#else
+ video_subtitle_color_t nFontColor = VP_SUBTITLE_COLOR_BLACK;
+ video_subtitle_color_t nBGColor = VP_SUBTITLE_COLOR_BLACK;
+#endif
+
+ vp_play_preference_get_subtitle_size_key(&nSize);
+ vp_play_preference_get_subtitle_font_name_key(&szFont);
+ vp_play_subtitle_set_size(pNormalView->pSubtitle, nSize);
+ vp_play_subtitle_set_size_zoom(pNormalView->pSubtitle, 1.0);
+ vp_play_subtitle_set_font(pNormalView->pSubtitle, szFont);
+
+ VP_FREE(szFont);
+#ifndef SUBTITLE_K_FEATURE
+ int nFontColorKey = VP_SUBTITLE_COLOR_BLACK;
+ int nBGColorKey = VP_SUBTITLE_COLOR_BLACK;
+ vp_play_preference_get_subtitle_font_color_key(&nFontColorKey);
+ vp_play_preference_get_subtitle_bg_color_key(&nBGColorKey);
+
+ if (nFontColorKey == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nFontColor = VP_SUBTITLE_COLOR_BLACK;
+ }
+ else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_BLUE) {
+ nFontColor = VP_SUBTITLE_COLOR_BLUE;
+ }
+ else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_GREEN) {
+ nFontColor = VP_SUBTITLE_COLOR_GREEN;
+ }
+ else if (nFontColorKey == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nFontColor = VP_SUBTITLE_COLOR_WHITE;
+ }
+
+ if (nBGColorKey == VIDEO_SUBTITLE_COLOR_BLACK) {
+ nBGColor = VP_SUBTITLE_COLOR_BLACK;
+ }
+ else if (nBGColorKey == VIDEO_SUBTITLE_COLOR_WHITE) {
+ nBGColor = VP_SUBTITLE_COLOR_WHITE;
+ }
+ else if (nBGColorKey == VIDEO_SUBTITLE_COLOR_NONE) {
+ nBGColor = VP_SUBTITLE_COLOR_NONE;
+ }
+ vp_play_subtitle_set_color(pNormalView->pSubtitle, nFontColor);
+ vp_play_subtitle_set_bg_color(pNormalView->pSubtitle, nBGColor);
+
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_SUBTITLE, pObj);
+
+#else
+ vp_play_preference_get_subtitle_alignment_key(&nAlignmentKey);
+
+ char *szColorHex = NULL;
+ char *szColorBGHex = NULL;
+ vp_play_preference_get_subtitle_font_color_hex_key(&szColorHex);
+ if (!szColorHex) {
+ VideoLogError("szColorHex is NULL");
+ }
+
+ vp_play_preference_get_subtitle_bg_color_hex_key(&szColorBGHex);
+ if (!szColorBGHex) {
+ VideoLogError("szColorBGHex is NULL");
+ }
+
+
+ if (nAlignmentKey == VIDEO_SUBTITLE_ALIGNMENT_LEFT) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_LEFT;
+ } else if (nAlignmentKey == VIDEO_SUBTITLE_ALIGNMENT_CENTER) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_CENTER;
+ } else if (nAlignmentKey == VIDEO_SUBTITLE_ALIGNMENT_RIGHT) {
+ nAlignment = VP_SUBTITLE_ALIGNMENT_RIGHT;
+ }
+
+ vp_play_subtitle_set_color(pNormalView->pSubtitle, szColorHex);
+ vp_play_subtitle_set_bg_color(pNormalView->pSubtitle, szColorBGHex);
+
+ vp_play_subtitle_set_alignment(pNormalView->pSubtitle, nAlignment);
+ elm_object_part_content_set(pParent, VP_PLAY_SWALLOW_NORMAL_SUBTITLE, pObj);
+ evas_object_show(pObj);
+#endif
+
+ return TRUE;
+}
+
+#ifdef _PERF_TEST_
+static Evas_Object *_vp_play_normal_view_create_conformant(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_conformant_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_conformant_add object is NULL");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_conformant_set(pParent, EINA_TRUE);
+ elm_win_resize_object_add(pParent, pObj);
+
+ elm_object_signal_emit(pObj, "elm,state,indicator,overlap", "");
+ evas_object_data_set(pObj, "overlap", (void *)EINA_TRUE);
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_normal_view_create_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet = elm_layout_theme_set(pObj, VP_PLAY_CUSTOM_LAYOUT_KLASS,
+ VP_PLAY_CUSTOM_LAYOUT_GROUP,
+ VP_PLAY_CUSTOM_LAYOUT_STYLE);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_theme_set fail");
+ }
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_content_set(pParent, pObj);
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_normal_view_create_naviframe(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_naviframe_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_naviframe_add object is NULL");
+ return NULL;
+ }
+
+ eext_object_event_callback_add(pObj, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
+ eext_object_event_callback_add(pObj, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL);
+
+ elm_object_part_content_set(pParent, "elm.swallow.content", pObj);
+ elm_object_focus_set(pObj, EINA_TRUE);
+
+ elm_naviframe_prev_btn_auto_pushed_set(pObj, EINA_FALSE);
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+#endif
+
+static void _vp_play_normal_view_del_cb(void *data, Evas *e,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!data) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)data;
+ if (pNormalView->pMainLayout) {
+ evas_object_event_callback_del(pNormalView->pMainLayout, EVAS_CALLBACK_DEL, _vp_play_normal_view_del_cb);
+ elm_object_focus_custom_chain_unset(pNormalView->pMainLayout);
+ pNormalView->pMainLayout = NULL;
+ //pNormalView->pNaviItem = NULL;
+ pNormalView->pAllsharBtn = NULL;
+ //if (pNormalView->pPlayView)
+ //pNormalView->pPlayView->pNormalView = NULL;
+ }
+}
+
+static bool _vp_play_normal_view_init_layout(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+#ifdef _PERF_TEST_
+ if (pNormalView->pMainLayout) {
+ VideoLogError("Already exists MainLayout: %p", pNormalView->pMainLayout);
+ return TRUE;
+ }
+//////////
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+
+ pPlayView->pConformant = _vp_play_normal_view_create_conformant(pPlayView->pWin);
+ if (!pPlayView->pConformant) {
+ VideoLogError("pConformant is null");
+ return FALSE;
+ }
+
+ pPlayView->pMainLayout = _vp_play_normal_view_create_layout(pPlayView->pConformant);
+ if (!pPlayView->pMainLayout) {
+ VideoLogError("pMainLayout is null");
+ return FALSE;
+ }
+ pPlayView->pNaviframe = _vp_play_normal_view_create_naviframe(pPlayView->pMainLayout);
+ if (!pPlayView->pNaviframe) {
+ VideoLogError("pNaviframe is null");
+ return FALSE;
+ }
+
+ pNormalView->pNaviFrame = pPlayView->pNaviframe;
+ pNormalView->bDestroyNavi = FALSE;
+ pNormalView->nXwinID = elm_win_xwindow_get(pPlayView->pWin);
+
+//////////
+#endif
+
+ if (!_vp_play_normal_view_create_gesture_layout(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_gesture_layout is fail");
+ return FALSE;
+ }
+
+ pNormalView->pMainLayout = _vp_play_normal_view_create_main_layout(pNormalView->pNaviFrame);
+ if (!pNormalView->pMainLayout) {
+ VideoLogError("pLayout create fail");
+ return FALSE;
+ }
+
+ evas_object_event_callback_add(pNormalView->pMainLayout, EVAS_CALLBACK_DEL, _vp_play_normal_view_del_cb, (void *)pNormalView);
+ evas_object_event_callback_add(pNormalView->pMainLayout, EVAS_CALLBACK_RESIZE, __vp_normal_main_layout_resize_cb, (void *)pNormalView);
+ elm_access_highlight_set(pNormalView->pMainLayout);
+
+ pNormalView->pNaviItem = elm_naviframe_item_push(pNormalView->pNaviFrame , NULL, NULL, NULL, pNormalView->pMainLayout, "playview/1line");
+
+ Evas_Object * pLeftbtn = elm_button_add(pNormalView->pNaviFrame);
+ elm_object_style_set(pLeftbtn, "back");
+ evas_object_smart_callback_add(pLeftbtn, "clicked", __vp_normal_naviframe_back_btn_cb, (void *)pNormalView);
+ elm_object_item_part_content_set(pNormalView->pNaviItem, "title_left_btn", pLeftbtn);
+ evas_object_show(pLeftbtn);
+
+ elm_naviframe_item_pop_cb_set(pNormalView->pNaviItem, __vp_normal_naviframe_pop_cb, (void *)pNormalView);
+
+ if (!pNormalView->pNaviItem) {
+ VideoLogError("elm_naviframe_item_push fail");
+ return FALSE;
+ }
+
+ elm_object_signal_callback_add(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SHOW_FINISH, "*", __vp_normal_show_finish_cb, (void *)pNormalView);
+ elm_object_signal_callback_add(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_HIDE_FINISH, "*", __vp_normal_hide_finish_cb, (void *)pNormalView);
+
+ if (!_vp_play_normal_view_create_top_control(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_top_control fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_normal_view_create_main_control(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_main_control fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_normal_view_create_function_control(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_function_control fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_normal_view_create_progressbar(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_progressbar fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_normal_view_create_subtitle(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_subtitle fail");
+ return FALSE;
+ }
+
+ if (!_vp_play_normal_view_create_loading_ani(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_create_loading_ani fail");
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void _vp_play_normal_view_destroy_handle(NormalView *pNormalView)
+{
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return;
+ }
+ VideoLogError("_vp_play_normal_view_destroy Start");
+ vp_language_list_destroy();
+ if (pNormalView->pMainLayout) {
+ elm_object_focus_custom_chain_unset(pNormalView->pMainLayout);
+ }
+
+ if (pNormalView->pPlayerHandle) {
+ vp_mm_player_destroy(pNormalView->pPlayerHandle);
+ pNormalView->pPlayerHandle = NULL;
+ }
+
+ if (pNormalView->pVolumeHandle) {
+ vp_play_volume_destroy(pNormalView->pVolumeHandle);
+ pNormalView->pVolumeHandle = NULL;
+ }
+
+ if (pNormalView->pVolumePopupHandle) {
+ vp_play_volume_popup_destroy(pNormalView->pVolumePopupHandle);
+ pNormalView->pVolumePopupHandle = NULL;
+ }
+
+ if (pNormalView->pBrightnessHandle) {
+ vp_play_brightness_destroy(pNormalView->pBrightnessHandle);
+ pNormalView->pBrightnessHandle = NULL;
+ }
+
+ if (pNormalView->pDownloadHandle) {
+ VppDownloadDestroyItem(pNormalView->pDownloadHandle);
+ pNormalView->pDownloadHandle = NULL;
+ }
+
+ VP_EVAS_PIPE_DEL(pNormalView->pPreparePipe);
+ VP_EVAS_PIPE_DEL(pNormalView->pSeekPipe);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pLockScreenTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pExitWaitTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pMomentTimer);
+
+ if (pNormalView->pProgressEvent)
+ {
+ evas_object_event_callback_del(pNormalView->pProgressEvent,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_normal_progress_mouse_down_cb);
+
+ evas_object_event_callback_del(pNormalView->pProgressEvent,
+ EVAS_CALLBACK_MOUSE_UP,
+ __vp_normal_progress_mouse_up_cb);
+
+ evas_object_event_callback_del(pNormalView->pProgressEvent,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_normal_progress_mouse_move_cb);
+ pNormalView->pProgressEvent = NULL;
+ }
+#ifdef K_FEATURE_MICROSEEK
+ VP_EVAS_DEL(pNormalView->pMicroSeekTextLayout);
+ VP_EVAS_DEL(pNormalView->pMicroSeekImageLayout);
+#endif
+#ifdef FLICK_JUMP
+ VP_EVAS_DEL(pNormalView->pFlickJumpSeek);
+#endif
+
+ vp_audio_track_destroy(pNormalView->pAudioTrackHandle);
+ pNormalView->pAudioTrackHandle = NULL;
+
+ vp_share_destroy(pNormalView->pShareHandle);
+ pNormalView->pShareHandle = NULL;
+
+ vp_sound_alive_destroy(pNormalView->pSAHandle);
+ pNormalView->pSAHandle = NULL;
+
+ vp_subtitle_destroy(pNormalView->pSubtitlePopup);
+ pNormalView->pSubtitlePopup = NULL;
+
+ vp_subtitle_sync_popup_destroy(pNormalView->pSubtitleSyncPopup);
+ pNormalView->pSubtitleSyncPopup = NULL;
+
+ vp_subtitle_select_destroy(pNormalView->pSubtitleSelectPopup);
+ pNormalView->pSubtitleSelectPopup = NULL;
+
+ vp_subtitle_font_destroy(pNormalView->pSubtitleFontPopup);
+ pNormalView->pSubtitleFontPopup = NULL;
+
+ vp_subtitle_size_destroy(pNormalView->pSubtitleSizePopup);
+ pNormalView->pSubtitleSizePopup = NULL;
+
+ vp_subtitle_color_destroy(pNormalView->pSubtitleFontColorPopup);
+ pNormalView->pSubtitleFontColorPopup = NULL;
+#ifndef SUBTITLE_K_FEATURE
+ vp_subtitle_bg_color_destroy(pNormalView->pSubtitleBGColorPopup);
+ pNormalView->pSubtitleBGColorPopup = NULL;
+#else
+ vp_subtitle_color_destroy(pNormalView->pSubtitleBGColorPopup);
+ pNormalView->pSubtitleBGColorPopup = NULL;
+#endif
+ vp_subtitle_edge_destroy(pNormalView->pSubtitleEdgePopup);
+ pNormalView->pSubtitleEdgePopup = NULL;
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSubtitleTimer);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pScreenShotTimer);
+ VP_EVAS_DEL(pNormalView->pScreenShot);
+
+ vp_repeat_destroy(pNormalView->pRepeatHandle);
+ pNormalView->pRepeatHandle = NULL;
+
+ vp_play_loading_ani_destroy(pNormalView->pLoadingAni);
+
+ vp_sound_path_destroy(pNormalView->pSoundPathHandle);
+ pNormalView->pSoundPathHandle = NULL;
+
+ vp_setting_destroy(pNormalView->pSettingHandle);
+ pNormalView->pSettingHandle = NULL;
+
+ vp_capture_popup_destroy(pNormalView->pCapturePopup);
+ pNormalView->pCapturePopup = NULL;
+
+ vp_play_speed_popup_destroy(pNormalView->pPlaySpeedPopup);
+ pNormalView->pPlaySpeedPopup = NULL;
+
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+
+ vp_zoom_guide_destroy(pNormalView->pZoomGuide);
+ pNormalView->pZoomGuide = NULL;
+
+ VP_EVAS_JOB_DEL(pNormalView->pVolumeJob);
+ VP_EVAS_JOB_DEL(pNormalView->pBrightnessJob);
+
+ if (pNormalView->pMediaKey) {
+ vp_media_key_destroy(pNormalView->pMediaKey);
+ pNormalView->pMediaKey = NULL;
+ }
+ if (pNormalView->pSubtitle) {
+ vp_play_subtitle_destroy(pNormalView->pSubtitle);
+ pNormalView->pSubtitle = NULL;
+ }
+
+ if (pNormalView->pBookmarkHandle) {
+ vp_play_bookmark_destroy(pNormalView->pBookmarkHandle);
+ pNormalView->pBookmarkHandle = NULL;
+ }
+
+ if (pNormalView->pProgressbar) {
+ vp_play_progressbar_destroy(pNormalView->pProgressbar);
+ pNormalView->pProgressbar = NULL;
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ VP_EVAS_IDLER_DEL(pNormalView->pMultiWinIdler);
+
+ VP_EVAS_DEL(pNormalView->pImageBufferObj);
+
+ VP_EVAS_DEL(pNormalView->pSoundPathBtn);
+ VP_EVAS_DEL(pNormalView->pLockBtn);
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ VP_EVAS_DEL(pNormalView->pSpeedBoxCtrl);
+ VP_EVAS_DEL(pNormalView->pNextBtn);
+ VP_EVAS_DEL(pNormalView->pPrevBtn);
+ VP_EVAS_DEL(pNormalView->pPauseBtn);
+ VP_EVAS_DEL(pNormalView->pResumeBtn);
+ VP_EVAS_DEL(pNormalView->pPlayFocusBtn);
+
+ VP_EVAS_DEL(pNormalView->pRotateBtn);
+ VP_EVAS_DEL(pNormalView->pVolumeBtn);
+ VP_EVAS_DEL(pNormalView->pScreenSizeBtn);
+ VP_EVAS_DEL(pNormalView->pBookmarkBtn);
+ VP_EVAS_DEL(pNormalView->pMultiWinBtn);
+ VP_EVAS_DEL(pNormalView->pRepeatBtn);
+ VP_EVAS_DEL(pNormalView->pTrimBtn);
+ VP_EVAS_DEL(pNormalView->pSoundAliveBtn);
+ VP_EVAS_DEL(pNormalView->pShareBtn);
+
+ VP_EVAS_DEL(pNormalView->pCtxPopup);
+
+ VP_EVAS_DEL(pNormalView->pBackBtn);
+ VP_EVAS_DEL(pNormalView->pMoreBtn);
+ VP_EVAS_DEL(pNormalView->pCaptureRewBtn);
+ VP_EVAS_DEL(pNormalView->pCaptureBtn);
+ VP_EVAS_DEL(pNormalView->pCaptureFFBtn);
+
+ VP_EVAS_DEL(pNormalView->pMainEventRect);
+ VP_EVAS_DEL(pNormalView->pGestureRect);
+
+ VP_EVAS_DEL(pNormalView->pFunctionLayout);
+ VP_EVAS_DEL(pNormalView->pTopControlLayout);
+ VP_EVAS_DEL(pNormalView->pControlLayout);
+ VP_EVAS_DEL(pNormalView->pNaviRightBtn);
+ VP_EVAS_DEL(pNormalView->pNaviLeftBtn);
+#ifdef _NATIVE_BUFFER_SYNC
+ VP_EVAS_DEL(pNormalView->pVideoSink);
+#endif
+ VP_EVAS_DEL(pNormalView->pMainLayout);
+
+ VP_FREE(pNormalView->szMediaURL);
+ VP_FREE(pNormalView->szSubtitleURL);
+ VP_FREE(pNormalView->szScreenMirrorMacAddr);
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+ VP_FREE(pNormalView->pSelectedSubtitleLanguage);
+#endif
+ VP_FREE(pNormalView);
+
+ VideoLogError("_vp_play_normal_view_destroy End");
+}
+
+static void _vp_play_normal_view_prepare_pipe_cb(void *data, void *pipeData, unsigned int nbyte)
+{
+ if (!data) {
+ VideoLogError("data is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ NormalView *pNormalView = (NormalView*)data;
+ bool bLCDOffStatus = FALSE;
+
+ vp_mm_player_set_rate(pNormalView->pPlayerHandle, (float)pNormalView->fPlaySpeed);
+
+ vp_play_config_get_lcd_off_state(&bLCDOffStatus);
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView handle is NULL");
+ return;
+ }
+
+ if (!pPlayView->pWin) {
+ VideoLogError("pPlayView->pWin handle is NULL");
+ return;
+ }
+
+ if (bLCDOffStatus && (pNormalView->bVideoOnlyMode == FALSE)) {
+ VideoLogError("Invalid LCD Status");
+ //elm_exit();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ return;
+ }
+
+ _vp_play_normal_view_check_during_call(pNormalView);
+
+ int nDuration = 0;
+ if (!vp_mm_player_get_duration(pNormalView->pPlayerHandle, &nDuration)) {
+ VideoLogError("vp_mm_player_get_duration is fail");
+ }
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB && nDuration == 0) {
+ pNormalView->bHLSMode = TRUE;
+ }
+ else {
+ pNormalView->bHLSMode = FALSE;
+ }
+
+ if (pPlayView->bAVRCP) {
+ const char *navi_title = elm_object_item_text_get(pNormalView->pNaviItem);
+ vp_avrcp_noti_track(navi_title, "Unknown", "Unknown", "Unknown", nDuration);
+ }
+
+ if (pNormalView->bHLSMode == FALSE) {
+ pNormalView->nDuration = nDuration;
+ vp_play_progressbar_set_duration(pNormalView->pProgressbar, nDuration);
+ }
+
+ if (vp_mm_player_is_closed_caption_exist(pNormalView->pPlayerHandle)) {
+ pNormalView->bIsExistSubtitle = TRUE;
+ }
+
+ if (pNormalView->bIsExistSubtitle) {
+ _vp_play_normal_view_set_subtitle_font_config(pNormalView);
+ }
+
+ vp_play_progressbar_set_position(pNormalView->pProgressbar, pNormalView->nStartPosition);
+ _vp_play_normal_view_check_audio_only(pNormalView);
+
+ if (pNormalView->nStartPosition > 0) {
+ pNormalView->bSeekComplete = FALSE;
+ if (vp_mm_player_set_position(pNormalView->pPlayerHandle, pNormalView->nStartPosition) == FALSE) {
+ VideoLogWarning("vp_mm_player_set_position error");
+ return;
+ }
+ } else {
+ if (pPlayView->bAVRCP) {
+ vp_avrcp_noti_track_position(0);
+ }
+ }
+
+ pNormalView->bIsRealize = TRUE;
+ pNormalView->bSeekComplete = TRUE;
+#if 1
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL)) {
+ if (pNormalView->bBufferingComplete == FALSE) {
+ VideoLogWarning("Skip for buffering state");
+ return;
+ }
+ }
+#endif
+ if (pNormalView->pLoadingAni) {
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+ vp_play_loading_ani_destroy(pNormalView->pLoadingAni);
+ pNormalView->pLoadingAni = NULL;
+ }
+
+ bool bXwincheck = TRUE;
+ if (vp_play_util_is_Xwindow_focused(pNormalView->nXwinID) == FALSE) {
+ VideoLogWarning("CASE : Not a splite view and Not focused state in mainwindow[%p]", pPlayView->pWin);
+ bXwincheck = FALSE;
+ }
+
+ if (pNormalView->bManualPause || bXwincheck == FALSE) {
+ vp_mm_player_set_visible(pNormalView->pPlayerHandle, TRUE);
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ }
+ else {
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ }
+
+ if (!vp_mm_player_set_subtitle_position(pNormalView->pPlayerHandle, pNormalView->fSubtitleSyncValue*1000)) {
+ VideoLogError("vp_mm_player_set_subtitle_position is fail");
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+}
+
+normal_view_handle vp_play_normal_view_create(PlayView *pPlayView, video_play_launching_type_t nLaunchingType)
+{
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return NULL;
+ }
+
+ NormalView *pNormalView = NULL;
+
+ pNormalView = calloc(1, sizeof(NormalView));
+
+ if (!pNormalView) {
+ VideoLogError("pNormalView alloc fail");
+ return NULL;
+ }
+
+ int nScreenMode = VP_MM_PLAYER_DISPLAY_LETTER_BOX;
+ vp_play_preference_get_screen_mode_key(&nScreenMode);
+ if ((nScreenMode != VP_MM_PLAYER_DISPLAY_LETTER_BOX) && (nScreenMode != VP_MM_PLAYER_DISPLAY_FULL_SCREEN)) {
+ nScreenMode = VP_MM_PLAYER_DISPLAY_LETTER_BOX;
+ vp_play_preference_set_screen_mode_key(VP_MM_PLAYER_DISPLAY_LETTER_BOX);
+ }
+ pNormalView->nDisplayMode = nScreenMode;
+
+ pNormalView->pPlayView = pPlayView;
+ pNormalView->pNaviFrame = pPlayView->pNaviframe;
+ pNormalView->nXwinID = elm_win_xwindow_get(pPlayView->pWin);
+ pNormalView->nLaunchingType = nLaunchingType;
+ pNormalView->nStartPosition = 0;
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_NONE;
+ pNormalView->bManualPause = FALSE;
+ pNormalView->nWaitPos = -1;
+ pNormalView->fPlaySpeed = pPlayView->fPlaySpeed;
+ pNormalView->fSubtitleSyncValue = pPlayView->fSubtitleSyncValue;
+
+ elm_object_focus_allow_set(pNormalView->pNaviFrame, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pNormalView->pNaviFrame, EINA_TRUE);
+ elm_object_focus_set(pNormalView->pNaviFrame, EINA_TRUE);
+
+ // create prepare_cb pipe
+ VP_EVAS_PIPE_DEL(pNormalView->pPreparePipe);
+ pNormalView->pPreparePipe = ecore_pipe_add((Ecore_Pipe_Cb)_vp_play_normal_view_prepare_pipe_cb, (void*)pNormalView);
+
+ VP_EVAS_PIPE_DEL(pNormalView->pSeekPipe);
+ pNormalView->pSeekPipe = ecore_pipe_add((Ecore_Pipe_Cb)__vp_play_normal_view_seek_pipe_cb, (void*)pNormalView);
+#ifndef _PERF_TEST_
+ if (!_vp_play_normal_view_init_layout(pNormalView)) {
+ VideoLogError("_vp_play_normal_view_init_layout is fail");
+ return NULL;
+ }
+#endif
+ bool bMultiPlay = TRUE;
+ vp_play_preference_get_multi_play_status(&bMultiPlay);
+ if (bMultiPlay) {
+ vp_play_preference_set_multi_play_status(FALSE);
+ }
+
+ return (normal_view_handle)pNormalView;
+}
+
+void vp_play_normal_view_key_create(PlayView *pPlayView, normal_view_handle pViewHandle) {
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ pNormalView->pMediaKey = vp_media_key_create(pPlayView->pWin, __vp_normal_media_key_event_cb);
+ vp_media_key_set_user_data(pNormalView->pMediaKey, (void *)pNormalView);
+ vp_media_key_realize(pNormalView->pMediaKey);
+}
+
+void vp_play_normal_view_destroy(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ elm_access_object_unregister(pNormalView->pMainLayout);
+ elm_object_focus_allow_set(pNormalView->pNaviFrame, EINA_FALSE);
+ elm_object_tree_focus_allow_set(pNormalView->pNaviFrame, EINA_FALSE);
+ elm_object_focus_set(pNormalView->pNaviFrame, EINA_FALSE);
+
+ pNormalView->bDestroyNavi = TRUE;
+
+ elm_naviframe_item_pop(pNormalView->pNaviFrame);
+
+ _vp_play_normal_view_destroy_handle(pNormalView);
+}
+
+bool vp_play_normal_view_realize(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+
+ if (!pNormalView->pLoadingAni) {
+ if (!_vp_play_normal_view_create_loading_ani(pNormalView)) {
+ VideoLogWarning("_vp_play_normal_view_create_loading_ani fail");
+ }
+ }
+
+ /* There is no repeat setting for these modes */
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_NONE;
+ } else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (pPlayView->bStopAfterRepeat == TRUE) {
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_ALL_STOP;
+ } else {
+ pNormalView->nRepeatMode = VIDEO_PLAY_REPEAT_NONE;
+ }
+ } else {
+ int nVal = 0;
+ vp_play_preference_get_repeat_mode_key(&nVal);
+ pNormalView->nRepeatMode = (video_play_repeat_mode_t)nVal;
+ }
+
+ int nScreenMode = 0;
+ vp_play_preference_get_screen_mode_key(&nScreenMode);
+ pNormalView->nDisplayMode = (vp_mm_player_display_mode_t)nScreenMode;
+
+ pNormalView->bSeekComplete = TRUE;
+ pNormalView->bIsActive = TRUE;
+ VideoLogInfo("vp_play_normal_view_realize");
+
+ if (pNormalView->pMediaItemList) {
+ vp_media_contents_free_video_items(pNormalView->pMediaItemList);
+ pNormalView->pMediaItemList = NULL;
+ }
+
+ video_play_sort_type_t nType = VIDEO_SORT_BY_NONE;
+ int nSortVal = 0;
+ vp_play_config_get_sort_type_key(&nSortVal);
+ nType = (video_play_sort_type_t)nSortVal;
+
+ _vp_play_normal_view_set_volume_state(pNormalView);
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_GALLERY || pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MYFILE) {
+ char *szFolder = vp_play_util_get_folder_from_path(pNormalView->szMediaURL);
+ vp_media_contents_get_video_items_to_folder(VIDEO_SORT_BY_DATE_MOST_RECENT, szFolder, &(pNormalView->pMediaItemList));
+ VP_FREE(szFolder);
+ } else if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ } else {
+ if (pPlayView->nListType == VIDEO_PLAY_LIST_TYPE_FOLDER) {
+ char *szFolder = vp_play_util_get_folder_from_path(pNormalView->szMediaURL);
+ vp_media_contents_get_video_items_to_folder(nType, szFolder, &(pNormalView->pMediaItemList));
+ VP_FREE(szFolder);
+ }
+ else {
+ vp_media_contents_get_video_items(nType, &(pNormalView->pMediaItemList));
+ }
+ }
+#ifdef _PERF_TEST_
+ if (!_vp_play_normal_view_play_start(pNormalView, TRUE)) {
+ VideoLogError("_vp_play_normal_view_play_start is Fail");
+ return FALSE;
+ }
+
+ _vp_play_normal_view_init_layout(pNormalView);
+ _vp_play_normal_view_hide_layout(pNormalView, TRUE);
+#else
+ _vp_play_normal_view_hide_layout(pNormalView, TRUE);
+
+ if (!_vp_play_normal_view_play_start(pNormalView, TRUE)) {
+ VideoLogError("_vp_play_normal_view_play_start is Fail");
+ return FALSE;
+ }
+#endif
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+ _vp_play_normal_view_set_volume_lock_state(pNormalView);
+
+ vp_play_preference_set_allow_dock_connect_key(FALSE);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_VIDEO_ON, "*");
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_unrealize(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (pNormalView->pNaviItem) {
+ elm_object_item_text_set(pNormalView->pNaviItem, "");
+ }
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_VIDEO_OFF, "*");
+
+ _vp_play_normal_view_set_played_time(pNormalView);
+
+ pNormalView->bIsActive = FALSE;
+ pNormalView->bIsExistSubtitle = FALSE;
+ VP_FREE(pNormalView->szSubtitleURL);
+ VideoLogInfo("vp_play_normal_view_unrealize");
+
+ if (pNormalView->pMediaItemList) {
+ vp_media_contents_free_video_items(pNormalView->pMediaItemList);
+ pNormalView->pMediaItemList = NULL;
+ }
+
+ if (pNormalView->pDetailHandle) {
+ vp_detail_destroy(pNormalView->pDetailHandle);
+ pNormalView->pDetailHandle = NULL;
+ }
+
+ vp_play_preference_set_allow_dock_connect_key(TRUE);
+
+ vp_device_set_screen_off(FALSE);
+ vp_play_util_set_unlock_power_key();
+ vp_device_set_frame_rate(60);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pSubtitleTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pProgressTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pLockScreenTimer);
+#ifdef _NATIVE_BUFFER_SYNC
+ VP_EVAS_DEL(pNormalView->pVideoSink);
+#endif
+
+ if (pNormalView->pPlayerHandle) {
+ vp_mm_player_destroy(pNormalView->pPlayerHandle);
+ pNormalView->pPlayerHandle = NULL;
+ }
+
+ pNormalView->bIsRealize = FALSE;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_is_realize(normal_view_handle pViewHandle, bool *bIsRealize)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ *bIsRealize = pNormalView->bIsRealize;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_pause(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_resume(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (pNormalView->pPlayerHandle && pNormalView->bIsRealize) {
+ _vp_play_normal_view_all_close_popup(pNormalView);
+ }
+
+ if (pNormalView->bManualPause == FALSE && pNormalView->bSharepopup == FALSE) {
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ _vp_play_normal_view_check_during_call(pNormalView);
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_resume_or_pause(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("[ERR] No Exist pUserData.");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ switch (nState)
+ {
+ case VP_MM_PLAYER_STATE_NONE:
+ case VP_MM_PLAYER_STATE_IDLE:
+ case VP_MM_PLAYER_STATE_READY:
+ case VP_MM_PLAYER_STATE_PAUSED:
+ _vp_play_normal_view_all_close_popup(pNormalView);
+ vp_mm_player_play(pNormalView->pPlayerHandle);
+ break;
+ case VP_MM_PLAYER_STATE_PLAYING:
+ vp_mm_player_pause(pNormalView->pPlayerHandle);
+ break;
+ case VP_MM_PLAYER_STATE_STOP:
+ break;
+ }
+
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_check_during_call(pNormalView);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_next_play(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ _vp_play_normal_view_on_next_play(pNormalView, TRUE);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_prev_play(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ _vp_play_normal_view_on_prev_play(pNormalView, TRUE, FALSE);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_url(normal_view_handle pViewHandle, const char *szMediaURL)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ VP_FREE(pNormalView->szMediaURL);
+ VP_STRDUP(pNormalView->szMediaURL, szMediaURL);
+
+ return TRUE;
+
+}
+
+bool vp_play_normal_view_player_state_changed_get(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState == pState)
+ return FALSE;
+ else
+ pState = nState;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_stop_player(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if(!(vp_mm_player_stop(pNormalView->pPlayerHandle))) {
+ VideoLogError("player_stop failed");
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_video_only(normal_view_handle pViewHandle, bool bVideoOnly)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+
+ pNormalView->bVideoOnlyMode = bVideoOnly;
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+ if (nState != VP_MM_PLAYER_STATE_NONE && nState != VP_MM_PLAYER_STATE_IDLE)
+ vp_play_subtitle_set_text(pNormalView->pSubtitle, "");
+
+ if (bVideoOnly == TRUE) {
+ if (pNormalView->pImageBufferObj) {
+ elm_object_part_content_unset(pNormalView->pMainLayout, VP_PLAY_SWALLOW_NORMAL_IMAGE_BUFFER);
+ VP_EVAS_DEL(pNormalView->pImageBufferObj);
+ }
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_NO_CONTNES_SHOW, "*");
+
+ VP_EVAS_DISABLE_SET(pNormalView->pSoundPathBtn, EINA_TRUE);
+
+ //VP_EVAS_DISABLE_SET(pNormalView->pRotateBtn, EINA_TRUE);
+ if (pNormalView->pRotateBtn) {
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+ _vp_play_normal_view_set_volume_lock_state(pNormalView);
+ }
+
+ VP_EVAS_DISABLE_SET(pNormalView->pScreenSizeBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pBookmarkBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pRepeatBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pTrimBtn, EINA_TRUE);
+ VP_EVAS_DISABLE_SET(pNormalView->pShareBtn, EINA_TRUE);
+ } else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_NO_CONTNES_HIDE, "*");
+
+ VP_FREE(pNormalView->szScreenMirrorMacAddr);
+ //VP_EVAS_DISABLE_SET(pNormalView->pRotateBtn, EINA_FALSE);
+ if (pNormalView->pRotateBtn) {
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+ _vp_play_normal_view_set_volume_lock_state(pNormalView);
+ }
+ VP_EVAS_DISABLE_SET(pNormalView->pScreenSizeBtn, EINA_FALSE);
+ VP_EVAS_DISABLE_SET(pNormalView->pRepeatBtn, EINA_FALSE);
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_EMAIL) {
+ char *szMediaID = NULL;
+ bool bReturn = FALSE;
+ bReturn = vp_media_contents_get_video_id(pNormalView->szMediaURL, &szMediaID);
+
+ if (szMediaID && bReturn) {
+ VP_EVAS_DISABLE_SET(pNormalView->pTrimBtn, EINA_FALSE);
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pTrimBtn, EINA_TRUE);
+ }
+ VP_FREE(szMediaID);
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pTrimBtn, EINA_FALSE);
+ }
+ VP_EVAS_DISABLE_SET(pNormalView->pSoundAliveBtn, EINA_FALSE);
+
+ if (pNormalView->nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (vp_play_util_check_streaming(pNormalView->szMediaURL) == TRUE) {
+ VP_EVAS_DISABLE_SET(pNormalView->pShareBtn, EINA_TRUE);
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pShareBtn, EINA_FALSE);
+ }
+ } else {
+ VP_EVAS_DISABLE_SET(pNormalView->pShareBtn, EINA_FALSE);
+ }
+
+ VP_EVAS_DISABLE_SET(pNormalView->pBookmarkBtn, EINA_FALSE);
+ VP_EVAS_DISABLE_SET(pNormalView->pMultiWinBtn, EINA_FALSE);
+
+ vp_play_progressbar_set_opacity(pNormalView->pProgressbar, FALSE);
+ }
+
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ _vp_play_normal_view_set_play_state(pNormalView);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_video_only(normal_view_handle pViewHandle, bool *bVideoOnly)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ *bVideoOnly = pNormalView->bVideoOnlyMode;
+
+ return TRUE;
+
+}
+
+bool vp_play_normal_view_set_device_unplug_interrupt(normal_view_handle pViewHandle, bool bDeviceUnplugInterrupt)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->bDeviceRemoveInterrupt = bDeviceUnplugInterrupt;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_start_position(normal_view_handle pViewHandle, int nStartPosition)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ if (nStartPosition < 0) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->nStartPosition = nStartPosition;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_last_position(normal_view_handle pViewHandle, int *nCurPos)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ int nPosition = 0;
+
+ if (pNormalView->bHLSMode) {
+ *nCurPos = 0;
+ return TRUE;
+ }
+
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ return FALSE;
+ }
+
+ pNormalView->nCurPosition = nPosition;
+
+ *nCurPos = pNormalView->nCurPosition;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_update_last_position(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ _vp_play_normal_view_set_played_time(pNormalView);
+
+ return TRUE;
+
+}
+
+bool vp_play_normal_view_set_subtitle(normal_view_handle pViewHandle, char *szSubtitle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ VP_FREE(pNormalView->szSubtitleURL);
+
+ VP_STRDUP(pNormalView->szSubtitleURL, szSubtitle);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_subtitle(normal_view_handle pViewHandle, char **szSubtitle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (!vp_mm_player_get_subtitle_url(pNormalView->pPlayerHandle, szSubtitle)) {
+ VideoLogError("vp_mm_player_get_subtitle_url is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_video_duration(normal_view_handle pViewHandle, int *nDuration)
+{
+ if (!pViewHandle || !nDuration) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ *nDuration = pNormalView->nDuration;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_audio_track(normal_view_handle pViewHandle, int *nAudioTrack)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ *nAudioTrack = pNormalView->nDefaultAudioTrackIndex;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_audio_track(normal_view_handle pViewHandle, int nAudioTrack)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->nDefaultAudioTrackIndex = nAudioTrack;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_manual_pause(normal_view_handle pViewHandle, bool bManualPause)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->bManualPause = bManualPause;
+
+ return TRUE;
+
+}
+
+bool vp_play_normal_view_get_manual_pause(normal_view_handle pViewHandle, bool *bManualPause)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ *bManualPause = pNormalView->bManualPause;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_pause_status(normal_view_handle pViewHandle, bool *bPause)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+
+
+ if (nState == VP_MM_PLAYER_STATE_PLAYING) {
+ *bPause = FALSE;
+ } else {
+ *bPause = TRUE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_sound_filter(normal_view_handle pViewHandle, video_sound_alive_t *nSoundAlive)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ *nSoundAlive = pNormalView->nSoundAlive;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_sound_filter(normal_view_handle pViewHandle, video_sound_alive_t nSoundAlive)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->nSoundAlive = nSoundAlive;
+
+ return TRUE;
+}
+
+
+bool vp_play_normal_view_set_rotate(normal_view_handle pViewHandle, video_play_rotate_t nRotate, bool bLayoutHide)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+
+ if (nRotate == VIDEO_PLAY_ROTATE_NONE) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_0);
+ }
+ else if (nRotate == VIDEO_PLAY_ROTATE_90) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_90);
+ }
+ else if (nRotate == VIDEO_PLAY_ROTATE_180) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_180);
+ }
+ else if (nRotate == VIDEO_PLAY_ROTATE_270) {
+ vp_mm_player_set_video_rotate(pNormalView->pPlayerHandle, VP_MM_PLAYER_ROTATE_270);
+ }
+
+ int nAngle = elm_win_rotation_get(pPlayView->pWin);
+ video_play_rotate_t nCurRot = VIDEO_PLAY_ROTATE_NONE;
+
+ switch (nAngle)
+ {
+ case 0: nCurRot = VIDEO_PLAY_ROTATE_NONE; break;
+ case 90: nCurRot = VIDEO_PLAY_ROTATE_90; break;
+ case 180: nCurRot = VIDEO_PLAY_ROTATE_180; break;
+ case 270: nCurRot = VIDEO_PLAY_ROTATE_270; break;
+ }
+
+ if (nRotate != nCurRot) {
+ if (nRotate == VIDEO_PLAY_ROTATE_NONE) {
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 0);
+ }
+ else if (nRotate == VIDEO_PLAY_ROTATE_90) {
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 90);
+ }
+ else if (nRotate == VIDEO_PLAY_ROTATE_180) {
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 180);
+ }
+ else if (nRotate == VIDEO_PLAY_ROTATE_270) {
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 270);
+ }
+ }
+
+ if (pNormalView->nRotate != nRotate) {
+ if (pNormalView->pBookmarkHandle) {
+ bool bIsReailze = FALSE;
+ vp_play_bookmark_is_realize(pNormalView->pBookmarkHandle, &bIsReailze);
+
+ if (bIsReailze) {
+ _vp_play_normal_view_on_bookmark_mode(pNormalView, FALSE);
+ vp_play_bookmark_unrealize(pNormalView->pBookmarkHandle);
+ }
+ }
+ }
+
+ if (pNormalView->pVolumeHandle) {
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ }
+
+ if (bIsRealize) {
+ if (!vp_play_volume_unrealize(pNormalView->pVolumeHandle)) {
+ VideoLogWarning("vp_play_volume_unrealize is fail");
+ }
+ }
+ }
+
+ if (pNormalView->pVolumePopupHandle) {
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_volume_popup_is_realize(pNormalView->pVolumePopupHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_popup_is_realize is fail");
+ }
+
+ if (bIsRealize) {
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+ }
+ }
+
+ if (pNormalView->pBrightnessHandle) {
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_brightness_is_realize(pNormalView->pBrightnessHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ }
+ if (bIsRealize) {
+ if (!vp_play_brightness_unrealize(pNormalView->pBrightnessHandle)) {
+ VideoLogWarning("vp_play_brightness_unrealize is fail");
+ }
+ }
+ }
+
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+ bool bLandscape = vp_play_util_get_landscape_check(nRotate);
+
+ if (bLandscape) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_LANDSCAPE_SHOW, "*");
+#ifdef SUBTITLE_K_FEATURE
+ elm_object_signal_emit(vp_play_subtitle_get_object(pNormalView->pSubtitle), VP_SUBTITLE_SIGNAL_MAIN_LANDSCAPE_SHOW, "*");
+ evas_object_move(vp_play_subtitle_get_object(pNormalView->pSubtitle), VP_SUBTITLE_LANDSCAPE_POSX, VP_SUBTITLE_LANDSCAPE_POSY);
+ pNormalView->nInitSubtitleX = VP_SUBTITLE_LANDSCAPE_POSX;
+ pNormalView->nInitSubtitleY = VP_SUBTITLE_LANDSCAPE_POSY;
+#endif
+ } else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_NO_EFFECT_PORTRAIT_SHOW, "*");
+#ifdef SUBTITLE_K_FEATURE
+ elm_object_signal_emit(vp_play_subtitle_get_object(pNormalView->pSubtitle), VP_SUBTITLE_SIGNAL_MAIN_PORTRAIT_SHOW, "*");
+ evas_object_move(vp_play_subtitle_get_object(pNormalView->pSubtitle), VP_SUBTITLE_PORTRAIT_POSX, VP_SUBTITLE_PORTRAIT_POSY);
+ pNormalView->nInitSubtitleX = VP_SUBTITLE_PORTRAIT_POSX;
+ pNormalView->nInitSubtitleY = VP_SUBTITLE_PORTRAIT_POSY;
+#endif
+ }
+
+#ifndef SUBTITLE_K_FEATURE
+ if (pNormalView->nDisplayMode != VP_MM_PLAYER_DISPLAY_FULL_SCREEN) {
+ if (nRotate == VIDEO_PLAY_ROTATE_NONE || nRotate == VIDEO_PLAY_ROTATE_180) {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_PORTRAIT, "*");
+ }
+ else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_HIDE, "*");
+ }
+ }
+ else {
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SUBTITLE_HIDE, "*");
+ }
+#endif
+
+ if (bLayoutHide) {
+ _vp_play_normal_view_hide_layout(pNormalView, TRUE);
+ }
+
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_MAIN_SPEED_HIDE, "*");
+ pNormalView->nRotate = nRotate;
+
+#ifdef FLICK_JUMP
+ __vp_normal_flickjump_layout_position(pNormalView);
+#endif
+
+ if (pNormalView->pCtxPopup) {
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return FALSE;
+ }
+
+ int nW = 0;
+ int nH = 0;
+
+ Evas_Coord_Rectangle rect = {0,};
+ elm_win_screen_size_get(pPlayView->pWin, &rect.x, &rect.y, &rect.w, &rect.h);
+ if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_NONE) {
+ nW = rect.w/2;
+ nH = rect.h;
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_90) {
+ nW = rect.h/2;
+ nH = rect.w;
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_180) {
+ nW = rect.w/2;
+ nH = rect.h;
+ }
+ else if (pNormalView->nRotate == VIDEO_PLAY_ROTATE_270) {
+ nW = rect.h/2;
+ nH = rect.w;
+ }
+
+ evas_object_move(pNormalView->pCtxPopup, nW, nH);
+
+ evas_object_show(pNormalView->pCtxPopup);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_launching_mode(normal_view_handle pViewHandle, video_play_launching_type_t nLaunchingType)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->nLaunchingType = nLaunchingType;
+
+ return TRUE;
+
+}
+bool vp_play_normal_view_update(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ VideoLogWarning(" == NORMAL VIEW UPDATE ==");
+
+ if (pNormalView->pVolumeHandle) {
+ bool bIsRealize = FALSE;
+ if (!vp_play_volume_is_realize(pNormalView->pVolumeHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ }
+
+ if (bIsRealize) {
+ /*update volume popup*/
+ if (!vp_play_normal_view_volume_update(pNormalView)) {
+ VideoLogWarning("vp_play_normal_view_volume_update is fail");
+ }
+ }
+ }
+
+ if (pNormalView->pVolumePopupHandle) {
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_volume_popup_is_realize(pNormalView->pVolumePopupHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_popup_is_realize is fail");
+ }
+
+ if (bIsRealize) {
+ if (!vp_play_volume_popup_unrealize(pNormalView->pVolumePopupHandle)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+ }
+ }
+
+ if (pNormalView->pBrightnessHandle) {
+ bool bIsRealize = FALSE;
+
+ if (!vp_play_brightness_is_realize(pNormalView->pBrightnessHandle, &bIsRealize)) {
+ VideoLogWarning("vp_play_volume_is_realize is fail");
+ }
+ if (bIsRealize) {
+ if (!vp_play_brightness_unrealize(pNormalView->pBrightnessHandle)) {
+ VideoLogWarning("vp_play_brightness_unrealize is fail");
+ }
+ }
+ }
+
+ bool bLock = FALSE;
+ vp_play_normal_view_get_lock_screen(pNormalView, &bLock);
+ if (bLock) {
+ vp_play_normal_view_set_lock_screen(pNormalView, bLock);
+ }
+
+ _vp_play_normal_view_set_sound_path_state(pNormalView);
+// _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+// _vp_play_normal_view_set_volume_lock_state(pNormalView);
+
+ VideoLogWarning("share popup==%d,%d", pNormalView->bSharePanelFocusIn, pNormalView->bSharePanelPause);
+ if (pNormalView->bSharePanelFocusIn && pNormalView->bSharePanelPause) {
+ VideoLogWarning("pNormalView->bManualPause == FALSE");
+ pNormalView->bSharePanelPause = FALSE;
+ pNormalView->bSharepopup = FALSE;
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState != VP_MM_PLAYER_STATE_PLAYING) {
+ if (vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ _vp_play_normal_view_check_during_call(pNormalView);
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_rotate_update(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ _vp_play_normal_view_set_rotate_lock_state(pNormalView);
+ if (pNormalView->bShowLayout) {
+ _vp_play_normal_view_hide_layout(pNormalView, TRUE);
+ }
+ return TRUE;
+}
+
+bool vp_play_normal_view_set_share_panel_state(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ pNormalView->bSharepopup = FALSE;
+ pNormalView->bSharePanelFocusIn = TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_on_more_menu(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ VideoLogInfo("bIsPopupShow=%d,bIsSubtitleShow=%d", pNormalView->bIsPopupShow, pNormalView->bIsSubtitleShow);
+ if (pNormalView->bIsPopupShow || pNormalView->bIsSubtitleShow) {
+ if (pNormalView->pCtxPopup) {
+ elm_ctxpopup_dismiss(pNormalView->pCtxPopup);
+ }
+ return TRUE;
+ }
+
+ if (pNormalView->pCtxPopup) {
+ elm_ctxpopup_dismiss(pNormalView->pCtxPopup);
+
+ if (!vp_play_volume_unrealize(pNormalView->pVolumeHandle)) {
+ VideoLogWarning("vp_play_volume_unrealize is fail");
+ }
+ }
+ else {
+ __vp_normal_more_btn_clicked_cb((void *)pNormalView, pNormalView->pMoreBtn, NULL);
+ }
+
+ return TRUE;
+
+}
+
+bool vp_play_normal_view_volume_increase(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (pNormalView->pCtxPopup) {
+ elm_ctxpopup_dismiss(pNormalView->pCtxPopup);
+ }
+
+ _vp_play_normal_view_on_volume_popup(pNormalView, FALSE);
+
+ int nCurVal = 0;
+
+ vp_play_volume_increase_value(pNormalView->pVolumeHandle);
+ nCurVal = vp_play_volume_get_value(pNormalView->pVolumeHandle);
+
+ _vp_play_normal_view_set_volume_state(pNormalView);
+
+ pNormalView->nLastVolume = nCurVal;
+
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_volume_decrease(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (pNormalView->pCtxPopup) {
+ elm_ctxpopup_dismiss(pNormalView->pCtxPopup);
+ }
+
+ _vp_play_normal_view_on_volume_popup(pNormalView, FALSE);
+
+ int nCurVal = 0;
+
+ vp_play_volume_decrease_value(pNormalView->pVolumeHandle);
+ nCurVal = vp_play_volume_get_value(pNormalView->pVolumeHandle);
+
+ _vp_play_normal_view_set_volume_state(pNormalView);
+
+ pNormalView->nLastVolume = nCurVal;
+
+ _vp_play_normal_view_create_layout_hide_timer(pNormalView);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_volume_mute(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ _vp_play_normal_view_on_volume_popup(pNormalView, FALSE);
+
+ int nMuteVal = vp_play_volume_get_mute_value(pNormalView->pVolumeHandle);
+ if (nMuteVal >0) {
+ pNormalView->nLastVolume = nMuteVal;
+ vp_play_volume_set_value(pNormalView->pVolumeHandle, pNormalView->nLastVolume);
+ } else {
+ vp_play_volume_set_mute_value(pNormalView->pVolumeHandle);
+ pNormalView->nLastVolume = 0;
+ vp_play_volume_set_value(pNormalView->pVolumeHandle, 0);
+ }
+ _vp_play_normal_view_set_volume_state(pNormalView);
+
+ return TRUE;
+}
+
+bool vp_play_normal_view_volume_update(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (!pNormalView->pVolumeHandle) {
+ return TRUE;
+ }
+
+ vp_play_volume_update_value(pNormalView->pVolumeHandle);
+ _vp_play_normal_view_set_volume_state(pNormalView);
+
+ return TRUE;
+}
+
+
+bool vp_play_normal_view_set_lock_screen(normal_view_handle pViewHandle, bool bLock)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ pNormalView->bLockScreen = bLock;
+ VP_EVAS_TIMER_DEL(pNormalView->pLockScreenTimer);
+
+ elm_object_part_content_unset(pNormalView->pMainLayout,VP_PLAY_SWALLOW_NORMAL_LOCKSCREEN);
+ VP_EVAS_DEL(pNormalView->pLockBtn);
+ PlayView *pPlayView = pNormalView->pPlayView;
+ Evas_Object *pParent = NULL;
+ if (!pNormalView->pSoundPathBtn) {
+ pParent = pNormalView->pMainLayout;
+
+ } else if (pNormalView->pFunctionLayout) {
+
+ pParent = pNormalView->pFunctionLayout;
+
+ } else {
+
+ pParent = pNormalView->pMainLayout;
+ }
+ if (!pPlayView) {
+ VideoLogError("pNormalView is NULL");
+ return FALSE;
+ }
+ if (bLock) {
+ VideoLogWarning("================ LOCK HOME KEY ==============");
+ vp_play_util_key_grab(pPlayView->pWin, VP_HOME_KEY);
+
+ _vp_play_normal_view_all_close_popup(pNormalView);
+
+ VP_EVAS_TIMER_DEL(pNormalView->pHideTimer);
+ VP_EVAS_TIMER_DEL(pNormalView->pHideFinishTimer);
+
+ _vp_play_normal_view_hide_layout(pNormalView, TRUE);
+ vp_play_volume_unset_mouse_callbacks(pNormalView->pVolumeHandle, pNormalView->pPlayView->pWin);
+
+ pNormalView->pLockScreenTimer =
+ ecore_timer_add(VP_NORMAL_HIDE_SCREEN_LOCK_TIMER_INTERVAL,
+ __vp_normal_lockscreen_timer_cb, (void *)pNormalView);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_LOCKSCREEN_SHOW, "*");
+
+ pNormalView->pLockBtn = vp_button_create(
+ pParent, "playview/custom/flat_46_46/default", NULL,
+ (Evas_Smart_Cb)__vp_normal_function_btn_clicked_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_press_cb,
+ (Evas_Smart_Cb)__vp_normal_control_btn_unpress_cb,
+ (void *)pNormalView);
+ if (!pNormalView->pLockBtn) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+
+ Evas_Object *pIcon = NULL;
+
+ pIcon = vp_button_create_icon(pNormalView->pLockBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_LOCK);
+ elm_object_part_content_set(pNormalView->pLockBtn, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pLockBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_LOCK_PRESS);
+ elm_object_part_content_set(pNormalView->pLockBtn, VP_PLAY_SWALLOW_BUTTON_PRESS_ICON, pIcon);
+
+ pIcon = vp_button_create_icon(pNormalView->pLockBtn, VP_PLAY_RESROUCE_EDJ_PATH, VP_PLAY_NORMAL_RES_LOCK);
+ elm_object_part_content_set(pNormalView->pLockBtn, VP_PLAY_SWALLOW_BUTTON_DIM_ICON, pIcon);
+
+ elm_object_part_content_set(pNormalView->pMainLayout,VP_PLAY_SWALLOW_NORMAL_LOCKSCREEN, pNormalView->pLockBtn);
+
+ evas_object_show(pNormalView->pLockBtn);
+
+ if (pNormalView->bManualPause == FALSE) {
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Start Fail");
+ }
+ _vp_play_normal_view_set_play_state(pNormalView);
+ _vp_play_normal_view_on_capture_mode(pNormalView);
+ }
+ } else {
+ VideoLogWarning("================ UNLOCK HOME KEY ==============");
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_HOME_KEY);
+
+ elm_object_signal_emit(pNormalView->pMainLayout, VP_NORMAL_SIGNAL_LOCKSCREEN_HIDE, "*");
+ vp_play_volume_set_mouse_callbacks(pNormalView->pVolumeHandle, pNormalView->pPlayView->pWin);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_UP_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_DOWN_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_MUTE);
+
+ _vp_play_normal_view_show_layout(pNormalView);
+ }
+ return TRUE;
+}
+
+bool vp_play_normal_view_get_lock_screen(normal_view_handle pViewHandle, bool *bLock)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ *bLock = pNormalView->bLockScreen;
+
+ return TRUE;
+}
+
+void vp_play_normal_view_hide_sound_popup(normal_view_handle pViewHandle)
+{
+
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (pNormalView->bIsPopupShow)
+ {
+
+ VP_EVAS_DEL(pNormalView->pPopup);
+ pNormalView->bIsPopupShow = FALSE;
+ }
+}
+
+void vp_play_normal_view_web_type_disconnect(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (!pNormalView->pPlayView) {
+ VideoLogError("pNormalView->pPlayView is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+
+ if (pPlayView->nStartPosition<=0) {
+ int nPosition = 0;
+ if (!vp_mm_player_get_position(pNormalView->pPlayerHandle, &nPosition)) {
+ VideoLogError("vp_mm_player_get_position is fail");
+ }
+ if (nPosition>0)
+ pNormalView->nStartPosition = nPosition;
+ } else {
+ pNormalView->nStartPosition = pPlayView->nStartPosition;
+ }
+
+ vp_mm_player_destroy(pNormalView->pPlayerHandle);
+ pNormalView->pPlayerHandle = NULL;
+
+ VideoLogInfo("pNormalView->nStartPosition : [%d]", pNormalView->nStartPosition);
+}
+
+void vp_play_normal_view_web_type_reconnect(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+
+ if (!pNormalView->pPlayView) {
+ VideoLogError("pNormalView->pPlayView is NULL");
+ return;
+ }
+
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB) {
+ VideoLogInfo("Not WEB type");
+ return;
+ }
+
+ if (pNormalView->pPlayerHandle) {
+ vp_mm_player_destroy(pNormalView->pPlayerHandle);
+ pNormalView->pPlayerHandle = NULL;
+ }
+
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (pPlayView->nStartPosition > 0)
+ pNormalView->nStartPosition = pPlayView->nStartPosition;
+
+ VideoLogInfo("pNormalView->nStartPosition : [%d]", pNormalView->nStartPosition);
+ _vp_play_normal_view_play_start(pNormalView, FALSE);
+}
+
+//For mini controller
+bool vp_controller_play_normal_view_pause(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ VideoLogWarning("Pause button");
+
+ if (!vp_mm_player_pause(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Pause Fail");
+ }
+
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+ pNormalView->bManualPause = TRUE;
+ return TRUE;
+
+}
+
+bool vp_controller_play_normal_view_resume(normal_view_handle pViewHandle)
+{
+ VideoLogInfo("Resume button");
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ _vp_play_normal_view_check_during_call(pNormalView);
+
+ if (!vp_mm_player_play(pNormalView->pPlayerHandle)) {
+ VideoLogWarning("Resume Fail");
+ }
+ VP_EVAS_IDLER_DEL(pNormalView->pControlIdler);
+ pNormalView->pControlIdler = ecore_idler_add(__vp_normal_control_idler_cb, (void *)pNormalView);
+ pNormalView->bManualPause = FALSE;
+ return TRUE;
+}
+
+bool vp_controller_play_normal_view_next_play(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ if (pNormalView->bHLSMode == FALSE) {
+ if (pNormalView->nSpeedValue < 2) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ _vp_play_normal_view_on_next_play(pNormalView, TRUE);
+ }
+ }
+ return TRUE;
+}
+
+bool vp_controller_play_normal_view_prev_play(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ if (pNormalView->bHLSMode == FALSE) {
+ if (pNormalView->nSpeedValue < 2) {
+ VP_EVAS_TIMER_DEL(pNormalView->pSpeedTimer);
+ _vp_play_normal_view_on_prev_play(pNormalView, TRUE, FALSE);
+ }
+ }
+ return TRUE;
+}
+
+char *vp_controller_normal_view_get_thumbnail(normal_view_handle pViewHandle)
+{
+ char *szThumbnail = NULL;
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL ");
+ return NULL;
+ }
+ if (!pNormalView->szMediaURL)
+ {
+ VideoLogError("pNormalView->szMediaURL");
+ return NULL;
+ }
+ vp_media_contents_get_video_thumbnail_path(pNormalView->szMediaURL, &szThumbnail);
+ VideoLogInfo("thumbnail = %s:%s", pNormalView->szMediaURL, szThumbnail);
+ return szThumbnail;
+}
+
+char *vp_controller_normal_view_get_title(normal_view_handle pViewHandle)
+{
+ char *pTitle = NULL;
+ NormalView *pNormalView= (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return NULL;
+ }
+ if (!pNormalView->szMediaURL)
+ {
+ VideoLogError("pNormalView->szMediaURL IS null");
+ return NULL;
+ }
+
+ pTitle = vp_play_util_get_title_from_path(pNormalView->szMediaURL);
+ VideoLogInfo("title = %s", pTitle);
+ return pTitle;
+}
+
+int vp_controller_normal_view_get_duration(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView= (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return 0;
+ }
+ if (!pNormalView->szMediaURL)
+ {
+ VideoLogError("pNormalView->szMediaURL IS null");
+ return 0;
+ }
+
+ return pNormalView->nDuration;
+}
+
+bool vp_controller_normal_view_pop_view(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView= (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+ __vp_normal_naviframe_pop_cb(pNormalView, pNormalView->pNaviItem);
+ return TRUE;
+}
+
+int vp_controller_normal_view_get_played_state(normal_view_handle pViewHandle)
+{
+ NormalView *pNormalView= (NormalView *)pViewHandle;
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return nState;
+ }
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ VideoLogError("state is %d", nState);
+
+ return (int)nState;
+}
+
+bool vp_controller_normal_view_add_played_state_cb(normal_view_handle pViewHandle, vp_normal_view_state_cb fState_cb)
+{
+ NormalView *pNormalView= (NormalView *)pViewHandle;
+ if (!pNormalView) {
+ VideoLogError("pViewHandle is NULL");
+ return FALSE;
+ }
+
+ pNormalView->vp_mini_played_state_cb = fState_cb;
+ return TRUE;
+}
+
+void vp_play_normal_view_db_change(normal_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ NormalView *pNormalView = (NormalView *)pViewHandle;
+ PlayView *pPlayView = pNormalView->pPlayView;
+ if (!pPlayView) {
+ VideoLogError("pPlayView is NULL");
+ return;
+ }
+
+ if (pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_WEB &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_PREVIEW &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MESSAGE &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_EMAIL &&
+ pNormalView->nLaunchingType != VIDEO_PLAY_TYPE_MULTI_PATH) {
+
+ char *pVideoId = NULL;
+ vp_media_contents_get_video_id(pNormalView->szMediaURL, &pVideoId);
+
+ VideoSecureLogInfo("change == %d, %s, %s", pNormalView->nLaunchingType, pNormalView->szMediaURL, pVideoId);
+ if (!vp_file_exists(pNormalView->szMediaURL) || !pVideoId) {
+ VideoLogError("current file is deleted");
+ VP_FREE(pVideoId);
+ if (!pPlayView->pFunc) {
+ VideoLogError("pPlayView pFunc is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc->vp_play_func_exit) {
+ VideoLogError("pPlayView exit Func is NULL");
+ return;
+ }
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+
+ if (!vp_mm_player_get_state(pNormalView->pPlayerHandle, &nState)) {
+ VideoLogWarning("vp_mm_player_get_state is fail");
+ }
+ if (nState == VP_MM_PLAYER_STATE_PAUSED) {
+ vp_device_set_screen_off(FALSE);
+ vp_device_display_lcd_unlock();
+
+ pPlayView->pFunc->vp_play_func_exit(pPlayView);
+ }
+ }
+ VP_FREE(pVideoId);
+ }
+}
diff --git a/playview/src/vp-play-view.c b/playview/src/vp-play-view.c
new file mode 100644
index 0000000..0fe0e3d
--- /dev/null
+++ b/playview/src/vp-play-view.c
@@ -0,0 +1,2599 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <runtime_info.h>
+#include <wifi.h>
+#include <media_key.h>
+#include <sound_manager.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-view.h"
+#include "vp-play-view-priv.h"
+
+#include "vp-play-normal-view.h"
+#include "vp-play-multi-view.h"
+
+#include "vp-play-popup.h"
+#include "vp-play-button.h"
+#include "vp-play-ug.h"
+
+#include "vp-play-util.h"
+#include "vp-play-config.h"
+#include "vp-play-preference.h"
+#include "vp-hollic.h"
+#include "vp-sound.h"
+#include "vp-device.h"
+#include "vp-sensor.h"
+#include "vp-mm-player.h"
+#include "vp-media-key.h"
+
+#ifdef ENABLE_DRM_FEATURE
+#include "vp-drm.h"
+#endif
+#include "vp-multi-path.h"
+#include "vp-media-contents.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-util.h"
+#include "vp-avrcp.h"
+
+
+#define VP_PLAY_VIEW_VOLUME_TIMER 1.0
+#define VP_PLAY_VIEW_VOLUME_SPEED_TIMER 0.05
+#define VP_PLAY_VIEW_DB_UPDATE_TIMER 1.0
+
+static bool _vp_play_view_create_mode(PlayView *pPlayView);
+static bool _vp_play_view_destroy_mode(PlayView *pPlayView);
+
+static void _vp_play_view_destroy_handle(PlayView *pPlayView);
+static void _vp_play_view_create_volume_timer(PlayView *pPlayView);
+
+/* callback functions */
+static Eina_Bool __vp_play_caller_window_event_cb(void *pUserData, int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (pPlayView->bViewChange) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)pEvent;
+
+ if (ev->win == pPlayView->nCallerXwinID) {
+ elm_exit();
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+
+}
+
+static Eina_Bool __vp_play_view_mouse_in_cb(void *pUserData, int type, void *event)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ Ecore_X_Event_Mouse_In *e = event;
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (e->win == pPlayView->nXwinID) {
+ VideoLogWarning("Mouse IN");
+ pPlayView->bMouseOut = FALSE;
+ }
+ vp_play_normal_view_rotate_update(pPlayView->pNormalView);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_UP_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_DOWN_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_MUTE);
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_view_mouse_out_cb(void *pUserData, int type, void *event)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+
+ Ecore_X_Event_Mouse_Out *e = event;
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (e->win == pPlayView->nXwinID) {
+ VideoLogWarning("Mouse OUT");
+ pPlayView->bMouseOut = TRUE;
+ }
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_UP_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_DOWN_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_MUTE);
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+
+static Eina_Bool __vp_play_focus_in_cb(void *pUserData, int nType, void *pEvent)
+{
+#if 0
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (pPlayView->bViewChange) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)pEvent;
+
+ if (ev->win != pPlayView->nXwinID) {
+ VideoLogWarning("Invalid Window => cur:0x%x - video:0x%x", ev->win, pPlayView->nXwinID);
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (ev->win == pPlayView->nXwinID) {
+ VideoLogWarning("Focus In");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+// If type is EMAIL/MESSAGE MODE,
+// Email -> play -> detail -> popup -> focus in cb -> resume function -> close all popup(in resume function)
+ vp_play_normal_view_set_share_panel_state(pPlayView->pNormalView);
+ if (!vp_play_normal_view_update(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_update handle is null");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ }
+ }
+#endif
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_focus_out_cb(void *pUserData, int nType, void *pEvent)
+{
+#if 0
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)pEvent;
+
+ if (pPlayView->bViewChange) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (ev->win != pPlayView->nXwinID) {
+ VideoLogWarning("Invalid Window => cur:0x%x - video:0x%x", ev->win, pPlayView->nXwinID);
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (ev->win == pPlayView->nXwinID) {
+ VideoLogWarning("Focus Out");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ }
+ }
+#endif
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_visibility_cb(void *pUserData, int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ Ecore_X_Event_Window_Visibility_Change* ev = (Ecore_X_Event_Window_Visibility_Change *)pEvent;
+
+ if (ev->win != pPlayView->nXwinID) {
+ VideoLogWarning("Invalid Window => cur:0x%x - video:0x%x", ev->win, pPlayView->nXwinID);
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (pPlayView->bViewChange) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+
+ if (ev->win == pPlayView->nXwinID) {
+ if (ev->fully_obscured == 1) {
+ VideoLogWarning("hide main window");
+ pPlayView->bVisible = FALSE;
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_pause(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_resume handle is null");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ if (!vp_play_normal_view_update(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_update handle is null");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ }
+ } else {
+ VideoLogWarning("show main window");
+ pPlayView->bVisible = TRUE;
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_resume(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_resume handle is null");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ if (!vp_play_normal_view_update(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_update handle is null");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+ }
+ }
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_client_message_cb(void *pUserData, int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) pEvent;
+
+ if (ev->win != pPlayView->nXwinID) {
+ VideoLogWarning("Invalid Window => cur:0x%x - video:0x%x", ev->win, pPlayView->nXwinID);
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (pPlayView->bViewChange) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_view_window_property_change (void *pUserData, int type, void *event)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ Ecore_X_Event_Window_Property *e = event;
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (e->win == pPlayView->nXwinID) {
+ bool bVideoOnly = FALSE;
+ if (pPlayView->bActivate == FALSE) {
+ VideoLogInfo("__vp_play_view_window_property_change");
+ vp_play_view_unrealize(pPlayView);
+ } else {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (vp_play_normal_view_player_state_changed_get(pPlayView->pNormalView)) {
+ vp_play_normal_view_set_video_only(pPlayView->pNormalView, bVideoOnly);
+ }
+ }
+ }
+ } else if (pPlayView->pMultiView) {
+ if (e->atom == ECORE_X_ATOM_WM_STATE) {
+ Ecore_X_Window_State_Hint state;
+ state = ecore_x_icccm_state_get(e->win);
+
+ switch (state) {
+ case ECORE_X_WINDOW_STATE_HINT_ICONIC:
+ VideoLogInfo("MINI : Iconified");
+ break;
+ case ECORE_X_WINDOW_STATE_HINT_WITHDRAWN:
+ VideoLogInfo("MINI : Hide");
+ /* pause */
+ vp_play_multi_view_get_last_position(pPlayView->pMultiView, &(pPlayView->nStartPosition));
+ vp_play_multi_view_get_audio_track(pPlayView->pMultiView, &(pPlayView->nAudioIndex));
+ VP_FREE(pPlayView->szSubtitleURL);
+ vp_play_multi_view_get_subtitle(pPlayView->pMultiView, &(pPlayView->szSubtitleURL));
+ vp_play_multi_view_pause(pPlayView->pMultiView);
+ if (!vp_play_multi_view_set_manual_pause(pPlayView->pMultiView, TRUE)) {
+ VideoLogError("vp_play_normal_view_set_manual_pause fail");
+ }
+ break;
+ case ECORE_X_WINDOW_STATE_HINT_NORMAL:
+ VideoLogInfo("MINI : Show");
+ break;
+ default:
+ // do something for handling error
+ break;
+ }
+ }
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool __vp_play_delete_request_cb(void *pUserData, int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogError("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ VideoLogWarning("DELETE REQUEST CALL");
+
+ Ecore_X_Event_Window_Delete_Request *ev = (Ecore_X_Event_Window_Delete_Request *) pEvent;
+
+ if (ev->win != pPlayView->nXwinID) {
+ VideoLogWarning("Invalid Window => cur:0x%x - video:0x%x", ev->win, pPlayView->nXwinID);
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (pPlayView->bViewChange) {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ elm_exit();
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+
+static Eina_Bool __vp_play_view_volume_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ if (pPlayView->bVolumeIncrease) {
+ vp_play_normal_view_volume_increase(pPlayView->pNormalView);
+ } else {
+ vp_play_normal_view_volume_decrease(pPlayView->pNormalView);
+ }
+
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+
+ pPlayView->pVolumeTimer = ecore_timer_add(VP_PLAY_VIEW_VOLUME_SPEED_TIMER,
+ __vp_play_view_volume_timer_cb, (void *)pPlayView);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_play_view_hw_key_long_press_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ pPlayView->pHwKeyLongPressTimer = NULL;
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_play_view_media_long_press_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaLongPressTimer);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_play_view_media_key_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (pPlayView->nMediaKeyPressCount == 1) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_resume_or_pause(pPlayView->pNormalView);
+ }
+
+ } else if (pPlayView->nMediaKeyPressCount == 2) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_next_play(pPlayView->pNormalView);
+ }
+ } else if (pPlayView->nMediaKeyPressCount == 3) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_prev_play(pPlayView->pNormalView);
+ }
+ }
+ pPlayView->nMediaKeyPressCount = 0;
+
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaKeyTimer);
+
+ return EINA_FALSE;
+}
+
+static void __vp_play_view_noti_pipe_cb(void *pUserData, void *pBuf, int nByte)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_hide_sound_popup(pPlayView->pNormalView);
+ vp_play_normal_view_update(pPlayView->pNormalView);
+ }
+}
+
+static void __vp_play_sound_route_change_cb(int nRoute, bool bAvailable, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (pPlayView->pNotiPipe)
+ ecore_pipe_write(pPlayView->pNotiPipe, pUserData, sizeof(PlayView));
+}
+
+static void __vp_play_sound_volume_change_cb(int nType, int nVolume, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_volume_update(pPlayView->pNormalView);
+ }
+}
+
+static void __vp_play_rotate_changed_cb(void *pUserData, Evas_Object *pObj, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ int nAngle = elm_win_rotation_get((Evas_Object *)pObj);
+ video_play_rotate_t nRotate = VIDEO_PLAY_ROTATE_NONE;
+
+ switch (nAngle) {
+ case 0: nRotate = VIDEO_PLAY_ROTATE_NONE; break;
+ case 90: nRotate = VIDEO_PLAY_ROTATE_90; break;
+ case 180: nRotate = VIDEO_PLAY_ROTATE_180; break;
+ case 270: nRotate = VIDEO_PLAY_ROTATE_270; break;
+ }
+
+ VideoLogWarning("CHANGE ROTATE : %d", nRotate);
+
+ if (pPlayView->nRotate != nRotate) {
+ vp_play_view_set_rotate(pPlayView, nRotate);
+ }
+}
+
+static void __vp_play_view_realize_cb (void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ vp_util_lock_cpu();
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+
+ /* send event to parent */
+ if (pPlayView->pCallback == NULL) {
+ VideoLogError("PlayView Callback is NULL");
+ return;
+ }
+
+ if (pPlayView->pCallback->pRealizeCb == NULL) {
+ VideoLogError("PlayView Realize Callback is NULL");
+ return;
+ }
+
+ pPlayView->pCallback->pRealizeCb(pPlayView->pUserData);
+}
+
+static void __vp_play_view_destroy_cb (void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ /* send event to parent */
+ if (!pPlayView->pCallback) {
+ VideoLogError("PlayView Callback is NULL");
+ return;
+ }
+
+ if (!pPlayView->pCallback->pDestroyCb) {
+ VideoLogError("PlayView Realize Callback is NULL");
+ return;
+ }
+
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pKeyEventDown);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pKeyEventUp);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pFocusIn);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pFocusOut);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pVisiblility);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pClientMessage);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pDeleteRequest);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pPropertyHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pMouseInHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pMouseOutHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pPalmHoldEventHandler);
+
+ pPlayView->pCallback->pDestroyCb(pPlayView->pUserData);
+
+ elm_exit();
+}
+
+static Eina_Bool __vp_play_view_event_key_down_cb (void *pUserData, int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return EINA_FALSE;
+ }
+
+ if (!pEvent) {
+ VideoLogError("pEvent handle is NULL");
+ return EINA_FALSE;
+ }
+
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *)pEvent;
+
+ /* default operation */
+ VideoLogWarning("HW EVENT KEY DOWN:%s", pKeyEvent->keyname);
+
+ if (!strcmp(pKeyEvent->keyname, VP_END_KEY)) {
+ VideoLogWarning("Back(End) key");
+ } else if (!strcmp(pKeyEvent->keyname, VP_MENU_KEY)) {
+ VideoLogWarning("Menu key");
+ } else if (!strcmp(pKeyEvent->keyname, VP_HOME_KEY)) {
+ VideoLogWarning("HOME_KEY");
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ bool bLock = FALSE;
+ pPlayView->bManualAppPause = TRUE;
+ vp_play_normal_view_get_lock_screen(pPlayView->pNormalView, &bLock);
+ if (bLock) {
+ vp_play_normal_view_set_lock_screen(pPlayView->pNormalView, bLock);
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_MEDIA_KEY)) {
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaLongPressTimer);
+ pPlayView->pMediaLongPressTimer = ecore_timer_add(0.5, __vp_play_view_media_long_press_timer_cb, (void *)pPlayView);
+ } else if (!strcmp(pKeyEvent->keyname, VP_VOLUME_DOWN_KEY)) {
+ VideoLogWarning("VOLUME DOWN");
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ sound_manager_set_current_sound_type(SOUND_TYPE_MEDIA);
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE || nPopupState == VP_PLAY_NORMAL_VIEW_CTX_POPUP) {
+ vp_play_normal_view_volume_decrease(pPlayView->pNormalView);
+ pPlayView->bVolumeIncrease = FALSE;
+ _vp_play_view_create_volume_timer(pPlayView);
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, "Down")) {
+ VideoLogWarning("KEY DOWN");
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE) {
+ if (vp_play_normal_view_get_main_layout_focus_state(pPlayView->pNormalView) == FALSE) {
+ vp_play_normal_view_volume_decrease(pPlayView->pNormalView);
+ pPlayView->bVolumeIncrease = FALSE;
+ _vp_play_view_create_volume_timer(pPlayView);
+ }
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_VOLUME_UP_KEY)) {
+ VideoLogWarning("VOLUME UP");
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ sound_manager_set_current_sound_type(SOUND_TYPE_MEDIA);
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE || nPopupState == VP_PLAY_NORMAL_VIEW_CTX_POPUP) {
+ vp_play_normal_view_volume_increase(pPlayView->pNormalView);
+ pPlayView->bVolumeIncrease = TRUE;
+ _vp_play_view_create_volume_timer(pPlayView);
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, "Up")) {
+ VideoLogWarning("KEY UP");
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE) {
+ if (vp_play_normal_view_get_main_layout_focus_state(pPlayView->pNormalView) == FALSE) {
+ vp_play_normal_view_volume_increase(pPlayView->pNormalView);
+ pPlayView->bVolumeIncrease = TRUE;
+ _vp_play_view_create_volume_timer(pPlayView);
+ }
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_VOLUME_MUTE)) {
+ VideoLogWarning("VOLUME MUTE");
+ sound_manager_set_current_sound_type(SOUND_TYPE_MEDIA);
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_volume_mute(pPlayView->pNormalView);
+ pPlayView->bVolumeIncrease = TRUE;
+ _vp_play_view_create_volume_timer(pPlayView);
+ }
+
+ } else if (!strcmp(pKeyEvent->keyname, VP_POWER_KEY) || !strcmp(pKeyEvent->keyname, VP_SCREENSAVER_KEY)) {
+ VideoLogWarning("POWER KEY or SCREENSAVER KEY");
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VP_EVAS_TIMER_DEL(pPlayView->pHwKeyLongPressTimer);
+ pPlayView->pHwKeyLongPressTimer = ecore_timer_add(0.5, __vp_play_view_hw_key_long_press_timer_cb, (void *)pPlayView);
+
+ bool bPause = FALSE;
+ vp_play_normal_view_get_pause_status(pPlayView->pNormalView, &bPause);
+ if (bPause) {
+ vp_play_util_set_lock_power_key();
+ }
+
+ return EINA_TRUE;
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_KEY_CANCLE) || !strcmp(pKeyEvent->keyname, "Esc")) {
+ VideoLogWarning("CANCLE KEY");
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ } else if (!strcmp(pKeyEvent->keyname, VP_PLAY_KEY) || !strcmp(pKeyEvent->keyname, VP_PAUSE_KEY)) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_resume_or_pause(pPlayView->pNormalView);
+ }
+ }
+ else if (!strcmp(pKeyEvent->keyname, VP_PLAY_NEXT_SONG_KEY)) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_next_play(pPlayView->pNormalView);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_PLAY_PREV_SONG_KEY)) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_prev_play(pPlayView->pNormalView);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_FORWARD_KEY)) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE || nPopupState == VP_PLAY_NORMAL_VIEW_CTX_POPUP) {
+ if (vp_play_normal_view_get_main_layout_focus_state(pPlayView->pNormalView) == FALSE) {
+ if (vp_play_normal_view_get_main_layout_show_state(pPlayView->pNormalView) == FALSE) {
+ vp_play_normal_view_show_main_layout(pPlayView->pNormalView);
+ }
+ if (pPlayView->bKeySpeed == FALSE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, FALSE, TRUE);
+ pPlayView->bKeySpeed = TRUE;
+ }
+ }
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_REWIND_KEY)) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE || nPopupState == VP_PLAY_NORMAL_VIEW_CTX_POPUP) {
+ if (vp_play_normal_view_get_main_layout_focus_state(pPlayView->pNormalView) == FALSE) {
+ if (vp_play_normal_view_get_main_layout_show_state(pPlayView->pNormalView) == FALSE) {
+ vp_play_normal_view_show_main_layout(pPlayView->pNormalView);
+ }
+ if (pPlayView->bKeySpeed == FALSE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, FALSE, FALSE);
+ pPlayView->bKeySpeed = TRUE;
+ }
+ }
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, "Tab")) {
+ VideoLogInfo("Tab Press Down");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ bool bMainShowState = vp_play_normal_view_get_main_layout_show_state(pPlayView->pNormalView);
+ if (bMainShowState) {
+ VideoLogInfo("main focus in");
+ vp_play_normal_view_set_main_layout_focus_in(pPlayView->pNormalView);
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, "Return")) {
+ VideoLogInfo("Return Press Down");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ bool bMainFocusState = vp_play_normal_view_get_main_layout_focus_state(pPlayView->pNormalView);
+ if (bMainFocusState == FALSE) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE) {
+ vp_play_normal_view_set_resume_or_pause(pPlayView->pNormalView);
+ }
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, "space")) {
+ VideoLogInfo("space Press Down");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_normalview_popup_style_e nPopupState = vp_play_normal_view_get_popup_show_state(pPlayView->pNormalView);
+ if (nPopupState == VP_PLAY_NORMAL_VIEW_POPUP_NONE) {
+ vp_play_normal_view_set_resume_or_pause(pPlayView->pNormalView);
+ }
+ }
+ }
+
+ //For normal view hide control layout
+ if (!strcmp(pKeyEvent->keyname, "Tab") || !strcmp(pKeyEvent->keyname, "Right") || !strcmp(pKeyEvent->keyname, "Left")
+ || !strcmp(pKeyEvent->keyname, "Up") || !strcmp(pKeyEvent->keyname, "Down")) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_create_main_layout_hide_timer(pPlayView->pNormalView);
+ }
+ }
+ /* send event to parent */
+ if (pPlayView->pCallback == NULL) {
+ VideoLogError("PlayView Callback is NULL");
+ return EINA_FALSE;
+ }
+
+ if (pPlayView->pCallback->pEventKeyDown == NULL) {
+ VideoLogError("PlayView pEventKeyDown Callback is NULL");
+ return EINA_FALSE;
+ }
+
+ pPlayView->pCallback->pEventKeyDown(pPlayView->pUserData, nType, pEvent);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __vp_play_view_event_key_up_cb (void *pUserData, int nType, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("PlayView handle is NULL");
+ return EINA_FALSE;
+ }
+
+ if (!pEvent) {
+ VideoLogError("pEvent handle is NULL");
+ return EINA_FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *)pEvent;
+
+ /* default operation */
+ VideoLogWarning("HW EVENT KEY UP:%s", pKeyEvent->keyname);
+
+ if (!strcmp(pKeyEvent->keyname, VP_END_KEY)) {
+ VideoLogWarning("Back(End) key");
+ } else if (!strcmp(pKeyEvent->keyname, VP_MENU_KEY) || !strcmp(pKeyEvent->keyname, "Menu")) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_on_more_menu(pPlayView->pNormalView);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_HOME_KEY)) {
+ VideoLogWarning("HOME_KEY");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ bool bLock = FALSE;
+ vp_play_normal_view_get_lock_screen(pPlayView->pNormalView, &bLock);
+ if (!bLock) {
+ if (!vp_play_normal_view_pause(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_pause fail");
+ }
+ if (!vp_play_normal_view_update(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_update fail");
+ }
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_VOLUME_DOWN_KEY) || !strcmp(pKeyEvent->keyname, "Down")) {
+ VideoLogWarning("VOLUME DOWN");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_VOLUME_UP_KEY) || !strcmp(pKeyEvent->keyname, "Up")) {
+ VideoLogWarning("VOLUME UP");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_VOLUME_MUTE)) {
+ VideoLogWarning("VOLUME MUTE");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_MEDIA_KEY)) {
+ if (pPlayView->nMediaKeyPressCount > 3) {
+ VideoLogWarning("pressed more than 3times");
+ return EINA_FALSE;
+ }
+
+ if (pPlayView->pMediaLongPressTimer) {
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaKeyTimer);
+ pPlayView->pMediaKeyTimer = ecore_timer_add(0.5, __vp_play_view_media_key_timer_cb, (void *)pPlayView);
+ pPlayView->nMediaKeyPressCount++;
+ } else {
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaLongPressTimer);
+ //vp_play_app_launch_svoice(pPlayView->pWin, (void *)pPlayView);
+ pPlayView->nMediaKeyPressCount = 0;
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_POWER_KEY) || !strcmp(pKeyEvent->keyname, VP_SCREENSAVER_KEY)) {
+ VideoLogWarning("POWER KEY");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (pPlayView->pHwKeyLongPressTimer) {
+ VideoLogWarning("HW Key: It is click event!");
+ VP_EVAS_TIMER_DEL(pPlayView->pHwKeyLongPressTimer);
+ bool bLock = FALSE;
+ vp_play_normal_view_get_lock_screen(pPlayView->pNormalView, &bLock);
+ bLock = !bLock;
+ vp_play_normal_view_set_lock_screen(pPlayView->pNormalView, bLock);
+ }
+
+ bool bPause = FALSE;
+ vp_play_normal_view_get_pause_status(pPlayView->pNormalView, &bPause);
+ if (bPause) {
+ vp_play_util_set_unlock_power_key();
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_KEY_CANCLE) || !strcmp(pKeyEvent->keyname, "Esc")) {
+ VideoLogWarning("CANCLE KEY");
+
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ } else if (!strcmp(pKeyEvent->keyname, VP_FORWARD_KEY)) {
+ VideoLogWarning("Right");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (pPlayView->bKeySpeed == TRUE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, TRUE, TRUE);
+ pPlayView->bKeySpeed = FALSE;
+ }
+ }
+ } else if (!strcmp(pKeyEvent->keyname, VP_REWIND_KEY)) {
+ VideoLogWarning("Left");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (pPlayView->bKeySpeed == TRUE) {
+ vp_play_normal_view_ff_rew_keyboard_longpress_event_cb(pPlayView->pNormalView, TRUE, FALSE);
+ pPlayView->bKeySpeed = FALSE;
+ }
+ }
+ }
+
+ /* send event to parent */
+ if (pPlayView->pCallback == NULL) {
+ VideoLogWarning("PlayView Callback is NULL");
+ return EINA_FALSE;
+ }
+
+ if (pPlayView->pCallback->pEventKeyUp == NULL) {
+ VideoLogWarning("PlayView pEventKeyUp Callback is NULL");
+ return EINA_FALSE;
+ }
+
+ pPlayView->pCallback->pEventKeyUp(pPlayView->pUserData, nType, pEvent);
+
+ return EINA_FALSE;
+}
+
+#ifdef OLD_SENSOR_API
+static void __vp_play_view_sensor_event_cb(vp_sensor_type_t nType, unsigned long long timestamp, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ if (nType != VP_SENSOR_TYPE_FACEDOWN) {
+ VideoLogWarning("Invalid sensor type");
+ return;
+ }
+
+ video_sound_device_type_t nSoundDevType = VP_SOUND_DEVICE_NONE;
+ vp_sound_get_active_device(&nSoundDevType);
+
+ if (nSoundDevType == VP_SOUND_DEVICE_EARJACK || nSoundDevType == VP_SOUND_DEVICE_BLUETOOTH) {
+ VideoLogWarning("Earjack or Bluetooth is connected. ignore sensor event");
+ return;
+
+ }
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_pause(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_realize fail");
+ }
+ if (!vp_play_normal_view_set_manual_pause(pPlayView->pNormalView, TRUE)) {
+ VideoLogError("vp_play_normal_view_set_manual_pause fail");
+ }
+ }
+}
+#endif
+
+static void __vp_play_view_rotate_lock_key_changed_cb(system_settings_key_e key, void *pUserData)
+{
+
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ bool bLockState = FALSE;
+
+ if (!vp_play_config_get_rotate_lock_status(&bLockState)) {
+ VideoLogError("vp_play_config_get_rotate_lock_status is fail");
+ return;
+ }
+
+ if (bLockState == FALSE) {
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, 0);
+ } else {
+ elm_win_wm_rotation_preferred_rotation_set(pPlayView->pWin, -1);
+ }
+}
+
+static void __vp_play_view_wifi_key_changed_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
+{
+ VideoLogError("not supported");
+}
+
+static void __vp_play_view_delete_request_cb(void *pUserData, Evas_Object *pEvasObject, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del(pEvasObject, "delete,request", __vp_play_view_delete_request_cb);
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ VideoLogError("== delete request call ==");
+
+ _vp_play_view_destroy_handle(pPlayView);
+
+ elm_exit();
+}
+
+/* internal functions */
+static void __vp_play_view_func_change_mode(void *pViewHandle, video_play_mode_t nMode, const char *szMediaURL, int nStartPos, bool bManualPause)
+{
+ if (!pViewHandle) {
+ VideoLogError("pViewHandle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ if (nMode == pPlayView->nPlayMode) {
+ VideoLogWarning("Skip for Same mode");
+ return;
+ }
+
+ if (pPlayView->bViewChange) {
+ VideoLogWarning("Skip for Same mode");
+ return;
+ }
+ VideoLogWarning(">> Change mode");
+
+ pPlayView->bViewChange = TRUE;
+
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+
+ VP_FREE(pPlayView->szMediaURL);
+ VP_STRDUP(pPlayView->szMediaURL, szMediaURL);
+
+ /* destroy old view */
+ bool bIsTempRealize = pPlayView->bRealized;
+ vp_play_view_unrealize(pPlayView);
+
+ if (nStartPos >= 0) {
+ pPlayView->nStartPosition = nStartPos;
+ }
+
+ pPlayView->bStartPause = bManualPause;
+
+ _vp_play_view_destroy_mode(pPlayView);
+
+ //only for naviitem list test
+ //int count = eina_list_count(elm_naviframe_items_get(pPlayView->pNaviframe));
+ //VideoLogInfo("naviitems = %d", count);
+
+ //bool bRender = FALSE;
+ VideoLogInfo("previous model = %d,current view = %d", pPlayView->nPlayMode, nMode);
+
+ pPlayView->nPlayMode = nMode;
+
+ bool bLockState = FALSE;
+ if (!vp_play_config_get_rotate_lock_status(&bLockState)) {
+ VideoLogError("vp_play_config_get_rotate_lock_status is fail");
+ return;
+ }
+
+ if (bLockState == FALSE) {
+ // if auto rotation is locked. set player window as orientation 0
+ elm_win_rotation_with_resize_set(pPlayView->pWin, APP_DEVICE_ORIENTATION_0);
+ vp_play_view_set_rotate(pPlayView, VIDEO_PLAY_ROTATE_NONE);
+ }
+
+ /* create new view */
+ if (!_vp_play_view_create_mode(pPlayView)) {
+ VideoLogWarning("_vp_play_view_create_mode fail");
+ return;
+ }
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_set_url(pPlayView->pNormalView, pPlayView->szMediaURL)) {
+ VideoLogError("vp_play_normal_view_set_url fail");
+ return;
+ }
+ if (!vp_play_normal_view_set_sound_filter(pPlayView->pNormalView, pPlayView->nSoundAlive)) {
+ VideoLogError("vp_play_normal_view_set_sound_filter handle is null");
+ return;
+ }
+
+ if (!vp_play_normal_view_set_manual_pause(pPlayView->pNormalView, pPlayView->bStartPause)) {
+ VideoLogError("vp_play_normal_view_set_manual_pause fail");
+ return;
+ }
+
+ if (!vp_play_normal_view_set_rotate(pPlayView->pNormalView, pPlayView->nRotate, FALSE)) {
+ VideoLogError("vp_play_normal_view_set_rotate fail");
+ return;
+ }
+ }
+
+ if (bIsTempRealize) {
+ vp_play_view_realize(pPlayView);
+ }
+
+ pPlayView->bViewChange = FALSE;
+ VideoLogWarning("== Complete View Change ==");
+
+ //Dead-Code----bRender is false
+ //if (bRender) {
+ // elm_win_norender_pop(pPlayView->pWin);
+ //}
+}
+
+static void __vp_play_view_func_exit(void *pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->bManualAppPause = TRUE;
+
+ /* launching videos
+ Scenario 1 : Videos - Play - MultiWin - Idle - Change to PlayView(Maximize) - back => Launch Videos.
+ */
+ if (pPlayView->bRelaunchCaller &&
+ pPlayView->bActivate == TRUE) {
+
+ vp_play_app_launch_videos(pPlayView->pWin, TRUE, (void *)pPlayView);
+ }
+ __vp_play_view_destroy_cb((void *)pPlayView);
+}
+
+
+#ifdef NOT_USED
+static void __vp_play_view_sensor_popup_close_cb(int nType, bool bPause, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ vp_play_sensor_popup_destroy(pPlayView->pSensorPopup);
+ pPlayView->pSensorPopup = NULL;
+}
+#endif
+
+#if 1
+#endif
+
+/* internal functions */
+static void _vp_play_view_init_config(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+ elm_theme_extension_add(NULL, VP_PLAY_CUSTOM_THEME);
+}
+
+static void _vp_play_view_deinit_config(PlayView *pPlayView)
+{
+ elm_theme_extension_del(NULL, VP_PLAY_CUSTOM_THEME);
+}
+
+static void _vp_play_view_create_volume_timer(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+
+ pPlayView->pVolumeTimer = ecore_timer_add(VP_PLAY_VIEW_VOLUME_TIMER,
+ __vp_play_view_volume_timer_cb, (void *)pPlayView);
+
+}
+
+static Evas_Object *_vp_play_view_create_window(Evas_Object *pParent, const char *pName)
+{
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_win_add(pParent, pName, ELM_WIN_BASIC);
+ if (pObj == NULL) {
+ VideoLogError("elm_win_add object is NULL");
+ return NULL;
+ }
+
+ elm_win_title_set(pObj, pName);
+ evas_object_smart_callback_add(pObj, "delete,request",
+ __vp_play_view_delete_request_cb, NULL);
+
+ elm_win_indicator_mode_set(pObj, ELM_WIN_INDICATOR_SHOW);
+ elm_win_indicator_opacity_set(pObj, ELM_WIN_INDICATOR_TRANSPARENT);
+
+ if (elm_win_wm_rotation_supported_get(pObj)) {
+ const int rots[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(pObj, rots, 4);
+ }
+
+ //evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_view_create_render_rect(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas *pEvas = evas_object_evas_get(pParent);
+ Evas_Object *pObj = evas_object_rectangle_add(pEvas);
+ if (pObj == NULL) {
+ VideoLogError("render_rect object is NULL");
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_color_set(pObj, 0, 0, 0, 0);
+ evas_object_render_op_set(pObj, EVAS_RENDER_COPY);
+ evas_object_show(pObj);
+ elm_win_resize_object_add(pParent, pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_view_create_conformant(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_conformant_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_conformant_add object is NULL");
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_conformant_set(pParent, EINA_TRUE);
+ elm_win_resize_object_add(pParent, pObj);
+
+ elm_object_signal_emit(pObj, "elm,state,indicator,overlap", "");
+ evas_object_data_set(pObj, "overlap", (void *)EINA_TRUE);
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_view_create_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet = elm_layout_theme_set(pObj, VP_PLAY_CUSTOM_LAYOUT_KLASS,
+ VP_PLAY_CUSTOM_LAYOUT_GROUP,
+ VP_PLAY_CUSTOM_LAYOUT_STYLE);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_theme_set fail");
+ }
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_content_set(pParent, pObj);
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_view_create_naviframe(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ pObj = elm_naviframe_add(pParent);
+ if (!pObj) {
+ VideoLogError("elm_naviframe_add object is NULL");
+ return NULL;
+ }
+
+ eext_object_event_callback_add(pObj, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
+ eext_object_event_callback_add(pObj, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL);
+
+ elm_object_part_content_set(pParent, "elm.swallow.content", pObj);
+ elm_object_focus_set(pObj, EINA_TRUE);
+
+ elm_naviframe_prev_btn_auto_pushed_set(pObj, EINA_FALSE);
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static bool _vp_play_view_init_layout(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return FALSE;
+ }
+ VideoLogWarning(">> Play view : Init layout");
+
+ pPlayView->pWin = _vp_play_view_create_window(pPlayView->pParent, VP_PLAY_MAIN_WINDOW_NAME);
+ if (pPlayView->pWin == NULL) {
+ VideoLogError("pWin is null");
+ return FALSE;
+ }
+
+ evas_object_smart_callback_add(pPlayView->pWin, "wm,rotation,changed", __vp_play_rotate_changed_cb, pPlayView);
+
+ pPlayView->pRenderRect = _vp_play_view_create_render_rect(pPlayView->pWin);
+ if (pPlayView->pRenderRect == NULL) {
+ VideoLogError("pRenderRect is null");
+ return FALSE;
+ }
+#ifdef _PERF_TEST_
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ // Move to : NormalView / Realize.
+ } else
+#endif
+ {
+ pPlayView->pConformant = _vp_play_view_create_conformant(pPlayView->pWin);
+ if (pPlayView->pConformant == NULL) {
+ VideoLogError("pConformant is null");
+ return FALSE;
+ }
+
+ pPlayView->pMainLayout = _vp_play_view_create_layout(pPlayView->pConformant);
+ if (pPlayView->pMainLayout == NULL) {
+ VideoLogError("pMainLayout is null");
+ return FALSE;
+ }
+ pPlayView->pNaviframe = _vp_play_view_create_naviframe(pPlayView->pMainLayout);
+ if (pPlayView->pNaviframe == NULL) {
+ VideoLogError("pNaviframe is null");
+ return FALSE;
+ }
+ }
+
+ VideoLogWarning("<< Play view : Init layout");
+ return TRUE;
+}
+
+static bool _vp_play_view_create_mode(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return FALSE;
+ }
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ pPlayView->pNormalView = vp_play_normal_view_create(pPlayView, pPlayView->nLaunchingType);
+ if (pPlayView->pNormalView == NULL) {
+ VideoLogError("vp_play_normal_view_create handle is null");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static bool _vp_play_view_destroy_mode(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return FALSE;
+ }
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_unrealize(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_unrealize fail");
+ return FALSE;
+ }
+
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_UP_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_DOWN_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_MUTE);
+
+ vp_play_normal_view_destroy(pPlayView->pNormalView);
+ pPlayView->pNormalView = NULL;
+ }
+
+ return TRUE;
+}
+
+static void _vp_play_view_create_callback(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+
+ pPlayView->pCallback = (PlayViewCbFunc *)calloc(1, sizeof(PlayViewCbFunc));
+ if (pPlayView->pCallback == NULL) {
+ VideoLogError("playview Callback alloc fail");
+ return;
+ }
+
+ pPlayView->pCallback->pRealizeCb = NULL;
+ pPlayView->pCallback->pDestroyCb = NULL;
+ pPlayView->pCallback->pEventKeyDown = NULL;
+ pPlayView->pCallback->pEventKeyUp = NULL;
+
+ return;
+}
+
+static void _vp_play_view_destroy_callback(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+ if (!pPlayView->pCallback) {
+ VideoLogError("play view Callback is NULL");
+ return;
+ }
+
+ pPlayView->pCallback->pRealizeCb = NULL;
+ pPlayView->pCallback->pDestroyCb = NULL;
+ pPlayView->pCallback->pEventKeyDown = NULL;
+ pPlayView->pCallback->pEventKeyUp = NULL;
+
+ VP_FREE(pPlayView->pCallback);
+}
+
+static void _vp_play_view_create_func(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+
+ pPlayView->pFunc = (PlayViewFunc *)calloc(1, sizeof(PlayViewFunc));
+ if (pPlayView->pFunc == NULL) {
+ VideoLogError("playview func alloc fail");
+ return;
+ }
+
+ pPlayView->pFunc->vp_play_func_change_mode = __vp_play_view_func_change_mode;
+ pPlayView->pFunc->vp_play_func_exit = __vp_play_view_func_exit;
+
+}
+
+static void _vp_play_view_destroy_func(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+ if (!pPlayView->pFunc) {
+ VideoLogError("play view func is NULL");
+ return;
+ }
+
+ pPlayView->pFunc->vp_play_func_change_mode = NULL;
+ pPlayView->pFunc->vp_play_func_exit = NULL;
+
+ VP_FREE(pPlayView->pFunc);
+}
+
+static void _vp_play_view_destroy_handle(PlayView *pPlayView)
+{
+ if (!pPlayView) {
+ VideoLogError("play view handle is NULL");
+ return;
+ }
+
+ _vp_play_view_destroy_callback(pPlayView);
+ _vp_play_view_destroy_func(pPlayView);
+#ifdef OLD_SENSOR_API
+ vp_sensor_destroy(pPlayView->pSensorHandle);
+ pPlayView->pSensorHandle = NULL;
+
+ vp_play_sensor_popup_destroy(pPlayView->pSensorPopup);
+ pPlayView->pSensorPopup = NULL;
+#endif
+
+ VP_EVAS_TIMER_DEL(pPlayView->pDbUpdateTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pSbeamTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pHwKeyLongPressTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaKeyTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaLongPressTimer);
+ VP_EVAS_IDLER_DEL(pPlayView->pHideIdler);
+
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pKeyEventDown);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pKeyEventUp);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pFocusIn);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pFocusOut);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pVisiblility);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pClientMessage);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pDeleteRequest);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pPropertyHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pMouseInHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pMouseOutHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pPalmHoldEventHandler);
+ VP_EVAS_EVENT_HANDLER_DEL(pPlayView->pCallerWinEventHandler);
+
+ VP_EVAS_PIPE_DEL(pPlayView->pNotiPipe);
+
+ if (pPlayView->pNormalView) {
+ vp_play_normal_view_destroy(pPlayView->pNormalView);
+ pPlayView->pNormalView = NULL;
+ }
+
+ VP_EVAS_DEL(pPlayView->pMainLayout);
+ VP_EVAS_DEL(pPlayView->pNaviframe);
+ VP_EVAS_DEL(pPlayView->pConformant);
+ VP_EVAS_DEL(pPlayView->pRenderRect);
+ VP_EVAS_DEL(pPlayView->pBackground);
+ VP_EVAS_DEL(pPlayView->pWin);
+
+ VP_FREE(pPlayView->szSubtitleURL);
+ VP_FREE(pPlayView->szMediaURL);
+ VP_FREE(pPlayView->szDeviceID);
+ VP_FREE(pPlayView->szDMRID);
+ VP_FREE(pPlayView->szCookie);
+ VP_FREE(pPlayView->szProxy);
+
+ _vp_play_view_deinit_config(pPlayView);
+
+ free(pPlayView);
+ pPlayView = NULL;
+}
+
+static void _vp_play_view_net_status_changed_cb(connection_type_e type, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ PlayView *pPlayView = (PlayView *)pUserData;
+ int net_status = type;
+
+ VideoSecureLogInfo("Changed : NETWORK_STATUS(%d)", net_status);
+
+ if (pPlayView->nLaunchingType != VIDEO_PLAY_TYPE_WEB) {
+ return;
+ }
+
+ if (vp_play_util_rtsp_url_check((const char*)pPlayView->szMediaURL) == FALSE) {
+ VideoLogWarning("Not a RTSP/RTP url. skip wifi key changed signal");
+ return;
+ } else
+ VideoLogWarning("RTSP/RTP url");
+/*
+ Network change info
+ WIFI(2) -> OFF(0) -> CELLULAR(1)
+ CELLULAR(1) -> WIFI(2)
+*/
+ if (net_status == CONNECTION_TYPE_DISCONNECTED) {
+ VideoSecureLogInfo("network off");
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VideoLogInfo("normal view disconnect");
+ vp_play_normal_view_web_type_disconnect(pPlayView->pNormalView);
+ }
+ } else if (net_status == CONNECTION_TYPE_CELLULAR) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VideoLogInfo("normal view reconnection");
+ vp_play_normal_view_web_type_reconnect(pPlayView->pNormalView);
+ }
+ } else if (net_status == CONNECTION_TYPE_WIFI) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ VideoLogInfo("normal view reconnection");
+ vp_play_normal_view_web_type_reconnect(pPlayView->pNormalView);
+ }
+ }
+}
+
+static void __vp_play_view_holl_ic_changed_cb(bool bCover_state, void *pUserData)
+{
+ // bCover_state : TRUE(Cover Opened), bCover_state : FALSE(Cover closed)
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pUserData;
+ if (pPlayView->bActivate == FALSE)
+ return;
+ VideoLogWarning("bCover_state : %d", bCover_state);
+
+ if (bCover_state == FALSE) {
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_pause(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_realize fail");
+ }
+ if (!vp_play_normal_view_set_manual_pause(pPlayView->pNormalView, TRUE)) {
+ VideoLogError("vp_play_normal_view_set_manual_pause fail");
+ }
+ }
+ }
+}
+
+static void _vp_play_view_ignore_callbacks(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ PlayView *pPlayView = (PlayView *)pUserData;
+ if (pPlayView->connection) {
+ if (connection_unset_type_changed_cb(pPlayView->connection) != CONNECTION_ERROR_NONE) {
+ VideoLogError("failed to unregister network status callback");
+ }
+
+ if (connection_destroy(pPlayView->connection) != CONNECTION_ERROR_NONE) {
+ VideoLogError("failed to destroy connection handle");
+ }
+ pPlayView->connection = NULL;
+ }
+ vp_play_config_ignore_rotate_state_key_changed_cb();
+ vp_play_config_ignore_battery_charge_state_key_changed_cb();
+ if (pPlayView->bWifi) {
+ vp_play_config_ignore_wifi_state_key_changed_cb();
+ }
+}
+
+static Eina_Bool __vp_play_view_db_update_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ PlayView *pPlayView = (PlayView *)pUserData;
+ pPlayView->pDbUpdateTimer = NULL;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_db_change(pPlayView->pNormalView);
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __vp_playview_media_update_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ PlayView *pPlayView = (PlayView *)pUserData;
+
+ VP_EVAS_TIMER_DEL(pPlayView->pDbUpdateTimer);
+ pPlayView->pDbUpdateTimer = ecore_timer_add(VP_PLAY_VIEW_DB_UPDATE_TIMER, __vp_play_view_db_update_timer_cb, (void *)pUserData);
+}
+
+play_view_handle vp_play_view_create(Evas_Object *pParent, Ecore_X_Window nParentXID, video_play_mode_t nMode, video_play_launching_type_t nLaunchingType)
+{
+ if (!pParent) {
+ VideoLogWarning("pParent handle is NULL");
+ }
+
+ VideoLogWarning("");
+
+ PlayView *pPlayView = NULL;
+
+ pPlayView = calloc(1, sizeof(PlayView));
+ if (!pPlayView) {
+ VideoLogError("PlayView alloc fail");
+ return NULL;
+ }
+
+//Instead specify h/w acceleration in the application xml.
+#ifndef _USE_PROCESS_POOL
+
+#ifdef TARGET
+ VideoLogWarning("opengl_x11");
+ elm_config_preferred_engine_set("opengl_x11");
+#else
+ VideoLogWarning("software_x11");
+ elm_config_preferred_engine_set("software_x11");
+#endif
+
+#endif
+
+ pPlayView->pParent = pParent;
+ pPlayView->nPlayMode = nMode;
+ pPlayView->nLaunchingType = nLaunchingType;
+
+ /* init preference */
+ vp_play_preference_init();
+
+ /* set custom theme */
+ _vp_play_view_init_config(pPlayView);
+
+ /* create callback */
+ _vp_play_view_create_callback(pPlayView);
+
+ /* create internal function */
+ _vp_play_view_create_func(pPlayView);
+
+ if (!_vp_play_view_init_layout(pPlayView)) {
+ VideoLogError("_vp_play_view_init_layout is fail");
+ _vp_play_view_destroy_handle(pPlayView);
+ return NULL;
+ }
+
+ pPlayView->nXwinID = elm_win_xwindow_get(pPlayView->pWin);
+ pPlayView->pXDisp = ecore_x_display_get();
+ pPlayView->fPlaySpeed = 1.0;
+
+ if (nParentXID > 0) {
+ ecore_x_icccm_transient_for_set(pPlayView->nXwinID, nParentXID);
+ ecore_x_window_client_manage(nParentXID);
+ pPlayView->nCallerXwinID = nParentXID;
+ pPlayView->pCallerWinEventHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)__vp_play_caller_window_event_cb, (void *)pPlayView);
+ }
+
+ pPlayView->bActivate = TRUE;
+
+ //elm_win_activate(pPlayView->pWin);
+
+ if (!_vp_play_view_create_mode(pPlayView)) {
+ VideoLogError("_vp_play_view_handle_create is fail");
+ _vp_play_view_destroy_handle(pPlayView);
+ return NULL;
+ }
+
+ pPlayView->pKeyEventDown = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)__vp_play_view_event_key_down_cb, (void *)pPlayView);
+ pPlayView->pKeyEventUp = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (void *)__vp_play_view_event_key_up_cb, (void *)pPlayView);
+ pPlayView->pFocusIn = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, __vp_play_focus_in_cb, (void *)pPlayView);
+ pPlayView->pFocusOut = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, __vp_play_focus_out_cb, (void *)pPlayView);
+ pPlayView->pVisiblility = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, __vp_play_visibility_cb, (void *)pPlayView);
+ pPlayView->pClientMessage = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, __vp_play_client_message_cb, (void *)pPlayView);
+ pPlayView->pDeleteRequest = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, __vp_play_delete_request_cb, (void *)pPlayView);
+ pPlayView->pPropertyHandler = ecore_event_handler_add (ECORE_X_EVENT_WINDOW_PROPERTY, __vp_play_view_window_property_change, (void *)pPlayView);
+ pPlayView->pMouseInHandler = ecore_event_handler_add (ECORE_X_EVENT_MOUSE_IN, __vp_play_view_mouse_in_cb, (void *)pPlayView);
+ pPlayView->pMouseOutHandler = ecore_event_handler_add (ECORE_X_EVENT_MOUSE_OUT, __vp_play_view_mouse_out_cb, (void *)pPlayView);
+
+ pPlayView->pNotiPipe = ecore_pipe_add((Ecore_Pipe_Cb)__vp_play_view_noti_pipe_cb, (void *)pPlayView);
+#ifdef OLD_SENSOR_API
+ pPlayView->pSensorHandle = vp_sensor_create(__vp_play_view_sensor_event_cb);
+ if (pPlayView->pSensorHandle) {
+ vp_sensor_set_user_data(pPlayView->pSensorHandle, (void *)pPlayView);
+ }
+#endif
+
+ pPlayView->bAVRCP = vp_avrcp_initialize();
+ pPlayView->bWifi = vp_play_wifi_initialize();
+
+ bool bWifiConnect = FALSE;
+ vp_play_config_get_wifi_direct_connect_status(&bWifiConnect);
+
+ vp_media_contents_set_update_cb(__vp_playview_media_update_cb, (void *)pPlayView);
+
+ return pPlayView;
+}
+
+#ifdef _PERF_TEST_
+void vp_play_view_reset(play_view_handle pViewHandle, int nMode)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ if (nMode != pPlayView->nPlayMode) {
+ VideoLogError("Another mode(%d), reset playview", nMode);
+ vp_play_view_destroy(pViewHandle);
+ }
+}
+#endif
+
+void vp_play_view_destroy(play_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return;
+ }
+
+ VideoLogWarning("");
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ vp_play_config_set_multi_play_status(FALSE);
+
+ pPlayView->bDestroy = TRUE;
+
+ vp_media_contents_unset_update_cb();
+
+ vp_play_view_unrealize(pPlayView);
+
+ if (pPlayView->pMultiPathList) {
+ vp_multi_path_clear_item(pPlayView->pMultiPathList);
+ g_list_free(pPlayView->pMultiPathList);
+ pPlayView->pMultiPathList = NULL;
+ }
+
+ _vp_play_view_destroy_handle(pPlayView);
+
+ VideoLogInfo("<< Play View : Destroy");
+}
+
+bool vp_play_view_live_stream_realize(play_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ vp_mm_player_state_t nState = VP_MM_PLAYER_STATE_NONE;
+ nState = vp_controller_normal_view_get_played_state(pPlayView->pNormalView);
+ if (nState == VP_MM_PLAYER_STATE_IDLE) {
+ return TRUE;
+ }
+ VideoLogInfo(">> Play View : ankit : LIVESTREAM");
+ int nDuration = 0;
+ if (vp_play_normal_view_get_video_duration(pPlayView->pNormalView, &nDuration)) {
+ pPlayView->nDuration = nDuration;
+ }
+ if (pPlayView->nDuration == 0) {
+ vp_play_normal_view_play_start(pPlayView->pNormalView);
+ return TRUE;
+ }
+ return TRUE;
+}
+
+bool vp_play_view_realize(play_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VideoLogInfo(">> Play View : Realize");
+
+ pPlayView->bActivate = TRUE;
+ pPlayView->bVisible = TRUE;
+ vp_play_normal_view_key_create(pPlayView,pPlayView->pNormalView);
+ vp_play_normal_view_set_share_panel_state(pPlayView->pNormalView);
+ if (pPlayView->bRealized == TRUE) {
+ VideoLogWarning("Already Realize state");
+ return TRUE;
+ }
+
+ /*unregister callbacks*/
+ _vp_play_view_ignore_callbacks(pPlayView);
+
+ if (pPlayView->pHollICHandle) {
+ vp_hollic_destroy_handle(pPlayView->pHollICHandle);
+ pPlayView->pHollICHandle = NULL;
+ }
+ pPlayView->pHollICHandle = vp_hollic_create_handle(__vp_play_view_holl_ic_changed_cb, (void *)pPlayView);
+#ifdef OLD_SENSOR_API
+ vp_sensor_realize(pPlayView->pSensorHandle);
+#endif
+ vp_sound_init_session();
+
+ vp_sound_set_route_change_cb(__vp_play_sound_route_change_cb, (void *)pPlayView);
+ vp_sound_set_volume_change_cb(__vp_play_sound_volume_change_cb, (void *)pPlayView);
+ if (!pPlayView->connection) {
+ int ret = connection_create(pPlayView->connection);
+ if (ret != CONNECTION_ERROR_NONE || !pPlayView->connection) {
+ VideoLogWarning("Fail to create connection handle [%d]\n", ret);
+ }
+
+ if (pPlayView->connection) {
+ ret = connection_set_type_changed_cb(pPlayView->connection,
+ _vp_play_view_net_status_changed_cb,
+ (void *)pPlayView);
+ if (ret != CONNECTION_ERROR_NONE) {
+ VideoLogWarning("Fail to register network status callback [%d]\n", ret);
+ }
+ }
+ }
+ vp_play_config_set_rotate_state_key_changed_cb(__vp_play_view_rotate_lock_key_changed_cb, (void *)pPlayView);
+ if (pPlayView->bWifi) {
+ vp_play_config_set_wifi_state_key_changed_cb(__vp_play_view_wifi_key_changed_cb, (void *)pPlayView);
+ }
+
+// int nColorTone = 0;
+// bool bOutdoor = FALSE;
+
+// vp_play_config_get_color_tone_key(&nColorTone);
+// vp_play_config_get_outdoor_key(&bOutdoor);
+
+// vp_device_display_init(nColorTone, (int)bOutdoor);
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_UP_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_DOWN_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_VOLUME_MUTE);
+
+ vp_play_util_key_grab(pPlayView->pWin, VP_PLAYPAUSE_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_PLAY_NEXT_SONG_KEY);
+ vp_play_util_key_grab(pPlayView->pWin, VP_PLAY_PREV_SONG_KEY);
+
+ vp_play_util_key_grab(pPlayView->pWin, VP_POWER_KEY);
+
+ bool bVideoOnly = FALSE;
+ VideoLogWarning("video output: internal display");
+ vp_play_preference_set_allow_dock_connect_key(FALSE);
+
+ if (pPlayView->szDMRID) {
+ if (!vp_play_normal_view_set_manual_pause((normal_view_handle)pPlayView->pNormalView, TRUE)) {
+ VideoLogError("vp_play_normal_view_set_start_position fail");
+ return FALSE;
+ }
+ if (!vp_play_normal_view_set_video_only(pPlayView->pNormalView, TRUE)) {
+ VideoLogError("vp_play_normal_view_set_video_only fail");
+ return FALSE;
+ }
+ } else {
+ if (!vp_play_normal_view_set_video_only(pPlayView->pNormalView, bVideoOnly)) {
+ VideoLogError("vp_play_normal_view_set_video_only fail");
+ return FALSE;
+ }
+ }
+
+ if (!vp_play_normal_view_set_start_position((normal_view_handle)pPlayView->pNormalView, pPlayView->nStartPosition)) {
+ VideoLogError("vp_play_normal_view_set_start_position fail");
+ return FALSE;
+ }
+
+ if (!vp_play_normal_view_set_audio_track((normal_view_handle)pPlayView->pNormalView, pPlayView->nAudioIndex)) {
+ VideoLogError("vp_play_normal_view_set_audio_track fail");
+ return FALSE;
+ }
+
+ if (!vp_play_normal_view_set_subtitle((normal_view_handle)pPlayView->pNormalView, pPlayView->szSubtitleURL)) {
+ VideoLogInfo("vp_play_normal_view_set_subtitle fail");
+ }
+
+ if (!vp_play_normal_view_realize((normal_view_handle)pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_realize fail");
+ vp_play_view_unrealize(pPlayView);
+ return FALSE;
+ }
+ }
+
+ pPlayView->bRealized = TRUE;
+
+ __vp_play_view_realize_cb((void *)pPlayView);
+
+ VideoLogWarning("<< Play View : Realize");
+
+ return TRUE;
+}
+
+bool vp_play_view_unrealize(play_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->bActivate = FALSE;
+
+ if (pPlayView->bRealized == FALSE) {
+ VideoLogInfo("Already unrealized : playview");
+// return TRUE;
+ }
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_preference_set_allow_dock_connect_key(TRUE);
+
+ VP_EVAS_TIMER_DEL(pPlayView->pVolumeTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pHwKeyLongPressTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaKeyTimer);
+ VP_EVAS_TIMER_DEL(pPlayView->pMediaLongPressTimer);
+
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_POWER_KEY);
+
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_PLAYPAUSE_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_PLAY_NEXT_SONG_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_PLAY_PREV_SONG_KEY);
+
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_UP_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_DOWN_KEY);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_VOLUME_MUTE);
+ vp_play_util_key_ungrab(pPlayView->pWin, VP_HOME_KEY);
+ sound_manager_unset_current_sound_type();
+ media_key_release();
+ int nDuration = 0;
+ if (vp_play_normal_view_get_video_duration(pPlayView->pNormalView, &nDuration)) {
+ pPlayView->nDuration = nDuration;
+ }
+ if (pPlayView->nDuration == 0) {
+ if (!vp_play_normal_view_stop_player(pPlayView->pNormalView)) {
+ VideoLogWarning("stop failed");
+ }
+ }
+ }
+
+ if (pPlayView->bDestroy == FALSE) {
+ VideoLogWarning("Skip for screen mirroring mode");
+ return TRUE;
+ }
+
+ pPlayView->bRealized = FALSE;
+ vp_hollic_destroy_handle(pPlayView->pHollICHandle);
+ pPlayView->pHollICHandle = NULL;
+#ifdef OLD_SENSOR_API
+ vp_sensor_unrealize(pPlayView->pSensorHandle);
+#endif
+
+#if 1
+// vp_device_display_deinit();
+#endif
+
+ vp_sound_deinit_session();
+
+ if (pPlayView->bAVRCP) {
+ vp_avrcp_noti_player_state(VP_MM_PLAYER_STATE_STOP);
+ vp_avrcp_deinitialize();
+ pPlayView->bAVRCP = FALSE;
+ }
+
+ _vp_play_view_ignore_callbacks(pPlayView);
+
+ if (pPlayView->bWifi) {
+ vp_play_wifi_deinitialize();
+ pPlayView->bWifi = FALSE;
+ }
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ int nCurPos = 0;
+ int nAudioIndex = 0;
+ video_sound_alive_t nSoundAlive = VIDEO_SA_NONE;
+
+ if (vp_play_normal_view_get_last_position(pPlayView->pNormalView, &nCurPos)) {
+ pPlayView->nStartPosition = nCurPos;
+ }
+
+ if (vp_play_normal_view_get_sound_filter(pPlayView->pNormalView, &nSoundAlive)) {
+ pPlayView->nSoundAlive = nSoundAlive;
+ }
+
+ if (vp_play_normal_view_get_audio_track(pPlayView->pNormalView, &nAudioIndex)) {
+ pPlayView->nAudioIndex = nAudioIndex;
+ }
+
+ VP_FREE(pPlayView->szSubtitleURL);
+ //vp_play_normal_view_get_subtitle(pPlayView->pNormalView, &(pPlayView->szSubtitleURL));
+
+ VideoLogInfo("vp_play_normal_view_unrealize START");
+ if (!vp_play_normal_view_unrealize(pPlayView->pNormalView)) {
+ VideoLogError("vp_play_normal_view_unrealize fail");
+ }
+ }
+
+ VideoLogWarning("<< ----------");
+
+ return TRUE;
+}
+bool vp_play_view_is_realize(play_view_handle pViewHandle, bool *bRealized)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+ bool bRealize = FALSE;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_is_realize(pPlayView->pNormalView, &bRealize)) {
+ VideoLogError("vp_play_normal_view_is_realize is fail");
+ return FALSE;
+ }
+ }
+
+ *bRealized = bRealize;
+ return TRUE;
+}
+
+bool vp_play_view_set_user_data(play_view_handle pViewHandle, void *pUserData)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->pUserData = pUserData;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_url(play_view_handle pViewHandle, const char *szMediaURL)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->szMediaURL);
+ char *szConvert = vp_play_util_remove_prefix_to_url((char *)szMediaURL);
+ if (szConvert) {
+ VP_STRDUP(pPlayView->szMediaURL, szConvert);
+ } else {
+ VP_STRDUP(pPlayView->szMediaURL, szMediaURL);
+ }
+ VP_FREE(szConvert);
+
+ char *szPreviewURL = NULL;
+ vp_play_config_get_preview_url_videos(&szPreviewURL);
+ if (szPreviewURL) {
+ if (strcmp(szPreviewURL, szMediaURL) == 0) {
+ int nAudioTrack = 0;
+ vp_play_preference_get_preview_audio_track(&nAudioTrack);
+ pPlayView->nAudioIndex = nAudioTrack;
+ }
+ }
+ VP_FREE(szPreviewURL);
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_set_url(pPlayView->pNormalView, pPlayView->szMediaURL)) {
+ VideoLogError("vp_play_normal_view_set_url fail");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_view_get_url(play_view_handle pViewHandle, char **szMediaURL)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_STRDUP(*szMediaURL, pPlayView->szMediaURL);
+
+ return TRUE;
+}
+
+bool vp_play_view_get_visible_status(play_view_handle pViewHandle, bool *bVisible)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ *bVisible = pPlayView->bVisible;
+
+ return TRUE;
+}
+
+bool vp_play_view_add_multi_path(play_view_handle pViewHandle,
+ const char *szURL,
+ char *szTitle,
+ char *szSubTitle,
+ int nPosition,
+ int nDuration,
+ bool bIsSameAP)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ if (!szURL) {
+ VideoLogError("szURL is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VideoSecureLogInfo("URL[%s],SubTitle[%s],Pos[%d], Duration[%d], Title[%s], SameAP[%d]", szURL, szSubTitle, nPosition, nDuration, szTitle, (int)bIsSameAP);
+
+ if (!vp_multi_path_add_item(&(pPlayView->pMultiPathList), szURL, szTitle, szSubTitle, nPosition, nDuration, bIsSameAP)) {
+ VideoLogError("vp_multi_path_add_item is fail");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_view_set_device_id(play_view_handle pViewHandle, const char *szDeviceID)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ if (!szDeviceID) {
+ VideoLogError("szDeviceID is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->szDeviceID);
+ VP_STRDUP(pPlayView->szDeviceID, szDeviceID);
+
+ return TRUE;
+}
+
+bool vp_play_view_set_dmr_id(play_view_handle pViewHandle, const char *szDMRID)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ if (!szDMRID) {
+ VideoLogError("szDMRID is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->szDMRID);
+ VP_STRDUP(pPlayView->szDMRID, szDMRID);
+
+ return TRUE;
+}
+
+bool vp_play_view_set_media_title(play_view_handle pViewHandle, const char *szMediaTitle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ if (!szMediaTitle) {
+ VideoLogError("szMediaTitle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->szMediaTitle);
+ VP_STRDUP(pPlayView->szMediaTitle, szMediaTitle);
+
+ return TRUE;
+}
+
+bool vp_play_view_set_start_position(play_view_handle pViewHandle, int nPosition)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->nStartPosition = nPosition;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_set_start_position(pPlayView->pNormalView, nPosition)) {
+ VideoLogError("vp_play_normal_view_set_url fail");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_view_set_rotate(play_view_handle pViewHandle, video_play_rotate_t nRotate)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_set_rotate(pPlayView->pNormalView, nRotate, TRUE)) {
+ VideoLogError("vp_play_normal_view_set_rotate fail");
+ return FALSE;
+ }
+ }
+
+ pPlayView->nRotate = nRotate;
+
+ return TRUE;
+}
+
+bool vp_play_view_get_popup_mode(play_view_handle pViewHandle, bool *bPopupMode)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ *bPopupMode = FALSE;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_relaunch_caller(play_view_handle pViewHandle, bool bRelaunch)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->bRelaunchCaller = bRelaunch;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_launching_mode(play_view_handle pViewHandle, video_play_launching_type_t nLaunchingType)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->nLaunchingType = nLaunchingType;
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ if (!vp_play_normal_view_set_launching_mode(pPlayView->pNormalView, nLaunchingType)) {
+ VideoLogError("vp_play_normal_view_set_launching_mode is fail");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool vp_play_view_set_list_mode(play_view_handle pViewHandle, video_play_list_type_t nListType)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->nListType = nListType;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_cookie(play_view_handle pViewHandle, const char *szCookie)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->szCookie);
+
+ VP_STRDUP(pPlayView->szCookie, szCookie);
+
+ return TRUE;
+}
+
+bool vp_play_view_set_proxy(play_view_handle pViewHandle, const char *szProxy)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->szProxy);
+
+ VP_STRDUP(pPlayView->szProxy, szProxy);
+
+ return TRUE;
+}
+
+bool vp_play_view_set_store_download_mode(play_view_handle pViewHandle, bool bStoreDownload)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->bStoreDownload = bStoreDownload;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_stop_after_repeat_mode(play_view_handle pViewHandle, bool bStopAfterRepeat)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->bStopAfterRepeat = bStopAfterRepeat;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_store_download_filesize(play_view_handle pViewHandle, double dStoreDL_FileSize)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->dStoreDL_FileSize = dStoreDL_FileSize;
+
+ return TRUE;
+}
+
+bool vp_play_view_set_store_order_info(play_view_handle pViewHandle, char *pStoreOrderId, char *pStoreServerId, char *pStoreAppId, char *pStoreMvId)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ if (!pStoreOrderId) {
+ VideoLogError("pStoreOrderId is NULL");
+ return FALSE;
+ }
+
+ if (!pStoreServerId) {
+ VideoLogError("pStoreServerId is NULL");
+ return FALSE;
+ }
+
+ if (!pStoreAppId) {
+ VideoLogError("pStoreAppId is NULL");
+ return FALSE;
+ }
+
+ if (!pStoreMvId) {
+ VideoLogError("pStoreMvId is NULL");
+ return FALSE;
+ }
+
+ VideoSecureLogInfo("pStoreOrderId : [%s], pStoreServerId : [%s], pStoreAppId : [%s], pStoreMvId : [%s]", pStoreOrderId, pStoreServerId, pStoreAppId, pStoreMvId);
+
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ VP_FREE(pPlayView->pStoreOrderId);
+ VP_STRDUP(pPlayView->pStoreOrderId, pStoreOrderId);
+
+ VP_FREE(pPlayView->pStoreServerId);
+ VP_STRDUP(pPlayView->pStoreServerId, pStoreServerId);
+
+ VP_FREE(pPlayView->pStoreAppId);
+ VP_STRDUP(pPlayView->pStoreAppId, pStoreAppId);
+
+ VP_FREE(pPlayView->pStoreMvId);
+ VP_STRDUP(pPlayView->pStoreMvId, pStoreMvId);
+
+ return TRUE;
+}
+
+bool vp_play_view_update(play_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ if (pPlayView->nPlayMode == VIDEO_PLAY_MODE_NORMAL_VIEW) {
+ vp_play_normal_view_update(pPlayView->pNormalView);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_view_set_callback(play_view_handle pViewHandle, video_play_callback_type_t nCbType, void *pFunc)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ if (pPlayView->pCallback == NULL) {
+ VideoLogError("PlayView Callback is NULL");
+ return FALSE;
+ }
+
+ if (nCbType == VIDEO_PLAY_CB_TYPE_REALIZE) {
+ pPlayView->pCallback->pRealizeCb = pFunc;
+ } else if (nCbType == VIDEO_PLAY_CB_TYPE_DESTORY) {
+ pPlayView->pCallback->pDestroyCb = pFunc;
+ } else if (nCbType == VIDEO_PLAY_CB_TYPE_EVENT_KEY_DOWN) {
+ pPlayView->pCallback->pEventKeyDown = pFunc;
+ } else if (nCbType == VIDEO_PLAY_CB_TYPE_EVENT_KEY_UP) {
+ pPlayView->pCallback->pEventKeyUp = pFunc;
+ }
+
+ return TRUE;
+}
+
+bool vp_play_view_unset_callback(play_view_handle pViewHandle, video_play_callback_type_t nCbType)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ if (!pPlayView->pCallback) {
+ VideoLogError("PlayView Callback is NULL");
+ return FALSE;
+ }
+
+ if (nCbType == VIDEO_PLAY_CB_TYPE_REALIZE) {
+ pPlayView->pCallback->pRealizeCb = NULL;
+ } else if (nCbType == VIDEO_PLAY_CB_TYPE_DESTORY) {
+ pPlayView->pCallback->pDestroyCb = NULL;
+ } else if (nCbType == VIDEO_PLAY_CB_TYPE_EVENT_KEY_DOWN) {
+ pPlayView->pCallback->pEventKeyDown = NULL;
+ } else if (nCbType == VIDEO_PLAY_CB_TYPE_EVENT_KEY_UP) {
+ pPlayView->pCallback->pEventKeyUp = NULL;
+ }
+
+ return TRUE;
+}
+
+Evas_Object *vp_play_view_get_main_window(play_view_handle pViewHandle)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ return pPlayView->pWin;
+}
+
+bool vp_play_view_change_style_minimode_to_fullmode(play_view_handle pViewHandle, video_play_launching_type_t nLaunchingType)
+{
+ if (!pViewHandle) {
+ VideoLogError("PlayView handle is NULL");
+ return FALSE;
+ }
+
+ PlayView *pPlayView = (PlayView *)pViewHandle;
+
+ pPlayView->nLaunchingType = nLaunchingType;
+ if (nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE || nLaunchingType == VIDEO_PLAY_TYPE_EMAIL) {
+ //change multi mode to mini mode
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/widget/include/vp-play-bookmark.h b/playview/src/widget/include/vp-play-bookmark.h
new file mode 100644
index 0000000..b5672f2
--- /dev/null
+++ b/playview/src/widget/include/vp-play-bookmark.h
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *bookmark_handle;
+
+typedef void (*BookmarkCaptureStartCbFunc)(void *pUserData);
+typedef void (*BookmarkItemSelectCbFunc)(int nPos, const char *szPath, void* pUserData);
+
+
+bookmark_handle vp_play_bookmark_create(Evas_Object *pParent);
+void vp_play_bookmark_destroy(bookmark_handle pWidgetHandle);
+bool vp_play_bookmark_realize(bookmark_handle pWidgetHandle);
+bool vp_play_bookmark_unrealize(bookmark_handle pWidgetHandle);
+bool vp_play_bookmark_is_realize(bookmark_handle pWidgetHandle, bool *bIsRealize);
+Evas_Object *vp_play_bookmark_get_object(bookmark_handle pWidgetHandle);
+bool vp_play_bookmark_set_capture_callback(bookmark_handle pWidgetHandle, BookmarkCaptureStartCbFunc func);
+bool vp_play_bookmark_set_item_select_callback(bookmark_handle pWidgetHandle, BookmarkItemSelectCbFunc func);
+bool vp_play_bookmark_set_user_param(bookmark_handle pWidgetHandle, void *pUserData);
+bool vp_play_bookmark_set_media_url(bookmark_handle pWidgetHandle, const char *szMediaURL);
+bool vp_play_bookmark_set_edit_mode(bookmark_handle pWidgetHandle, bool bEditMode);
+bool vp_play_bookmark_get_edit_mode(bookmark_handle pWidgetHandle, bool *bEditMode);
+bool vp_play_bookmark_get_pressed_status(bookmark_handle pWidgetHandle, bool *bPressed);
+
+bool vp_play_bookmark_insert_item(bookmark_handle pWidgetHandle, const char *szBookmarkURL, int nPos);
+bool vp_play_bookmark_get_item_count(bookmark_handle pWidgetHandle, int *nCount);
+
diff --git a/playview/src/widget/include/vp-play-brightness-popup.h b/playview/src/widget/include/vp-play-brightness-popup.h
new file mode 100644
index 0000000..01d52f3
--- /dev/null
+++ b/playview/src/widget/include/vp-play-brightness-popup.h
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *brightness_handle;
+
+brightness_handle vp_play_brightness_create(Evas_Object *pParent);
+void vp_play_brightness_destroy(brightness_handle pBrightnessHandle);
+bool vp_play_brightness_realize(brightness_handle pBrightnessHandlee);
+bool vp_play_brightness_unrealize(brightness_handle pBrightnessHandlee);
+bool vp_play_brightness_set_landscape_mode(brightness_handle pBrightnessHandle, bool bLandscape);
+bool vp_play_brightness_is_realize(brightness_handle pBrightnessHandle, bool *bIsRealize);
+bool vp_play_brightness_set_value(brightness_handle pBrightnessHandle, int nCurVal);
+bool vp_play_brightness_get_value(int *nCurVal);
+bool vp_play_brightness_get_max_value(int *nMaxVal);
+bool vp_play_brightness_get_min_value(int *nMinVal);
+
+
diff --git a/playview/src/widget/include/vp-play-button.h b/playview/src/widget/include/vp-play-button.h
new file mode 100644
index 0000000..b2a87b6
--- /dev/null
+++ b/playview/src/widget/include/vp-play-button.h
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+Evas_Object *vp_button_create(Evas_Object *pParent,const char *pStyle, const char *pTxt, Evas_Smart_Cb pClickFunc, Evas_Smart_Cb pPressFunc, Evas_Smart_Cb pUnpressFunc, void *pUserData);
+Evas_Object *vp_button_create_icon(Evas_Object *pParent, const char *pEdjPath, const char *pGroupName);
+Evas_Object *vp_button_create_image(Evas_Object *pParent, const char *pEdjPath, const char *pGroupName);
+Evas_Object *vp_navirame_button_create(Evas_Object *pParent,const char *pStyle, const char *pEdjPath, const char *pGroupName, Evas_Smart_Cb pClickFunc, void *pUserData);
+
diff --git a/playview/src/widget/include/vp-play-loading-ani.h b/playview/src/widget/include/vp-play-loading-ani.h
new file mode 100644
index 0000000..dcfdfec
--- /dev/null
+++ b/playview/src/widget/include/vp-play-loading-ani.h
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef enum {
+ VIDEO_LOADING_SIZE_SMALL = 0x00,
+ VIDEO_LOADING_SIZE_MIDUM,
+ VIDEO_LOADING_SIZE_LARGE,
+ VIDEO_LOADING_SIZE_XLARGE,
+}video_loading_size_t;
+
+Evas_Object *vp_play_loading_ani_create(Evas_Object *pParent, video_loading_size_t nSize);
+void vp_play_loading_ani_destroy(Evas_Object *pProgress);
+
diff --git a/playview/src/widget/include/vp-play-more.h b/playview/src/widget/include/vp-play-more.h
new file mode 100644
index 0000000..5f90ddb
--- /dev/null
+++ b/playview/src/widget/include/vp-play-more.h
@@ -0,0 +1,17 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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/playview/src/widget/include/vp-play-popup.h b/playview/src/widget/include/vp-play-popup.h
new file mode 100644
index 0000000..0280b55
--- /dev/null
+++ b/playview/src/widget/include/vp-play-popup.h
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+#include <efl_extension.h>
+
+typedef void (*PopupCloseCbFunc)(int nType, bool bPause, void* pUserData);
+
+typedef enum {
+ POPUP_STYLE_DEFAULT_NO_CANCEL_BTN = 0x00,
+ POPUP_STYLE_DEFAULT_WITH_CANCEL_BTN,
+ POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN,
+ POPUP_STYLE_MENU_LIST_WITH_CANCEL_BTN,
+ POPUP_STYLE_EXPAND_NO_CANCEL_BTN,
+ POPUP_STYLE_EXPAND_WITH_CANCEL_BTN,
+ POPUP_STYLE_PROGRESS_WITH_NO_CANCEL_BTN,
+ POPUP_STYLE_FULLSCREEN_NO_CANCEL_BTN,
+ POPUP_STYLE_FULLSCREEN_NO_TITLE_NO_CANCEL_BTN
+}video_popup_style_t;
+
+typedef enum
+{
+ VIDEOS_POPUP_NONE = 0x00,
+ VIDEO_POPUP_DEFAULT,
+ VIDEO_POPUP_2_TEXT,
+ VIDEO_POPUP_2_TEXT_1_ICON,
+ VIDEO_POPUP_LOADING_LIST,
+ VIDEOS_POPUP_MAX
+}video_list_popup_style_t;
+
+Evas_Object *vp_popup_create(Evas_Object *pParent, video_popup_style_t nStyle, char *szTitle, char *szContent, double dTimeOut, Evas_Smart_Cb pTimeoutFunc, Eext_Event_Cb pCancelKeyCb, Evas_Object_Event_Cb pCancelMouseCb, void *pUserData);
+Evas_Object *vp_two_button_popup_create( Evas_Object *pParent, char *szTitle, char *szContent, char *pLeftButtonText, Evas_Smart_Cb leftButtonCb, char *pRightButtonText, Evas_Smart_Cb rightButtonCb, const void *pUserData );
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+Evas_Object *vp_title_two_button_popup_create( Evas_Object *pParent, char *szTitle, char *szContent, char *pLeftButtonText, Evas_Smart_Cb leftButtonCb, char *pRightButtonText, Evas_Smart_Cb rightButtonCb, const void *pUserData );
+#endif
+bool vp_popup_check_landspace_by_win(Evas_Object *pWin);
+void vp_popup_set_popup_min_size(Evas_Object *pWin, Evas_Object *pBox, int nListCount, video_list_popup_style_t eStyle);
+
diff --git a/playview/src/widget/include/vp-play-progressbar.h b/playview/src/widget/include/vp-play-progressbar.h
new file mode 100644
index 0000000..4f3cb71
--- /dev/null
+++ b/playview/src/widget/include/vp-play-progressbar.h
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *progressbar_handle;
+
+
+typedef enum {
+ VIDEO_PROGRESSBAR_TYPE_NORMAL = 0x00,
+ VIDEO_PROGRESSBAR_TYPE_TRIM ,
+}video_progressbar_type_t;
+
+progressbar_handle vp_play_progressbar_create(Evas_Object *pParent, video_progressbar_type_t nType);
+void vp_play_progressbar_destroy(progressbar_handle pWidgetHandle);
+bool vp_play_progressbar_realize(progressbar_handle pWidgetHandle);
+bool vp_play_progressbar_unrealize(progressbar_handle pWidgetHandle);
+Evas_Object *vp_play_progressbar_get_object(progressbar_handle pWidgetHandle);
+bool vp_play_progressbar_set_duration(progressbar_handle pWidgetHandle, int nDuration);
+bool vp_play_progressbar_set_position(progressbar_handle pWidgetHandle, int nPosition);
+bool vp_play_progressbar_set_buffering_position(progressbar_handle pWidgetHandle, int nBufferinPosition);
+bool vp_play_progressbar_set_landscape_mode(progressbar_handle pWidgetHandle, bool bLandscape);
+bool vp_play_progressbar_set_opacity(progressbar_handle pWidgetHandle, bool bDefault);
+Evas_Object *vp_play_progressbar_get_focus_object(progressbar_handle pWidgetHandle);
+
diff --git a/playview/src/widget/include/vp-play-subtitle.h b/playview/src/widget/include/vp-play-subtitle.h
new file mode 100644
index 0000000..570b5ac
--- /dev/null
+++ b/playview/src/widget/include/vp-play-subtitle.h
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *subtitle_handle;
+
+typedef enum {
+ VP_SUBTITLE_SMALL = 0x00,
+ VP_SUBTITLE_MEDIUM,
+ VP_SUBTITLE_LARGE,
+}video_subtitle_size_t;
+
+typedef enum {
+ VP_SUBTITLE_COLOR_WHITE = 0x00,
+ VP_SUBTITLE_COLOR_BLACK,
+ VP_SUBTITLE_COLOR_RED,
+ VP_SUBTITLE_COLOR_GREEN,
+ VP_SUBTITLE_COLOR_BLUE,
+ VP_SUBTITLE_COLOR_YELLOW,
+ VP_SUBTITLE_COLOR_MAGENTA,
+ VP_SUBTITLE_COLOR_CYAN,
+ VP_SUBTITLE_COLOR_CUSTOM,
+ VP_SUBTITLE_COLOR_NONE
+}video_subtitle_color_t;
+
+typedef enum {
+ VP_SUBTITLE_ALIGNMENT_LEFT = 0x00,
+ VP_SUBTITLE_ALIGNMENT_CENTER,
+ VP_SUBTITLE_ALIGNMENT_RIGHT
+}vp_subtitle_alignment_t;
+
+typedef enum {
+ VP_SUBTITLE_TYPE_NORMAL = 0x00,
+ VP_SUBTITLE_TYPE_MULTI
+}vp_subtitle_type_t;
+
+typedef struct _SubtitleWidget
+{
+ Evas_Object *pParent;
+ Evas_Object *pLayout;
+ Evas_Object *pTextBlock;
+ char *szFontName;
+ char *szText;
+ video_subtitle_size_t nSize;
+ int nEdge;
+ float fZoom;
+
+#ifdef SUBTITLE_K_FEATURE
+ vp_subtitle_alignment_t nAlignment;
+#endif
+
+#ifndef SUBTITLE_K_FEATURE
+ video_subtitle_color_t nFontColor;
+ video_subtitle_color_t nBGColor;
+#else
+ char *pFontColorHex;
+ char *pBGColorHex;
+ char *pCaptionWinColorHex;
+#endif
+ bool bIsRealize;
+ bool bShowCaptionWin;
+}Subtitle;
+
+subtitle_handle vp_play_subtitle_create(Evas_Object *pParent, vp_subtitle_type_t nType);
+void vp_play_subtitle_destroy(subtitle_handle pWidgetHandle);
+bool vp_play_subtitle_realize(subtitle_handle pWidgetHandle);
+bool vp_play_subtitle_unrealize(subtitle_handle pWidgetHandle);
+bool vp_play_subtitle_is_realize(subtitle_handle pWidgetHandle, bool *bIsRealize);
+Evas_Object *vp_play_subtitle_get_object(subtitle_handle pWidgetHandle);
+bool vp_play_subtitle_set_font(subtitle_handle pWidgetHandle, char *szFontName);
+bool vp_play_subtitle_get_font(subtitle_handle pWidgetHandle, char **szFontName);
+bool vp_play_subtitle_set_size(subtitle_handle pWidgetHandle, video_subtitle_size_t nSize);
+bool vp_play_subtitle_get_size(subtitle_handle pWidgetHandle, video_subtitle_size_t *nSize);
+bool vp_play_subtitle_set_size_zoom(subtitle_handle pWidgetHandle, float fZoom);
+bool vp_play_subtitle_get_size_zoom(subtitle_handle pWidgetHandle, float *fZoom);
+void vp_play_subtitle_text_update(Subtitle *pSubtitle, const char *szTxt);
+#ifndef SUBTITLE_K_FEATURE
+bool vp_play_subtitle_set_color(subtitle_handle pWidgetHandle, video_subtitle_color_t nColor);
+bool vp_play_subtitle_get_color(subtitle_handle pWidgetHandle, video_subtitle_color_t *nColor);
+bool vp_play_subtitle_set_bg_color(subtitle_handle pWidgetHandle, video_subtitle_color_t nColor);
+bool vp_play_subtitle_get_bg_color(subtitle_handle pWidgetHandle, video_subtitle_color_t *nColor);
+#else
+bool vp_play_subtitle_get_color(subtitle_handle pWidgetHandle, char **pColorHex);
+bool vp_play_subtitle_set_color(subtitle_handle pWidgetHandle, char *pColorHex);
+bool vp_play_subtitle_get_bg_color(subtitle_handle pWidgetHandle, char **pColorHex);
+bool vp_play_subtitle_set_bg_color(subtitle_handle pWidgetHandle, char *pColorHex);
+#endif
+bool vp_play_subtitle_set_text(subtitle_handle pWidgetHandle, const char *szText);
+bool vp_play_subtitle_get_text(subtitle_handle pWidgetHandle, char **szText);
+
+#ifdef SUBTITLE_K_FEATURE
+bool vp_play_subtitle_set_alignment(subtitle_handle pWidgetHandle, vp_subtitle_alignment_t nAlignment);
+bool vp_play_subtitle_get_alignment(subtitle_handle pWidgetHandle, vp_subtitle_alignment_t *nAlignment);
+bool vp_play_subtitle_set_caption_win_color(subtitle_handle pWidgetHandle, bool bShowCaption);
+bool vp_play_subtitle_get_geometry(subtitle_handle pWidgetHandle, bool bLandscape, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+#endif
+
+bool vp_play_subtitle_set_edge(subtitle_handle pWidgetHandle, int nEdge);
+bool vp_play_subtitle_get_edge(subtitle_handle pWidgetHandle, int *nEdge);
+
+bool vp_play_subtitle_get_size_formatted(subtitle_handle pWidgetHandle, Evas_Coord *ww, Evas_Coord *hh);
diff --git a/playview/src/widget/include/vp-play-volume-popup.h b/playview/src/widget/include/vp-play-volume-popup.h
new file mode 100644
index 0000000..49a124c
--- /dev/null
+++ b/playview/src/widget/include/vp-play-volume-popup.h
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *volume_popup_handle;
+
+volume_popup_handle vp_play_volume_popup_create(Evas_Object *pParent);
+void vp_play_volume_popup_destroy(volume_popup_handle pVolumeHandle);
+bool vp_play_volume_popup_realize(volume_popup_handle pVolumeHandle);
+bool vp_play_volume_popup_unrealize(volume_popup_handle pVolumeHandle);
+bool vp_play_volume_popup_set_landscape_mode(volume_popup_handle pVolumeHandle, bool bLandscape);
+bool vp_play_volume_popup_is_realize(volume_popup_handle pVolumeHandle, bool *bIsRealize);
+bool vp_play_volume_popup_set_value(volume_popup_handle pVolumeHandle, int nCurVal);
+bool vp_play_volume_popup_get_value(int *nCurVal);
+bool vp_play_volume_popup_get_max_value(int *nMaxVal);
+bool vp_play_volume_popup_is_mute(volume_popup_handle pVolumeHandle, bool *bIsMute);
+
+
+
diff --git a/playview/src/widget/include/vp-play-volume.h b/playview/src/widget/include/vp-play-volume.h
new file mode 100644
index 0000000..61ef6fb
--- /dev/null
+++ b/playview/src/widget/include/vp-play-volume.h
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#pragma once
+
+#include <stdbool.h>
+#include <Elementary.h>
+
+typedef void *volume_handle;
+
+typedef void (*NormalVolumeChangeCbFunc)(int nValue, void* pUserData);
+
+volume_handle vp_play_volume_create(Evas_Object *pParent, void *pPlayerHandle, NormalVolumeChangeCbFunc pFunc);
+void vp_play_volume_destroy(volume_handle pVolumeHandle);
+bool vp_play_volume_realize(volume_handle pVolumeHandle, Evas_Object *pWin);
+bool vp_play_volume_unrealize(volume_handle pVolumeHandle);
+bool vp_play_volume_set_landscape_mode(volume_handle pVolumeHandle, bool bLandscape, Evas_Object *pWin);
+bool vp_play_volume_set_user_data(volume_handle pVolumeHandle, void *pUserData);
+bool vp_play_volume_is_realize(volume_handle pVolumeHandle, bool *bIsRealize);
+bool vp_play_volume_increase_value(volume_handle pVolumeHandle);
+bool vp_play_volume_decrease_value(volume_handle pVolumeHandle);
+bool vp_play_volume_update_value(volume_handle pVolumeHandle);
+bool vp_play_volume_is_mute(volume_handle pVolumeHandle, bool *bIsMute);
+int vp_play_volume_get_max_value(volume_handle pVolumeHandle);
+int vp_play_volume_get_value(volume_handle pVolumeHandle);
+bool vp_play_volume_set_value(volume_handle pVolumeHandle, int nVolumeVal);
+bool vp_play_volume_set_mute_value(volume_handle pVolumeHandle);
+int vp_play_volume_get_mute_value(volume_handle pVolumeHandle);
+bool vp_play_volume_set_focus_in(volume_handle pVolumeHandle);
+bool vp_play_volume_set_mouse_callbacks(volume_handle pVolumeHandle, Evas_Object *pWin);
+bool vp_play_volume_unset_mouse_callbacks(volume_handle pVolumeHandle, Evas_Object *pWin);
diff --git a/playview/src/widget/vp-play-bookmark.c b/playview/src/widget/vp-play-bookmark.c
new file mode 100644
index 0000000..46e2d49
--- /dev/null
+++ b/playview/src/widget/vp-play-bookmark.c
@@ -0,0 +1,1224 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-bookmark.h"
+
+#include "vp-play-button.h"
+#include "vp-play-util.h"
+
+#include "vp-media-contents.h"
+
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+#define VP_BOOKMARK_ITEM_WIDTH (152 * elm_config_scale_get())
+#define VP_BOOKMARK_ITEM_HEIGHT (132 * elm_config_scale_get())
+
+#define VP_BOOKMARK_THUMB_WIDTH (146 * elm_config_scale_get())
+#define VP_BOOKMARK_THUMB_HEIGHT (88 * elm_config_scale_get())
+
+
+#define VP_BOOKMARK_GENGRID_DATA_KEY "vp.bookmark.gengrid"
+#define VP_BOOKMARK_GENGRID_ITEM_DATA_KEY "vp.bookmark.gengrid.item"
+
+#define VP_BOOKMARK_PLAY_TIME_LENGTH 9
+#define VP_BOOKMARK_PLAY_TIME_FORMAT "02u:%02u:%02u"
+#define VP_BOOKMARK_PLAY_TIME_ARGS(t) \
+ (t) / (60 * 60), \
+ ((t) / 60) % 60, \
+ (t) % 60
+
+typedef struct _BookmarkItem {
+ Elm_Object_Item *pElmItem;
+ char *szFilePath;
+ int nPos;
+} BookmarkItem;
+
+typedef struct _BookmarkWidget {
+ Evas_Object *pParent;
+ Evas_Object *pLayout;
+ Evas_Object *pAddButton;
+ Evas_Object *pGengrid;
+
+ Elm_Object_Item *pLastItem;
+ Elm_Gengrid_Item_Class *pItemClass;
+
+ char *szMediaURL;
+ char *szMediaID;
+
+ bool bIsRealize;
+ bool bEditMode;
+ bool bPressed;
+ GList *pItemList;
+
+ BookmarkCaptureStartCbFunc pCaptureCb;
+ BookmarkItemSelectCbFunc pSelectCb;
+
+ void *pUserData;
+} BookmarkWidget;
+
+static void _vp_play_bookmark_destory_handle(BookmarkWidget *
+ pBookmarkWidget);
+static void _vp_play_bookmark_gengrid_item_update(BookmarkWidget *
+ pBookmarkWidget);
+static void _vp_play_bookmark_gengrid_item_clear(BookmarkWidget *
+ pBookmarkWidget);
+/* callbackk functions */
+
+static void __vp_play_bookmark_delete_btn_clicked_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+ VideoLogError("clicked");
+}
+
+static void __vp_play_bookmark_delete_btn_press_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+ VideoLogError("press");
+
+ Evas_Object *pIcon = NULL;
+ pIcon =
+ elm_object_part_content_get(pObj, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon =
+ vp_button_create_icon(pObj, VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_BOOKMARK_RES_DEL_PRESS);
+ elm_object_part_content_set(pObj, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ BookmarkWidget *pBookmarkWidget =
+ (BookmarkWidget *) evas_object_data_get(pObj,
+ VP_BOOKMARK_GENGRID_ITEM_DATA_KEY);
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+
+ BookmarkItem *pBookmarkItem = (BookmarkItem *) pUserData;
+
+ if (pBookmarkWidget->bEditMode == FALSE) {
+ return;
+ }
+
+ if (!vp_media_contents_bookmark_delete
+ (pBookmarkWidget->szMediaID, pBookmarkItem->nPos)) {
+ VideoLogError("vp_media_contents_bookmark_delete is fail");
+ return;
+ }
+
+ pBookmarkWidget->pItemList =
+ g_list_remove(pBookmarkWidget->pItemList, (void *) pBookmarkItem);
+
+ VP_EVAS_ITEM_DEL(pBookmarkItem->pElmItem);
+
+ VP_FREE(pBookmarkItem->szFilePath);
+ VP_FREE(pBookmarkItem);
+
+ pBookmarkItem = NULL;
+
+}
+
+static void __vp_play_bookmark_delete_btn_unpress_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+ VideoLogError("unpress");
+
+ Evas_Object *pIcon = NULL;
+ pIcon =
+ elm_object_part_content_get(pObj, VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon =
+ vp_button_create_icon(pObj, VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_BOOKMARK_RES_DEL);
+ elm_object_part_content_set(pObj, VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+}
+
+static Evas_Object *__vp_play_bookmark_gengrid_icon_get_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObj,
+ const char
+ *pPart)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ if (pPart == NULL) {
+ VideoLogError("pPart is NULL");
+ return NULL;
+ }
+
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return NULL;
+ }
+
+ BookmarkItem *pBookmarkItem = (BookmarkItem *) pUserData;
+
+ if (!strcmp(pPart, "elm.swallow.icon")) {
+ Evas_Object *layout = NULL;
+ Evas_Object *bg = NULL;
+ char buf[VP_BOOKMARK_PLAY_TIME_LENGTH] = { 0, };
+
+ layout = elm_layout_add(pObj);
+ bg = elm_bg_add(pObj);
+
+ if (bg == NULL || layout == NULL) {
+ VideoLogError("evas object is NULL");
+ return NULL;
+ }
+ elm_layout_file_set(layout, VP_PLAY_BOOKMARK_ITEM_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_BOOKMARK_ITEM);
+ elm_bg_load_size_set(bg, VP_BOOKMARK_THUMB_WIDTH,
+ VP_BOOKMARK_THUMB_HEIGHT);
+ elm_bg_file_set(bg, pBookmarkItem->szFilePath, NULL);
+ evas_object_size_hint_max_set(bg, VP_BOOKMARK_THUMB_WIDTH,
+ VP_BOOKMARK_THUMB_HEIGHT);
+
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bg, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ elm_object_part_content_set(layout,
+ VP_PLAY_SWALLOW_BOOKMARK_ITEM_ICON,
+ bg);
+
+ snprintf(buf, VP_BOOKMARK_PLAY_TIME_LENGTH,
+ "%" VP_BOOKMARK_PLAY_TIME_FORMAT,
+ VP_BOOKMARK_PLAY_TIME_ARGS(pBookmarkItem->nPos / 1000));
+
+ elm_object_part_text_set(layout,
+ VP_PLAY_SWALLOW_BOOKMARK_ITEM_TXT, buf);
+
+ evas_object_show(bg);
+ evas_object_show(layout);
+
+ return layout;
+
+ } else if (!strcmp(pPart, "elm.swallow.end")) {
+ BookmarkWidget *pBookmarkWidget =
+ (BookmarkWidget *) evas_object_data_get(pObj,
+ VP_BOOKMARK_GENGRID_DATA_KEY);
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return NULL;
+ }
+ if (pBookmarkWidget->bEditMode == FALSE) {
+ return NULL;
+ }
+
+ Evas_Object *layout = NULL;
+ Evas_Object *pIcon = NULL;
+ Evas_Object *pBtn = NULL;
+
+ layout = elm_layout_add(pObj);
+ elm_layout_file_set(layout, VP_PLAY_BOOKMARK_ITEM_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_BOOKMARK_ITEM_END);
+ pBtn =
+ vp_button_create(layout, "playview/custom/icon_48_48", NULL,
+ (Evas_Smart_Cb)
+ __vp_play_bookmark_delete_btn_clicked_cb,
+ (Evas_Smart_Cb)
+ __vp_play_bookmark_delete_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_bookmark_delete_btn_unpress_cb,
+ (void *) pBookmarkItem);
+
+ evas_object_data_set(pBtn, VP_BOOKMARK_GENGRID_ITEM_DATA_KEY,
+ (void *) pBookmarkWidget);
+
+ pIcon =
+ vp_button_create_icon(pBtn, VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_BOOKMARK_RES_DEL);
+ elm_object_part_content_set(pBtn, VP_PLAY_SWALLOW_BUTTON_ICON,
+ pIcon);
+
+ elm_object_part_content_set(layout,
+ VP_PLAY_SWALLOW_BOOKMARK_ITEM_DEL,
+ pBtn);
+
+ evas_object_show(pBtn);
+ evas_object_show(layout);
+
+ return layout;
+ }
+ return NULL;
+
+}
+
+
+static void __vp_play_bookmark_longpress_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ VideoLogInfo("");
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+
+ if (pBookmarkWidget->bEditMode == EINA_TRUE) {
+ pBookmarkWidget->bEditMode = EINA_FALSE;
+ pBookmarkWidget->bPressed = FALSE;
+
+ } else {
+ pBookmarkWidget->bEditMode = EINA_TRUE;
+ }
+
+ _vp_play_bookmark_gengrid_item_update(pBookmarkWidget);
+
+}
+
+static void __vp_play_bookmark_scroll_cb(void *pUserData,
+ Evas_Object *pObj, void *pEvent)
+{
+ return;
+}
+
+static void __vp_play_bookmark_change_cb(void *pUserData,
+ Evas_Object *pObj, void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("bookmark data is NULL");
+ return;
+ }
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+
+ if (pBookmarkWidget->pLastItem == NULL) {
+ return;
+ }
+
+ elm_gengrid_item_bring_in(pBookmarkWidget->pLastItem,
+ ELM_GENGRID_ITEM_SCROLLTO_MIDDLE);
+ pBookmarkWidget->pLastItem = NULL;
+}
+
+static void __vp_play_bookmark_pressed_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("bookmark data is NULL");
+ return;
+ }
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+
+ pBookmarkWidget->bPressed = TRUE;
+
+ if (pBookmarkWidget->pSelectCb) {
+ pBookmarkWidget->pSelectCb(-1, NULL, pBookmarkWidget->pUserData);
+ }
+}
+
+
+static void __vp_play_bookmark_released_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("bookmark data is NULL");
+ return;
+ }
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+
+ pBookmarkWidget->bPressed = FALSE;
+}
+
+
+static void __vp_play_bookmark_item_select_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (pEvent == NULL) {
+ VideoLogError("pEvent is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+ BookmarkItem *pBookmarkItem = NULL;
+ pBookmarkItem =
+ (BookmarkItem *) elm_object_item_data_get((Elm_Object_Item *)
+ pEvent);
+
+ elm_gengrid_item_selected_set(pBookmarkItem->pElmItem, EINA_FALSE);
+
+ if (pBookmarkWidget->bEditMode) {
+ pBookmarkWidget->bEditMode = FALSE;
+ pBookmarkWidget->bPressed = FALSE;
+ _vp_play_bookmark_gengrid_item_update(pBookmarkWidget);
+ VideoLogError("+++");
+ return;
+ } else {
+ if (pBookmarkWidget->pSelectCb) {
+ pBookmarkWidget->pSelectCb(pBookmarkItem->nPos,
+ pBookmarkItem->szFilePath,
+ pBookmarkWidget->pUserData);
+ }
+ }
+}
+
+
+static void __vp_play_bookmark_btn_clicked_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (pUserData == NULL) {
+ VideoLogError("bookmark data is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+
+ if (pBookmarkWidget->bEditMode) {
+ pBookmarkWidget->bEditMode = FALSE;
+ pBookmarkWidget->bPressed = FALSE;
+ _vp_play_bookmark_gengrid_item_update(pBookmarkWidget);
+ }
+
+ if (pBookmarkWidget->pAddButton == pObj) {
+ if (pBookmarkWidget->pCaptureCb) {
+ pBookmarkWidget->pCaptureCb(pBookmarkWidget->pUserData);
+ }
+ }
+}
+
+static void __vp_play_bookmark_btn_press_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+ if (pBookmarkWidget->pAddButton == pObj) {
+ Evas_Object *pIcon = NULL;
+ pIcon =
+ elm_object_part_content_get(pBookmarkWidget->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon =
+ vp_button_create_icon(pBookmarkWidget->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_BOOKMARK_RES_ADD_PRESS);
+ elm_object_part_content_set(pBookmarkWidget->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+ }
+}
+
+static void __vp_play_bookmark_btn_unpress_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pUserData;
+ if (pBookmarkWidget->pAddButton == pObj) {
+ Evas_Object *pIcon = NULL;
+ pIcon =
+ elm_object_part_content_get(pBookmarkWidget->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON);
+ if (pIcon) {
+ evas_object_del(pIcon);
+ pIcon = NULL;
+ }
+
+ pIcon =
+ vp_button_create_icon(pBookmarkWidget->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_BOOKMARK_RES_ADD);
+ elm_object_part_content_set(pBookmarkWidget->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+ }
+}
+
+
+/* internal functions */
+
+static void _vp_play_bookmark_destory_handle(BookmarkWidget *
+ pBookmarkWidget)
+{
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+
+ _vp_play_bookmark_gengrid_item_clear(pBookmarkWidget);
+
+ if (pBookmarkWidget->pItemClass) {
+ elm_gengrid_item_class_free(pBookmarkWidget->pItemClass);
+ pBookmarkWidget->pItemClass = NULL;
+ }
+
+ VP_EVAS_DEL(pBookmarkWidget->pGengrid);
+ VP_EVAS_DEL(pBookmarkWidget->pAddButton);
+ VP_EVAS_DEL(pBookmarkWidget->pLayout);
+
+ VP_FREE(pBookmarkWidget->szMediaID);
+ VP_FREE(pBookmarkWidget->szMediaURL);
+
+ VP_FREE(pBookmarkWidget);
+}
+
+static Elm_Object_Item *_vp_play_bookmark_find_before_item(GList *pList,
+ int nPosition,
+ int *nPos)
+{
+ if (pList == NULL) {
+ VideoLogError("pBookmarkItem list is NULL");
+ return NULL;
+ }
+
+ int nCnt = 0;
+ int idx = 0;
+
+ nCnt = g_list_length(pList);
+ for (idx = 0; idx < nCnt; idx++) {
+ BookmarkItem *pBookmarkItem = NULL;
+ pBookmarkItem = (BookmarkItem *) g_list_nth_data(pList, idx);
+ if (pBookmarkItem) {
+ if (pBookmarkItem->nPos > nPosition) {
+ VideoLogError("Item : %d , nPosition : %d",
+ pBookmarkItem->nPos, nPosition);
+ *nPos = idx + 1;
+ return pBookmarkItem->pElmItem;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+
+static gint __vp_play_bookmark_compare_cb(BookmarkItem *pItem1,
+ BookmarkItem *pItem2)
+{
+ if (pItem1 == NULL) {
+ VideoLogError("pItem1 is NULL");
+ return 0;
+ }
+
+ if (pItem2 == NULL) {
+ VideoLogError("pItem2 is NULL");
+ return 0;
+ }
+
+ if (pItem1->nPos > pItem2->nPos) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+
+static void _vp_play_bookmark_gengrid_item_append(BookmarkWidget *
+ pBookmarkWidget,
+ BookmarkItem *pItem)
+{
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+
+ if (pItem == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+ if (pBookmarkWidget->pItemClass == NULL) {
+ pBookmarkWidget->pItemClass = elm_gengrid_item_class_new();
+ if (pBookmarkWidget->pItemClass == NULL) {
+ VideoLogError("gengrid item class alloc fail");
+ return;
+ }
+ }
+
+ pBookmarkWidget->pItemClass->item_style = "bookmark";
+ pBookmarkWidget->pItemClass->func.text_get = NULL;
+ pBookmarkWidget->pItemClass->func.content_get =
+ (void *) __vp_play_bookmark_gengrid_icon_get_cb;
+ pBookmarkWidget->pItemClass->func.state_get = NULL;
+ pBookmarkWidget->pItemClass->func.del = NULL;
+
+ Elm_Object_Item *pBeforeItem = NULL;
+ int nPos = 0;
+ pBeforeItem =
+ _vp_play_bookmark_find_before_item(pBookmarkWidget->pItemList,
+ pItem->nPos, &nPos);
+
+ if (pBeforeItem) {
+ pItem->pElmItem =
+ elm_gengrid_item_insert_before(pBookmarkWidget->pGengrid,
+ pBookmarkWidget->pItemClass,
+ (void *) pItem, pBeforeItem,
+ __vp_play_bookmark_item_select_cb,
+ (void *) pBookmarkWidget);
+ } else {
+ pItem->pElmItem =
+ elm_gengrid_item_append(pBookmarkWidget->pGengrid,
+ pBookmarkWidget->pItemClass,
+ (void *) pItem,
+ __vp_play_bookmark_item_select_cb,
+ (void *) pBookmarkWidget);
+ }
+
+ pBookmarkWidget->pLastItem = pItem->pElmItem;
+
+ pBookmarkWidget->pItemList =
+ g_list_insert_sorted(pBookmarkWidget->pItemList, pItem,
+ (GCompareFunc)
+ __vp_play_bookmark_compare_cb);
+}
+
+static void _vp_play_bookmark_gengrid_item_update(BookmarkWidget *
+ pBookmarkWidget)
+{
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+
+ if (pBookmarkWidget->pItemList == NULL) {
+ VideoLogError("pItemList is NULL");
+ return;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pBookmarkWidget->pItemList);
+ for (i = 0; i < nCount; i++) {
+ BookmarkItem *pBookmarkItem = NULL;
+ pBookmarkItem =
+ (BookmarkItem *) g_list_nth_data(pBookmarkWidget->pItemList,
+ i);
+ if (pBookmarkItem) {
+ if (pBookmarkItem->pElmItem) {
+ elm_gengrid_item_update(pBookmarkItem->pElmItem);
+ elm_gengrid_item_selected_set(pBookmarkItem->pElmItem,
+ EINA_FALSE);
+ }
+ }
+ }
+}
+
+static void _vp_play_bookmark_gengrid_item_clear(BookmarkWidget *
+ pBookmarkWidget)
+{
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+
+ if (pBookmarkWidget->pItemList == NULL) {
+ VideoLogError("pItemList is NULL");
+ return;
+ }
+
+ int nCount = 0;
+ int i = 0;
+
+ nCount = g_list_length(pBookmarkWidget->pItemList);
+ for (i = 0; i < nCount; i++) {
+ BookmarkItem *pBookmarkItem = NULL;
+
+ pBookmarkItem =
+ (BookmarkItem *) g_list_nth_data(pBookmarkWidget->pItemList,
+ i);
+ if (pBookmarkItem) {
+ VP_FREE(pBookmarkItem->szFilePath);
+ VP_FREE(pBookmarkItem);
+ }
+ }
+
+ g_list_free(pBookmarkWidget->pItemList);
+ pBookmarkWidget->pItemList = NULL;
+}
+
+
+static Evas_Object *_vp_play_bookmark_create_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_BOOKMARK_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_BOOKMARK);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+
+ return pObj;
+}
+
+
+static Evas_Object *_vp_play_bookmark_create_gengrid(Evas_Object *
+ pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_gengrid_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_gengrid_add object is NULL");
+ return NULL;
+ }
+
+ elm_gengrid_item_size_set(pObj, VP_BOOKMARK_ITEM_WIDTH,
+ VP_BOOKMARK_ITEM_HEIGHT);
+
+ elm_gengrid_align_set(pObj, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pObj, EINA_TRUE);
+ elm_gengrid_multi_select_set(pObj, EINA_TRUE);
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static void _vp_play_bookmark_layout_del_cb(void *data, Evas *e,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (data == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) data;
+ pBookmarkWidget->pLayout = NULL;
+ pBookmarkWidget->pAddButton = NULL;
+ pBookmarkWidget->pGengrid = NULL;
+}
+
+static bool _vp_play_bookmark_init_layout(BookmarkWidget *
+ pBookmarkWidget)
+{
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pBookmarkWidget->pParent;
+
+ pBookmarkWidget->pLayout = _vp_play_bookmark_create_layout(pParent);
+ if (pBookmarkWidget->pLayout == NULL) {
+ VideoLogError("_vp_play_bookmark_create_layout is fail");
+ return FALSE;
+ }
+ evas_object_event_callback_add(pBookmarkWidget->pLayout,
+ EVAS_CALLBACK_DEL,
+ _vp_play_bookmark_layout_del_cb,
+ (void *) pBookmarkWidget);
+
+ pBookmarkWidget->pGengrid =
+ _vp_play_bookmark_create_gengrid(pBookmarkWidget->pLayout);
+ if (pBookmarkWidget->pGengrid == NULL) {
+ VideoLogError("_vp_play_bookmark_create_gengrid is fail");
+ return FALSE;
+ }
+
+ evas_object_data_set(pBookmarkWidget->pGengrid,
+ VP_BOOKMARK_GENGRID_DATA_KEY,
+ (void *) pBookmarkWidget);
+
+ pBookmarkWidget->pAddButton =
+ vp_button_create(pParent, "playview/custom/icon_44_44", NULL,
+ (Evas_Smart_Cb)
+ __vp_play_bookmark_btn_clicked_cb,
+ (Evas_Smart_Cb) __vp_play_bookmark_btn_press_cb,
+ (Evas_Smart_Cb)
+ __vp_play_bookmark_btn_unpress_cb,
+ (void *) pBookmarkWidget);
+ if (!pBookmarkWidget->pAddButton) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ Evas_Object *pIcon = NULL;
+ pIcon =
+ vp_button_create_icon(pBookmarkWidget->pAddButton,
+ VP_PLAY_RESROUCE_EDJ_PATH,
+ VP_PLAY_BOOKMARK_RES_ADD);
+ elm_object_part_content_set(pBookmarkWidget->pAddButton,
+ VP_PLAY_SWALLOW_BUTTON_ICON, pIcon);
+
+ elm_object_part_content_set(pBookmarkWidget->pLayout,
+ VP_PLAY_SWALLOW_BOOKMARK_ADD_BUTTON,
+ pBookmarkWidget->pAddButton);
+ elm_object_part_content_set(pBookmarkWidget->pLayout,
+ VP_PLAY_SWALLOW_BOOKMARK_LIST,
+ pBookmarkWidget->pGengrid);
+
+ evas_object_smart_callback_add(pBookmarkWidget->pGengrid,
+ "longpressed",
+ __vp_play_bookmark_longpress_cb,
+ (void *) pBookmarkWidget);
+ evas_object_smart_callback_add(pBookmarkWidget->pGengrid, "scroll",
+ __vp_play_bookmark_scroll_cb,
+ (void *) pBookmarkWidget);
+ evas_object_smart_callback_add(pBookmarkWidget->pGengrid, "changed",
+ __vp_play_bookmark_change_cb,
+ (void *) pBookmarkWidget);
+ evas_object_smart_callback_add(pBookmarkWidget->pGengrid, "pressed",
+ __vp_play_bookmark_pressed_cb,
+ (void *) pBookmarkWidget);
+ evas_object_smart_callback_add(pBookmarkWidget->pGengrid, "released",
+ __vp_play_bookmark_released_cb,
+ (void *) pBookmarkWidget);
+
+ return TRUE;
+}
+
+
+/* external functions */
+bookmark_handle vp_play_bookmark_create(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ BookmarkWidget *pBookmarkWidget = NULL;
+
+ pBookmarkWidget = calloc(1, sizeof(BookmarkWidget));
+
+ if (pBookmarkWidget == NULL) {
+ VideoLogError("pBookmarkWidget alloc fail");
+ return NULL;
+ }
+
+ pBookmarkWidget->pParent = pParent;
+ pBookmarkWidget->bIsRealize = FALSE;
+ pBookmarkWidget->bEditMode = FALSE;
+ pBookmarkWidget->bPressed = FALSE;
+
+ if (!_vp_play_bookmark_init_layout(pBookmarkWidget)) {
+ VideoLogError("_vp_play_bookmark_init_layout is fail");
+ VP_FREE(pBookmarkWidget);
+ return NULL;
+ }
+
+ return (bookmark_handle) pBookmarkWidget;
+
+}
+
+
+void vp_play_bookmark_destroy(bookmark_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ _vp_play_bookmark_destory_handle(pBookmarkWidget);
+
+}
+
+
+bool vp_play_bookmark_realize(bookmark_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ if (pBookmarkWidget->szMediaURL == NULL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ if (pBookmarkWidget->szMediaID == NULL) {
+ VideoLogError("szMediaID is NULL");
+ return FALSE;
+ }
+
+ /* load gengrid items */
+ GList *pList = NULL;
+ int nCnt = 0;
+ int idx = 0;
+ if (!vp_media_contents_bookmark_list_get
+ (pBookmarkWidget->szMediaID, &pList)) {
+ VideoLogError("vp_media_contents_bookmark_list_get is Fail");
+ return FALSE;
+ }
+
+ nCnt = g_list_length(pList);
+ for (idx = 0; idx < nCnt; idx++) {
+ void *pItem = NULL;
+ pItem = g_list_nth_data(pList, idx);
+ VideoLogWarning("Item : %p", pItem);
+ if (pItem) {
+ char *szPath = NULL;
+ int nPos = 0;
+ if (!vp_media_contents_bookmark_get_item_info
+ (pItem, &szPath, &nPos)) {
+ VideoLogWarning
+ ("vp_media_contents_bookmark_get_item_info is Fail");
+ continue;
+ }
+
+ BookmarkItem *pBookmarkItem = NULL;
+ pBookmarkItem = calloc(1, sizeof(BookmarkItem));
+ if (pBookmarkItem == NULL) {
+ VideoLogWarning("pBookmarkItem alloc fail");
+ VP_FREE(szPath);
+ continue;
+ }
+ pBookmarkItem->pElmItem = NULL;
+ pBookmarkItem->nPos = nPos;
+ VP_STRDUP(pBookmarkItem->szFilePath, szPath);
+ VP_FREE(szPath);
+
+ _vp_play_bookmark_gengrid_item_append(pBookmarkWidget,
+ pBookmarkItem);
+ }
+ }
+
+ if (!vp_media_contents_bookmark_list_clear(pList)) {
+ VideoLogWarning("vp_media_contents_bookmark_list_clear is fail");
+ }
+
+ pList = NULL;
+
+ evas_object_show(pBookmarkWidget->pLayout);
+
+ pBookmarkWidget->bIsRealize = TRUE;
+ pBookmarkWidget->bEditMode = FALSE;
+ pBookmarkWidget->bPressed = FALSE;
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_unrealize(bookmark_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ _vp_play_bookmark_gengrid_item_clear(pBookmarkWidget);
+ if (pBookmarkWidget->pGengrid) {
+ elm_gengrid_clear(pBookmarkWidget->pGengrid);
+ }
+
+ evas_object_hide(pBookmarkWidget->pLayout);
+
+ pBookmarkWidget->bIsRealize = FALSE;
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_is_realize(bookmark_handle pWidgetHandle,
+ bool *bIsRealize)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ *bIsRealize = pBookmarkWidget->bIsRealize;
+
+ return TRUE;
+}
+
+Evas_Object *vp_play_bookmark_get_object(bookmark_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return NULL;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ return pBookmarkWidget->pLayout;
+
+}
+
+bool vp_play_bookmark_set_capture_callback(bookmark_handle pWidgetHandle,
+ BookmarkCaptureStartCbFunc
+ func)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ pBookmarkWidget->pCaptureCb = func;
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_set_item_select_callback(bookmark_handle
+ pWidgetHandle,
+ BookmarkItemSelectCbFunc
+ func)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ pBookmarkWidget->pSelectCb = func;
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_set_user_param(bookmark_handle pWidgetHandle,
+ void *pUserData)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ pBookmarkWidget->pUserData = pUserData;
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_set_media_url(bookmark_handle pWidgetHandle,
+ const char *szMediaURL)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ if (szMediaURL == NULL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+ VideoLogError("IN");
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ VP_STRDUP(pBookmarkWidget->szMediaURL, szMediaURL);
+
+ if (!vp_media_contents_get_video_id
+ (szMediaURL, &(pBookmarkWidget->szMediaID))) {
+ VideoLogError("vp_media_contents_get_video_id is fail");
+ return FALSE;
+ }
+ VideoLogError("OUT");
+
+ return TRUE;
+
+}
+
+bool vp_play_bookmark_set_edit_mode(bookmark_handle pWidgetHandle,
+ bool bEditMode)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ pBookmarkWidget->bEditMode = bEditMode;
+
+ _vp_play_bookmark_gengrid_item_update(pBookmarkWidget);
+
+ return TRUE;
+
+}
+
+bool vp_play_bookmark_get_edit_mode(bookmark_handle pWidgetHandle,
+ bool *bEditMode)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ *bEditMode = pBookmarkWidget->bEditMode;
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_get_pressed_status(bookmark_handle pWidgetHandle,
+ bool *bPressed)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ *bPressed = pBookmarkWidget->bPressed;
+
+ return TRUE;
+
+}
+
+bool vp_play_bookmark_insert_item(bookmark_handle pWidgetHandle,
+ const char *szBookmarkURL, int nPos)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ if (!vp_media_contents_bookmark_insert
+ (pBookmarkWidget->szMediaID, nPos, szBookmarkURL)) {
+ VideoLogError("vp_media_contents_bookmark_insert is fail");
+ return FALSE;
+ }
+
+ BookmarkItem *pBookmarkItem = NULL;
+ pBookmarkItem = calloc(1, sizeof(BookmarkItem));
+ if (pBookmarkItem == NULL) {
+ VideoLogWarning("pBookmarkItem alloc fail");
+ return FALSE;
+ }
+ pBookmarkItem->pElmItem = NULL;
+ pBookmarkItem->nPos = nPos;
+ VP_STRDUP(pBookmarkItem->szFilePath, szBookmarkURL);
+
+ _vp_play_bookmark_gengrid_item_append(pBookmarkWidget, pBookmarkItem);
+
+ return TRUE;
+}
+
+bool vp_play_bookmark_get_item_count(bookmark_handle pWidgetHandle,
+ int *nCount)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ BookmarkWidget *pBookmarkWidget = (BookmarkWidget *) pWidgetHandle;
+
+ if (pBookmarkWidget->pItemList == NULL) {
+ *nCount = 0;
+ } else {
+ *nCount = g_list_length(pBookmarkWidget->pItemList);
+ }
+
+ return TRUE;
+}
diff --git a/playview/src/widget/vp-play-brightness-popup.c b/playview/src/widget/vp-play-brightness-popup.c
new file mode 100644
index 0000000..e0a392b
--- /dev/null
+++ b/playview/src/widget/vp-play-brightness-popup.c
@@ -0,0 +1,710 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <pthread.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-brightness-popup.h"
+
+#include "vp-device.h"
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+#define VP_BRIGHTNESS_HIDE_LAYOUT_TIMER_INTERVAL 5.0
+
+
+#define VP_BRIGHTNESS_PORTRAIT_POS_X 128
+#define VP_BRIGHTNESS_PORTRAIT_POS_Y 275
+#define VP_BRIGHTNESS_PORTRAIT_HEIGHT 572
+
+#define VP_BRIGHTNESS_LANDSCAPE_POS_X 135
+#define VP_BRIGHTNESS_LANDSCAPE_POS_Y 67
+#define VP_BRIGHTNESS_LANDSCAPE_HEIGHT 572
+
+#define VP_BRIGHTNESS_TEXT_MAX_LEN 4
+
+#define VP_BRIGHTNESS_BRIGHTNESS_UNIT 10
+
+#define VP_BRIGHTNESS_ICON_NUM 12
+
+typedef struct _BrightnessWidget {
+ Evas_Object *pParent;
+ Evas_Object *pLayout;
+ Evas_Object *pIcon;
+
+ Ecore_Timer *pHideTimer;
+ Ecore_Timer *pDeviceTimer;
+
+ bool bLandscape;
+ bool bIsRealize;
+ bool bMouseDown;
+
+ int nMaxVal;
+ int nMinVal;
+ int nCurVal;
+
+ int nBrightnessUnit;
+} BrightnessWidget;
+
+static void _vp_play_brightness_destory_handle(BrightnessWidget *
+ pBrightnessWidget);
+static double _vp_play_brightness_get_mouse_pos_ratio(Evas_Object *pObj,
+ bool bLandscape,
+ int nCurY);
+static void _vp_play_brightness_set_value(BrightnessWidget *
+ pBrightnessWidget, int nValue);
+static void _vp_play_brightness_create_timer(BrightnessWidget *
+ pBrightnessWidget);
+
+/* callback functions */
+static void __vp_brightness_mouse_down_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ BrightnessWidget *pBrightnessWidget = (BrightnessWidget *) pUserData;
+
+ if (pBrightnessWidget->bIsRealize == FALSE) {
+ return;
+ }
+
+ Evas_Event_Mouse_Down *pMouseDownEvent =
+ (Evas_Event_Mouse_Down *) pEvent;
+
+ double dRatio =
+ _vp_play_brightness_get_mouse_pos_ratio(pBrightnessWidget->
+ pLayout,
+ pBrightnessWidget->
+ bLandscape,
+ pMouseDownEvent->canvas.
+ y);
+
+ int nCurVal =
+ pBrightnessWidget->nMaxVal -
+ (dRatio * pBrightnessWidget->nMaxVal);
+
+ _vp_play_brightness_set_value(pBrightnessWidget, nCurVal);
+
+ VP_EVAS_TIMER_DEL(pBrightnessWidget->pHideTimer);
+
+ pBrightnessWidget->bMouseDown = TRUE;
+}
+
+static void __vp_brightness_mouse_up_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ BrightnessWidget *pBrightnessWidget = (BrightnessWidget *) pUserData;
+
+ Evas_Event_Mouse_Up *pMouseUpEvent = (Evas_Event_Mouse_Up *) pEvent;
+
+ if (pBrightnessWidget->bIsRealize == FALSE) {
+ return;
+ }
+
+ double dRatio =
+ _vp_play_brightness_get_mouse_pos_ratio(pBrightnessWidget->
+ pLayout,
+ pBrightnessWidget->
+ bLandscape,
+ pMouseUpEvent->canvas.y);
+
+ int nCurVal =
+ pBrightnessWidget->nMaxVal -
+ (dRatio * pBrightnessWidget->nMaxVal);
+
+ _vp_play_brightness_set_value(pBrightnessWidget, nCurVal);
+ _vp_play_brightness_create_timer(pBrightnessWidget);
+
+ pBrightnessWidget->bMouseDown = FALSE;
+}
+
+static void __vp_brightness_mouse_move_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ BrightnessWidget *pBrightnessWidget = (BrightnessWidget *) pUserData;
+
+ Evas_Event_Mouse_Move *pMouseMoveEvent =
+ (Evas_Event_Mouse_Move *) pEvent;
+
+ if (pBrightnessWidget->bIsRealize == FALSE
+ || pBrightnessWidget->bMouseDown == FALSE) {
+ return;
+ }
+
+ double dRatio =
+ _vp_play_brightness_get_mouse_pos_ratio(pBrightnessWidget->
+ pLayout,
+ pBrightnessWidget->
+ bLandscape,
+ pMouseMoveEvent->cur.
+ canvas.y);
+
+ int nCurVal =
+ pBrightnessWidget->nMaxVal -
+ (dRatio * pBrightnessWidget->nMaxVal);
+
+ if (nCurVal != pBrightnessWidget->nCurVal) {
+ _vp_play_brightness_set_value(pBrightnessWidget, nCurVal);
+ }
+
+}
+
+static Eina_Bool __vp_brightness_hide_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget = (BrightnessWidget *) pUserData;
+
+ VP_EVAS_TIMER_DEL(pBrightnessWidget->pHideTimer);
+
+ if (!vp_play_brightness_unrealize
+ ((brightness_handle) pBrightnessWidget)) {
+ VideoLogWarning("vp_play_brightness_unrealize is fail");
+ }
+
+ return EINA_FALSE;
+}
+
+
+
+/* internal functions */
+static void _vp_play_brightness_destory_handle(BrightnessWidget *
+ pBrightnessWidget)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pBrightnessWidget->pHideTimer);
+ VP_EVAS_TIMER_DEL(pBrightnessWidget->pDeviceTimer);
+ VP_EVAS_DEL(pBrightnessWidget->pLayout);
+
+ VP_FREE(pBrightnessWidget);
+}
+
+static double _vp_play_brightness_get_mouse_pos_ratio(Evas_Object *pObj,
+ bool bLandscape,
+ int nCurY)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return 0.0;
+ }
+
+ int nHeight = 0;
+ int nCurrent = 0;
+ double dRatio = 0.0;
+
+ evas_object_geometry_get(pObj, NULL, NULL, NULL, &nHeight);
+
+ if (bLandscape) {
+ nHeight = VP_BRIGHTNESS_LANDSCAPE_HEIGHT;
+ nCurrent = nCurY - VP_BRIGHTNESS_LANDSCAPE_POS_Y;
+ } else {
+ nHeight = VP_BRIGHTNESS_PORTRAIT_HEIGHT;
+ nCurrent = nCurY - VP_BRIGHTNESS_PORTRAIT_POS_Y;
+ }
+
+ if (nCurrent < 0) {
+ nCurrent = 0;
+ } else if (nCurrent > nHeight) {
+ nCurrent = nHeight;
+ }
+
+ dRatio = (double) nCurrent / nHeight;
+
+ return dRatio;
+}
+
+
+static void _vp_play_brightness_set_widget_position(BrightnessWidget *
+ pBrightnessWidget)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget is NULL");
+ return;
+ }
+
+ bool bLandscape = pBrightnessWidget->bLandscape;
+ int nWidth = 0;
+ int nHeight = 0;
+
+ elm_win_screen_size_get(pBrightnessWidget->pParent, NULL, NULL,
+ &nWidth, &nHeight);
+
+ if (bLandscape) {
+ evas_object_move(pBrightnessWidget->pLayout,
+ nHeight -
+ VP_BRIGHTNESS_LANDSCAPE_POS_X * VP_SCALE,
+ VP_BRIGHTNESS_LANDSCAPE_POS_Y * VP_SCALE);
+ } else {
+ evas_object_move(pBrightnessWidget->pLayout,
+ nWidth - VP_BRIGHTNESS_PORTRAIT_POS_X * VP_SCALE,
+ VP_BRIGHTNESS_PORTRAIT_POS_Y * VP_SCALE);
+ }
+}
+
+static void _vp_play_brightness_update_icon(BrightnessWidget *
+ pBrightnessWidget,
+ double nValueRatio)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget is NULL");
+ return;
+ }
+
+ if (pBrightnessWidget->pIcon == NULL) {
+ VideoLogError("pBrightnessWidget->pIcon is NULL");
+ return;
+ }
+
+ gchar *path = NULL;
+ int req = 0;
+ if (pBrightnessWidget->nCurVal == pBrightnessWidget->nMaxVal) {
+ req = VP_BRIGHTNESS_ICON_NUM - 1;
+ } else if (pBrightnessWidget->nCurVal > pBrightnessWidget->nMinVal) {
+ req = (int)(nValueRatio * (VP_BRIGHTNESS_ICON_NUM - 2) + 1);
+ }
+ path = g_strdup_printf(VP_PLAY_BRIGHTNESS_POPUP_ICON_PATH, req);
+ elm_image_file_set(pBrightnessWidget->pIcon,
+ VP_PLAY_RESROUCE_EDJ_PATH, path);
+ g_free(path);
+}
+
+static void _vp_play_brightness_update_value(BrightnessWidget *
+ pBrightnessWidget)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget is NULL");
+ return;
+ }
+
+ double nValueRatio = 0.0;
+ char szPlayingTime[VP_BRIGHTNESS_TEXT_MAX_LEN] = { 0, };
+
+ snprintf(szPlayingTime, VP_BRIGHTNESS_TEXT_MAX_LEN, "%d",
+ pBrightnessWidget->nCurVal);
+
+ nValueRatio =
+ ((double) pBrightnessWidget->nCurVal /
+ (double)(pBrightnessWidget->nMaxVal -
+ pBrightnessWidget->nMinVal));
+
+ if (!edje_object_part_drag_value_set
+ (_EDJ(pBrightnessWidget->pLayout),
+ VP_PLAY_SWALLOW_BRIGHTNESS_POPUP_DRAG_RECT, 0.0, nValueRatio)) {
+ VideoLogWarning("Drag value set fail : %lf", nValueRatio);
+ }
+
+ elm_object_part_text_set(pBrightnessWidget->pLayout,
+ VP_PLAY_SWALLOW_BRIGHTNESS_POPUP_VALUE_LABEL,
+ szPlayingTime);
+ /*update brightness icon */
+ _vp_play_brightness_update_icon(pBrightnessWidget, nValueRatio);
+}
+
+static void _vp_play_brightness_create_timer(BrightnessWidget *
+ pBrightnessWidget)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidgetis NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pBrightnessWidget->pHideTimer);
+
+ pBrightnessWidget->pHideTimer =
+ ecore_timer_add(VP_BRIGHTNESS_HIDE_LAYOUT_TIMER_INTERVAL,
+ __vp_brightness_hide_timer_cb,
+ (void *) pBrightnessWidget);
+}
+
+static Eina_Bool __vp_brightness_popup_device_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget = (BrightnessWidget *) pUserData;
+
+ if (pBrightnessWidget->pDeviceTimer) {
+ VP_EVAS_TIMER_DEL(pBrightnessWidget->pDeviceTimer);
+ }
+ if (!vp_device_set_brightness(pBrightnessWidget->nCurVal)) {
+ VideoLogError("vp_device_set_brightness");
+ }
+
+ return EINA_FALSE;
+}
+
+static void _vp_play_brightness_set_value(BrightnessWidget *
+ pBrightnessWidget, int nValue)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget is NULL");
+ return;
+ }
+
+ pBrightnessWidget->nCurVal = nValue;
+
+ _vp_play_brightness_update_value(pBrightnessWidget);
+
+ evas_object_show(pBrightnessWidget->pLayout);
+
+ if (pBrightnessWidget->pDeviceTimer == NULL) {
+ pBrightnessWidget->pDeviceTimer = ecore_timer_add(0.1,
+ __vp_brightness_popup_device_timer_cb,
+ (void *)
+ pBrightnessWidget);
+ }
+}
+
+
+static Evas_Object *_vp_play_brightness_create_layout(Evas_Object *
+ pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_BRIGHTNESS_POPUP_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_BRIGHTNESS_POPUP);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+static Evas_Object *_vp_play_brightness_create_icon(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pIcon = elm_image_add(pParent);
+ evas_object_size_hint_weight_set(pIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_object_part_content_set(pParent,
+ VP_PLAY_SWALLOW_BRIGHTNESS_POPUP_ICON,
+ pIcon);
+ evas_object_show(pIcon);
+
+ return pIcon;
+}
+
+static bool _vp_play_brightness_init_layout(BrightnessWidget *
+ pBrightnessWidget)
+{
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pBrightnessWidget->pParent;
+
+ pBrightnessWidget->pLayout =
+ _vp_play_brightness_create_layout(pParent);
+ if (pBrightnessWidget->pLayout == NULL) {
+ VideoLogError("_vp_play_brightness_create_layout is fail");
+ return FALSE;
+ }
+
+ pBrightnessWidget->pIcon =
+ _vp_play_brightness_create_icon(pBrightnessWidget->pLayout);
+ if (pBrightnessWidget->pIcon == NULL) {
+ VideoLogError("_vp_play_brightness_create_icon is fail");
+ return FALSE;
+ }
+
+ evas_object_event_callback_add(pBrightnessWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_brightness_mouse_down_cb,
+ (void *) pBrightnessWidget);
+
+ evas_object_event_callback_add(pBrightnessWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_UP,
+ __vp_brightness_mouse_up_cb,
+ (void *) pBrightnessWidget);
+
+ evas_object_event_callback_add(pBrightnessWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_brightness_mouse_move_cb,
+ (void *) pBrightnessWidget);
+
+ return TRUE;
+}
+
+
+
+/* external functions */
+brightness_handle vp_play_brightness_create(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ BrightnessWidget *pBrightnessWidget = NULL;
+
+ pBrightnessWidget = calloc(1, sizeof(BrightnessWidget));
+
+ if (pBrightnessWidget == NULL) {
+ VideoLogError("pBrightnessWidget alloc fail");
+ return NULL;
+ }
+
+ pBrightnessWidget->pParent = pParent;
+ pBrightnessWidget->bLandscape = FALSE;
+
+ if (!_vp_play_brightness_init_layout(pBrightnessWidget)) {
+ VideoLogError("_vp_play_brightness_init_layout is fail");
+ _vp_play_brightness_destory_handle(pBrightnessWidget);
+ return NULL;
+ }
+
+ if (!vp_device_get_max_brightness(&(pBrightnessWidget->nMaxVal))) {
+ VideoLogError("vp_device_get_max_brightness fail");
+ _vp_play_brightness_destory_handle(pBrightnessWidget);
+ return NULL;
+ }
+
+ if (!vp_device_get_min_brightness(&(pBrightnessWidget->nMinVal))) {
+ VideoLogError("vp_device_get_min_brightness fail");
+ _vp_play_brightness_destory_handle(pBrightnessWidget);
+ return NULL;
+ }
+
+ pBrightnessWidget->nBrightnessUnit =
+ pBrightnessWidget->nMaxVal / VP_BRIGHTNESS_BRIGHTNESS_UNIT;
+
+ if (!vp_device_get_brightness(&(pBrightnessWidget->nCurVal))) {
+ VideoLogError("vp_device_get_brightness fail");
+ _vp_play_brightness_destory_handle(pBrightnessWidget);
+ return NULL;
+ }
+
+ _vp_play_brightness_update_value(pBrightnessWidget);
+
+ return (brightness_handle) pBrightnessWidget;
+}
+
+void vp_play_brightness_destroy(brightness_handle pBrightnessHandle)
+{
+ if (pBrightnessHandle == NULL) {
+ VideoLogError("pBrightnessHandle is NULL");
+ return;
+ }
+
+ BrightnessWidget *pBrightnessWidget =
+ (BrightnessWidget *) pBrightnessHandle;
+
+ _vp_play_brightness_destory_handle(pBrightnessWidget);
+}
+
+bool vp_play_brightness_realize(brightness_handle pBrightnessHandle)
+{
+ if (pBrightnessHandle == NULL) {
+ VideoLogError("pBrightnessHandle is NULL");
+ return FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget =
+ (BrightnessWidget *) pBrightnessHandle;
+
+ pBrightnessWidget->bIsRealize = TRUE;
+
+ _vp_play_brightness_set_widget_position(pBrightnessWidget);
+
+ _vp_play_brightness_set_value(pBrightnessWidget,
+ pBrightnessWidget->nCurVal);
+
+ evas_object_show(pBrightnessWidget->pLayout);
+
+ _vp_play_brightness_create_timer(pBrightnessWidget);
+
+ return TRUE;
+}
+
+bool vp_play_brightness_unrealize(brightness_handle pBrightnessHandle)
+{
+ if (pBrightnessHandle == NULL) {
+ VideoLogError("pBrightnessHandle is NULL");
+ return FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget =
+ (BrightnessWidget *) pBrightnessHandle;
+
+ pBrightnessWidget->bIsRealize = FALSE;
+
+ evas_object_hide(pBrightnessWidget->pLayout);
+
+ return TRUE;
+}
+
+bool vp_play_brightness_set_landscape_mode(brightness_handle
+ pBrightnessHandle,
+ bool bLandscape)
+{
+ if (pBrightnessHandle == NULL) {
+ VideoLogError("pBrightnessHandle is NULL");
+ return FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget =
+ (BrightnessWidget *) pBrightnessHandle;
+
+ pBrightnessWidget->bLandscape = bLandscape;
+
+ _vp_play_brightness_set_widget_position(pBrightnessWidget);
+
+
+ return TRUE;
+}
+
+bool vp_play_brightness_is_realize(brightness_handle pBrightnessHandle,
+ bool *bIsRealize)
+{
+ if (pBrightnessHandle == NULL) {
+ VideoLogError("pBrightnessHandle is NULL");
+ return FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget =
+ (BrightnessWidget *) pBrightnessHandle;
+
+ *bIsRealize = pBrightnessWidget->bIsRealize;
+
+ return TRUE;
+}
+
+bool vp_play_brightness_set_value(brightness_handle pBrightnessHandle,
+ int nCurVal)
+{
+ if (pBrightnessHandle == NULL) {
+ VideoLogError("pBrightnessHandle is NULL");
+ return FALSE;
+ }
+
+ BrightnessWidget *pBrightnessWidget =
+ (BrightnessWidget *) pBrightnessHandle;
+
+ _vp_play_brightness_create_timer(pBrightnessWidget);
+
+ pBrightnessWidget->nCurVal = nCurVal;
+
+ if (pBrightnessWidget->nCurVal < pBrightnessWidget->nMinVal) {
+ pBrightnessWidget->nCurVal = pBrightnessWidget->nMinVal;
+ return TRUE;
+ }
+
+ if (pBrightnessWidget->nCurVal > pBrightnessWidget->nMaxVal) {
+ pBrightnessWidget->nCurVal = pBrightnessWidget->nMaxVal;
+ return TRUE;
+ }
+
+ _vp_play_brightness_set_value(pBrightnessWidget,
+ pBrightnessWidget->nCurVal);
+
+ return TRUE;
+}
+
+bool vp_play_brightness_get_value(int *nCurVal)
+{
+
+ int nVal = 0;
+
+ if (!vp_device_get_brightness(&nVal)) {
+ VideoLogError("vp_device_get_brightness fail");
+ return FALSE;
+ }
+
+ *nCurVal = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_brightness_get_max_value(int *nMaxVal)
+{
+ int nVal = 0;
+
+ if (!vp_device_get_max_brightness(&(nVal))) {
+ VideoLogError("vp_device_get_brightness fail");
+ return FALSE;
+ }
+
+ *nMaxVal = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_brightness_get_min_value(int *nMinVal)
+{
+ int nVal = 0;
+
+ if (!vp_device_get_min_brightness(&(nVal))) {
+ VideoLogError("vp_device_get_min_brightness fail");
+ return FALSE;
+ }
+
+ *nMinVal = nVal;
+
+ return TRUE;
+}
diff --git a/playview/src/widget/vp-play-button.c b/playview/src/widget/vp-play-button.c
new file mode 100644
index 0000000..8009861
--- /dev/null
+++ b/playview/src/widget/vp-play-button.c
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-play-button.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+Evas_Object *vp_button_create(Evas_Object *pParent, const char *pStyle,
+ const char *pTxt, Evas_Smart_Cb pClickFunc,
+ Evas_Smart_Cb pPressFunc,
+ Evas_Smart_Cb pUnpressFunc, void *pUserData)
+{
+ if (!pParent) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_button_add(pParent);
+
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return NULL;
+ }
+
+ if (pStyle) {
+ elm_object_style_set(pObj, pStyle);
+ }
+
+ if (pTxt) {
+ elm_object_text_set(pObj, pTxt);
+ }
+
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_smart_callback_add(pObj, "clicked", pClickFunc,
+ pUserData);
+ evas_object_smart_callback_add(pObj, "pressed", pPressFunc,
+ pUserData);
+ evas_object_smart_callback_add(pObj, "unpressed", pUnpressFunc,
+ pUserData);
+
+ return pObj;
+}
+
+Evas_Object *vp_button_create_icon(Evas_Object *pParent,
+ const char *pEdjPath,
+ const char *pGroupName)
+{
+ if (!pParent) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_icon_add(pParent);
+ if (!elm_image_file_set(pObj, pEdjPath, pGroupName)) {
+ VideoLogError("elm_image_file_set is fail");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pObj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ return pObj;
+}
+
+
+Evas_Object *vp_button_create_image(Evas_Object *pParent,
+ const char *pEdjPath,
+ const char *pGroupName)
+{
+ if (!pParent) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_image_add(pParent);
+ if (!elm_image_file_set(pObj, pEdjPath, pGroupName)) {
+ VideoLogError("elm_image_file_set is fail");
+ return NULL;
+ }
+
+ return pObj;
+}
+
+Evas_Object *vp_navirame_button_create(Evas_Object *pParent,
+ const char *pStyle,
+ const char *pEdjPath,
+ const char *pGroupName,
+ Evas_Smart_Cb pClickFunc,
+ void *pUserData)
+{
+ if (!pParent) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pImage = NULL;
+ Evas_Object *btn = elm_button_add(pParent);
+ if (!btn)
+ return NULL;
+
+ if (pStyle) {
+ elm_object_style_set(btn, pStyle);
+ } else {
+ elm_object_style_set(btn, "naviframe/title_icon");
+ }
+
+ pImage = elm_image_add(pParent);
+ elm_image_file_set(pImage, pEdjPath, pGroupName);
+ evas_object_size_hint_aspect_set(pImage, EVAS_ASPECT_CONTROL_BOTH, 1,
+ 1);
+ elm_image_resizable_set(pImage, EINA_TRUE, EINA_TRUE);
+ elm_object_part_content_set(btn, "icon", pImage);
+
+ evas_object_smart_callback_add(btn, "clicked", pClickFunc, pUserData);
+ evas_object_show(btn);
+ return btn;
+}
diff --git a/playview/src/widget/vp-play-loading-ani.c b/playview/src/widget/vp-play-loading-ani.c
new file mode 100644
index 0000000..c62a736
--- /dev/null
+++ b/playview/src/widget/vp-play-loading-ani.c
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-play-macro-define.h"
+
+#include "vp-play-loading-ani.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+Evas_Object *vp_play_loading_ani_create(Evas_Object *pParent,
+ video_loading_size_t nSize)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *progressbar = NULL;
+ progressbar = elm_progressbar_add(pParent);
+ if (nSize == VIDEO_LOADING_SIZE_SMALL)
+ elm_object_style_set(progressbar, "process_small");
+ else if (nSize == VIDEO_LOADING_SIZE_MIDUM)
+ elm_object_style_set(progressbar, "process_medium");
+ else if (nSize == VIDEO_LOADING_SIZE_LARGE)
+ elm_object_style_set(progressbar, "process_large");
+ else
+ elm_object_style_set(progressbar, "process_Xlarge");
+ 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);
+ evas_object_show(progressbar);
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+
+ return progressbar;
+
+}
+
+void vp_play_loading_ani_destroy(Evas_Object *pProgress)
+{
+ if (pProgress == NULL) {
+ VideoLogError("pProgress is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pProgress);
+}
diff --git a/playview/src/widget/vp-play-more.c b/playview/src/widget/vp-play-more.c
new file mode 100644
index 0000000..5f90ddb
--- /dev/null
+++ b/playview/src/widget/vp-play-more.c
@@ -0,0 +1,17 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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/playview/src/widget/vp-play-popup.c b/playview/src/widget/vp-play-popup.c
new file mode 100644
index 0000000..313df81
--- /dev/null
+++ b/playview/src/widget/vp-play-popup.c
@@ -0,0 +1,251 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "vp-play-value-define.h"
+
+#include "vp-play-popup.h"
+#include "vp-play-macro-define.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-util.h"
+
+Evas_Object *vp_popup_create(Evas_Object *pParent,
+ video_popup_style_t nStyle, char *szTitle,
+ char *szContent, double dTimeOut,
+ Evas_Smart_Cb pTimeoutFunc,
+ Eext_Event_Cb pCancelKeyCb,
+ Evas_Object_Event_Cb pCancelMouseCb,
+ void *pUserData)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+ Evas_Object *pObj = NULL;
+
+ pObj = elm_popup_add(pParent);
+
+ if (pObj == NULL) {
+ VideoLogError("elm_popup_add is fail");
+ return NULL;
+ }
+
+ /*if (nStyle == POPUP_STYLE_DEFAULT) {
+ //elm_object_style_set(pObj, "popup/default");
+ }
+ else if (nStyle == POPUP_STYLE_MENU_LIST) {
+ elm_object_style_set(pObj, "content_no_vhpad");
+ }
+ else if (nStyle == POPUP_STYLE_EXPAND) {
+ //elm_object_style_set(pObj, "content_expand");
+ elm_object_style_set(pObj, "content_no_vhpad");
+ } */
+
+ if (nStyle == POPUP_STYLE_FULLSCREEN_NO_CANCEL_BTN) {
+ elm_layout_theme_set(pObj, "popup", "fullsrceen", "default");
+ }
+
+ if (nStyle == POPUP_STYLE_FULLSCREEN_NO_TITLE_NO_CANCEL_BTN) {
+ elm_layout_theme_set(pObj, "popup", "fullsrceen/notitle",
+ "default");
+ }
+
+ evas_object_size_hint_weight_set(pObj, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ if (szTitle) {
+ elm_object_part_text_set(pObj, "title,text", szTitle);
+ }
+
+ if (szContent) {
+ elm_object_text_set(pObj, szContent);
+ }
+
+ if (dTimeOut > 0.0) {
+ elm_popup_timeout_set(pObj, dTimeOut);
+ if (pTimeoutFunc) {
+ evas_object_smart_callback_add(pObj, "timeout", pTimeoutFunc,
+ (void *) pUserData);
+ }
+ }
+
+ if (pCancelKeyCb) {
+ eext_object_event_callback_add(pObj, EEXT_CALLBACK_BACK,
+ pCancelKeyCb, (void *) pUserData);
+ }
+
+ if (nStyle == POPUP_STYLE_DEFAULT_NO_CANCEL_BTN
+ || nStyle == POPUP_STYLE_MENU_LIST_NO_CANCEL_BTN
+ || nStyle == POPUP_STYLE_EXPAND_NO_CANCEL_BTN
+ || nStyle == POPUP_STYLE_PROGRESS_WITH_NO_CANCEL_BTN)
+ evas_object_smart_callback_add(pObj, "block,clicked",
+ pCancelKeyCb, (void *) pUserData);
+
+ if (pCancelMouseCb) {
+ evas_object_event_callback_add(pObj, EVAS_CALLBACK_MOUSE_UP,
+ pCancelMouseCb,
+ (void *) pUserData);
+ }
+
+ return pObj;
+}
+
+
+Evas_Object *vp_two_button_popup_create(Evas_Object *pParent,
+ char *szTitle,
+ char *szContent,
+ char *pLeftButtonText,
+ Evas_Smart_Cb leftButtonCb,
+ char *pRightButtonText,
+ Evas_Smart_Cb rightButtonCb,
+ const void *pUserData)
+{
+ Evas_Object *pPopup = NULL;
+ Evas_Object *pBtn1 = NULL;
+ Evas_Object *pBtn2 = NULL;
+
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ pPopup = elm_popup_add(pParent);
+
+ if (pPopup == NULL) {
+ VideoLogError("elm_popup_add is fail");
+ return NULL;
+ }
+
+ if (szTitle)
+ elm_object_part_text_set(pPopup, "title,text", szTitle);
+
+ evas_object_size_hint_weight_set(pPopup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ if (szContent)
+ elm_object_part_text_set(pPopup, "default", szContent);
+
+ pBtn1 = elm_button_add(pPopup);
+ elm_object_style_set(pBtn1, "popup");
+ elm_object_text_set(pBtn1, pLeftButtonText);
+ elm_object_part_content_set(pPopup, "button1", pBtn1);
+ if (leftButtonCb)
+ evas_object_smart_callback_add(pBtn1, "clicked", leftButtonCb,
+ (const void *) pUserData);
+
+ pBtn2 = elm_button_add(pPopup);
+ elm_object_style_set(pBtn2, "popup");
+ elm_object_text_set(pBtn2, pRightButtonText);
+ elm_object_part_content_set(pPopup, "button2", pBtn2);
+
+ if (rightButtonCb)
+ evas_object_smart_callback_add(pBtn2, "clicked", rightButtonCb,
+ (const void *) pUserData);
+
+ evas_object_show(pPopup);
+
+ return pPopup;
+}
+
+#ifdef _SUBTITLE_MULTI_LANGUAGE
+Evas_Object *vp_title_two_button_popup_create(Evas_Object *pParent,
+ char *szTitle,
+ char *szContent,
+ char *pLeftButtonText,
+ Evas_Smart_Cb leftButtonCb,
+ char *pRightButtonText,
+ Evas_Smart_Cb rightButtonCb,
+ const void *pUserData)
+{
+ Evas_Object *pPopup = NULL;
+ pPopup =
+ vp_two_button_popup_create(pParent, NULL, szContent,
+ pLeftButtonText, leftButtonCb,
+ pRightButtonText, rightButtonCb,
+ pUserData);
+ if (szTitle && pPopup)
+ elm_object_part_text_set(pPopup, "title,text", szTitle);
+
+ return pPopup;
+}
+#endif
+bool vp_popup_check_landspace_by_win(Evas_Object *pWin)
+{
+ if (!pWin) {
+ VideoLogError("win is NULL.");
+ return FALSE;
+ }
+ bool bLandSpace = FALSE;
+ int bROtation = elm_win_rotation_get(pWin);
+ if (bROtation == 90 || bROtation == 270) {
+ bLandSpace = TRUE;
+ }
+ return bLandSpace;
+}
+
+void vp_popup_set_popup_min_size(Evas_Object *pWin, Evas_Object *pBox,
+ int nListCount,
+ video_list_popup_style_t eStyle)
+{
+ if (!pWin) {
+ VideoLogError("win is NULL.");
+ return;
+ }
+ if (pBox) {
+ int nMinHeight = 0;
+ switch (eStyle) {
+ case VIDEO_POPUP_DEFAULT:
+ if (vp_popup_check_landspace_by_win(pWin)) {
+ nMinHeight = VP_POPUP_LIST_HEIGHT_L(nListCount);
+ } else {
+ nMinHeight = VP_POPUP_LIST_HEIGHT(nListCount);
+ }
+ break;
+ case VIDEO_POPUP_2_TEXT:
+ if (vp_popup_check_landspace_by_win(pWin)) {
+ nMinHeight = VP_POPUP_LIST_2_TEXT_HEIGHT_L(nListCount);
+ } else {
+ nMinHeight = VP_POPUP_LIST_2_TEXT_HEIGHT(nListCount);
+ }
+ break;
+ case VIDEO_POPUP_2_TEXT_1_ICON:
+ if (vp_popup_check_landspace_by_win(pWin)) {
+ nMinHeight =
+ VP_POPUP_LIST_2_TEXT_1_ICON_HEIGHT_L(nListCount);
+ } else {
+ nMinHeight =
+ VP_POPUP_LIST_2_TEXT_1_ICON_HEIGHT(nListCount);
+ }
+ break;
+ case VIDEO_POPUP_LOADING_LIST:
+ if (vp_popup_check_landspace_by_win(pWin)) {
+ nMinHeight = VP_POPUP_LOADING_LIST_HEIGHT_L(nListCount);
+ } else {
+ nMinHeight = VP_POPUP_LOADING_LIST_HEIGHT(nListCount);
+ }
+ break;
+
+ default:
+ VideoLogError("invalid style =%d.", eStyle);
+ break;
+ }
+
+ evas_object_size_hint_min_set(pBox,
+ VP_POPUP_LIST_WIDTH * VP_SCALE,
+ nMinHeight * VP_SCALE);
+ }
+}
diff --git a/playview/src/widget/vp-play-progressbar.c b/playview/src/widget/vp-play-progressbar.c
new file mode 100644
index 0000000..36648e6
--- /dev/null
+++ b/playview/src/widget/vp-play-progressbar.c
@@ -0,0 +1,498 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include <glib.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+#include "vp-play-button.h"
+
+#include "vp-play-progressbar.h"
+
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+typedef struct _ProgressWidget {
+ Evas_Object *pParent;
+ Evas_Object *pLayout;
+
+ Evas_Object *pFocusPoint;
+
+ Evas_Object *pStartLabel;
+ Evas_Object *pTotalLabel;
+
+ video_progressbar_type_t nType;
+
+ bool bEnableAdjustment;
+ bool bRealized;
+
+ int nDuration;
+ int nCurrentPos;
+ int nBufferingPos;
+} ProgressWidget;
+
+
+
+static void _vp_play_progressbar_destory_handle(ProgressWidget *
+ pProgressWidget);
+
+
+
+/* callback functions */
+static void __vp_play_progressbar_key_focus_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pUserData;
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("pProgressWidget->pLayout is NULL");
+ return;
+ }
+
+
+ elm_object_signal_emit(pProgressWidget->pLayout,
+ VP_NORMAL_SIGNAL_PROGRESS_PRESS, "*");
+
+ VideoLogInfo("progress focus in");
+}
+
+static void __vp_play_progressbar_key_unfocus_cb(void *pUserData,
+ Evas_Object *pObj,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pUserData;
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("pProgressWidget->pLayout is NULL");
+ return;
+ }
+
+ elm_object_signal_emit(pProgressWidget->pLayout,
+ VP_NORMAL_SIGNAL_PROGRESS_UNPRESS, "*");
+
+ VideoLogInfo("progress focus out");
+}
+
+/* internal functions */
+
+static void _vp_play_progressbar_value_update(ProgressWidget *
+ pProgressWidget)
+{
+ if (pProgressWidget == NULL) {
+ VideoLogError("pProgressWidget is NULL");
+ return;
+ }
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("pProgressWidget->pLayout is NULL");
+ return;
+ }
+
+ double dPlayedRatio = 0.0;
+ double dBufferingRatio = 0.0;
+
+ char szPlayingTime[PROGRESSBAR_TIME_LENGTH] = { 0, };
+
+ snprintf(szPlayingTime, PROGRESSBAR_TIME_LENGTH,
+ "%" PROGRESSBAR_TIME_FORMAT,
+ PROGRESSBAR_TIME_ARGS(pProgressWidget->nCurrentPos / 1000));
+
+ dPlayedRatio =
+ ((double) pProgressWidget->nCurrentPos /
+ (double) pProgressWidget->nDuration);
+ dBufferingRatio =
+ ((double) pProgressWidget->nBufferingPos / (double) 100);
+
+ edje_object_part_drag_value_set(_EDJ(pProgressWidget->pLayout),
+ VP_PLAY_SWALLOW_PROGRESS_DRAG_RECT,
+ dPlayedRatio, 0.0);
+ edje_object_part_drag_value_set(_EDJ(pProgressWidget->pLayout),
+ "pv.progress.buffering",
+ dBufferingRatio, 0.0);
+
+ //elm_object_part_text_set(pProgressWidget->pStartLabel, "elm.text", szPlayingTime);
+ elm_object_part_text_set(pProgressWidget->pLayout,
+ VP_PLAY_SWALLOW_PROGRESS_PLAYING_LABEL,
+ szPlayingTime);
+
+}
+
+static void _vp_play_progressbar_destory_handle(ProgressWidget *
+ pProgressWidget)
+{
+ if (pProgressWidget == NULL) {
+ VideoLogError("pProgressWidget is NULL");
+ return;
+ }
+
+ vp_play_progressbar_unrealize((progressbar_handle) pProgressWidget);
+ if (pProgressWidget->pFocusPoint) {
+ evas_object_smart_callback_del(pProgressWidget->pFocusPoint,
+ "focused",
+ __vp_play_progressbar_key_focus_cb);
+ evas_object_smart_callback_del(pProgressWidget->pFocusPoint,
+ "unfocused",
+ __vp_play_progressbar_key_unfocus_cb);
+ VP_EVAS_DEL(pProgressWidget->pFocusPoint);
+ }
+
+ VP_EVAS_DEL(pProgressWidget->pStartLabel);
+ VP_EVAS_DEL(pProgressWidget->pTotalLabel);
+
+ VP_EVAS_DEL(pProgressWidget->pLayout);
+
+ VP_FREE(pProgressWidget);
+}
+
+static Evas_Object *_vp_play_progressbar_create_layout(Evas_Object *
+ pParent,
+ video_progressbar_type_t
+ nType)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ if (nType == VIDEO_PROGRESSBAR_TYPE_NORMAL) {
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_PROGRESSBAR_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_PROGRESSBAR);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+ } else if (nType == VIDEO_PROGRESSBAR_TYPE_TRIM) {
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+
+}
+
+static void _vp_play_progressbar_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pProgressWidget is NULL");
+ return;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pUserData;
+
+ pProgressWidget->pLayout = NULL;
+ pProgressWidget->pFocusPoint = NULL;
+
+}
+
+static bool _vp_play_progressbar_init_layout(ProgressWidget *
+ pProgressWidget)
+{
+ if (pProgressWidget == NULL) {
+ VideoLogError("pProgressWidget is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pProgressWidget->pParent;
+
+ pProgressWidget->pLayout =
+ _vp_play_progressbar_create_layout(pParent,
+ pProgressWidget->nType);
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("_vp_play_progressbar_create_layout is fail");
+ return FALSE;
+ }
+
+ evas_object_event_callback_add(pProgressWidget->pLayout,
+ EVAS_CALLBACK_DEL,
+ _vp_play_progressbar_layout_del_cb,
+ (void *) pProgressWidget);
+
+
+ pProgressWidget->pFocusPoint =
+ vp_button_create(pProgressWidget->pLayout, "focus", NULL, NULL,
+ NULL, NULL, (void *) pProgressWidget);
+ if (!pProgressWidget->pFocusPoint) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ elm_object_focus_next_object_set(pProgressWidget->pFocusPoint,
+ pProgressWidget->pFocusPoint,
+ ELM_FOCUS_RIGHT);
+ elm_object_focus_next_object_set(pProgressWidget->pFocusPoint,
+ pProgressWidget->pFocusPoint,
+ ELM_FOCUS_LEFT);
+
+ evas_object_smart_callback_add(pProgressWidget->pFocusPoint,
+ "focused",
+ __vp_play_progressbar_key_focus_cb,
+ pProgressWidget);
+ evas_object_smart_callback_add(pProgressWidget->pFocusPoint,
+ "unfocused",
+ __vp_play_progressbar_key_unfocus_cb,
+ pProgressWidget);
+
+ elm_object_part_content_set(pProgressWidget->pLayout,
+ "pv.progress.point.focus",
+ pProgressWidget->pFocusPoint);
+
+ return TRUE;
+}
+
+
+progressbar_handle vp_play_progressbar_create(Evas_Object *pParent,
+ video_progressbar_type_t
+ nType)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ ProgressWidget *pProgressWidget = NULL;
+
+ pProgressWidget = calloc(1, sizeof(ProgressWidget));
+
+ if (pProgressWidget == NULL) {
+ VideoLogError("pProgressbar alloc fail");
+ return NULL;
+ }
+
+ pProgressWidget->pParent = pParent;
+ pProgressWidget->nType = nType;
+ pProgressWidget->bRealized = FALSE;
+
+ if (!_vp_play_progressbar_init_layout(pProgressWidget)) {
+ VideoLogError("_vp_play_progressbar_init_layout is fail");
+ VP_FREE(pProgressWidget);
+ return NULL;
+ }
+
+
+
+ return (progressbar_handle) pProgressWidget;
+}
+
+void vp_play_progressbar_destroy(progressbar_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return;
+ }
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+
+ _vp_play_progressbar_destory_handle(pProgressWidget);
+
+ return;
+}
+
+
+bool vp_play_progressbar_realize(progressbar_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+ pProgressWidget->bRealized = TRUE;
+
+ return TRUE;
+}
+
+bool vp_play_progressbar_unrealize(progressbar_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+ pProgressWidget->bRealized = FALSE;
+
+ return TRUE;
+}
+
+Evas_Object *vp_play_progressbar_get_object(progressbar_handle
+ pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return NULL;
+ }
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+
+ return pProgressWidget->pLayout;
+}
+
+Evas_Object *vp_play_progressbar_get_focus_object(progressbar_handle
+ pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return NULL;
+ }
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+
+ return pProgressWidget->pFocusPoint;
+}
+
+bool vp_play_progressbar_set_duration(progressbar_handle pWidgetHandle,
+ int nDuration)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("pProgressWidget->pLayout is NULL");
+ return FALSE;
+ }
+
+ char szDurationTime[PROGRESSBAR_TIME_LENGTH] = { 0, };
+
+ pProgressWidget->nDuration = nDuration;
+
+ snprintf(szDurationTime, PROGRESSBAR_TIME_LENGTH,
+ "%" PROGRESSBAR_TIME_FORMAT,
+ PROGRESSBAR_TIME_ARGS(pProgressWidget->nDuration / 1000));
+
+ //elm_object_part_text_set(pProgressWidget->pTotalLabel, "elm.text", szDurationTime);
+ elm_object_part_text_set(pProgressWidget->pLayout,
+ VP_PLAY_SWALLOW_PROGRESS_DURATION_LABEL,
+ szDurationTime);
+
+ return TRUE;
+}
+
+bool vp_play_progressbar_set_position(progressbar_handle pWidgetHandle,
+ int nPosition)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+
+ pProgressWidget->nCurrentPos = nPosition;
+
+ _vp_play_progressbar_value_update(pProgressWidget);
+
+ return TRUE;
+}
+
+bool vp_play_progressbar_set_buffering_position(progressbar_handle
+ pWidgetHandle,
+ int nBufferinPosition)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+
+ pProgressWidget->nBufferingPos = nBufferinPosition;
+
+ _vp_play_progressbar_value_update(pProgressWidget);
+
+ return TRUE;
+}
+
+bool vp_play_progressbar_set_landscape_mode(progressbar_handle
+ pWidgetHandle,
+ bool bLandscape)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("pProgressWidget->pLayout is NULL");
+ return FALSE;
+ }
+
+ if (bLandscape) {
+ elm_object_signal_emit(pProgressWidget->pLayout,
+ VP_NORMAL_SIGNAL_PROGRESS_LANDSCAPE_MODE,
+ "*");
+ } else {
+ elm_object_signal_emit(pProgressWidget->pLayout,
+ VP_NORMAL_SIGNAL_PROGRESS_PORTRAIT_MODE,
+ "*");
+ }
+
+ return TRUE;
+
+}
+
+bool vp_play_progressbar_set_opacity(progressbar_handle pWidgetHandle,
+ bool bOpacity)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ ProgressWidget *pProgressWidget = (ProgressWidget *) pWidgetHandle;
+
+ if (pProgressWidget->pLayout == NULL) {
+ VideoLogError("pProgressWidget->pLayout is NULL");
+ return FALSE;
+ }
+
+ if (bOpacity) {
+ elm_object_signal_emit(pProgressWidget->pLayout,
+ VP_NORMAL_SIGNAL_PROGRESS_OPACITY_60, "*");
+ } else {
+ elm_object_signal_emit(pProgressWidget->pLayout,
+ VP_NORMAL_SIGNAL_PROGRESS_OPACITY_DEFAULT,
+ "*");
+ }
+
+ return TRUE;
+
+}
diff --git a/playview/src/widget/vp-play-subtitle.c b/playview/src/widget/vp-play-subtitle.c
new file mode 100644
index 0000000..f0a2e30
--- /dev/null
+++ b/playview/src/widget/vp-play-subtitle.c
@@ -0,0 +1,874 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-preference.h"
+#include "vp-play-subtitle.h"
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+#ifdef SUBTITLE_K_FEATURE
+#define VP_SUBTITLE_STRING_TXT_FORMAT "<font_size= %d><style=%s><font='%s' font_weight='%s' color=%s backing_color=%s backing=%s align=%s>%s</font></style></font_size>"
+#else
+#define VP_SUBTITLE_STRING_TXT_FORMAT "<font_size= %d><style=%s><font='%s' font_weight=%s color=%s backing_color=%s backing=%s>%s</font></style></font_size>"
+#endif
+
+#define VP_SUBTITLE_SET_CAPTION_WINDOW_COLOR_ID 3
+#define VP_SUBTITLE_PROTRAIT_W 720
+#define VP_SUBTITLE_PROTRAIT_H 990
+#define VP_SUBTITLE_LANDSCAPE_W 1280
+#define VP_SUBTITLE_LANDSCAPE_H 530
+
+#define VP_NORMAL_SUTITLE_TEXT_STYLE \
+ "DEFAULT='font=Tizen:style=Roman align=center valign=bottom wrap=word'"\
+ "br='\n'" \
+ "ps='ps'" \
+ "hilight='+ font=Tizen:style=Roman'" \
+ "b='+ font=Tizen:style=Roman'" \
+ "tab='\t'"
+
+void _vp_play_subtitle_destroy_handle(Subtitle *pSubtitle);
+/* callback functions */
+
+/* internal functions */
+void _vp_play_subtitle_destroy_handle(Subtitle *pSubtitle)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+
+ VP_EVAS_DEL(pSubtitle->pLayout);
+ VP_FREE(pSubtitle->szFontName);
+ VP_FREE(pSubtitle->szText);
+ VP_EVAS_DEL(pSubtitle->pTextBlock);
+#ifdef SUBTITLE_K_FEATURE
+ VP_FREE(pSubtitle->pFontColorHex);
+ VP_FREE(pSubtitle->pBGColorHex);
+ VP_FREE(pSubtitle->pCaptionWinColorHex);
+#endif
+ VP_FREE(pSubtitle);
+}
+
+static Evas_Object *_vp_play_subtitle_create_layout(Evas_Object *pParent,
+ vp_subtitle_type_t
+ nType)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ if (nType == VP_SUBTITLE_TYPE_NORMAL) {
+ //bRet = elm_layout_file_set(pObj, VP_PLAY_SUBTITLE_EDJ_PATH, VP_PLAY_EDJ_GROUP_SUBTITLE);
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_SUBTITLE_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_SUBTITLE_MULTI);
+ } else if (nType == VP_SUBTITLE_TYPE_MULTI) {
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_SUBTITLE_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_SUBTITLE_MULTI);
+ }
+
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+
+ return pObj;
+}
+
+static void _vp_play_subtitle_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+ Subtitle *pSubtitle = (Subtitle *) pUserData;
+ pSubtitle->pLayout = NULL;
+
+}
+
+static bool _vp_play_subtitle_init_layout(Subtitle *pSubtitle,
+ vp_subtitle_type_t nType)
+{
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pSubtitle->pParent;
+
+ pSubtitle->pLayout = _vp_play_subtitle_create_layout(pParent, nType);
+ if (pSubtitle->pLayout == NULL) {
+ VideoLogError("_vp_play_subtitle_create_layout is fail");
+ return FALSE;
+ }
+ pSubtitle->pTextBlock = NULL;
+
+ evas_object_event_callback_add(pSubtitle->pLayout, EVAS_CALLBACK_DEL,
+ _vp_play_subtitle_layout_del_cb,
+ (void *) pSubtitle);
+
+ return TRUE;
+}
+
+void vp_play_subtitle_text_update(Subtitle *pSubtitle, const char *szTxt)
+{
+ if (!pSubtitle || !pSubtitle->pLayout) {
+ VideoLogError("pSubtitle is NULL");
+ return;
+ }
+
+ if (!szTxt || strlen(szTxt) == 0) {
+ VideoLogWarning
+ ("Text is null or empty, need hide caption window.");
+ vp_play_subtitle_set_caption_win_color(pSubtitle, FALSE);
+ } else if (!pSubtitle->bShowCaptionWin) {
+ VideoLogWarning("Caption window is hidden, need show it again!");
+ vp_play_subtitle_set_caption_win_color(pSubtitle, TRUE);
+ }
+
+ char *szMarkup = elm_entry_markup_to_utf8(szTxt);
+ char *szOutput = elm_entry_utf8_to_markup(szMarkup);
+ char *szTxtFormat = NULL;
+ char *szColor = NULL;
+ char *szBGColor = NULL;
+ char *szBGColorOn = NULL;
+#ifdef SUBTITLE_K_FEATURE
+ char *szAlignment = NULL;
+#endif
+ char *szFontEdge = NULL;
+ char *szFontWeight = NULL;
+
+ int nSize = 0;
+ vp_play_preference_get_subtitle_size_key(&nSize);
+
+ if (nSize == VP_SUBTITLE_SMALL) {
+ nSize = VP_SUBTITLE_SIZE_SMALL_VALUE * pSubtitle->fZoom;
+ } else if (nSize == VP_SUBTITLE_LARGE) {
+ nSize = VP_SUBTITLE_SIZE_LARGE_VALUE * pSubtitle->fZoom;
+ } else {
+ nSize = VP_SUBTITLE_SIZE_MEDIUM_VALUE * pSubtitle->fZoom;
+ }
+
+ if (nSize < VP_SUBTITLE_SIZE_SMALL_VALUE) {
+ nSize = VP_SUBTITLE_SIZE_SMALL_VALUE;
+ }
+
+ if (nSize > VP_SUBTITLE_SIZE_LARGE_VALUE) {
+ nSize = VP_SUBTITLE_SIZE_LARGE_VALUE;
+ }
+#ifndef SUBTITLE_K_FEATURE
+ if (pSubtitle->nFontColor == VP_SUBTITLE_COLOR_BLACK) {
+ szColor = g_strdup_printf("#000000");
+ } else if (pSubtitle->nFontColor == VP_SUBTITLE_COLOR_BLUE) {
+ szColor = g_strdup_printf("#0000FF");
+ } else if (pSubtitle->nFontColor == VP_SUBTITLE_COLOR_GREEN) {
+ szColor = g_strdup_printf("#00FF00");
+ } else if (pSubtitle->nFontColor == VP_SUBTITLE_COLOR_WHITE) {
+ szColor = g_strdup_printf("#FFFFFF");
+ }
+
+ if (pSubtitle->nBGColor == VP_SUBTITLE_COLOR_NONE) {
+ szBGColorOn = g_strdup_printf("off");
+ szBGColor = g_strdup_printf("#000000");
+ } else if (pSubtitle->nBGColor == VP_SUBTITLE_COLOR_BLACK) {
+ szBGColorOn = g_strdup_printf("on");
+ szBGColor = g_strdup_printf("#000000");
+ } else if (pSubtitle->nBGColor == VP_SUBTITLE_COLOR_WHITE) {
+ szBGColorOn = g_strdup_printf("on");
+ szBGColor = g_strdup_printf("#FFFFFF");
+ }
+#else
+
+ VideoLogInfo
+ ("pSubtitle->pFontColorHex %s, pSubtitle->pBGColorHex is %s",
+ pSubtitle->pFontColorHex, pSubtitle->pBGColorHex);
+ if (pSubtitle->pFontColorHex) {
+ szColor = strdup(pSubtitle->pFontColorHex);
+ } else {
+ szColor = g_strdup_printf("#ffffffff");
+ }
+
+ if (pSubtitle->pBGColorHex) {
+ szBGColorOn = g_strdup_printf("on");
+ szBGColor = strdup(pSubtitle->pBGColorHex);
+ } else {
+ szBGColorOn = g_strdup_printf("off");
+ szBGColor = g_strdup_printf("#00000000");
+ }
+
+ int nAlignment = 0;
+ vp_play_preference_get_subtitle_alignment_key(&nAlignment);
+ if (nAlignment == VP_SUBTITLE_ALIGNMENT_LEFT) {
+ szAlignment = g_strdup_printf("left");
+ } else if (nAlignment == VP_SUBTITLE_ALIGNMENT_CENTER) {
+ szAlignment = g_strdup_printf("center");
+ } else if (nAlignment == VP_SUBTITLE_ALIGNMENT_RIGHT) {
+ szAlignment = g_strdup_printf("right");
+ }
+#endif
+
+#ifdef SUBTITLE_K_FEATURE
+ szTxtFormat =
+ g_strdup_printf(VP_SUBTITLE_STRING_TXT_FORMAT, nSize, szFontEdge,
+ pSubtitle->szFontName, szFontWeight, szColor,
+ szBGColor, szBGColorOn, szAlignment, szOutput);
+#else
+ szTxtFormat =
+ g_strdup_printf(VP_SUBTITLE_STRING_TXT_FORMAT, nSize, szFontEdge,
+ pSubtitle->szFontName, szFontWeight, szColor,
+ szBGColor, szBGColorOn, szOutput);
+#endif
+
+ if (pSubtitle->pTextBlock) {
+ evas_object_textblock_text_markup_set(pSubtitle->pTextBlock,
+ szTxtFormat);
+ } else {
+ elm_object_part_text_set(pSubtitle->pLayout,
+ VP_PLAY_PART_SUBTITLE_TEXT, szTxtFormat);
+ }
+
+ VP_FREE(szFontEdge);
+ VP_FREE(szFontWeight);
+
+ VP_FREE(szBGColor);
+ VP_FREE(szBGColorOn);
+ VP_FREE(szColor);
+ VP_FREE(szTxtFormat);
+ VP_FREE(szOutput);
+ VP_FREE(szMarkup);
+#ifdef SUBTITLE_K_FEATURE
+ VP_FREE(szAlignment);
+#endif
+}
+
+
+/* external functions */
+subtitle_handle vp_play_subtitle_create(Evas_Object *pParent,
+ vp_subtitle_type_t nType)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ Subtitle *pSubtitle = NULL;
+
+ pSubtitle = calloc(1, sizeof(Subtitle));
+ if (pSubtitle == NULL) {
+ VideoLogError("pSubtitle alloc fail");
+ return NULL;
+ }
+
+ pSubtitle->pParent = pParent;
+ pSubtitle->fZoom = 1.0;
+ pSubtitle->szFontName = strdup("Tizen");
+
+ if (!_vp_play_subtitle_init_layout(pSubtitle, nType)) {
+ VideoLogError("_vp_play_subtitle_init_layout is fail");
+ _vp_play_subtitle_destroy_handle(pSubtitle);
+ return NULL;
+ }
+
+ return pSubtitle;
+}
+
+void vp_play_subtitle_destroy(subtitle_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ vp_play_subtitle_unrealize((subtitle_handle) pSubtitle);
+
+ _vp_play_subtitle_destroy_handle(pSubtitle);
+}
+
+bool vp_play_subtitle_realize(subtitle_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->bIsRealize = TRUE;
+
+ if (pSubtitle->pLayout) {
+ evas_object_show(pSubtitle->pLayout);
+ }
+
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_unrealize(subtitle_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->bIsRealize = FALSE;
+
+ if (pSubtitle->pLayout) {
+ evas_object_hide(pSubtitle->pLayout);
+ }
+
+ vp_play_subtitle_text_update(pSubtitle, NULL);
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_is_realize(subtitle_handle pWidgetHandle,
+ bool *bIsRealize)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *bIsRealize = pSubtitle->bIsRealize;
+
+ return TRUE;
+
+}
+
+Evas_Object *vp_play_subtitle_get_object(subtitle_handle pWidgetHandle)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return NULL;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ return pSubtitle->pLayout;
+}
+
+bool vp_play_subtitle_set_font(subtitle_handle pWidgetHandle,
+ char *szFontName)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ if (szFontName == NULL) {
+ VideoLogError("szFontName is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ VP_FREE(pSubtitle->szFontName);
+ VP_STRDUP(pSubtitle->szFontName, szFontName);
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+
+}
+
+bool vp_play_subtitle_get_font(subtitle_handle pWidgetHandle,
+ char **szFontName)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ if (pSubtitle->szFontName == NULL) {
+ VideoLogError("szFontName is NULL");
+ return FALSE;
+ }
+
+ VP_STRDUP(*szFontName, pSubtitle->szFontName);
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_edge(subtitle_handle pWidgetHandle, int nEdge)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->nEdge = nEdge;
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_edge(subtitle_handle pWidgetHandle, int *nEdge)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *nEdge = pSubtitle->nEdge;
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_size(subtitle_handle pWidgetHandle,
+ video_subtitle_size_t nSize)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->nSize = nSize;
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ vp_play_subtitle_set_caption_win_color(pSubtitle, TRUE);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_size(subtitle_handle pWidgetHandle,
+ video_subtitle_size_t *nSize)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *nSize = pSubtitle->nSize;
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_size_zoom(subtitle_handle pWidgetHandle,
+ float fZoom)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ if (fZoom > 1.0) {
+ fZoom = 1.0;
+ }
+ pSubtitle->fZoom = fZoom;
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_size_zoom(subtitle_handle pWidgetHandle,
+ float *fZoom)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *fZoom = pSubtitle->fZoom;
+
+ return TRUE;
+}
+
+#ifndef SUBTITLE_K_FEATURE
+bool vp_play_subtitle_set_color(subtitle_handle pWidgetHandle,
+ video_subtitle_color_t nColor)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->nFontColor = nColor;
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_color(subtitle_handle pWidgetHandle,
+ video_subtitle_color_t *nColor)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *nColor = pSubtitle->nFontColor;
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_bg_color(subtitle_handle pWidgetHandle,
+ video_subtitle_color_t nColor)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->nBGColor = nColor;
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+
+}
+
+bool vp_play_subtitle_get_bg_color(subtitle_handle pWidgetHandle,
+ video_subtitle_color_t *nColor)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *nColor = pSubtitle->nBGColor;
+
+ return TRUE;
+}
+#else
+bool vp_play_subtitle_get_color(subtitle_handle pWidgetHandle,
+ char **pColorHex)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ if (pSubtitle->pFontColorHex == NULL) {
+ VideoLogError("pFontColorHex is NULL");
+ return FALSE;
+ }
+
+ VP_STRDUP(*pColorHex, pSubtitle->pFontColorHex);
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_color(subtitle_handle pWidgetHandle,
+ char *pColorHex)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ VP_FREE(pSubtitle->pFontColorHex);
+ pSubtitle->pFontColorHex = g_strdup(pColorHex);
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_bg_color(subtitle_handle pWidgetHandle,
+ char **pColorHex)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ if (pSubtitle->pBGColorHex == NULL) {
+ VideoLogError("pBGColorHex is NULL");
+ return FALSE;
+ }
+
+ VP_STRDUP(*pColorHex, pSubtitle->pBGColorHex);
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_bg_color(subtitle_handle pWidgetHandle,
+ char *pColorHex)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ VP_FREE(pSubtitle->pBGColorHex);
+ pSubtitle->pBGColorHex = g_strdup(pColorHex);
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+}
+#endif
+
+bool vp_play_subtitle_set_text(subtitle_handle pWidgetHandle,
+ const char *szText)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ VP_FREE(pSubtitle->szText);
+ VP_STRDUP(pSubtitle->szText, szText);
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ }
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_text(subtitle_handle pWidgetHandle,
+ char **szText)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+ VP_STRDUP(*szText, pSubtitle->szText);
+
+ return TRUE;
+}
+
+#ifdef SUBTITLE_K_FEATURE
+bool vp_play_subtitle_set_alignment(subtitle_handle pWidgetHandle,
+ vp_subtitle_alignment_t nAlignment)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ pSubtitle->nAlignment = nAlignment;
+
+ if (pSubtitle->bIsRealize) {
+ vp_play_subtitle_text_update(pSubtitle, pSubtitle->szText);
+ vp_play_subtitle_set_caption_win_color(pSubtitle, TRUE);
+ }
+
+ return TRUE;
+
+}
+
+bool vp_play_subtitle_get_alignment(subtitle_handle pWidgetHandle,
+ vp_subtitle_alignment_t *nAlignment)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+
+ *nAlignment = pSubtitle->nAlignment;
+
+ return TRUE;
+}
+
+bool vp_play_subtitle_set_caption_win_color(subtitle_handle pWidgetHandle,
+ bool bShowCaption)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+ pSubtitle->bShowCaptionWin = bShowCaption;
+ if (!bShowCaption) {
+ VideoLogWarning("Hide caption window!");
+ vp_play_util_set_object_color(_EDJ(pSubtitle->pLayout), 0, 0, 0,
+ 0,
+ VP_SUBTITLE_SET_CAPTION_WINDOW_COLOR_ID);
+ return TRUE;
+ }
+
+ char *pText = NULL;
+ vp_play_subtitle_get_text(pSubtitle, &pText);
+
+ if (pText == NULL || strlen(pText) == 0) {
+ VideoLogWarning
+ ("pText is NULL or length is zero, need hide caption window!");
+ pSubtitle->bShowCaptionWin = FALSE;
+ vp_play_util_set_object_color(_EDJ(pSubtitle->pLayout), 0, 0, 0,
+ 0,
+ VP_SUBTITLE_SET_CAPTION_WINDOW_COLOR_ID);
+ if (pText) {
+ VP_FREE(pText);
+ }
+ return FALSE;
+ }
+
+ char *pCaptionWinColorHex = NULL;
+ if (!vp_play_preference_get_subtitle_caption_win_color_hex_key
+ (&pCaptionWinColorHex)) {
+ VideoLogWarning
+ ("vp_play_preference_get_subtitle_caption_win_color_hex_key failed");
+ }
+
+ int nAlignment = 0;
+ vp_play_preference_get_subtitle_alignment_key(&nAlignment);
+ if (pCaptionWinColorHex) {
+ int r = 0;
+ int g = 0;
+ int b = 0;
+ int a = 0;
+ vp_play_util_convert_hex_to_rgba(pCaptionWinColorHex, &r, &g, &b,
+ &a);
+ vp_play_util_set_object_color(elm_layout_edje_get
+ (pSubtitle->pLayout), r, g, b, a,
+ VP_SUBTITLE_SET_CAPTION_WINDOW_COLOR_ID);
+ }
+ VP_FREE(pText);
+ return TRUE;
+}
+
+bool vp_play_subtitle_get_geometry(subtitle_handle pWidgetHandle,
+ bool bLandscape, Evas_Coord *x,
+ Evas_Coord *y, Evas_Coord *w,
+ Evas_Coord *h)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+ if (pSubtitle->pLayout == NULL) {
+ VideoLogError("pLayout is NULL");
+ return FALSE;
+ }
+
+ evas_object_geometry_get(pSubtitle->pLayout, x, y, w, h);
+ VideoLogInfo("%d, %d, %d, %d", x, y, w, h);
+ int ww = VP_SUBTITLE_PROTRAIT_W;
+ int hh = VP_SUBTITLE_PROTRAIT_H;
+ if (bLandscape) {
+ ww = VP_SUBTITLE_LANDSCAPE_W;
+ hh = VP_SUBTITLE_LANDSCAPE_H;
+ }
+ *x = *x - ww / 2;
+ *w = ww;
+ *y = *y - hh / 2;
+ *h = hh;
+
+ return TRUE;
+}
+#endif
+
+bool vp_play_subtitle_get_size_formatted(subtitle_handle pWidgetHandle,
+ Evas_Coord *ww, Evas_Coord *hh)
+{
+ if (pWidgetHandle == NULL) {
+ VideoLogError("pWidgetHandle is NULL");
+ return FALSE;
+ }
+
+ Subtitle *pSubtitle = (Subtitle *) pWidgetHandle;
+ if (pSubtitle->pTextBlock == NULL) {
+ VideoLogError("pTextBlock is NULL");
+ return FALSE;
+ }
+
+ evas_object_textblock_size_formatted_get(pSubtitle->pTextBlock, ww,
+ hh);
+
+ return TRUE;
+}
diff --git a/playview/src/widget/vp-play-volume-popup.c b/playview/src/widget/vp-play-volume-popup.c
new file mode 100644
index 0000000..13f013d
--- /dev/null
+++ b/playview/src/widget/vp-play-volume-popup.c
@@ -0,0 +1,642 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-volume-popup.h"
+
+#include "vp-sound.h"
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+
+
+#define VP_VOLUME_POPUP_HIDE_LAYOUT_TIMER_INTERVAL 5.0
+
+
+#define VP_VOLUME_POPUP_PORTRAIT_POS_X 12
+#define VP_VOLUME_POPUP_PORTRAIT_POS_Y 275
+#define VP_VOLUME_POPUP_PORTRAIT_HEIGHT 572
+
+#define VP_VOLUME_POPUP_LANDSCAPE_POS_X 19
+#define VP_VOLUME_POPUP_LANDSCAPE_POS_Y 67
+#define VP_VOLUME_POPUP_LANDSCAPE_HEIGHT 572
+
+#define VP_VOLUME_POPUP_TEXT_MAX_LEN 3
+
+
+
+typedef struct _VolumePopupWidget {
+ Evas_Object *pParent;
+ Evas_Object *pLayout;
+ Ecore_Timer *pHideTimer;
+ Ecore_Timer *pDeviceTimer;
+
+ bool bLandscape;
+ bool bIsRealize;
+ bool bMouseDown;
+
+ int nMaxVal;
+ int nCurVal;
+} VolumePopupWidget;
+
+static void _vp_play_volume_popup_destory_handle(VolumePopupWidget *
+ pVolumeWidget);
+static double _vp_play_volume_popup_get_mouse_pos_ratio(Evas_Object *
+ pObj,
+ bool bLandscape,
+ int nCurY);
+static void _vp_play_volume_popup_set_value(VolumePopupWidget *
+ pVolumeWidget, int nValue);
+static void _vp_play_volume_popup_create_timer(VolumePopupWidget *
+ pVolumeWidget);
+
+/* callback functions */
+static void __vp_volume_popup_mouse_down_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VolumePopupWidget *pVolumeWidget = (VolumePopupWidget *) pUserData;
+
+ if (pVolumeWidget->bIsRealize == FALSE) {
+ return;
+ }
+
+ Evas_Event_Mouse_Down *pMouseDownEvent =
+ (Evas_Event_Mouse_Down *) pEvent;
+
+ double dRatio =
+ _vp_play_volume_popup_get_mouse_pos_ratio(pVolumeWidget->pLayout,
+ pVolumeWidget->
+ bLandscape,
+ pMouseDownEvent->canvas.
+ y);
+
+ int nCurVal =
+ pVolumeWidget->nMaxVal - (dRatio * pVolumeWidget->nMaxVal);
+
+ _vp_play_volume_popup_set_value(pVolumeWidget, nCurVal);
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+
+ pVolumeWidget->bMouseDown = TRUE;
+}
+
+static void __vp_volume_popup_mouse_up_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VolumePopupWidget *pVolumeWidget = (VolumePopupWidget *) pUserData;
+
+ Evas_Event_Mouse_Up *pMouseUpEvent = (Evas_Event_Mouse_Up *) pEvent;
+
+ if (pVolumeWidget->bIsRealize == FALSE) {
+ return;
+ }
+
+ double dRatio =
+ _vp_play_volume_popup_get_mouse_pos_ratio(pVolumeWidget->pLayout,
+ pVolumeWidget->
+ bLandscape,
+ pMouseUpEvent->canvas.
+ y);
+
+ int nCurVal =
+ pVolumeWidget->nMaxVal - (dRatio * pVolumeWidget->nMaxVal);
+
+ _vp_play_volume_popup_set_value(pVolumeWidget, nCurVal);
+ _vp_play_volume_popup_create_timer(pVolumeWidget);
+
+ pVolumeWidget->bMouseDown = FALSE;
+}
+
+static void __vp_volume_popup_mouse_move_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VolumePopupWidget *pVolumeWidget = (VolumePopupWidget *) pUserData;
+
+ Evas_Event_Mouse_Move *pMouseMoveEvent =
+ (Evas_Event_Mouse_Move *) pEvent;
+
+ if (pVolumeWidget->bIsRealize == FALSE
+ || pVolumeWidget->bMouseDown == FALSE) {
+ return;
+ }
+
+ double dRatio =
+ _vp_play_volume_popup_get_mouse_pos_ratio(pVolumeWidget->pLayout,
+ pVolumeWidget->
+ bLandscape,
+ pMouseMoveEvent->cur.
+ canvas.y);
+
+ int nCurVal =
+ pVolumeWidget->nMaxVal - (dRatio * pVolumeWidget->nMaxVal);
+
+ if (nCurVal != pVolumeWidget->nCurVal) {
+ _vp_play_volume_popup_set_value(pVolumeWidget, nCurVal);
+ }
+
+}
+
+static Eina_Bool __vp_volume_popup_hide_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget = (VolumePopupWidget *) pUserData;
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+
+ if (!vp_play_volume_popup_unrealize
+ ((volume_popup_handle) pVolumeWidget)) {
+ VideoLogWarning("vp_play_volume_popup_unrealize is fail");
+ }
+
+ return EINA_FALSE;
+}
+
+
+
+/* internal functions */
+static void _vp_play_volume_popup_destory_handle(VolumePopupWidget *
+ pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pDeviceTimer);
+
+ VP_EVAS_DEL(pVolumeWidget->pLayout);
+ VP_FREE(pVolumeWidget);
+}
+
+static double _vp_play_volume_popup_get_mouse_pos_ratio(Evas_Object *
+ pObj,
+ bool bLandscape,
+ int nCurY)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return 0.0;
+ }
+
+ int nHeight = 0;
+ int nCurrent = 0;
+ double dRatio = 0.0;
+
+ evas_object_geometry_get(pObj, NULL, NULL, NULL, &nHeight);
+
+ if (bLandscape) {
+ nHeight = VP_VOLUME_POPUP_LANDSCAPE_HEIGHT;
+ nCurrent = nCurY - VP_VOLUME_POPUP_LANDSCAPE_POS_Y;
+ } else {
+ nHeight = VP_VOLUME_POPUP_PORTRAIT_HEIGHT;
+ nCurrent = nCurY - VP_VOLUME_POPUP_PORTRAIT_POS_Y;
+ }
+
+ if (nCurrent < 0) {
+ nCurrent = 0;
+ } else if (nCurrent > nHeight) {
+ nCurrent = nHeight;
+ }
+
+ dRatio = (double) nCurrent / nHeight;
+
+ return dRatio;
+}
+
+
+static void _vp_play_volume_popup_set_widget_position(VolumePopupWidget *
+ pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return;
+ }
+
+ bool bLandscape = pVolumeWidget->bLandscape;
+
+ if (bLandscape) {
+ evas_object_move(pVolumeWidget->pLayout,
+ VP_VOLUME_POPUP_LANDSCAPE_POS_X * VP_SCALE,
+ VP_VOLUME_POPUP_LANDSCAPE_POS_Y * VP_SCALE);
+ } else {
+ evas_object_move(pVolumeWidget->pLayout,
+ VP_VOLUME_POPUP_PORTRAIT_POS_X * VP_SCALE,
+ VP_VOLUME_POPUP_PORTRAIT_POS_Y * VP_SCALE);
+ }
+}
+
+
+static void _vp_play_volume_popup_update_value(VolumePopupWidget *
+ pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return;
+ }
+
+ double nVolumeRatio = 0.0;
+ char szPlayingTime[VP_VOLUME_POPUP_TEXT_MAX_LEN] = { 0, };
+
+ snprintf(szPlayingTime, VP_VOLUME_POPUP_TEXT_MAX_LEN, "%d",
+ pVolumeWidget->nCurVal);
+
+ nVolumeRatio =
+ ((double) pVolumeWidget->nCurVal /
+ (double) pVolumeWidget->nMaxVal);
+
+ if (!edje_object_part_drag_value_set
+ (_EDJ(pVolumeWidget->pLayout),
+ VP_PLAY_SWALLOW_VOLUME_POPUP_DRAG_RECT, 0.0, nVolumeRatio)) {
+ VideoLogWarning("Drag value set fail : %lf", nVolumeRatio);
+ }
+
+ elm_object_part_text_set(pVolumeWidget->pLayout,
+ VP_PLAY_SWALLOW_VOLUME_POPUP_VALUE_LABEL,
+ szPlayingTime);
+
+ if (pVolumeWidget->nCurVal == 0) {
+ edje_object_signal_emit(_EDJ(pVolumeWidget->pLayout), "set,mute",
+ "volume.popup.icon");
+ } else {
+ edje_object_signal_emit(_EDJ(pVolumeWidget->pLayout),
+ "set,volume", "volume.popup.icon");
+ }
+}
+
+static Eina_Bool __vp_volume_popup_device_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget = (VolumePopupWidget *) pUserData;
+
+ if (pVolumeWidget->pDeviceTimer) {
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pDeviceTimer);
+ }
+ if (!vp_sound_set_volume(pVolumeWidget->nCurVal)) {
+ VideoLogError("vp_sound_set_volume");
+ return EINA_FALSE;
+ }
+
+ return EINA_FALSE;
+}
+
+static void _vp_play_volume_popup_set_value(VolumePopupWidget *
+ pVolumeWidget, int nValue)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pParent is NULL");
+ return;
+ }
+
+ pVolumeWidget->nCurVal = nValue;
+
+ _vp_play_volume_popup_update_value(pVolumeWidget);
+
+ if (pVolumeWidget->pDeviceTimer == NULL) {
+ pVolumeWidget->pDeviceTimer = ecore_timer_add(0.1,
+ __vp_volume_popup_device_timer_cb,
+ (void *)
+ pVolumeWidget);
+ }
+}
+
+static void _vp_play_volume_popup_create_timer(VolumePopupWidget *
+ pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pParent is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+
+ pVolumeWidget->pHideTimer =
+ ecore_timer_add(VP_VOLUME_POPUP_HIDE_LAYOUT_TIMER_INTERVAL,
+ __vp_volume_popup_hide_timer_cb,
+ (void *) pVolumeWidget);
+}
+
+static Evas_Object *_vp_play_volume_popup_create_layout(Evas_Object *
+ pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_VOLUME_POPUP_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_VOLUME_POPUP);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+
+static bool _vp_play_volume_popup_init_layout(VolumePopupWidget *
+ pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pVolumeWidget->pParent;
+
+ pVolumeWidget->pLayout = _vp_play_volume_popup_create_layout(pParent);
+ if (pVolumeWidget->pLayout == NULL) {
+ VideoLogError("_vp_play_volume_create_layout is fail");
+ return FALSE;
+ }
+ evas_object_event_callback_add(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_volume_popup_mouse_down_cb,
+ (void *) pVolumeWidget);
+
+ evas_object_event_callback_add(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_UP,
+ __vp_volume_popup_mouse_up_cb,
+ (void *) pVolumeWidget);
+
+ evas_object_event_callback_add(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_volume_popup_mouse_move_cb,
+ (void *) pVolumeWidget);
+
+ return TRUE;
+}
+
+
+
+/* external functions */
+volume_popup_handle vp_play_volume_popup_create(Evas_Object *pParent)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ VolumePopupWidget *pVolumeWidget = NULL;
+
+ pVolumeWidget = calloc(1, sizeof(VolumePopupWidget));
+
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget alloc fail");
+ return NULL;
+ }
+
+ pVolumeWidget->pParent = pParent;
+ pVolumeWidget->bLandscape = FALSE;
+
+ if (!_vp_play_volume_popup_init_layout(pVolumeWidget)) {
+ VideoLogError("_vp_play_volume_init_layout is fail");
+ _vp_play_volume_popup_destory_handle(pVolumeWidget);
+ return NULL;
+ }
+
+ if (!vp_sound_get_max_volume(&(pVolumeWidget->nMaxVal))) {
+ VideoLogError("vp_sound_get_max_volume fail");
+ _vp_play_volume_popup_destory_handle(pVolumeWidget);
+ return NULL;
+ }
+
+ if (!vp_sound_get_volume(&(pVolumeWidget->nCurVal))) {
+ VideoLogError("vp_sound_get_volume fail");
+ _vp_play_volume_popup_destory_handle(pVolumeWidget);
+ return NULL;
+ }
+
+ _vp_play_volume_popup_update_value(pVolumeWidget);
+
+ return (volume_popup_handle) pVolumeWidget;
+}
+
+void vp_play_volume_popup_destroy(volume_popup_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ _vp_play_volume_popup_destory_handle(pVolumeWidget);
+}
+
+bool vp_play_volume_popup_realize(volume_popup_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ pVolumeWidget->bIsRealize = TRUE;
+
+ _vp_play_volume_popup_set_widget_position(pVolumeWidget);
+
+ _vp_play_volume_popup_set_value(pVolumeWidget,
+ pVolumeWidget->nCurVal);
+
+ evas_object_show(pVolumeWidget->pLayout);
+ _vp_play_volume_popup_create_timer(pVolumeWidget);
+
+ return TRUE;
+}
+
+bool vp_play_volume_popup_unrealize(volume_popup_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ pVolumeWidget->bIsRealize = FALSE;
+
+ evas_object_hide(pVolumeWidget->pLayout);
+
+ return TRUE;
+}
+
+bool vp_play_volume_popup_set_landscape_mode(volume_popup_handle
+ pVolumeHandle,
+ bool bLandscape)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ pVolumeWidget->bLandscape = bLandscape;
+
+ _vp_play_volume_popup_set_widget_position(pVolumeWidget);
+
+
+ return TRUE;
+}
+
+bool vp_play_volume_popup_is_realize(volume_popup_handle pVolumeHandle,
+ bool *bIsRealize)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ *bIsRealize = pVolumeWidget->bIsRealize;
+
+ return TRUE;
+}
+
+
+bool vp_play_volume_popup_set_value(volume_popup_handle pVolumeHandle,
+ int nCurVal)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ _vp_play_volume_popup_create_timer(pVolumeWidget);
+
+ pVolumeWidget->nCurVal = nCurVal;
+
+ if (pVolumeWidget->nCurVal < 0) {
+ pVolumeWidget->nCurVal = 0;
+ return TRUE;
+ }
+
+ if (pVolumeWidget->nCurVal > pVolumeWidget->nMaxVal) {
+ pVolumeWidget->nCurVal = pVolumeWidget->nMaxVal;
+ return TRUE;
+ }
+
+ _vp_play_volume_popup_set_value(pVolumeWidget,
+ pVolumeWidget->nCurVal);
+
+ return TRUE;
+}
+
+bool vp_play_volume_popup_get_value(int *nCurVal)
+{
+
+ int nVal = 0;
+
+ if (!vp_sound_get_volume(&nVal)) {
+ VideoLogError("vp_sound_get_volume fail");
+ return FALSE;
+ }
+
+ *nCurVal = nVal;
+
+ return TRUE;
+}
+
+bool vp_play_volume_popup_get_max_value(int *nMaxVal)
+{
+ int nVal = 0;
+
+ if (!vp_sound_get_max_volume(&nVal)) {
+ VideoLogError("vp_sound_get_max_volume fail");
+ return FALSE;
+ }
+
+ *nMaxVal = nVal;
+
+ return TRUE;
+}
+
+
+bool vp_play_volume_popup_is_mute(volume_popup_handle pVolumeHandle,
+ bool *bIsMute)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ VolumePopupWidget *pVolumeWidget =
+ (VolumePopupWidget *) pVolumeHandle;
+
+ if (pVolumeWidget->nCurVal == 0) {
+ *bIsMute = TRUE;
+ } else {
+ *bIsMute = FALSE;
+ }
+
+ return TRUE;
+
+}
diff --git a/playview/src/widget/vp-play-volume.c b/playview/src/widget/vp-play-volume.c
new file mode 100644
index 0000000..505cf20
--- /dev/null
+++ b/playview/src/widget/vp-play-volume.c
@@ -0,0 +1,960 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include "vp-play-type-define.h"
+#include "vp-play-string-define.h"
+#include "vp-play-value-define.h"
+#include "vp-play-macro-define.h"
+
+#include "vp-play-volume.h"
+#include "vp-play-button.h"
+
+#include "vp-sound.h"
+#include "vp-play-util.h"
+
+/* check temp */
+#include "vp-play-log.h"
+#include "vp-mm-player.h"
+
+#define VP_VOLUME_HIDE_LAYOUT_TIMER_INTERVAL 5.0
+
+#define VP_VOLUME_PORTRAIT_POS_X 15
+#define VP_VOLUME_PORTRAIT_POS_Y 60
+#define VP_VOLUME_PORTRAIT_HEIGHT 241
+
+#define VP_VOLUME_LANDSCAPE_POS_X 19
+#define VP_VOLUME_LANDSCAPE_POS_Y 27
+#define VP_VOLUME_LANDSCAPE_HEIGHT 170
+
+#define VP_VOLUME_TOP_PADDING_H 87
+
+#define VP_VOLUME_TEXT_MAX_LEN 4
+
+
+
+typedef struct _VolumeWidget {
+ Evas_Object *pParent;
+ Evas_Object *pWin;
+ Evas_Object *pLayout;
+ Evas_Object *pFocusPoint;
+ Ecore_Timer *pHideTimer;
+ Ecore_Timer *pDeviceTimer;
+
+ bool bLandscape;
+ bool bIsRealize;
+ bool bMouseDown;
+
+ int nMaxVal;
+ int nCurVal;
+ int nTmpVal;
+ int nMuteVal;
+
+ void *pUserData;
+ void *pPlayerHandle;
+
+ NormalVolumeChangeCbFunc pChangeVolFunc;
+} VolumeWidget;
+
+static void _vp_play_volume_destory_handle(VolumeWidget *pVolumeWidget);
+static double _vp_play_volume_get_mouse_pos_ratio(Evas_Object *pObj,
+ bool bLandscape,
+ int nCurY,
+ Evas_Object *pWin);
+static bool _vp_play_volume_set_value(VolumeWidget *pVolumeWidget,
+ int nValue);
+static void _vp_play_volume_create_timer(VolumeWidget *pVolumeWidget);
+
+/* callback functions */
+static void __vp_volume_focus_key_down_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj,
+ void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pUserData;
+
+ Evas_Event_Key_Down *ev = pEvent;
+
+ if (!ev)
+ return;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ VideoLogInfo("KEY: %s", ev->keyname);
+
+ if (!strcmp(ev->keyname, "Up")) {
+ vp_play_volume_increase_value(pVolumeWidget);
+ } else if (!strcmp(ev->keyname, "Down")) {
+ vp_play_volume_decrease_value(pVolumeWidget);
+ }
+}
+
+static void __vp_volume_mouse_down_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pUserData;
+
+ if (pVolumeWidget->bIsRealize == FALSE) {
+ return;
+ }
+
+ Evas_Event_Mouse_Down *pMouseDownEvent =
+ (Evas_Event_Mouse_Down *) pEvent;
+
+ double dRatio =
+ _vp_play_volume_get_mouse_pos_ratio(pVolumeWidget->pLayout,
+ pVolumeWidget->bLandscape,
+ pMouseDownEvent->canvas.y,
+ pVolumeWidget->pWin);
+
+ int nCurVal =
+ pVolumeWidget->nMaxVal - (dRatio * pVolumeWidget->nMaxVal);
+
+ _vp_play_volume_set_value(pVolumeWidget, nCurVal);
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+
+ pVolumeWidget->bMouseDown = TRUE;
+}
+
+static void __vp_volume_mouse_up_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pUserData;
+
+ Evas_Event_Mouse_Up *pMouseUpEvent = (Evas_Event_Mouse_Up *) pEvent;
+
+ if (pVolumeWidget->bIsRealize == FALSE) {
+ return;
+ }
+
+ double dRatio =
+ _vp_play_volume_get_mouse_pos_ratio(pVolumeWidget->pLayout,
+ pVolumeWidget->bLandscape,
+ pMouseUpEvent->canvas.y,
+ pVolumeWidget->pWin);
+
+ int nCurVal =
+ pVolumeWidget->nMaxVal - (dRatio * pVolumeWidget->nMaxVal);
+
+ _vp_play_volume_set_value(pVolumeWidget, nCurVal);
+ _vp_play_volume_create_timer(pVolumeWidget);
+
+ pVolumeWidget->bMouseDown = FALSE;
+}
+
+static void __vp_volume_mouse_move_cb(void *pUserData, Evas *e,
+ Evas_Object *pObj, void *pEvent)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pUserData;
+
+ Evas_Event_Mouse_Move *pMouseMoveEvent =
+ (Evas_Event_Mouse_Move *) pEvent;
+
+ if (pVolumeWidget->bIsRealize == FALSE
+ || pVolumeWidget->bMouseDown == FALSE) {
+ return;
+ }
+
+ double dRatio =
+ _vp_play_volume_get_mouse_pos_ratio(pVolumeWidget->pLayout,
+ pVolumeWidget->bLandscape,
+ pMouseMoveEvent->cur.canvas.y,
+ pVolumeWidget->pWin);
+
+ int nCurVal =
+ pVolumeWidget->nMaxVal - (dRatio * pVolumeWidget->nMaxVal);
+
+ if (nCurVal != pVolumeWidget->nCurVal) {
+ _vp_play_volume_set_value(pVolumeWidget, nCurVal);
+ }
+
+}
+
+static Eina_Bool __vp_volume_hide_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pUserData;
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+
+ if (!vp_play_volume_unrealize((volume_handle) pVolumeWidget)) {
+ VideoLogWarning("vp_play_volume_unrealize is fail");
+ }
+
+ return EINA_FALSE;
+}
+
+
+
+/* internal functions */
+static void _vp_play_volume_destory_handle(VolumeWidget *pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return;
+ }
+
+ pVolumeWidget->pChangeVolFunc = NULL;
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pDeviceTimer);
+
+ VP_EVAS_DEL(pVolumeWidget->pFocusPoint);
+ VP_EVAS_DEL(pVolumeWidget->pLayout);
+ VP_FREE(pVolumeWidget);
+}
+
+static double _vp_play_volume_get_mouse_pos_ratio(Evas_Object *pObj,
+ bool bLandscape,
+ int nCurY,
+ Evas_Object *pWin)
+{
+ if (pObj == NULL) {
+ VideoLogError("pObj is NULL");
+ return 0.0;
+ }
+
+ int nHeight = 0;
+ int nCurrent = 0;
+ double dRatio = 0.0;
+ int w = 0;
+ int h = 0;
+ elm_win_screen_size_get(pWin, NULL, NULL, &w, &h);
+
+ if ((elm_config_scale_get() - 2.6) == 0.0) {
+ if (bLandscape) {
+ nHeight = VP_VOLUME_LANDSCAPE_HEIGHT;
+ nCurrent =
+ nCurY - VP_VOLUME_LANDSCAPE_POS_Y - VP_VOLUME_TOP_PADDING_H +
+ 10;
+ } else {
+ nHeight = 350;
+ nCurrent =
+ nCurY - VP_VOLUME_PORTRAIT_POS_Y - VP_VOLUME_TOP_PADDING_H -
+ 310;
+ }
+ }
+ else if ((elm_config_scale_get() - 1.8) == 0.0) {
+ if (bLandscape) {
+ nHeight = 125;
+ nCurrent =
+ nCurY - VP_VOLUME_LANDSCAPE_POS_Y - VP_VOLUME_TOP_PADDING_H + 70;
+ } else {
+ nHeight = 255;
+ nCurrent =
+ nCurY - VP_VOLUME_PORTRAIT_POS_Y - VP_VOLUME_TOP_PADDING_H - 42;
+ }
+ }
+ else {
+ if (bLandscape) {
+ nHeight = 145;
+ nCurrent =
+ nCurY - VP_VOLUME_LANDSCAPE_POS_Y - VP_VOLUME_TOP_PADDING_H + 60;
+ } else {
+ nHeight = 300;
+ nCurrent =
+ nCurY - VP_VOLUME_PORTRAIT_POS_Y - VP_VOLUME_TOP_PADDING_H - 56;
+ }
+ }
+
+ if (nCurrent < 0) {
+ nCurrent = 0;
+ } else if (nCurrent > nHeight) {
+ nCurrent = nHeight;
+ }
+ if (nHeight > 0.0) {
+ dRatio = (double) nCurrent / nHeight;
+ }
+
+ return dRatio;
+}
+
+
+static void _vp_play_volume_set_widget_position(VolumeWidget *
+ pVolumeWidget,
+ Evas_Object *pWin)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return;
+ }
+ int w = 0;
+ int h = 0;
+ elm_win_screen_size_get(pWin, NULL, NULL, &w, &h);
+ pVolumeWidget->pWin = pWin;
+ bool bLandscape = pVolumeWidget->bLandscape;
+
+ if ((elm_config_scale_get() - 2.6) == 0.0) {
+ if (bLandscape) {
+ elm_object_signal_emit(pVolumeWidget->pLayout,
+ VP_NORMAL_SIGNAL_VOLUME_LANDSCAPE_MODE,
+ "*");
+ evas_object_move(pVolumeWidget->pLayout, h - 80, w / 10);
+ } else {
+ elm_object_signal_emit(pVolumeWidget->pLayout,
+ VP_NORMAL_SIGNAL_VOLUME_PORTRAIT_MODE,
+ "*");
+ evas_object_move(pVolumeWidget->pLayout, w - w / 9, (5 * h) / 16);
+ }
+ }
+ else if ((elm_config_scale_get() - 1.8) == 0.0) {
+ if (bLandscape) {
+ elm_object_signal_emit(pVolumeWidget->pLayout,
+ VP_NORMAL_SIGNAL_VOLUME_LANDSCAPE_MODE,
+ "*");
+ evas_object_move(pVolumeWidget->pLayout, h - h / 16, w / 16);
+ } else {
+ elm_object_signal_emit(pVolumeWidget->pLayout,
+ VP_NORMAL_SIGNAL_VOLUME_PORTRAIT_MODE,
+ "*");
+ evas_object_move(pVolumeWidget->pLayout, w - w / 10, h / 5);
+ }
+ }
+ else {
+ if (bLandscape) {
+ elm_object_signal_emit(pVolumeWidget->pLayout,
+ VP_NORMAL_SIGNAL_VOLUME_LANDSCAPE_MODE,
+ "*");
+ evas_object_move(pVolumeWidget->pLayout, h - h / 16, w / 16);
+ } else {
+ elm_object_signal_emit(pVolumeWidget->pLayout,
+ VP_NORMAL_SIGNAL_VOLUME_PORTRAIT_MODE,
+ "*");
+ evas_object_move(pVolumeWidget->pLayout, w - w / 10, h / 5);
+ }
+ }
+}
+
+
+static void _vp_play_volume_update_value(VolumeWidget *pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return;
+ }
+
+ double nVolumeRatio = 0.0;
+ char szPlayingTime[VP_VOLUME_TEXT_MAX_LEN] = { 0, };
+
+ snprintf(szPlayingTime, VP_VOLUME_TEXT_MAX_LEN, "%d",
+ pVolumeWidget->nCurVal);
+
+ nVolumeRatio =
+ ((double) pVolumeWidget->nCurVal /
+ (double) pVolumeWidget->nMaxVal);
+
+ if (!edje_object_part_drag_value_set
+ (_EDJ(pVolumeWidget->pLayout), VP_PLAY_SWALLOW_VOLUME_DRAG_RECT,
+ 0.0, nVolumeRatio)) {
+ VideoLogWarning("Drag value set fail : %lf", nVolumeRatio);
+ }
+
+ elm_object_part_text_set(pVolumeWidget->pLayout,
+ VP_PLAY_SWALLOW_VOLUME_VALUE_LABEL,
+ szPlayingTime);
+}
+
+static Eina_Bool __vp_volume_device_timer_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return EINA_FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pUserData;
+
+ int maxVolume = 0;
+ if (!vp_sound_get_max_volume(&maxVolume)) {
+ VideoLogError("vp_sound_get_max_volume failed");
+ }
+
+ if (pVolumeWidget->pDeviceTimer) {
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pDeviceTimer);
+ }
+ if (!vp_sound_set_volume(pVolumeWidget->nTmpVal)) {
+ VideoLogError("vp_sound_set_volume failed");
+ } else {
+ pVolumeWidget->nCurVal = pVolumeWidget->nTmpVal;
+ _vp_play_volume_update_value(pVolumeWidget);
+ if (pVolumeWidget->pChangeVolFunc) {
+ pVolumeWidget->pChangeVolFunc(pVolumeWidget->nCurVal,
+ pVolumeWidget->pUserData);
+ }
+
+ VideoLogWarning
+ ("vp_sound_set_volume successed, need update volume bar! = %d",
+ pVolumeWidget->nCurVal);
+ }
+
+ return EINA_FALSE;
+}
+
+static bool _vp_play_volume_set_value(VolumeWidget *pVolumeWidget,
+ int nValue)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pParent is NULL");
+ return FALSE;
+ }
+
+ pVolumeWidget->nTmpVal = pVolumeWidget->nCurVal;
+ if (nValue > 0)
+ pVolumeWidget->nMuteVal = 0;
+
+ int nMaxValue = 0;
+ if (vp_sound_get_max_volume(&nMaxValue) && nValue <= nMaxValue)
+ pVolumeWidget->nTmpVal = nValue;
+
+ if (pVolumeWidget->pDeviceTimer == NULL) {
+ pVolumeWidget->pDeviceTimer = ecore_timer_add(0.1,
+ __vp_volume_device_timer_cb,
+ (void *)
+ pVolumeWidget);
+ }
+
+ return TRUE;
+}
+
+static void _vp_play_volume_create_timer(VolumeWidget *pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pParent is NULL");
+ return;
+ }
+
+ VP_EVAS_TIMER_DEL(pVolumeWidget->pHideTimer);
+
+ pVolumeWidget->pHideTimer =
+ ecore_timer_add(VP_VOLUME_HIDE_LAYOUT_TIMER_INTERVAL,
+ __vp_volume_hide_timer_cb,
+ (void *) pVolumeWidget);
+}
+
+static Evas_Object *_vp_play_volume_create_layout(Evas_Object *pParent)
+{
+ if (!pParent) {
+ VideoLogError("Parent is NULL");
+ return NULL;
+ }
+
+ Evas_Object *pObj = NULL;
+ Eina_Bool bRet = EINA_FALSE;
+
+ pObj = elm_layout_add(pParent);
+ if (pObj == NULL) {
+ VideoLogError("elm_layout_add object is NULL");
+ return NULL;
+ }
+
+ bRet =
+ elm_layout_file_set(pObj, VP_PLAY_VOLUME_EDJ_PATH,
+ VP_PLAY_EDJ_GROUP_VOLUME);
+ if (bRet != EINA_TRUE) {
+ VideoLogError("elm_layout_file_set fail");
+ return NULL;
+ }
+
+ evas_object_show(pObj);
+
+ return pObj;
+}
+
+
+static bool _vp_play_volume_init_layout(VolumeWidget *pVolumeWidget)
+{
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget is NULL");
+ return FALSE;
+ }
+
+ Evas_Object *pParent = pVolumeWidget->pParent;
+
+ pVolumeWidget->pLayout = _vp_play_volume_create_layout(pParent);
+ if (pVolumeWidget->pLayout == NULL) {
+ VideoLogError("_vp_play_volume_create_layout is fail");
+ return FALSE;
+ }
+ pVolumeWidget->pFocusPoint =
+ vp_button_create(pVolumeWidget->pLayout, "focus", NULL, NULL,
+ NULL, NULL, (void *) pVolumeWidget);
+ if (!pVolumeWidget->pFocusPoint) {
+ VideoLogError("elm_button_add is fail");
+ return FALSE;
+ }
+
+ elm_object_focus_allow_set(pVolumeWidget->pFocusPoint, EINA_FALSE);
+ elm_object_part_content_set(pVolumeWidget->pLayout,
+ "pv.volume.point.focus",
+ pVolumeWidget->pFocusPoint);
+
+ return TRUE;
+}
+
+/* external functions */
+volume_handle vp_play_volume_create(Evas_Object *pParent,
+ void *pPlayerHandle,
+ NormalVolumeChangeCbFunc pFunc)
+{
+ if (pParent == NULL) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ VolumeWidget *pVolumeWidget = NULL;
+
+ pVolumeWidget = calloc(1, sizeof(VolumeWidget));
+
+ if (pVolumeWidget == NULL) {
+ VideoLogError("pVolumeWidget alloc fail");
+ return NULL;
+ }
+
+ pVolumeWidget->pChangeVolFunc = pFunc;
+ pVolumeWidget->pParent = pParent;
+ pVolumeWidget->bLandscape = FALSE;
+ pVolumeWidget->pPlayerHandle = pPlayerHandle;
+
+ if (!_vp_play_volume_init_layout(pVolumeWidget)) {
+ VideoLogError("_vp_play_volume_init_layout is fail");
+ _vp_play_volume_destory_handle(pVolumeWidget);
+ return NULL;
+ }
+
+ if (!vp_sound_get_max_volume(&(pVolumeWidget->nMaxVal))) {
+ VideoLogError("vp_sound_get_max_volume fail");
+ _vp_play_volume_destory_handle(pVolumeWidget);
+ return NULL;
+ }
+
+ if (!vp_sound_get_volume(&(pVolumeWidget->nCurVal))) {
+ VideoLogError("vp_sound_get_volume fail");
+ _vp_play_volume_destory_handle(pVolumeWidget);
+ return NULL;
+ }
+
+ bool flag = vp_play_volume_unrealize(pVolumeWidget);
+ if (!flag) {
+ VideoLogError("vp_play_volume_unrealize return FALSE");
+ }
+
+ _vp_play_volume_update_value(pVolumeWidget);
+
+ return (volume_handle) pVolumeWidget;
+}
+
+void vp_play_volume_destroy(volume_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ vp_play_volume_unset_mouse_callbacks(pVolumeWidget,
+ pVolumeWidget->pWin);
+ _vp_play_volume_destory_handle(pVolumeWidget);
+}
+
+bool vp_play_volume_realize(volume_handle pVolumeHandle,
+ Evas_Object *pWin)
+{
+ VideoLogInfo("");
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ pVolumeWidget->bIsRealize = TRUE;
+
+ _vp_play_volume_set_widget_position(pVolumeWidget, pWin);
+
+ _vp_play_volume_set_value(pVolumeWidget, pVolumeWidget->nCurVal);
+
+ evas_object_show(pVolumeWidget->pLayout);
+ _vp_play_volume_create_timer(pVolumeWidget);
+
+ return TRUE;
+}
+
+bool vp_play_volume_unrealize(volume_handle pVolumeHandle)
+{
+ VideoLogInfo("");
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ pVolumeWidget->bIsRealize = FALSE;
+
+ elm_object_focus_allow_set(pVolumeWidget->pFocusPoint, EINA_FALSE);
+ evas_object_hide(pVolumeWidget->pFocusPoint);
+ evas_object_hide(pVolumeWidget->pLayout);
+ return TRUE;
+}
+
+bool vp_play_volume_set_landscape_mode(volume_handle pVolumeHandle,
+ bool bLandscape,
+ Evas_Object *pWin)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ pVolumeWidget->bLandscape = bLandscape;
+
+ _vp_play_volume_set_widget_position(pVolumeWidget, pWin);
+
+
+ return TRUE;
+}
+
+bool vp_play_volume_set_user_data(volume_handle pVolumeHandle,
+ void *pUserData)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ pVolumeWidget->pUserData = pUserData;
+
+ return TRUE;
+}
+
+bool vp_play_volume_is_realize(volume_handle pVolumeHandle,
+ bool *bIsRealize)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ *bIsRealize = pVolumeWidget->bIsRealize;
+
+ return TRUE;
+}
+
+bool vp_play_volume_increase_value(volume_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+ int nVal = 0;
+
+ if (pVolumeWidget->pDeviceTimer) {
+ nVal = pVolumeWidget->nCurVal + 1;
+ } else {
+ if (!vp_sound_get_volume(&nVal)) {
+ VideoLogError("vp_sound_get_volume fail");
+ return FALSE;
+ }
+
+ nVal++;
+ }
+
+ _vp_play_volume_create_timer(pVolumeWidget);
+
+ if (nVal > pVolumeWidget->nMaxVal) {
+ pVolumeWidget->nCurVal = pVolumeWidget->nMaxVal;
+ return TRUE;
+ }
+
+ _vp_play_volume_set_value(pVolumeWidget, nVal);
+
+ return TRUE;
+
+}
+
+bool vp_play_volume_decrease_value(volume_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+ int nVal = 0;
+
+ if (pVolumeWidget->pDeviceTimer) {
+ nVal = pVolumeWidget->nCurVal - 1;
+ } else {
+ if (!vp_sound_get_volume(&nVal)) {
+ VideoLogError("vp_sound_get_volume fail");
+ return FALSE;
+ }
+
+ nVal--;
+ }
+
+ _vp_play_volume_create_timer(pVolumeWidget);
+
+ if (nVal < 0) {
+ pVolumeWidget->nCurVal = 0;
+ return TRUE;
+ }
+
+ _vp_play_volume_set_value(pVolumeWidget, nVal);
+
+ return TRUE;
+
+}
+
+bool vp_play_volume_update_value(volume_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+ int nVal = 0;
+
+ if (pVolumeWidget->pDeviceTimer) {
+ return TRUE;
+ }
+
+ if (!vp_sound_get_volume(&nVal)) {
+ VideoLogError("vp_sound_get_volume fail");
+ return FALSE;
+ }
+
+ if (pVolumeWidget->nCurVal != nVal) {
+ pVolumeWidget->nCurVal = nVal;
+ if (pVolumeWidget->bIsRealize) {
+ _vp_play_volume_update_value(pVolumeWidget);
+ }
+ }
+
+ return TRUE;
+}
+
+
+bool vp_play_volume_is_mute(volume_handle pVolumeHandle, bool *bIsMute)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ if (pVolumeWidget->nCurVal == 0) {
+ *bIsMute = TRUE;
+ } else {
+ *bIsMute = FALSE;
+ }
+
+ return TRUE;
+
+}
+
+int vp_play_volume_get_max_value(volume_handle pVolumeHandle)
+{
+ if (NULL == pVolumeHandle) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ return pVolumeWidget->nMaxVal;
+}
+
+int vp_play_volume_get_value(volume_handle pVolumeHandle)
+{
+ if (NULL == pVolumeHandle) {
+ VideoLogError("pVolumeHandle is NULL");
+ return 0;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ return pVolumeWidget->nCurVal;
+}
+
+bool vp_play_volume_set_value(volume_handle pVolumeHandle, int nVolumeVal)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ _vp_play_volume_create_timer(pVolumeWidget);
+
+ pVolumeWidget->nCurVal = nVolumeVal;
+
+ if (pVolumeWidget->nCurVal < 0) {
+ pVolumeWidget->nCurVal = 0;
+ }
+
+ if (pVolumeWidget->nCurVal > pVolumeWidget->nMaxVal) {
+ pVolumeWidget->nCurVal = pVolumeWidget->nMaxVal;
+ }
+
+ _vp_play_volume_set_value(pVolumeWidget, pVolumeWidget->nCurVal);
+
+ return TRUE;
+}
+
+int vp_play_volume_get_mute_value(volume_handle pVolumeHandle)
+{
+ if (NULL == pVolumeHandle) {
+ VideoLogError("pVolumeHandle is NULL");
+ return 0;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ return pVolumeWidget->nMuteVal;
+}
+
+bool vp_play_volume_set_mute_value(volume_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ if (pVolumeWidget->nMuteVal == 0)
+ pVolumeWidget->nMuteVal = pVolumeWidget->nCurVal;
+
+ return TRUE;
+}
+
+bool vp_play_volume_set_focus_in(volume_handle pVolumeHandle)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+
+ evas_object_show(pVolumeWidget->pFocusPoint);
+ elm_object_focus_allow_set(pVolumeWidget->pFocusPoint, EINA_TRUE);
+ elm_object_focus_set(pVolumeWidget->pFocusPoint, EINA_TRUE);
+
+ elm_object_focus_next_object_set(pVolumeWidget->pFocusPoint,
+ pVolumeWidget->pFocusPoint,
+ ELM_FOCUS_UP);
+ elm_object_focus_next_object_set(pVolumeWidget->pFocusPoint,
+ pVolumeWidget->pFocusPoint,
+ ELM_FOCUS_DOWN);
+
+ evas_object_event_callback_del(pVolumeWidget->pFocusPoint,
+ EVAS_CALLBACK_KEY_DOWN,
+ __vp_volume_focus_key_down_cb);
+ evas_object_event_callback_add(pVolumeWidget->pFocusPoint,
+ EVAS_CALLBACK_KEY_DOWN,
+ __vp_volume_focus_key_down_cb,
+ (void *) pVolumeWidget);
+ return TRUE;
+}
+
+bool vp_play_volume_set_mouse_callbacks(volume_handle pVolumeHandle,
+ Evas_Object *pWin)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+ pVolumeWidget->pWin = pWin;
+
+ evas_object_event_callback_add(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_volume_mouse_down_cb,
+ (void *) pVolumeWidget);
+
+ evas_object_event_callback_add(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_UP,
+ __vp_volume_mouse_up_cb,
+ (void *) pVolumeWidget);
+
+ evas_object_event_callback_add(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_volume_mouse_move_cb,
+ (void *) pVolumeWidget);
+ return TRUE;
+}
+
+bool vp_play_volume_unset_mouse_callbacks(volume_handle pVolumeHandle,
+ Evas_Object *pWin)
+{
+ if (pVolumeHandle == NULL) {
+ VideoLogError("pVolumeHandle is NULL");
+ return FALSE;
+ }
+
+ VolumeWidget *pVolumeWidget = (VolumeWidget *) pVolumeHandle;
+ pVolumeWidget->pWin = pWin;
+
+ evas_object_event_callback_del(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ __vp_volume_mouse_down_cb);
+
+ evas_object_event_callback_del(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_UP,
+ __vp_volume_mouse_up_cb);
+
+ evas_object_event_callback_del(pVolumeWidget->pLayout,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ __vp_volume_mouse_move_cb);
+ return TRUE;
+}
diff --git a/res/edc/add_tag.edc b/res/edc/add_tag.edc
deleted file mode 100755
index c045ecb..0000000
--- a/res/edc/add_tag.edc
+++ /dev/null
@@ -1,346 +0,0 @@
-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
deleted file mode 100755
index cb57b00..0000000
--- a/res/edc/animation.edc
+++ /dev/null
@@ -1,299 +0,0 @@
-#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/button-pressed.wav b/res/edc/button-pressed.wav
new file mode 100755
index 0000000..99ba74d
--- /dev/null
+++ b/res/edc/button-pressed.wav
Binary files differ
diff --git a/res/edc/control.edc b/res/edc/control.edc
deleted file mode 100755
index a70a5a4..0000000
--- a/res/edc/control.edc
+++ /dev/null
@@ -1,1167 +0,0 @@
-
-#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
deleted file mode 100755
index 32c3df8..0000000
--- a/res/edc/custom/vp-naviframe-custom.edc
+++ /dev/null
@@ -1,901 +0,0 @@
-#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
deleted file mode 100755
index 17b6c2b..0000000
--- a/res/edc/detail.edc
+++ /dev/null
@@ -1,34 +0,0 @@
-#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/edc_image_macro.edc b/res/edc/edc_image_macro.edc
new file mode 100644
index 0000000..5c50d05
--- /dev/null
+++ b/res/edc/edc_image_macro.edc
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define RESOURCE_IMAGE( FILE_NAME ) \
+ group { \
+ name: FILE_NAME; \
+ images.image: FILE_NAME COMP; \
+ parts { \
+ part { name: "image"; \
+ description { \
+ state: "default" 0.0; \
+ image.normal: FILE_NAME; \
+ aspect: 1 1; \
+ aspect_preference: BOTH; \
+ } \
+ } \
+ } \
+ }
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+ group { \
+ name: FILE_NAME; \
+ images.image: FILE_NAME LOSSY 85; \
+ parts { \
+ part { name: "image"; \
+ description { \
+ state: "default" 0.0; \
+ image.normal: FILE_NAME; \
+ aspect: 1 1; \
+ aspect_preference: BOTH; \
+ } \
+ } \
+ } \
+ }
diff --git a/res/edc/hidden_button_panel.edc b/res/edc/hidden_button_panel.edc
deleted file mode 100755
index e0b9ce2..0000000
--- a/res/edc/hidden_button_panel.edc
+++ /dev/null
@@ -1,187 +0,0 @@
-#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
index 6613a6c..7591d20 100755..100644
--- a/res/edc/image_res.edc
+++ b/res/edc/image_res.edc
@@ -1,137 +1,55 @@
-
-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;
-}
-
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+images {
+ image: "T01_toolbar_bg.png" COMP;
+ image: "T01_toolbar_press.png" COMP;
+ image: "T01_Nocontents_multimedia.png" COMP;
+ image: "T01-2_hold_icon_lock.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;
+
+
+ // 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/common/T01-2_popup_bg.png" COMP;
+ image: "white/common/T01-2_popup_arrow.png" COMP;
+
+
+ image: "T01_2_icon_rotate.png" COMP;
+ image: "T01_2_icon_rotate_press.png" COMP;
+ image: "turn_over/B15_turn_over_01.png" COMP;
+ image: "turn_over/B15_turn_over_02.png" COMP;
+ image: "turn_over/B15_turn_over_03.png" COMP;
+
+ image: "00_scroll_bar.png" COMP;
+ image: "00_scroll_bar_v.png" COMP;
+ image: "00_scroll_bar_h.png" COMP;
+}
+
diff --git a/res/edc/landscape_thumbnail.edc b/res/edc/landscape_thumbnail.edc
new file mode 100644
index 0000000..bdf54fe
--- /dev/null
+++ b/res/edc/landscape_thumbnail.edc
@@ -0,0 +1,223 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define GRAY_RECT_COLOR 128 128 128 128
+#define SPEEDBOX_OFFSET_Y 225
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "landscape.thumb";
+
+ parts {
+ part {
+ name: "landscape.thumb";
+ 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 255;
+ }
+ }
+ part {
+ name: "landscape.thumb.preview.image";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "landscape.thumb.preview.text.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 68;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ color: 0 0 0 102;
+ rel1 { relative: 0.0 1.0; to: "landscape.thumb.preview.image"; }
+ rel2 { relative: 1.0 1.0; to: "landscape.thumb.preview.image"; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "landscape.thumb.preview.title";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0433 0.5; to: "landscape.thumb.preview.text.bg"; }
+ rel2 { relative: 0.59 0.5; to: "landscape.thumb.preview.text.bg"; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "landscape.thumb.preview.title.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "landscape.thumb.preview.title"; }
+ rel2 { relative: 1.0 1.0; to: "landscape.thumb.preview.title"; }
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 26;
+ text: "TITLE";
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 28;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "landscape.thumb.preview.duration";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 50;
+ fixed: 0 1;
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 0.6 0.5; to: "landscape.thumb.preview.text.bg"; }
+ rel2 { relative: 0.9567 0.5; to: "landscape.thumb.preview.text.bg"; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "landscape.thumb.preview.duration.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "landscape.thumb.preview.duration"; }
+ rel2 { relative: 1.0 1.0; to: "landscape.thumb.preview.duration"; }
+ text {
+ font: FONT_BOLD_TYPE;
+ size: 26;
+ text: "--:--:--/--:--:--";
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 28;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ signal: "signal.landscape.thumb.preview.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "landscape.thumb.preview.image";
+ target: "landscape.thumb.preview.text.bg";
+ target: "landscape.thumb.preview.title";
+ target: "landscape.thumb.preview.title.text";
+ target: "landscape.thumb.preview.duration";
+ target: "landscape.thumb.preview.duration.text";
+ }
+ program {
+ signal: "signal.landscape.thumb.preview.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "landscape.thumb.preview.image";
+ target: "landscape.thumb.preview.text.bg";
+ target: "landscape.thumb.preview.title";
+ target: "landscape.thumb.preview.title.text";
+ target: "landscape.thumb.preview.duration";
+ target: "landscape.thumb.preview.duration.text";
+ }
+ }
+ } /* group */
+} /* collection */
diff --git a/res/edc/main.edc b/res/edc/main.edc
deleted file mode 100755
index d0fe9e8..0000000
--- a/res/edc/main.edc
+++ /dev/null
@@ -1,557 +0,0 @@
-#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
deleted file mode 100755
index 7185254..0000000
--- a/res/edc/multi_win.edc
+++ /dev/null
@@ -1,69 +0,0 @@
-#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
deleted file mode 100644
index 346a8f0..0000000
--- a/res/edc/option_button.edc
+++ /dev/null
@@ -1,326 +0,0 @@
-#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
index f6bc218..5158639 100755..100644
--- a/res/edc/panel.edc
+++ b/res/edc/panel.edc
@@ -1,3 +1,19 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#include "image_res.edc"
#include "vp_font.edc"
diff --git a/res/edc/popup_progressbar.edc b/res/edc/popup_progressbar.edc
index 87add92..3e5c955 100755..100644
--- a/res/edc/popup_progressbar.edc
+++ b/res/edc/popup_progressbar.edc
@@ -1,263 +1,1036 @@
-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";
- }
- }
- }
- }
-}
-}
-
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+collections {
+
+group { name: "popup_center_progress_move_copy";
+#define DEMO_POPUP_PROGRESSVIEW_CONTENT_MIN 568 154
+#define DEMO_POPUP_PROGRESSVIEW_TITLE_MIN 568 60
+#define DEMO_POPUP_PROGRESSVIEW_TEXT_LEFT_RIGHT_MAX 324 60
+ parts {
+ part { name: "pad_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 32;
+ 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part { name: "pad_b";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 32;
+ 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.title";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: DEMO_POPUP_PROGRESSVIEW_TITLE_MIN;
+ fixed: 1 1;
+ text {
+ font: "Tizen:style=Medium";
+ size: 38;
+ min: 0 0;
+ align: 0.5 0.0;
+ }
+ color: 128 128 128 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: DEMO_POPUP_PROGRESSVIEW_CONTENT_MIN;
+ align: 0.5 0.5;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "pad_l";
+ to_y: "pad_t";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ to_y: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.text.left";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ max: DEMO_POPUP_PROGRESSVIEW_TEXT_LEFT_RIGHT_MAX;
+ text {
+ font: "Tizen:style=Medium";
+ size: 36;
+ min: 0 0;
+ align: 0.0 1.0;
+ }
+ color: 128 128 128 255;
+ align: 0.0 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 0.5 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ part { name: "elm.text.right";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ max: DEMO_POPUP_PROGRESSVIEW_TEXT_LEFT_RIGHT_MAX;
+ text {
+ font: "Tizen:style=Medium";
+ size: 36;
+ min: 0 0;
+ align: 1.0 1.0;
+ }
+ color: 128 128 128 255;
+ align: 1.0 1.0;
+ rel1 {
+ relative: 0.5 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ }
+#undef DEMO_POPUP_PROGRESSVIEW_CONTENT_MIN
+#undef DEMO_POPUP_PROGRESSVIEW_TITLE_MIN
+#undef DEMO_POPUP_PROGRESSVIEW_TEXT_LEFT_RIGHT_MAX
+}
+
+
+group { name: "popup_center_progressview";
+ parts{
+ part { name: "elm.title";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ max: 80 16;
+ text {
+ font: "Tizen:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 0.5 0.0;
+ }
+ color: 108 108 108 255;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ part{ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 0 70;
+ align: 0.5 0.5;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ }
+ part { name: "elm.text.left";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ max: 150 16;
+ text {
+ font: "Tizen:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 0.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 0.0 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ part { name: "elm.text.right";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ max: 150 16;
+ text {
+ font: "Tizen:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 1.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 1.0 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+ }
+}
+
+
+group { name: "popup_center_text_progressview";
+ parts{
+ part { name: "pad_t";
+ type: SPACER;
+ 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";
+ type: SPACER;
+ 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";
+ type: SPACER;
+ 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";
+ type: SPACER;
+ 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";
+ type: SPACER;
+ 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: "Tizen:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 0.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ part { name: "elm.text.subtext2";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 1.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ }
+}
+
+group { name: "popup_processing_1button";
+#define DEMO_POPUP_PROCESSINGVIEW1BUTTON_CONTENT_MIN 568 200
+ parts {
+ part { name: "base";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: DEMO_POPUP_PROCESSINGVIEW1BUTTON_CONTENT_MIN;
+ fixed: 1 0;
+ }
+ }
+ part { name: "pad_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 32;
+ 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "base";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "base";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "base";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "base";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part { name: "pad_b";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 32;
+ 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.content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_t";
+ }
+ }
+ }
+ part { name:"pad_after_content";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 9;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.content";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.content";
+ }
+ }
+ }
+
+ part { name: "elm.text";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 38;
+ min: 1 0;
+ align: 0.5 0.5;
+ }
+ fixed: 1 1;
+ color: 0 0 0 255;
+ align: 0.5 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_after_content";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ }
+#undef DEMO_POPUP_PROCESSINGVIEW1BUTTON_CONTENT_MIN
+}
+
+group {
+ name: "popup_processingview_1button";
+ #define DEMO_POPUP_PROCESSINGVIEW1BUTTON_CONTENT_MIN 568 132
+ parts {
+ part {
+ name: "base";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: DEMO_POPUP_PROCESSINGVIEW1BUTTON_CONTENT_MIN;
+ fixed: 1 0;
+ }
+ }
+ part { name: "pad_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 32;
+ 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "base";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "base";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "base";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "base";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part { name: "pad_b";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 32;
+ 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: "after.space";
+ scale: 1;
+ type: SPACER;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 80 80;
+ max: 80 80;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.5;
+ color: 0 0 0 255;
+ fixed: 1 1;
+ text {
+ font: "Tizen:style=Medium";
+ size: 38;
+ align: 0.0 0.5;
+ min: 0 1;
+ max: 1 1;
+ }
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "after.space";
+ to_y: "pad_t";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ to_y: "pad_b";
+ }
+ }
+ }
+ part { name:"pad_before_text";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 16 132;
+ max: 16 132;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.text";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "elm.text";
+ }
+ }
+ }
+ part { name:"elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 63 63;
+ max: 63 63;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "pad_before_text";
+ to_y: "pad_t";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "pad_before_text";
+ to_y: "pad_b";
+ }
+ }
+ }
+ }#undef DEMO_POPUP_PROCESSINGVIEW1BUTTON_CONTENT_MIN
+}
+
+ group { name: "popup_embeded_processing";
+ parts {
+ part { name, "background";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ visible: 1;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x : "background";
+ to_y : "background";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x : "background";
+ to_y : "background";
+ }
+ align: 0.5 0.5;
+ }
+
+ description {
+ state: "rotate" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x : "background";
+ to_y : "background";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x : "background";
+ to_y : "background";
+ }
+ inherit: "default" 0.0;
+ }
+ }
+
+ }
+ }
+ group { name: "popup_checkview";
+ parts {
+ part { name: "pad_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 32;
+ 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 26 0;
+ max: 26 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;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "pad_l";
+ to_y: "pad_t";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ to_y: "pad_b";
+ }
+ }
+ }
+ part { name: "bottom_pad";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 32;
+ 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: "pad_b";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 121;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "bottom_pad";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "bottom_pad";
+ }
+ }
+ }
+ part { name: "end_field";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 100;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "end_field";
+ rel2.to: "end_field";
+ }
+ }
+ }
+ }
+
+#define POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_MIN_INC 0 70
+#define POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC 15 27
+#define POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC 0 38
+#define POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC 0 69
+#define POPUP_TEXT_FONT_SIZE 15
+
+
+group { name: "popup_text_progressbar_view_layout";
+ styles {
+ style { name: "popup_progress_style";
+ base: "font=Tizen:style=Regular align=right font_size="14" color=#FFFFFF wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "tab" "\t";
+ }
+ style { name: "popup_processing_style";
+ base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE" color=#000000 wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "tab" "\t";
+ }
+ }
+
+ parts {
+ part { name: "bg";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_MIN_INC;
+ fixed: 1 0;
+ }
+ }
+ part { name: "pad_l_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC;
+ max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC;
+ fixed: 1 1;
+ rel2.relative: 0.0 0.0;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC;
+ max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC;
+ fixed: 1 1;
+ rel1.relative: 1.0 1.0;
+ align: 1.0 1.0;
+ }
+ }
+ part { name: "elm.text.description";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 0 1;
+ min: POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC;
+ rel1 {
+ relative: 0.2 0.4;
+ to: "bg";
+ }
+ rel2 {
+ relative: 0.0 0.6;
+ to_x: "pad_r_t";
+ to_y: "bg";
+ }
+ text {
+ style: "popup_processing_style";
+ min: 0 1;
+ }
+ }
+ }
+ part { name: "progressbar_bg";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 0 1;
+ min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "bg";
+ to_y: "elm.text.description";
+ }
+ rel2 {
+ relative: 0.2 1.0;
+ to_x: "bg";
+ to_y: "elm.text.description";
+ }
+ }
+ }
+ part { name: "progressbar";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 0 1;
+ rel1.to: "progressbar_bg";
+ rel2.to: "progressbar_bg";
+ }
+ }
+ }
+}
+
+}
diff --git a/res/edc/progress.edc b/res/edc/progress.edc
deleted file mode 100755
index 3ef5412..0000000
--- a/res/edc/progress.edc
+++ /dev/null
@@ -1,459 +0,0 @@
-#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
deleted file mode 100755
index 932264b..0000000
--- a/res/edc/progress_trim.edc
+++ /dev/null
@@ -1,291 +0,0 @@
-#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
deleted file mode 100755
index 9691ac7..0000000
--- a/res/edc/setting.edc
+++ /dev/null
@@ -1,33 +0,0 @@
-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
deleted file mode 100755
index 3d5265b..0000000
--- a/res/edc/subtitle.edc
+++ /dev/null
@@ -1,419 +0,0 @@
-#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
deleted file mode 100755
index b40bd2f..0000000
--- a/res/edc/subtitle_sync.edc
+++ /dev/null
@@ -1,415 +0,0 @@
-#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
index 14a16a5..2021720 100755..100644
--- a/res/edc/vp-button-white.edc
+++ b/res/edc/vp-button-white.edc
@@ -1,504 +1,391 @@
-#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";
- }
- }
- }
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#define BUTTON_BG_NORMAL "white/common/00_button_01.png"
+#define BUTTON_BG_PRESS "white/common/00_button_01_press.png"
+#define NO_ITEM_BUTTON_WIDTH 688
+#define NO_ITEM_BUTTON_HEIGHT 80
+
+#define BUTTON_BG_BACK_NORMAL "T01_icon_soft_back.png"
+#define BUTTON_BG_CLEAR_NORMAL "T01-2_icon_toolbar_cancel.png"
+
+//////////////////////////////////////////////////////////////
+
+#define VP_BUTTON_STYLE(__name,__bg_normal,__bg_pressed,__width,__height) \
+group { name: "elm/button/base/video/"__name; \
+ images { \
+ image: __bg_normal COMP; \
+ image: __bg_pressed COMP; \
+ } \
+ parts { \
+ part { \
+ name: __name"_bg"; \
+ mouse_events: 0; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0.0 0.0; \
+ visible: 0; \
+ min: __width __height; \
+ max: __width __height; \
+ fixed: 1 1; \
+ rel1 { \
+ relative: 0.0 0.0; \
+ } \
+ rel2 { \
+ relative: 1.0 1.0; \
+ } \
+ color: 0 0 0 0; \
+ } \
+ description { state: "invisible" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ part{ \
+ name : __name"_press_bg"; \
+ type: IMAGE; \
+ mouse_events:1; \
+ scale : 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0 0; \
+ visible:1; \
+ image { \
+ normal: __bg_normal; \
+ border: 13 13 15 15; \
+ border_scale: 1; \
+ } \
+ rel1 { \
+ relative: 0 0; \
+ to: __name"_bg"; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to: __name"_bg"; \
+ } \
+ } \
+ description { \
+ state: "press" 0.0; \
+ inherit: "default" 0.0; \
+ image { normal: __bg_pressed; } \
+ } \
+ description { state: "invisible" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ part { \
+ name: "elm.text"; \
+ type: TEXT; \
+ mouse_events: 1; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0.5 0.5; \
+ visible:1; \
+ rel1 { \
+ relative: 0 0; \
+ to: __name"_bg"; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to: __name"_bg"; \
+ } \
+ color: 50 50 50 255; \
+ text { \
+ font: "Tizen:style=Medium"; \
+ size: 36; \
+ min: 0 0; \
+ max: 1 0; \
+ align: 0.5 0.5; \
+ } \
+ } \
+ description { \
+ state: "press" 0.0; \
+ inherit: "default" 0.0; \
+ color: 248 246 239 255; \
+ } \
+ description { state: "invisible" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ } \
+ programs{ \
+ program{\
+ name: __name"_after_down"; \
+ source: "elm.text"; \
+ signal: "mouse,down,1"; \
+ action: STATE_SET "press" 0.0; \
+ target: __name"_bg"; \
+ target: __name"_press_bg"; \
+ target: "elm.text"; \
+ } \
+ program { \
+ name: __name"_down"; \
+ source: "*"; \
+ signal: "mouse,down,1"; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ after: __name"_after_down"; \
+ } \
+ program { \
+ name: __name"_up"; \
+ source: "*"; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: __name"_bg"; \
+ target: __name"_press_bg"; \
+ target: "elm.text"; \
+ } \
+ } \
+}
+
+VP_BUTTON_STYLE("sign_in", BUTTON_BG_NORMAL, BUTTON_BG_PRESS, NO_ITEM_BUTTON_WIDTH, NO_ITEM_BUTTON_HEIGHT)
+
+group {
+ name: "elm/button/base/text";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ min: 200 100;
+ }
+ }
+ part {
+ name: "text_part_left";
+ type: TEXT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.1 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "bg";
+ }
+ text {
+ size: 30;
+ min: 0 0;
+ max: 1 0;
+ }
+ }
+ }
+ part {
+ name: "text_part_right";
+ type: TEXT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 0.9 1;
+ to: "bg";
+ }
+ text {
+ size: 30;
+ min: 0 0;
+ max: 1 0;
+ }
+ }
+ }
+ } /*parts*/
+ programs {
+ program {
+ name: "buttonclicked";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program {
+ name: "buttonlefttextclicked";
+ signal: "mouse,clicked,1";
+ source: "text_part_left";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program {
+ name: "buttonrighttextclicked";
+ signal: "mouse,clicked,1";
+ source: "text_part_right";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ }
+
+}
+group {
+ name: "elm/button/base/back";
+ images
+ {
+ image: BUTTON_BG_BACK_NORMAL COMP;
+ }
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ min: 50 80;
+ max: 50 80;
+ }
+ }
+ part {
+ name: "icon";
+ type: IMAGE;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "bg";
+ }
+ image {
+ normal: BUTTON_BG_BACK_NORMAL;
+ }
+ }
+ }
+ } /*parts*/
+ programs {
+ program {
+ name: "buttonclicked";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program {
+ name: "buttontextclicked";
+ signal: "mouse,clicked,1";
+ source: "icon";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ }
+
+}
+group {
+ name: "elm/button/base/clear";
+ images
+ {
+ image: BUTTON_BG_CLEAR_NORMAL COMP;
+ }
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ min: 30 30;
+ max: 30 30;
+ }
+ }
+ part {
+ name: "icon";
+ type: IMAGE;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "bg";
+ }
+ image {
+ normal: BUTTON_BG_CLEAR_NORMAL;
+ }
+ color: 0 0 0 255;
+ }
+ }
+ } /*parts*/
+ programs {
+ program {
+ name: "buttonclicked";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program {
+ name: "buttontextclicked";
+ signal: "mouse,clicked,1";
+ source: "icon";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ }
+
+}
+group {
+ name: "elm/button/base/clear_dim";
+ images
+ {
+ image: BUTTON_BG_CLEAR_NORMAL COMP;
+ }
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ min: 30 30;
+ max: 30 30;
+ }
+ }
+ part {
+ name: "icon";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "bg";
+ }
+ image {
+ normal: BUTTON_BG_CLEAR_NORMAL;
+ }
+ color: 100 100 100 255;
+ }
+ }
+ } /*parts*/
+}
diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc
deleted file mode 100755
index d013cf2..0000000
--- a/res/edc/vp-button.edc
+++ /dev/null
@@ -1,1069 +0,0 @@
-#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
deleted file mode 100755
index 6305934..0000000
--- a/res/edc/vp-chapter-view.edc
+++ /dev/null
@@ -1,757 +0,0 @@
-
-
-#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
index 6dc567e..faf2c17 100755..100644
--- a/res/edc/vp-check.edc
+++ b/res/edc/vp-check.edc
@@ -1,3 +1,19 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 42 42
#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC 255 255 255 255
@@ -57,11 +73,11 @@
///////////////////////////////////////////////////////////////////////////////////////
styles {
style { name: "check_label_textblock_style";
- base: "font=SLP:style=Roman font_size=32 color=#ffffff wrap=char";
+ base: "font=Tizen: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: "hilight" "+ font=Tizen:style=Bold";
+ tag: "b" "+ font=Tizen:style=Bold";
tag: "whitecolor" "+ color=#ffffff";
tag: "tab" "\t";
}
diff --git a/res/edc/vp-controlbar.edc b/res/edc/vp-controlbar.edc
index a89a419..57118f1 100755..100644
--- a/res/edc/vp-controlbar.edc
+++ b/res/edc/vp-controlbar.edc
@@ -1,4 +1,20 @@
/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+/*
* Refer to nbeat-theme\themes\groups\controlbar.edc
*/
diff --git a/res/edc/vp-ctxpopup-option.edc b/res/edc/vp-ctxpopup-option.edc
new file mode 100644
index 0000000..da2fd91
--- /dev/null
+++ b/res/edc/vp-ctxpopup-option.edc
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+///////////////////////////////////////////////////////////////////////////////////////
+//
+// ctxpopup
+//
+///////////////////////////////////////////////////////////////////////////////////////
+
+#define FONT_ROM "Tizen:style=Roman"
+#define FONT_MED "Tizen:style=Medium"
+
+collections {
+group {
+ name:"video/option/ctxpopup";
+ parts {
+ part {
+ name: "layout_bg";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ color: 0 0 0 120;
+ rel2 { to: "elm.title"; }
+ }
+ }
+ part {
+ name: "elm.title";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 1 54;
+ max: 999999 54;
+ fixed: 0 1;
+ align: 0.5 0;
+ text {
+ font: FONT_ROM;
+ size: 28;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.box";
+ type: SWALLOW;
+ description {
+ rel1 { to: "elm.title"; relative: 0 1; }
+ }
+ }
+ }
+}
+
+}
+
diff --git a/res/edc/vp-ctxpopup.edc b/res/edc/vp-ctxpopup.edc
index 24cdd9b..e419e12 100755..100644
--- a/res/edc/vp-ctxpopup.edc
+++ b/res/edc/vp-ctxpopup.edc
@@ -1,3 +1,65 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+///////////////////////////////////////////////////////////////////////////////////////
+//
+// ctxpopup
+//
+///////////////////////////////////////////////////////////////////////////////////////
+#define CTXPOPUP_BUBBLE_BG_IMAGE_BORDER 3 3 3 3 /* modify */
+#define CTXPOPUP_BUBBLE_MASK_IMAGE_BORDER 13 13 13 13 /* modify */
+#define CTXPOPUP_SHADOW_LEFT_PADDING 0
+#define CTXPOPUP_SHADOW_RIGHT_PADDING 0
+#define CTXPOPUP_SHADOW_TOP_PADDING 0
+#define CTXPOPUP_SHADOW_BOTTOM_PADDING 0
+#define CTXPOPUP_CONTENT_PADDING 0
+#define CTXPOPUP_SCROLLER_PADDING 8
+#define CTXPOPUP_SCROLLER_MIN_SIZE_INC 9 12
+#define CTXPOPUP_FRAME_CORNER_ARROW_PADDING 4 /* modify */
+#define CTXPOPUP_BG_COLOR_INC 22 27 30 165 /* modify */
+#define CTXPOPUP_BG_PRESS_COLOR_INC 42 137 194 255
+
+#define CTXPOPUP_LIST_MAIN_TEXT_COLOR_INC 255 255 255 255
+#define CTXPOPUP_LIST_MAIN_TEXT_DIM_COLOR_INC 255 255 255 178
+#define CTXPOPUP_LIST_MAIN_TEXT_PRESS_COLOR_INC 255 255 255 255
+#define CTXPOPUP_SEPARATOR_PXLINE_SIZE_INC 1
+#define CTXPOPUP_SEPARATOR_PADDING_INC 3 /* modify */
+#define CTXPOPUP_SEPARATOR_COLOR_INC 200 200 200 255 /* modify */
+#define CTXPOPUP_SEPARATOR2_COLOR_INC 200 200 200 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_1_COLOR_INC 45 45 45 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_2_COLOR_INC 91 91 91 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC 1 74
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC 1 74
+#define CTXPOPUP_ITEM_DISABLED_COLOR 0 0 0 100
+#define CTXPOPUP_LIST_MAIN_TEXT_SIZE_INC 33 /* modify */
+#define CTXPOPUP_ITEM_HEIGHT_MIN_INC 112
+#define CTXPOPUP_ITEM_HEIGHT_MAX_INC 130
+#define CTXPOPUP_ICON_ITEM_HORIZONTAL_WIDTH_INC 112
+#define CTXPOPUP_ITEM_HORIZONTAL_HEIGHT_INC 96
+#define CTXPOPUP_ICON_WIDTH_INC 64
+#define CTXPOPUP_ICON_HEIGHT_INC 64
+#define CTXPOPUP_ICON_HORIZONTAL_WIDTH_INC 48
+#define CTXPOPUP_ICON_HORIZONTAL_HEIGHT_INC 48
+#define CTXPOPUP_ARROW_SIZE_INC 48 48
+#define CTXPOPUP_VERTICAL_ARROW_SIZE_INC 40 24 /* modify */
+#define CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC 30 40
+#define CTXPOPUP_ITEM_TEXT_PADDING_INC 35
+#define CTXPOPUP_ITEM_ICON_PADDING_INC 35
+
///////////////////////////////////////////////////////////////////////////////////////
//
// ctxpopup
@@ -8,44 +70,9 @@
#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 {
@@ -75,6 +102,7 @@
}
}
images {
+ image: "white/common/00_popup_scroll.9.png" COMP;
image: "white/common/01_scroller.png" COMP;
}
parts {
@@ -128,6 +156,22 @@
}
}
part {
+ name: "sb_vbar_padding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: (CTXPOPUP_SCROLLER_PADDING-CTXPOPUP_CONTENT_PADDING) 0;
+ max: (CTXPOPUP_SCROLLER_PADDING-CTXPOPUP_CONTENT_PADDING) 0;
+ 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: "sb_vbar";
type: RECT;
mouse_events: 0;
@@ -137,8 +181,8 @@
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;}
+ rel1 { to_x:"sb_vbar_padding"; to_y:"clipper"; relative: 0.0 0.0; }
+ rel2 { to_x:"sb_vbar_padding"; to_y:"clipper"; relative: 0.0 1.0; }
}
}
part {
@@ -154,7 +198,7 @@
description {
state: "default" 0.0;
fixed: 1 1;
- min: 14 32;
+ min: CTXPOPUP_SCROLLER_MIN_SIZE_INC;
rel1 {
relative: 0.5 0.5;
to: "sb_vbar";
@@ -164,8 +208,8 @@
to: "sb_vbar";
}
image {
- normal: "white/common/01_scroller.png";
- border: 0 0 6 6;
+ normal: "white/common/00_popup_scroll.9.png";
+ border: 0 0 5 5;
border_scale: 1;
}
}
@@ -410,22 +454,31 @@
alias: "elm/ctxpopup/bg/video/extended/entry/pass_event";
alias: "elm/ctxpopup/bg/video/extended/entry";
alias: "elm/ctxpopup/bg/video/timepicker";
+ alias: "elm/ctxpopup/bg/video/datetime/default";
parts {
part {
name: "bg";
type: RECT;
+ repeat_events: 1;
description {
state: "default" 0.0;
visible: 0;
}
description {
state: "visible" 0.0;
- visible: 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";
@@ -484,11 +537,13 @@
}
}
+///////////////////////////////////////////////////////////////////////////////
+
group {
name: "elm/ctxpopup/base/video/default";
images {
- image: CTXPOPUP_BUBBLE_BG_IMAGE COMP;
- image: CTXPOPUP_BG_IMAGE COMP;
+ image: "white/common/00_popup_bubble_bg.png" COMP;
+ image: "white/common/T01-2_popup_bg.png" COMP;
}
parts {
part {
@@ -497,8 +552,9 @@
scale: 1;
mouse_events: 0;
description {
- min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
- max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
+ state: "default" 0.0;
+ min: CTXPOPUP_SHADOW_LEFT_PADDING 0;
+ max: CTXPOPUP_SHADOW_LEFT_PADDING 0;
rel2 { relative: 0 0; }
align: 1 1;
fixed: 1 1;
@@ -511,40 +567,33 @@
scale: 1;
mouse_events: 0;
description {
- min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
- max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING;
+ state: "default" 0.0;
+ min: CTXPOPUP_SHADOW_RIGHT_PADDING CTXPOPUP_SHADOW_BOTTOM_PADDING;
+ max: CTXPOPUP_SHADOW_RIGHT_PADDING CTXPOPUP_SHADOW_BOTTOM_PADDING;
rel1{relative: 1 1;}
align: 0 0;
fixed: 1 1;
visible: 0;
}
}
-
part {
- name: "frame_shadow";
+ name: "frame_bg";
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";
- }
+ rel1 {to:"frame_shadow_left_top_padding";}
+ rel2 {to:"frame_shadow_right_bottom_padding";}
+ min: (CTXPOPUP_ICON_ITEM_HORIZONTAL_WIDTH_INC + CTXPOPUP_SHADOW_LEFT_PADDING + CTXPOPUP_SHADOW_RIGHT_PADDING) 0;
image {
- normal: CTXPOPUP_BUBBLE_BG_IMAGE;
+ normal: "white/common/T01-2_popup_bg.png";
border: CTXPOPUP_BUBBLE_BG_IMAGE_BORDER;
border_scale: 1;
}
}
}
-
part { name: "arrow_area_left";
type: RECT;
mouse_events: 0;
@@ -552,16 +601,18 @@
clip_to: "ctxpopup_clip";
description { state: "default" 0.0;
visible: 0;
- min: 40 0;
+ min: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 1 0.5;
rel1 {
- relative: 0 1;
+ relative: 1 1;
+ to_x:"content_left_top_padding";
to_y: "ctxpopup_frame_left_top";
}
rel2 {
- relative:0 0;
- to:"ctxpopup_frame_left_bottom";
+ relative: 1 0;
+ to_x:"content_left_top_padding";
+ to_y:"ctxpopup_frame_right_bottom";
}
}
}
@@ -572,15 +623,17 @@
clip_to: "ctxpopup_clip";
description { state: "default" 0.0;
visible: 0;
- min: 40 0;
+ min: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 0 0.5;
rel1 {
- relative: 1 1;
- to:"ctxpopup_frame_right_top";
+ relative: 0 1;
+ to_x:"content_right_bottom_padding";
+ to_y:"ctxpopup_frame_left_top";
}
rel2 {
- relative: 1 0;
+ relative: 0 0;
+ to_x:"content_right_bottom_padding";
to_y: "ctxpopup_frame_right_bottom";
}
}
@@ -592,16 +645,18 @@
clip_to: "ctxpopup_clip";
description { state: "default" 0.0;
visible: 0;
- min: 0 40;
+ min: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 0.5 1;
rel1 {
- relative: 1 0;
+ relative: 1 1;
to_x: "ctxpopup_frame_left_top";
+ to_y: "content_left_top_padding";
}
rel2 {
- relative: 0 0;
- to:"ctxpopup_frame_right_top";
+ relative: 0 1;
+ to_x:"ctxpopup_frame_right_bottom";
+ to_y: "content_left_top_padding";
}
}
}
@@ -612,16 +667,18 @@
clip_to: "ctxpopup_clip";
description { state: "default" 0.0;
visible: 0;
- min: 0 40;
+ min: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 0.5 0;
rel1 {
- relative: 1 1;
- to:"ctxpopup_frame_left_bottom";
+ relative: 1 0;
+ to_x:"ctxpopup_frame_left_top";
+ to_y:"content_right_bottom_padding";
}
rel2 {
- relative: 0 1;
+ relative: 0 0;
to_x: "ctxpopup_frame_right_bottom";
+ to_y:"content_right_bottom_padding";
}
}
}
@@ -637,9 +694,9 @@
}
description {
state: "default" 0.0;
- min: 40 40;
+ min: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
fixed: 1 1;
- visible: 1;
+ visible: 0;
}
}
part { name: "elm.swallow.arrow_down";
@@ -654,9 +711,9 @@
}
description {
state: "default" 0.0;
- min: 40 40;
+ min: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
fixed: 1 1;
- visible: 1;
+ visible: 0;
}
}
part { name: "elm.swallow.arrow_left";
@@ -671,9 +728,9 @@
}
description {
state: "default" 0.0;
- min: 40 40;
+ min: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
fixed: 1 1;
- visible: 1;
+ visible: 0;
}
}
part { name: "elm.swallow.arrow_right";
@@ -688,71 +745,37 @@
}
description {
state: "default" 0.0;
- min: 40 40;
+ min: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
fixed: 1 1;
- visible: 1;
+ visible: 0;
}
}
-
part {
name: "ctxpopup_frame_left_top";
type: RECT;
scale: 1;
description {
+ state: "default" 0.0;
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;
+ fixed: 1 1;
+ min: CTXPOPUP_FRAME_CORNER_ARROW_PADDING CTXPOPUP_FRAME_CORNER_ARROW_PADDING;
+ max: CTXPOPUP_FRAME_CORNER_ARROW_PADDING CTXPOPUP_FRAME_CORNER_ARROW_PADDING;
+ rel1 {relative: 0 0; to: "content_left_top_padding";}
}
}
-
part {
name: "ctxpopup_frame_right_bottom";
type: RECT;
scale: 1;
description {
+ state: "default" 0.0;
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;}
+ min: CTXPOPUP_FRAME_CORNER_ARROW_PADDING CTXPOPUP_FRAME_CORNER_ARROW_PADDING;
+ max: CTXPOPUP_FRAME_CORNER_ARROW_PADDING CTXPOPUP_FRAME_CORNER_ARROW_PADDING;
+ rel2 {relative: 1 1; to: "content_right_bottom_padding";}
}
}
part {
@@ -762,8 +785,9 @@
mouse_events: 0;
description {
state: "default" 0.0;
- min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING;
- max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING;
+ min: CTXPOPUP_CONTENT_PADDING CTXPOPUP_CONTENT_PADDING;
+ max: CTXPOPUP_CONTENT_PADDING CTXPOPUP_CONTENT_PADDING;
+ rel1 {to:"frame_shadow_left_top_padding"; relative: 1.0 1.0;}
align: 0 0;
fixed: 1 1;
visible: 0;
@@ -775,44 +799,42 @@
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;}
+ state: "default" 0.0;
+ min: CTXPOPUP_CONTENT_PADDING CTXPOPUP_CONTENT_PADDING;
+ max: CTXPOPUP_CONTENT_PADDING CTXPOPUP_CONTENT_PADDING;
+ rel2 {to:"frame_shadow_right_bottom_padding"; relative: 0.0 0.0;}
align: 1 1;
fixed: 1 1;
visible: 0;
}
}
-
-
part {
- name: "frame_bg";
- type: IMAGE;
- scale: 1;
- mouse_events: 0;
+ name: "elm.swallow.content";
+ type: SWALLOW;
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;
- }
+ align: 0 0;
+ rel1 {to:"content_left_top_padding"; relative: 1.0 1.0;}
+ rel2 {to:"content_right_bottom_padding"; relative: 0.0 0.0;}
}
}
part {
- name: "elm.swallow.content";
- type: SWALLOW;
+ name: "mask";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
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;}
+ visible : 0;
+ rel1 {to:"elm.swallow.content";}
+ rel2 {to:"elm.swallow.content";}
+ image {
+ normal: "white/common/00_popup_bubble_bg.png";
+ border: CTXPOPUP_BUBBLE_MASK_IMAGE_BORDER;
+ border_scale: 1;
+ }
}
}
part { name: "ctxpopup_clip";
@@ -824,43 +846,43 @@
}
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; }
+ rel1 { to:"elm.swallow.arrow_down"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_down"; relative: 0.5 0.5; }
}
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; }
+ rel1 { to:"elm.swallow.arrow_right"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_right"; relative: 0.5 0.5; }
}
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; }
+ rel1 { to:"elm.swallow.arrow_left"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_left"; relative: 0.5 0.5; }
}
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; }
+ rel1 { to:"elm.swallow.arrow_up"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_up"; relative: 0.5 0.5; }
}
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; }
+ color: 255 255 255 0;
+ rel1 { to:"elm.swallow.arrow_down"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_down"; relative: 0.5 0.5; }
}
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; }
+ color: 255 255 255 0;
+ rel1 { to:"elm.swallow.arrow_right"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_right"; relative: 0.5 0.5; }
}
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; }
+ color: 255 255 255 0;
+ rel1 { to:"elm.swallow.arrow_left"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_left"; relative: 0.5 0.5; }
}
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; }
+ color: 255 255 255 0;
+ rel1 { to:"elm.swallow.arrow_up"; relative: 0.5 0.5; }
+ rel2 { to:"elm.swallow.arrow_up"; relative: 0.5 0.5; }
}
description { state: "visible" 0.0;
color: 255 255 255 255;
@@ -874,42 +896,42 @@
signal: "elm,state,show";
source: "elm";
action: STATE_SET "visible" 0.0;
- transition: LINEAR 0.25;
+ transition: SIN_FAC 0.33 0.6;
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;
+ transition: SIN_FAC 0.33 0.6;
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;
+ transition: SIN_FAC 0.33 0.6;
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;
+ transition: SIN_FAC 0.33 0.6;
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;
+ transition: SIN_FAC 0.33 0.6;
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;
+ transition: SIN_FAC 0.33 0.6;
target: "ctxpopup_clip";
after: "hide_finished";
}
@@ -917,7 +939,7 @@
signal: "elm,state,hide,left";
source: "elm";
action: STATE_SET "hide_left" 0.0;
- transition: LINEAR 0.25;
+ transition: SIN_FAC 0.33 0.6;
target: "ctxpopup_clip";
after: "hide_finished";
}
@@ -925,7 +947,7 @@
signal: "elm,state,hide,right";
source: "elm";
action: STATE_SET "hide_right" 0.0;
- transition: LINEAR 0.25;
+ transition: SIN_FAC 0.33 0.6;
target: "ctxpopup_clip";
after: "hide_finished";
}
@@ -933,7 +955,7 @@
signal: "elm,state,hide,down";
source: "elm";
action: STATE_SET "hide_down" 0.0;
- transition: LINEAR 0.25;
+ transition: SIN_FAC 0.33 0.6;
target: "ctxpopup_clip";
after: "hide_finished";
}
@@ -967,8 +989,8 @@
}
description {
state: "left" 0.0;
- min: CTXPOPUP_ARROW_SIZE_INC;
- max: CTXPOPUP_ARROW_SIZE_INC;
+ min: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
+ max: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 1.0 0.5;
image {
@@ -977,8 +999,8 @@
}
description {
state: "right" 0.0;
- min: CTXPOPUP_ARROW_SIZE_INC;
- max: CTXPOPUP_ARROW_SIZE_INC;
+ min: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
+ max: CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 0.0 0.5;
image {
@@ -987,8 +1009,8 @@
}
description {
state: "top" 0.0;
- min: CTXPOPUP_ARROW_SIZE_INC;
- max: CTXPOPUP_ARROW_SIZE_INC;
+ min: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
+ max: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 0.5 1.0;
image {
@@ -997,8 +1019,8 @@
}
description {
state: "bottom" 0.0;
- min: CTXPOPUP_ARROW_SIZE_INC;
- max: CTXPOPUP_ARROW_SIZE_INC;
+ min: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
+ max: CTXPOPUP_VERTICAL_ARROW_SIZE_INC;
fixed: 1 1;
align: 0.5 0.0;
image {
@@ -1038,16 +1060,16 @@
}
}
}
+
///////////////////////////////////////////////////////////////////////////////
group {
- name: "elm/ctxpopup/text_style_item/video/default";
+ name: "elm/ctxpopup/icon_text_style_item/video/default";
parts {
part {
name: "event_blocker";
mouse_events: 1;
description {
state: "default" 0.0;
- color: 0 0 0 0;
}
}
part {
@@ -1064,518 +1086,93 @@
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;
+ state: "clicked_separator" 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "separator2"; }
+ color: CTXPOPUP_BG_PRESS_COLOR_INC;
visible: 1;
}
}
part {
- name: "left_padding";
+ name:"separator_left_padding";
+ type:RECT;
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;
+ min: CTXPOPUP_SEPARATOR_PADDING_INC 0;
+ max: CTXPOPUP_SEPARATOR_PADDING_INC 0;
+ align: 0 0;
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";
+ name:"separator_right_padding";
+ type:RECT;
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;
+ min: CTXPOPUP_SEPARATOR_PADDING_INC 0;
+ max: CTXPOPUP_SEPARATOR_PADDING_INC 0;
+ align: 1 1;
+ fixed: 1 1;
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";
+ name: "icon_left_padding";
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;
+ min: (CTXPOPUP_ITEM_ICON_PADDING_INC-CTXPOPUP_CONTENT_PADDING) CTXPOPUP_ITEM_HEIGHT_MIN_INC;
+ max: (CTXPOPUP_ITEM_ICON_PADDING_INC-CTXPOPUP_CONTENT_PADDING) CTXPOPUP_ITEM_HEIGHT_MAX_INC;
align: 0 0;
fixed: 1 1;
+ visible: 0;
}
}
part {
- name: "separator";
+ name: "separator1";
mouse_events: 0;
type: RECT;
scale: 1;
description {
state: "default" 0.0;
color: CTXPOPUP_SEPARATOR_COLOR_INC;
+ rel1 { relative: 1.0 0.0; to_x: "separator_left_padding";}
+ rel2 { relative: 0.0 1.0; to_x: "separator_right_padding";}
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;
+ min: 0 CTXPOPUP_SEPARATOR_PXLINE_SIZE_INC;
+ max: 999999 CTXPOPUP_SEPARATOR_PXLINE_SIZE_INC;
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;
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
visible: 0;
}
}
part {
- name: "separator";
+ name: "separator2";
mouse_events: 0;
type: RECT;
scale: 1;
description {
state: "default" 0.0;
- color: CTXPOPUP_SEPARATOR_COLOR_INC;
+ color: CTXPOPUP_SEPARATOR2_COLOR_INC;
+ rel1 { relative: 0.0 1.0; to: "separator1";}
+ rel2 { relative: 1.0 1.0; to: "separator1";}
align: 0.5 0;
- min: 1 0;
- max: 1 999999;
+ fixed: 0 1;
+ min: 0 CTXPOPUP_SEPARATOR_PXLINE_SIZE_INC;
+ max: 999999 CTXPOPUP_SEPARATOR_PXLINE_SIZE_INC;
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;
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
}
}
part {
@@ -1597,8 +1194,8 @@
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;
+ min: CTXPOPUP_ITEM_ICON_PADDING_INC CTXPOPUP_ITEM_HEIGHT_MIN_INC;
+ max: CTXPOPUP_ITEM_ICON_PADDING_INC CTXPOPUP_ITEM_HEIGHT_MAX_INC;
align: 0 0.5;
fixed: 1 1;
visible: 0;
@@ -1612,19 +1209,16 @@
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;
+ min: 1 CTXPOPUP_ITEM_HEIGHT_MIN_INC;
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;
+ rel1 {relative: 1.0 0.0; to_x: "icon_right_padding"; to_y: "bg";}
+ rel2 {relative: 0.0 1.0; to_x: "text_right_padding"; to_y: "bg";}
+ color: CTXPOPUP_LIST_MAIN_TEXT_COLOR_INC;
text {
- font: "SLP:style=Roman";
- size: CTXPOPUP_ITEM_TEXT_SIZE_INC;
+ font: "Tizen:style=Roman";
+ size: CTXPOPUP_LIST_MAIN_TEXT_SIZE_INC;
align: 0.0 0.5;
min: 1 1;
- text_class: "list_item";
}
}
description {
@@ -1638,7 +1232,17 @@
description {
state: "clicked" 0.0;
inherit: "default" 0.0;
- color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC;
+ color: CTXPOPUP_LIST_MAIN_TEXT_PRESS_COLOR_INC;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: CTXPOPUP_LIST_MAIN_TEXT_DIM_COLOR_INC;
+ }
+ description {
+ state: "compress_disabled" 0.0;
+ inherit: "compress" 0.0;
+ color: CTXPOPUP_LIST_MAIN_TEXT_DIM_COLOR_INC;
}
}
part {
@@ -1649,8 +1253,8 @@
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;
+ min: CTXPOPUP_ITEM_TEXT_PADDING_INC CTXPOPUP_ITEM_HEIGHT_MIN_INC;
+ max: CTXPOPUP_ITEM_TEXT_PADDING_INC CTXPOPUP_ITEM_HEIGHT_MAX_INC;
fixed: 1 0;
align: 1.0 0.5;
}
@@ -1659,7 +1263,6 @@
name: "over1";
mouse_events: 1;
repeat_events: 1;
- ignore_flags: ON_HOLD;
description {
state: "default" 0.0;
}
@@ -1689,7 +1292,7 @@
programs {
program {
name: "item_unclick";
- signal: "mouse,up,1";
+ signal: "mouse,clicked,1";
source: "over1";
action: SIGNAL_EMIT "elm,action,click" "";
}
@@ -1697,45 +1300,64 @@
name: "disable";
signal: "elm,state,disabled";
source: "elm";
- action: STATE_SET "disabled" 0.0;
- target: "disclip";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if ((!strcmp(st, "compress")) || (!strcmp(st, "compress_disabled")))
+ set_state(PART:"elm.text", "compress_disabled", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled", 0.0);
+
+ set_state(PART:"disclip", "disabled", 0.0);
+ }
}
program {
name: "enable";
signal: "elm,state,enabled";
source: "elm";
- action: STATE_SET "default" 0.0;
- target: "disclip";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if ((!strcmp(st, "compress")) || (!strcmp(st, "compress_disabled")))
+ set_state(PART:"elm.text", "compress", 0.0);
+ else
+ set_state(PART:"elm.text", "default", 0.0);
+
+ set_state(PART:"disclip", "default", 0.0);
+ }
}
program {
name: "default";
signal: "elm,state,default";
source: "elm";
script {
- set_state(PART:"separator", "default", 0.0);
+ set_state(PART:"separator1", "default", 0.0);
+ set_state(PART:"separator2", "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);
+ new st[31];
+ new Float:vl;
+ get_state(PART:"disclip", st, 30, vl);
+ if (!strcmp(st, "disabled"))
+ set_state(PART:"elm.text", "compress_disabled", 0.0);
+ else
+ set_state(PART:"elm.text", "compress", 0.0);
}
}
program {
- name: "horizontal";
- signal: "elm,state,horizontal";
+ name: "separator";
+ signal: "elm,state,separator";
source: "elm";
script {
- set_state(PART:"separator", "horizontal", 0.0);
+ set_state(PART:"separator1", "visible", 0.0);
+ set_state(PART:"separator2", "visible", 0.0);
}
}
program {
@@ -1744,7 +1366,14 @@
source: "over2";
script {
set_state(PART:"elm.text", "clicked", 0.0);
- set_state(PART:"bg", "clicked", 0.0);
+
+ new st[31];
+ new Float:vl;
+ get_state(PART:"separator2", st, 30, vl);
+ if (!strcmp(st, "default"))
+ set_state(PART:"bg", "clicked", 0.0);
+ else
+ set_state(PART:"bg", "clicked_separator", 0.0);
}
}
program {
@@ -1758,7 +1387,3 @@
}
}
}
-
-
-
-
diff --git a/res/edc/vp-custom-genlist-miltiline.edc b/res/edc/vp-custom-genlist-miltiline.edc
new file mode 100644
index 0000000..65db206
--- /dev/null
+++ b/res/edc/vp-custom-genlist-miltiline.edc
@@ -0,0 +1,1447 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define GENLIST_HEIGHT_MULTILINE_SUB 38
+#define GENLIST_HEIGHT_2LINE_SUB 42
+#define GENLIST_LIST_SUB_TEXT_SIZE 32
+#define GENLIST_TREESIZE_DEFAULT 26
+#define GENLIST_PART_LIST_LINE_HEIGHT 1
+#define GENLIST_HEIGHT_2LINE_MAIN_MULTI 57
+#define GENLIST_PADDING_SIZE_DEFAULT 16
+#define GENLIST_PADDING_SIZE_LEFT_MULTI 62
+#define GENLIST_PADDING_SIZE_RIGHT_MULTI GENLIST_PADDING_SIZE_LEFT_MULTI
+#define GENLIST_PADDING_SIZE_TOP_2LINE_MULTI 19
+#define GENLIST_PADDING_SIZE_BOTTOM_2LINE_MULTI 19
+#define GENLIST_HEIGHT_1LINE_MULTI 104 // (114 - top/bottom padding)
+#define GENLIST_PADDING_SIZE_TOP 5
+#define GENLIST_PADDING_SIZE_BOTTOM 5
+#define GENLIST_ICON_MEDIUM_SIZE 81
+#define GENLIST_BTN_01_HEIGHT 74
+
+
+//popup
+#define POPUP_ITEM_BG_PRESSED_BORDER_INC 8 8 8 8
+#define POPUP_ITEM_BG_LEFT_TOP_PAD_MIN_INC 4 4
+#define POPUP_ITEM_BG_RIGHT_BOTTOM_PAD_MIN_INC 4 6
+
+
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE_M "#4F4F4FFF"
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR_STYLE_M "#A3A99FFF"
+#define GENLIST_LIST_TEXT_FOCUS_COLOR_STYLE "#FFFFFFFF"
+#define GENLIST_PART_MATCH_TAG_COLOR_M "+ color=#1382FF"
+#define GENLIST_LIST_BG_COLOR_M 248 246 239 0
+#define GENLIST_LIST_PRESS_COLOR 87 135 194 255
+#define GENLIST_LIST_DIM_COLOR_M 248 246 239 255
+#define GENLIST_LIST_LINE2_COLOR_M 204 203 199 255
+#define GENLIST_LIST_LINE1_COLOR_M 250 250 250 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR 0 0 0 255
+
+
+// Genlist Text
+#define GENLIST_LIST_MAIN_TEXT_SIZE 44
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF"
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_M 124 123 119 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_STYLE_M "#7C7B77FF"
+#define GENLIST_LIST_MAIN_TEXT_READ_COLOR 128 128 128 255
+#define GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR_M 188 187 183 255
+#define GENLIST_LIST_TEXT_FOCUS_COLOR 255 255 255 255
+#define GENLIST_LIST_TEXT_FOCUS_COLOR_STYLE "#FFFFFFFF"
+
+
+
+//popup
+#define GENLIST_LIST_BG_POPUP_COLOR 0 0 0 0
+#define GENLIST_LIST_BG_POPUP_PRESS_COLOR 255 255 255 255
+#define GENLIST_LIST_LINE1_POPUP_COLOR 211 209 203 255
+#define GENLIST_LIST_LINE2_POPUP_COLOR 250 250 250 255
+
+
+#define GENLIST_PARAM_ICON_MEDIUM \
+ min: GENLIST_ICON_MEDIUM_SIZE GENLIST_ICON_MEDIUM_SIZE; \
+ max: GENLIST_ICON_MEDIUM_SIZE GENLIST_ICON_MEDIUM_SIZE;
+
+#define GENLIST_PARAM_ICON_BTN_01 \
+ min: 0 GENLIST_BTN_01_HEIGHT; \
+ max: -1 GENLIST_BTN_01_HEIGHT;
+
+sounds {
+ sample {
+ name: "touch_sound" RAW;
+ source: "button-pressed.wav";
+ }
+}
+
+#define STYLE_TAG_M \
+ tag: "br" "\n";\
+ tag: "ps" "ps";\
+ tag: "tab" "\t";\
+ tag: "b" "+ font_weight=Bold";
+
+#define STYLE_TAG_MATCH_M \
+ tag: "match" GENLIST_PART_MATCH_TAG_COLOR_M;
+
+
+styles {
+ style { name: "genlist_style_list_sub_text_default_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG_M
+ STYLE_TAG_MATCH_M
+ }
+ style { name: "genlist_style_list_sub_text_default_dim_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG_M
+ STYLE_TAG_MATCH_M
+ }
+ style { name: "genlist_style_list_sub_text_focus_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG_M
+ STYLE_TAG_MATCH_M
+ }
+
+ style { name: "genlist_style_list_main_text_default_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG_M
+ STYLE_TAG_MATCH_M
+ }
+ style { name: "genlist_style_list_main_text_default_dim_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG_M
+ STYLE_TAG_MATCH_M
+ }
+ style { name: "genlist_style_list_main_text_focus_wrap";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color=#FFFFFF wrap=mixed";
+ STYLE_TAG_M
+ STYLE_TAG_MATCH_M
+ }
+}
+
+
+#define GENLIST_NAME(NAME) \
+ name: "elm/genlist/item/"NAME;
+
+ // | PART == HERE |
+ // ------------------
+ #define GENLIST_DESCRIPTION_ENVELOP( PART, PARAM ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 0 0; \
+ to: PART; \
+ }\
+ rel2 {\
+ relative: 1 1;\
+ to: PART; \
+ }\
+ PARAM\
+ }
+
+
+ // | top |
+ // ---------------------
+ // left | HERE | right
+ // ---------------------
+ // | bottom |
+#define GENLIST_DESCRIPTION( left, right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+
+// | top |
+// ---------------------
+// left | HERE | right
+#define GENLIST_DESCRIPTION_LRT( left, right, top, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+ param\
+ }
+
+// ---------------------
+// left |--> HERE
+// ---------------------
+#define GENLIST_DESCRIPTION_L( left, param ) \
+ description { state: "default" 0.0;\
+ align: 0 0.5; \
+ fixed: 1 0; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 { \
+ relative: 1 1;\
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// | top |
+// -----------------
+// | HERE <--| right
+// -----------------
+// | bottom |
+#define GENLIST_DESCRIPTION_RTB( right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 1 0.5;\
+ rel1 { \
+ relative: 0 1; \
+ to_x: right; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+// --------------------------
+// left |--> HERE <--| right
+// --------------------------
+#define GENLIST_DESCRIPTION_LR( left, right, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// | top |
+// ---------------------
+// left |--> HERE |
+// ---------------------
+// | bottom |
+#define GENLIST_DESCRIPTION_LTB( left, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 0 0.5;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 1 0;\
+ to_x: left;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+
+#define GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB_WRAP \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_sub_text_default_dim_wrap"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_sub_text_focus_wrap"; \
+ }
+
+#define GENLIST_PARAM_SUBITEM_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_sub_text_default_wrap"; \
+ }
+
+#define GENLIST_PARAM_MAINITEM_DEFAULT_TB_WRAP \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_main_text_default_wrap"; \
+ }
+
+#define GENLIST_DESCRIPTION_MAINITEM_DEFAULT_OTHERS_TB_WRAP \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_default_dim_wrap"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_focus_wrap"; \
+ }
+
+#define GENLIST_PART_TEXTBLOCK_M(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: TEXTBLOCK; \
+ repeat_events: 1; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_TEXT_M(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: TEXT; \
+ repeat_events: 1; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_SPACER_M(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ mouse_events: 0; \
+ type: SPACER; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_RECT_M(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: RECT; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_IMAGE(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: IMAGE; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_ICON_M(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: SWALLOW; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_ICON_MEDIUM_L(NAME, LEFT) \
+ GENLIST_PART_ICON_M(NAME, \
+ GENLIST_DESCRIPTION_LTB(LEFT, "elm.padding.top", "elm.padding.bottom", \
+ GENLIST_PARAM_ICON_MEDIUM \
+ fixed: 1 1; \
+ ) \
+ )
+
+
+// list main text
+#define GENLIST_PARAM_LISTITEM \
+ color: 8 8 8 255; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Regular"; \
+ size: GENLIST_LIST_MAIN_TEXT_SIZE; \
+ }
+
+// list main text
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS_M \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_M; \
+ } \
+ description { state: "read" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_READ_COLOR; \
+ } \
+ description { state: "read,disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR_M; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_TEXT_FOCUS_COLOR; \
+ }
+
+#define GENLIST_PART_PADDING_T_SIZE( NAME, TOP, SIZE ) \
+ GENLIST_PART_SPACER_M(NAME, \
+ description { state: "default" 0.0; \
+ min: 0 SIZE; \
+ max: -1 SIZE; \
+ fixed: 0 1; \
+ align: 0.5 0; \
+ rel1 { \
+ relative: 0 1; \
+ to: TOP; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to: TOP; \
+ } \
+ } \
+ )
+
+#define GENLIST_PART_EXPANDED_PAD \
+ part { name: "elm.swallow.pad"; \
+ type: SWALLOW; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ min: 0 0; \
+ fixed: 1 0; \
+ align: 0.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 0.0 1.0; \
+ } \
+ } \
+
+#define GENLIST_PROLOG \
+ data.item: "selectraise" "on"; \
+ data.item: "treesize" 0;
+
+
+#define GENLIST_PROLOG_NORMAL \
+ GENLIST_PROLOG \
+ data.item: "treesize" GENLIST_TREESIZE_DEFAULT; \
+ data.item: "flips" "elm.flip.icon elm.flip.content"; \
+ images { \
+ image : "00_list_group_bg.png" COMP; \
+ image : "00_list_group_bg_press.png" COMP; \
+ }
+
+#define GENLIST_PART_BASE_SIZE(HEIGHT) \
+ part { name: "base"; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ min: 0 HEIGHT; \
+ } \
+ } \
+ part { name: "state"; \
+ type: RECT; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default"; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default"; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default"; \
+ } \
+ }
+
+#define GENLIST_PART_BASE_M \
+ GENLIST_PART_BASE_SIZE(0)
+
+#define GENLIST_DESCRIPTION_DECORATE_PADDING \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ max: 0 0; \
+ }
+
+#define GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ max: 0 0; \
+ }
+
+#define GENLIST_DESCRIPTION_REORDER_PADDING \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 32 0; \
+ max: 32 -1; \
+ }
+
+
+#define GENLIST_PART_PADDING_LEFT_M \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER_M("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_SIZE_LEFT_MULTI 0; \
+ max: GENLIST_PADDING_SIZE_LEFT_MULTI -1; \
+ fixed: 1 0; \
+ ) \
+ GENLIST_DESCRIPTION_DECORATE_PADDING \
+ GENLIST_DESCRIPTION_REORDER_PADDING \
+ GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+ )
+
+#define GENLIST_PART_PADDING_RIGHT_M \
+ GENLIST_PART_SPACER_M("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_SIZE_RIGHT_MULTI 0; \
+ max: GENLIST_PADDING_SIZE_RIGHT_MULTI -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ GENLIST_DESCRIPTION_DECORATE_PADDING \
+ GENLIST_DESCRIPTION_REORDER_PADDING \
+ GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+ )
+
+
+#define GENLIST_PART_PADDING_R_M( NAME, RIGHT ) \
+ GENLIST_PART_SPACER_M(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+ max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+ align: 1 0.5; \
+ rel1 { \
+ relative: 0 0; \
+ to_x: RIGHT; \
+ } \
+ rel2 { \
+ relative: 0 1; \
+ to_x: RIGHT; \
+ } \
+ } \
+ )
+
+#define GENLIST_PART_ICON_BTN_01_RTB(NAME, RIGHT, TOP, BOTTOM) \
+ GENLIST_PART_ICON_M(NAME, \
+ GENLIST_DESCRIPTION_RTB(RIGHT, TOP, BOTTOM,\
+ GENLIST_PARAM_ICON_BTN_01 \
+ fixed: 1 1; \
+ ) \
+ )
+
+#define GENLIST_PART_BG_NORMAL \
+ GENLIST_PART_RECT_M("bg_clip", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 1; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("bg_reorder_clip", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "reorder_flip" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("bg", \
+ clip_to: "bg_clip"; \
+ description { state: "default" 0.0; \
+ color: GENLIST_LIST_BG_COLOR_M; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_PRESS_COLOR; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_DIM_COLOR_M; \
+ } \
+ ) \
+ GENLIST_PART_SPACER_M("bg_reorder_left", \
+ description { state: "default" 0.0; \
+ min: 16 0; \
+ max: 16 -1; \
+ fixed: 1 0; \
+ align: 0 0.5; \
+ rel2.relative: 0 1; \
+ } \
+ ) \
+ GENLIST_PART_SPACER_M("bg_reorder_right", \
+ description { state: "default" 0.0; \
+ min: 16 0; \
+ max: 16 -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.relative: 1 0; \
+ } \
+ ) \
+ GENLIST_PART_SPACER_M("bg_reorder_top", \
+ description { state: "default" 0.0; \
+ min: 0 2; \
+ max: -1 2; \
+ fixed: 0 1; \
+ align: 0.5 0; \
+ rel2.relative: 1 0; \
+ } \
+ ) \
+ GENLIST_PART_SPACER_M("bg_reorder_bottom", \
+ description { state: "default" 0.0; \
+ min: 0 2; \
+ max: -1 2; \
+ fixed: 0 1; \
+ align: 0.5 1.0; \
+ rel1.relative: 0 1; \
+ } \
+ ) \
+ GENLIST_PART_IMAGE("bg_reorder", \
+ clip_to: "bg_reorder_clip"; \
+ description { state: "default" 0.0; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: "bg_reorder_left"; \
+ to_y: "bg_reorder_top"; \
+ } \
+ rel2 { \
+ relative: 0 0; \
+ to_x: "bg_reorder_right"; \
+ to_y: "bg_reorder_bottom"; \
+ } \
+ image { \
+ normal: "00_list_group_bg.png"; \
+ border: 17 17 8 8; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default"; \
+ image { \
+ normal: "00_list_group_bg_press.png"; \
+ border: 17 17 8 8; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default"; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("sound", \
+ repeat_events: 1; /*for play_sound to check selected state*/ \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ ) \
+
+
+#define GENLIST_PART_BOTTOM_LINE_M \
+ GENLIST_PART_RECT_M("bottom_line_clip", \
+ description { state: "default" 0.0; \
+ color: 255 255 255 255; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "decorate_reorder" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("bottom_line", \
+ mouse_events: 0; \
+ clip_to: "bottom_line_clip"; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+ max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+ fixed: 0 1; \
+ align: 0.5 1; \
+ color: GENLIST_LIST_LINE1_COLOR_M; \
+ rel1.to: "bottom_line2"; \
+ rel2.to: "bottom_line2"; \
+ rel2.relative: 1 0; \
+ rel1.offset: -1 -1; \
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("bottom_line2", \
+ mouse_events: 0; \
+ clip_to: "bottom_line_clip"; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+ max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+ fixed: 0 1; \
+ align: 0.5 1; \
+ color: GENLIST_LIST_LINE2_COLOR_M; \
+ rel1.to_x: "base"; \
+ rel1.relative: 0 0; \
+ rel2.to_x: "base"; \
+ rel2.relative: 1 1; \
+ rel1.offset: -1 -1; \
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_TOP_2LINE_M \
+ GENLIST_PART_SPACER_M("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_TOP_2LINE_MULTI; \
+ max: -1 GENLIST_PADDING_SIZE_TOP_2LINE_MULTI; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_TOP_2LINE_MULTI+2); \
+ max: -1 (GENLIST_PADDING_SIZE_TOP_2LINE_MULTI+2); \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_BOTTOM_2LINE_M \
+ GENLIST_PART_SPACER_M("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_BOTTOM_2LINE_MULTI; \
+ max: -1 GENLIST_PADDING_SIZE_BOTTOM_2LINE_MULTI; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_BOTTOM_2LINE_MULTI+2); \
+ max: -1 (GENLIST_PADDING_SIZE_BOTTOM_2LINE_MULTI+2); \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_TOP \
+ GENLIST_PART_SPACER_M("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_TOP; \
+ max: -1 GENLIST_PADDING_SIZE_TOP; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_TOP+2); \
+ max: -1 (GENLIST_PADDING_SIZE_TOP+2); \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_BOTTOM \
+ GENLIST_PART_SPACER_M("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_BOTTOM; \
+ max: -1 GENLIST_PADDING_SIZE_BOTTOM; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 (GENLIST_PADDING_SIZE_BOTTOM+2); \
+ max: -1 (GENLIST_PADDING_SIZE_BOTTOM+2); \
+ } \
+ )
+
+
+#define GENLIST_PART_FLIP_M \
+ GENLIST_PART_RECT_M("elm.flip.bg", \
+ mouse_events: 0; \
+ description { state: "default" 0.0;\
+ color: 0 0 0 0;\
+ } \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ rel2.offset: 0 -3; \
+ color: GENLIST_LIST_BG_COLOR_M;\
+ }\
+ ) \
+ GENLIST_PART_SPACER_M("elm.flip.padding.right", \
+ description { state: "default" 0.0; \
+ min: 26 0; \
+ max: 26 -1; \
+ fixed: 1 0; \
+ align: 1 0.5; \
+ rel1.relative: 1 0; \
+ } \
+ ) \
+ GENLIST_PART_ICON_M("elm.flip.content", \
+ GENLIST_DESCRIPTION("elm.padding.left", "elm.flip.padding.icon.left", \
+ "elm.padding.top", "elm.padding.bottom", \
+ visible: 0; \
+ aspect: 1 1; \
+ min: 0 96; \
+ ) \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ ) \
+ GENLIST_PART_PADDING_R_M("elm.flip.padding.icon.left", "elm.flip.icon") \
+ GENLIST_PART_ICON_M( "elm.flip.icon", \
+ GENLIST_DESCRIPTION_RTB("elm.flip.padding.right", \
+ "elm.padding.top", "elm.padding.bottom", \
+ visible: 0; \
+ aspect: 1 1; \
+ align: 1 0.5; \
+ max: 158 74; \
+ ) \
+ description { state: "flipped" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+
+#define GENLIST_PART_FOCUS_M \
+ GENLIST_PART_IMAGE("focus_part", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ image { \
+ normal: "00_focus.png"; \
+ border: 6 6 6 6; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "focused" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ ) \
+ GENLIST_PART_ICON_M("elm.icon.focus", \
+ repeat_events: 1; \
+ GENLIST_DESCRIPTION_ENVELOP("focus_part", \
+ fixed: 1 1; \
+ ) \
+ )
+
+#define GENLIST_PART_FOCUS_REORDER \
+ GENLIST_PART_IMAGE("focus_part_reorder", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: "bg_reorder_left"; \
+ to_y: "bg_reorder_top"; \
+ } \
+ rel2 { \
+ relative: 0 0; \
+ to_x: "bg_reorder_right"; \
+ to_y: "bg_reorder_bottom"; \
+ } \
+ visible: 0; \
+ image { \
+ normal: "00_focus.png"; \
+ border: 6 6 6 6; \
+ border_scale: 1; \
+ } \
+ } \
+ description { state: "focused" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_L_M( NAME, LEFT ) \
+ GENLIST_PART_SPACER_M(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+ max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+ align: 0 0.5; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: LEFT; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ } \
+ } \
+ )
+
+
+#define GENLIST_PART_FOCUS_NORMAL \
+ GENLIST_PART_FOCUS_M \
+ GENLIST_PART_FOCUS_REORDER
+
+
+#define GENLIST_PROGRAM_DEFAULT( TARGET ) \
+ program { name: "default"; \
+ signal: "elm,state,default"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ } \
+
+#define GENLIST_PROGRAM_DISABLED( TARGET ) \
+ program { name: "enabled"; \
+ signal: "elm,state,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ } \
+ program { name: "disabled"; \
+ signal: "elm,state,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "disabled" 0.0; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_ITEM \
+ program { name: "focused"; \
+ signal: "elm,state,focused"; \
+ source: "elm"; \
+ action: STATE_SET "focused" 0.0; \
+ target: "focus_part"; \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,state,unfocused"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part"; \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_NORMAL \
+ program { name: "focused"; \
+ signal: "elm,state,focused"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"bg_reorder_clip", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) \
+ set_state(PART:"focus_part_reorder", "focused", 0.0); \
+ else \
+ set_state(PART:"focus_part", "focused", 0.0); \
+ } \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,state,unfocused"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part_reorder"; \
+ target: "focus_part"; \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_DIALOGUE \
+ program { name: "focused"; \
+ signal: "elm,state,focused"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"bg_dialogue", st, 30, vl); \
+ if (!strcmp(st, "top") || !strcmp(st, "top_selected") || !strcmp(st, "2depth_top")) \
+ set_state(PART:"focus_part_dialogue", "top_focused", 0.0); \
+ else if (!strcmp(st, "center") || !strcmp(st, "center_selected") || !strcmp(st, "2depth_center")) \
+ set_state(PART:"focus_part_dialogue", "center_focused", 0.0); \
+ else if (!strcmp(st, "bottom") || !strcmp(st, "bottom_selected") || !strcmp(st, "2depth_bottom")) \
+ set_state(PART:"focus_part_dialogue", "bottom_focused", 0.0); \
+ else if (!strcmp(st, "default") || !strcmp(st, "selected") || !strcmp(st, "2depth")) \
+ set_state(PART:"focus_part_dialogue", "focused", 0.0); \
+ } \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,state,unfocused"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part_dialogue"; \
+ }
+
+#define GENLIST_PROGRAM_SOUND( SRC ) \
+ program { name: "play_sound"SRC; \
+ signal: "mouse,clicked,1"; \
+ source: SRC; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:SRC, st, 30, vl); \
+ if (!strcmp(st, "selected") || \
+ !strcmp(st, "top_selected") || \
+ !strcmp(st, "center_selected") || \
+ !strcmp(st, "bottom_selected")) \
+ play_sample("touch_sound", 1.0); \
+ } \
+ }
+
+#define GENLIST_PROGRAM_SELECT( TARGET ) \
+ program { name: "selected"; \
+ signal: "elm,state,selected"; \
+ source: "elm"; \
+ action: STATE_SET "selected" 0.0; \
+ TARGET \
+ } \
+ program { name: "unselected"; \
+ signal: "elm,state,unselected"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_DECORATE_REORDER( NAME, TARGET ) \
+ program { name: "reorder_enabled"NAME; \
+ signal: "elm,state,reorder,mode_set"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "decorate") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"reorder_set"NAME); \
+ } \
+ } \
+ } \
+ program { name: "reorder_disabled"NAME; \
+ signal: "elm,state,reorder,mode_unset"; \
+ source: "elm"; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "decorate") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"default_set"NAME); \
+ } \
+ } \
+ } \
+ program { name: "decorate_enabled_effect"NAME; \
+ signal: "elm,state,decorate,enabled,effect";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"decorate_set"NAME); \
+ } \
+ } \
+ }\
+ program { name: "decorate_disabled_effect"NAME;\
+ signal: "elm,state,decorate,disabled,effect";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"default_set"NAME); \
+ } \
+ } \
+ }\
+ program { name: "decorate_enabled"NAME;\
+ signal: "elm,state,decorate,enabled";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"decorate_reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"decorate_set"NAME); \
+ } \
+ } \
+ }\
+ program { name: "decorate_disabled"NAME;\
+ signal: "elm,state,decorate,disabled";\
+ source: "elm";\
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"state", st, 30, vl); \
+ if (!strcmp(st, "reorder") || !strcmp(st, "decorate_reorder")) { \
+ run_program(PROGRAM:"reorder_set"NAME); \
+ } else { \
+ run_program(PROGRAM:"default_set"NAME); \
+ } \
+ } \
+ } \
+ program { name: "default_set"NAME; \
+ action: STATE_SET "default" 0.0;\
+ target: "state"; \
+ TARGET \
+ } \
+ program { name: "decorate_set"NAME; \
+ action: STATE_SET "decorate" 0.0;\
+ target: "state"; \
+ TARGET \
+ } \
+ program { name: "reorder_set"NAME; \
+ action: STATE_SET "reorder" 0.0;\
+ target: "state"; \
+ TARGET \
+ } \
+ program { name: "decorate_reorder_set"NAME; \
+ action: STATE_SET "decorate_reorder" 0.0;\
+ target: "state"; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_FLIP_M \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ transition: DECELERATE 0.5; \
+ action: STATE_SET "flipped" 0.0; \
+ target: "elm.flip.content"; \
+ target: "elm.flip.icon"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ transition: DECELERATE 0.5; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.flip.content"; \
+ target: "elm.flip.icon"; \
+ } \
+ program { name: "flip_enabled_bg"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flipped" 0.0; \
+ target: "elm.flip.bg"; \
+ } \
+ program { name: "flip_disabled_bg"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.flip.bg"; \
+ }
+
+
+#define GENLIST_PROGRAMS_NORMAL_M( TARGET ) \
+ programs { \
+ GENLIST_PROGRAM_DEFAULT( TARGET \
+ target: "bg"; \
+ target: "bg_clip"; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ target: "bottom_line_clip"; \
+ target: "bg_reorder"; \
+ target: "elm.padding.left"; \
+ target: "elm.padding.right"; \
+ target: "elm.padding.top"; \
+ target: "elm.padding.bottom"; \
+ ) \
+ GENLIST_PROGRAM_DISABLED( TARGET \
+ target: "bg"; \
+ target: "bg_reorder"; \
+ ) \
+ GENLIST_PROGRAM_FOCUS_NORMAL \
+ GENLIST_PROGRAM_SELECT( TARGET \
+ target: "bg"; \
+ target: "bg_reorder"; \
+ ) \
+ GENLIST_PROGRAM_SOUND("bg") \
+ GENLIST_PROGRAM_SOUND("bg_reorder") \
+ GENLIST_PROGRAM_DECORATE_REORDER("normal", TARGET \
+ target: "bg_clip"; \
+ target: "bg_reorder_clip"; \
+ target: "bottom_line_clip"; \
+ target: "elm.padding.left"; \
+ target: "elm.padding.right"; \
+ target: "elm.padding.top"; \
+ target: "elm.padding.bottom"; \
+ ) \
+ GENLIST_PROGRAM_FLIP_M \
+ }
+
+ group { GENLIST_NAME("video.multiline/2text/default")
+ GENLIST_PROLOG_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2";
+
+ parts {
+ GENLIST_PART_BASE_M
+ GENLIST_PART_BG_NORMAL
+ GENLIST_PART_BOTTOM_LINE_M
+ GENLIST_PART_PADDING_LEFT_M
+ GENLIST_PART_PADDING_RIGHT_M
+ GENLIST_PART_PADDING_TOP_2LINE_M
+ GENLIST_PART_PADDING_BOTTOM_2LINE_M
+
+ GENLIST_PART_TEXT_M("elm.text.1",
+ GENLIST_DESCRIPTION_LRT("elm.padding.left", "elm.padding.right", "elm.padding.top",
+ GENLIST_PARAM_LISTITEM
+ min: 0 GENLIST_HEIGHT_2LINE_MAIN_MULTI;
+ fixed: 0 1;
+ )
+ GENLIST_DESCRIPTION_LISTITEM_OTHERS_M
+ )
+ //GENLIST_PART_PADDING_T_SIZE("elm.padding.text1.bottom", "elm.text.1", 0)
+ GENLIST_PART_TEXTBLOCK_M("elm.text.2",
+ GENLIST_DESCRIPTION("elm.padding.left", "elm.padding.right", "elm.text.1", "elm.padding.bottom",
+ GENLIST_PARAM_SUBITEM_DEFAULT_TB_WRAP
+ min: 0 GENLIST_HEIGHT_MULTILINE_SUB;
+ )
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_FLIP_M
+ GENLIST_PART_FOCUS_NORMAL
+ }
+ GENLIST_PROGRAMS_NORMAL_M( target: "elm.text.1"; target: "elm.text.2"; )
+ }
+
+ group { GENLIST_NAME("video.multiline/1text.2icon/default")
+ GENLIST_PROLOG_NORMAL
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+
+ parts {
+ GENLIST_PART_BASE_M
+ GENLIST_PART_BG_NORMAL
+ GENLIST_PART_BOTTOM_LINE_M
+ GENLIST_PART_PADDING_LEFT_M
+ GENLIST_PART_PADDING_RIGHT_M
+ GENLIST_PART_PADDING_TOP
+ GENLIST_PART_PADDING_BOTTOM
+
+ GENLIST_PART_ICON_MEDIUM_L( "elm.icon.1", "elm.padding.left")
+ GENLIST_PART_PADDING_L_M("elm.padding.icon1.right", "elm.icon.1")
+ GENLIST_PART_TEXTBLOCK_M("elm.text",
+ GENLIST_DESCRIPTION_LR("elm.padding.icon1.right", "elm.padding.icon2.left",
+ GENLIST_PARAM_MAINITEM_DEFAULT_TB_WRAP
+ min: 0 GENLIST_HEIGHT_1LINE_MULTI;
+ )
+ GENLIST_DESCRIPTION_MAINITEM_DEFAULT_OTHERS_TB_WRAP
+ )
+ GENLIST_PART_PADDING_R_M("elm.padding.icon2.left", "elm.icon.2")
+ GENLIST_PART_ICON_BTN_01_RTB("elm.icon.2", "elm.padding.right", "elm.padding.top", "elm.padding.bottom")
+ GENLIST_PART_FLIP_M
+ GENLIST_PART_FOCUS_NORMAL
+ }
+ GENLIST_PROGRAMS_NORMAL_M( target: "elm.text"; target: "elm.icon.1"; target: "elm.icon.2"; )
+ }
+
+
+ group {
+ name: "elm/genlist/item/custom.subtitle/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 0;
+ min: 0 52;
+ }
+ }
+ part {
+ name: "elm.text";
+ scale: 1;
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.05 0.0; to: "base";
+ }
+ rel2 {
+ relative: 0.88 1.0; to: "base";
+ }
+ text {
+ align: 0.0 0.5;
+ min: 0 1;
+ font: "Tizen:style=Regular";
+ size: 30;
+ }
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "elm.icon";
+ scale: 1;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.0;
+ rel1 {
+ relative: 0.88 0.0; to: "base";
+ }
+ rel2 {
+ relative: 0.95 1.0; to: "base";
+ }
+ min: 32 32;
+ }
+ }
+ }
+}/* group */
+
+
+#define GENLIST_POPUP_STYLE(NAME) \
+ group { GENLIST_NAME(NAME"/popup/default") \
+ inherit: "elm/genlist/item/"NAME"/default"; \
+ images { \
+ image: "00_popup_list_press.png" COMP; \
+ } \
+ parts { \
+ GENLIST_PART_SPACER_M("bg_left_top_padding", \
+ description { state: "default" 0.0; \
+ min: POPUP_ITEM_BG_LEFT_TOP_PAD_MIN_INC; \
+ fixed: 1 1; \
+ align: 0 0; \
+ rel2.relative: 0 0; \
+ } \
+ ) \
+ GENLIST_PART_SPACER_M("bg_right_bottom_padding", \
+ description { state: "default" 0.0; \
+ min: POPUP_ITEM_BG_RIGHT_BOTTOM_PAD_MIN_INC; \
+ fixed: 1 1; \
+ align: 1 1; \
+ rel1.relative: 1 1; \
+ } \
+ ) \
+ GENLIST_PART_IMAGE("bg", \
+ description { state: "default" 0.0; \
+ image { \
+ normal: "00_popup_list_press.png"; \
+ border: POPUP_ITEM_BG_PRESSED_BORDER_INC; \
+ border_scale: 1; \
+ } \
+ rel1 { \
+ relative: 1 1; \
+ to_x: "bg_left_top_padding"; \
+ to_y: "bg_left_top_padding"; \
+ } \
+ rel2 { \
+ relative: 0 0; \
+ to_x: "bg_right_bottom_padding"; \
+ to_y: "bg_right_bottom_padding"; \
+ } \
+ color: GENLIST_LIST_BG_POPUP_COLOR; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_BG_POPUP_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_BG_POPUP_PRESS_COLOR; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("bottom_line", \
+ description { state: "default" 0.0; \
+ color: GENLIST_LIST_LINE1_POPUP_COLOR; \
+ rel1.to: "bottom_line2"; \
+ rel2.to: "bottom_line2"; \
+ rel2.relative: 1 0; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ GENLIST_PART_RECT_M("bottom_line2", \
+ description { state: "default" 0.0; \
+ color: GENLIST_LIST_LINE2_POPUP_COLOR; \
+ rel1.to_x: "bg"; \
+ rel2.to_x: "bg"; \
+ rel1.offset: 1 0; \
+ rel2.offset: -2 -1; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ ) \
+ } \
+ programs { \
+ program { name : "hide_bottomline"; \
+ signal: "elm,state,bottomline,hide"; \
+ source: ""; \
+ action: STATE_SET "disabled" 0.0; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ } \
+ program { name : "show_bottomline"; \
+ signal: "elm,state,bottomline,show"; \
+ source: ""; \
+ action: STATE_SET "default" 0.0; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ } \
+ } \
+ }
+
+
+//popup
+GENLIST_POPUP_STYLE("video.multiline/2text")
+GENLIST_POPUP_STYLE("video.multiline/1text.2icon")
+
diff --git a/res/edc/vp-custom-winset-style.edc b/res/edc/vp-custom-winset-style.edc
index 7e12a69..0653286 100755..100644
--- a/res/edc/vp-custom-winset-style.edc
+++ b/res/edc/vp-custom-winset-style.edc
@@ -1,12 +1,49 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#include "image_res.edc"
+//#include "tizen-hd-inc.edc"
+
+externals {
+ external: "elm";
+ external: "feedback";
+ }
collections {
- #include "vp-button-white.edc"
+ plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
#include "vp-controlbar.edc"
- #include "custom/vp-naviframe-custom.edc"
#include "vp-layout.edc"
+ #include "vp-gengrid.edc"
+ #include "vp-genlist-custom.edc"
+ #include "vp-button-white.edc"
#include "vp-check.edc"
#include "vp-progressbar-list.edc"
- #include "vp-ctxpopup.edc"
#include "vp-nocontents.edc"
+ #include "vp-gengrid-custom.edc"
+ #include "vp-scroller-custom.edc"
+ #include "vp-detail-popup.edc"
+ //#include "vp-naviframe.edc"
+ #include "vp-custom-genlist-miltiline.edc"
+ #include "vp-numberinfo.edc"
+ #include "vp-entry-popup.edc"
+ #include "vp-toolbar.edc"
}
diff --git a/res/edc/vp-detail-popup.edc b/res/edc/vp-detail-popup.edc
new file mode 100644
index 0000000..2d35c70
--- /dev/null
+++ b/res/edc/vp-detail-popup.edc
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+group { name: "popup_detail";
+ parts {
+ part { name: "pad_t";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 5;
+ fixed: 0 1;
+ rel2.relative: 1.0 0.0;
+ }
+ }
+ part { name:"elm.swallow.layout";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ min: 0 332;
+ align: 0.5 1.0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_b";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 0 5;
+ fixed: 0 1;
+ rel1.relative: 0.0 1.0;
+ }
+ }
+ }
+}
+group { name: "transparent_layout";
+ parts {
+ part { name: "base_bg";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ }
+ }
+}
+
diff --git a/res/edc/vp-device-list-internal.edc b/res/edc/vp-device-list-internal.edc
new file mode 100644
index 0000000..2be3ae5
--- /dev/null
+++ b/res/edc/vp-device-list-internal.edc
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define GRAY_RECT_COLOR 128 128 128 128
+#define SPEEDBOX_OFFSET_Y 225
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "asf.device.list.internal";
+
+ parts {
+ part {
+ name: "asf.device.list.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: 248 246 239 255;
+ }
+ }
+ part {
+ name: "asf.device.list.content";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "asf.item.list.selection.info";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ visible: 0;
+ rel1 { relative: 0.0 1.0; to: "asf.device.list.content"; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "progress";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ }
+
+ description {
+ state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ }
+
+ programs {
+ program {
+ signal: "signal.asf.device.internal.selection.info.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "asf.item.list.selection.info";
+ }
+ program {
+ signal: "signal.asf.device.internal.selection.info.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "asf.item.list.selection.info";
+ }
+ }
+ } /* group */
+} /* collection */
+
diff --git a/res/edc/vp-entry-popup.edc b/res/edc/vp-entry-popup.edc
new file mode 100644
index 0000000..edc52bc
--- /dev/null
+++ b/res/edc/vp-entry-popup.edc
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define VP_POPUP_ENTRY_WIDTH_HEIGHT_MIN 0 60
+#define PV_POPUP_ENTRY_CONTENT_MIN 0 60
+#define POPUP_CONTENT_PADDING_LEFT_MIN_INC 15
+#define POPUP_CONTENT_PADDING_RIGHT_MIN_INC 15
+
+
+group {
+ name: "pv.popup.entry";
+ parts {
+ part {
+ name:"bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_POPUP_ENTRY_WIDTH_HEIGHT_MIN;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "pad_l";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: POPUP_CONTENT_PADDING_LEFT_MIN_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 0.0 1.0; to: "bg";}
+ }
+ }
+
+ part {
+ name: "pad_r";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: POPUP_CONTENT_PADDING_RIGHT_MIN_INC 0;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ rel1 { relative: 0.9 0.0; to: "bg";}
+ rel2 { relative: 0.9 1.0; to: "bg";}
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PV_POPUP_ENTRY_CONTENT_MIN;
+ fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.5; to_x: "pad_l"; to_y: "bg"; }
+ rel2 { relative: 0.0 0.5; to_x: "pad_r"; to_y: "bg"; }
+ }
+ }
+ part {
+ name: "elm.swallow.end";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 30 30;
+ max: 30 30;
+ align: 0.0 0.5;
+ rel1 { relative: 0.85 0.5; to_x: "bg"; to_y: "bg"; }
+ rel2 { relative: 1.0 0.5; to_x: "bg"; to_y: "bg"; }
+ fixed: 1 1;
+ }
+ }
+
+ }
+} /* group */
+
diff --git a/res/edc/vp-gengrid-custom.edc b/res/edc/vp-gengrid-custom.edc
new file mode 100644
index 0000000..2114c6f
--- /dev/null
+++ b/res/edc/vp-gengrid-custom.edc
@@ -0,0 +1,1037 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+/*PD*/
+#define GENGRID_PD_TEXT_LEFT_TOP_PAD_INC 0 0
+#define GENGRID_PD_TEXT_RIGHT_BOTTOM_PAD_INC 31 46
+#define GENGRID_PD_TEXT_CENTER_HEIGHT 0
+#define GENGRID_PD_TEXT_TITLE_HEIGHT 46
+#define GENGRID_PD_ITEM_REAL_BG_RIGHT_PADDING_INC 1 1
+
+
+#define GENGRID_GRID_TEXT_LEFT_TOP_PAD_INC 7 4
+#define GENGRID_GRID_TEXT_RIGHT_BOTTOM_PAD_INC 3 70
+
+#define GENGRID_R_TEXT_LEFT_TOP_PAD_INC 3 4
+#define GENGRID_R_TEXT_RIGHT_BOTTOM_PAD_INC 7 70
+
+#define GENGRID_GRID_TEXT_TITLE_HEIGHT 30
+#define GENGRID_GRID_TEXT_SUB_TITLE_HEIGHT 23
+#define GENGRID_GRID_TEXT_CENTER_HEIGHT 4
+#define GENGRID_GRID_TEXT_BOTTOM_HEIGHT 6
+#define GENGRID_GRID_MAIN_TEXT_SIZE 15
+#define GENGIID_LIST_SUB_TEXT_SIZE 10
+
+#define GENGRID_ICON_CUSTOM_WIDTH 70
+#define GENGRID_ICON_CUSTOM_HEIGHT 45
+#define GENGRID_ICON_CUSTOM_VIDEO_PROGRESSBAR_H 5
+#define GENGRID_PROGRESSBAR_L 12
+#define GENGRID_PROGRESSBAR_R 338
+#define GENGRID_PROGRESSBAR_T 182
+#define GENGRID_PROGRESSBAR_B 193
+
+
+//Copy from tizen-hd-inc.edc
+#define GENGRID_PART_BACKGROUND_COLOR_INC 0 0 0 0
+#define GENGRID_DEFAULT_LEFT_TOP_PADDING_INC 2 2
+#define GENGRID_DEFAULT_RIGHT_BOTTOM_PADDING_INC 2 2
+#define GENGRID_DEFAULT_ITEM_BG_LEFT_TOP_PADDING_INC 1 1
+#define GENGRID_DEFAULT_ITEM_BG_RIGHT_BOTTOM_PADDING_INC 1 1
+#define GENGRID_DEFAULT_ITEM_REAL_BG_RIGHT_PADDING_INC 0 0
+#define GENGRID_DEFAULT_LEFT_TOP_FOCUS_PADDING_INC 2 2
+#define GENGRID_PART_REORDER_DEFAULT_BG_COLOR_INC 0 0 0 77
+#define GENGRID_DEFAULT_RIGHT_BOTTOM_FOCUS_PADDING_INC 2 2
+
+
+#define GRID_ICON_CUSTOM_LOCK_WIDTH 45
+#define GRID_ICON_CUSTOM_LOCK_HEIGHT 45
+#define GRID_ICON_CUSTOM_DROPBOX_WIDTH 40
+#define GRID_ICON_CUSTOM_DROPBOX_LOCK_HEIGHT 40
+
+
+#define GENGIID_PART_MATCH_TIME_TAG_COLOR "+ color=#0E68AD"
+#define GENGIID_LIST_SUB_TIME_DEFAULT_COLOR_STYLE "#4F4F4FFF"
+#define GENGRID_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF"
+#define GENGRID_PART_MATCH_TAG_COLOR "+ color=#FE5400"
+
+#define STYLE_TAG \
+ tag: "br" "\n";\
+ tag: "ps" "ps";\
+ tag: "tab" "\t";\
+ tag: "b" "+ font=Tizen:style=Bold";\
+
+#define GRID_STYLE_TIME_TAG_MATCH \
+ tag: "match" GENGIID_PART_MATCH_TIME_TAG_COLOR; \
+
+#define GRID_STYLE_TAG_MATCH \
+ tag: "match" GENGRID_PART_MATCH_TAG_COLOR; \
+
+
+
+styles {
+ style { name: "gengrid_style_list_time_text_unread";
+ base: "font=Tizen:style=Bold align=left valign=middle font_size="GENGIID_LIST_SUB_TEXT_SIZE" color="GENGIID_LIST_SUB_TIME_DEFAULT_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ GRID_STYLE_TIME_TAG_MATCH
+ }
+
+ style { name: "gengrid_style_list_main_text_unread";
+ base: "font=Tizen:style=Regular font_size="GENGRID_GRID_MAIN_TEXT_SIZE" color="GENGRID_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ GRID_STYLE_TAG_MATCH
+ }
+}
+
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+
+#define GENGRID_PART_PROGRESS_BAR_ICON( NAME, REL1_TO, REL2_TO ) \
+part { name: NAME; \
+ scale: 1; \
+ repeat_events: 1; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ min: 0 GENGRID_ICON_CUSTOM_VIDEO_PROGRESSBAR_H; \
+ fixed: 0 1; \
+ align: 0.5 1.0; \
+ rel1 { \
+ relative: GENGRID_PROGRESSBAR_L/GENGRID_ICON_CUSTOM_WIDTH GENGRID_PROGRESSBAR_T/GENGRID_ICON_CUSTOM_HEIGHT; \
+ to: REL1_TO; \
+ } \
+ rel2 { \
+ relative: GENGRID_PROGRESSBAR_R/GENGRID_ICON_CUSTOM_WIDTH GENGRID_PROGRESSBAR_B/GENGRID_ICON_CUSTOM_HEIGHT; \
+ to: REL2_TO; \
+ } \
+ GENGRID_ITEM_SELECT_VI_EFFECT \
+ } \
+ }
+
+#define GENGRID_TAP_SOUND \
+ program { name: "touch_snd"; \
+ signal: "mouse,clicked,1"; \
+ source: "reorder_bg"; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ }
+
+
+#define GRID_PARAM_ICON_RT_CUSTOM_LOCK \
+ min: GRID_ICON_CUSTOM_LOCK_WIDTH GRID_ICON_CUSTOM_LOCK_HEIGHT;\
+ max: GRID_ICON_CUSTOM_LOCK_WIDTH GRID_ICON_CUSTOM_LOCK_HEIGHT;
+
+#define GRID_PARAM_ICON_RT_CUSTOM_DROPBOX \
+ min: GRID_ICON_CUSTOM_DROPBOX_WIDTH GRID_ICON_CUSTOM_DROPBOX_LOCK_HEIGHT;\
+ max: GRID_ICON_CUSTOM_DROPBOX_WIDTH GRID_ICON_CUSTOM_DROPBOX_LOCK_HEIGHT;
+
+
+#define GRID_PART_ICON_RT_CUSTOM_LOCK(NAME, REL_TO) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ GRID_PARAM_ICON_RT_CUSTOM_LOCK \
+ fixed: 1 1; \
+ align: 1.0 0.0; \
+ rel1 { \
+ relative: 1.0 0.0;\
+ to: REL_TO; offset:0 4;\
+ } \
+ rel2 { \
+ to: REL_TO; offset:-4 0;\
+ } \
+ GENGRID_ITEM_SELECT_VI_EFFECT \
+ } \
+ }
+
+#define GRID_PART_ICON_RT_CUSTOM_DROPBOX(NAME, REL_TO) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ GRID_PARAM_ICON_RT_CUSTOM_DROPBOX \
+ fixed: 1 1; \
+ align: 0.0 1.0; \
+ rel1 { \
+ relative: 0.0 1.0;\
+ to: REL_TO; offset:10 0;\
+ } \
+ rel2 { \
+ to: REL_TO; offset:0 -20;\
+ } \
+ GENGRID_ITEM_SELECT_VI_EFFECT \
+ } \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_IMAGE \
+ program { name: "action_focus"; \
+ signal: "elm,action,focus_highlight,show"; \
+ source: "elm"; \
+ action: STATE_SET "enabled" 0.0; \
+ target: "focus_bg"; \
+ } \
+ program { name: "action_unfocus"; \
+ signal: "elm,action,focus_highlight,hide"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_bg"; \
+ }
+
+#define GENGRID_ITEM_SELECT_VI_EFFECT \
+} \
+description { state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp1"; \
+ smooth: 0; \
+ } \
+} \
+description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp"; \
+ smooth: 1; \
+ }
+
+#define GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT( TARGET ) \
+ program { name: "vi_pressed"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ after: "vi_zoom_in"; \
+ } \
+ program { name: "vi_zoom_in"; \
+ action: STATE_SET "selected" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ } \
+ program { name: "vi_zoom_out"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ after: "vi_default"; \
+ } \
+ program { name: "vi_default"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ }
+
+
+group { name: "elm/gengrid/item/video/default_grid/default";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ images {
+ image : "00_thumbs_line_bg.png" COMP;
+ image : "00_thumbs_bg_focus.png" COMP;
+ image : "00_thumbs_loading_bg.png" COMP;
+ }
+ script {
+ public selected = 0;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BACKGROUND_COLOR_INC;
+ //GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+
+ part { name: "persp";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: -70;
+ focal: 1000;
+ }
+ }
+ }
+ part { name: "persp1";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: 0;
+ focal: 1000;
+ }
+ }
+ }
+
+ part { name: "left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_LEFT_TOP_PADDING_INC;
+ align: 0.0 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_RIGHT_BOTTOM_PADDING_INC;
+ align: 1.0 1.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+
+ part { name: "item_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "right_bottom_padding";
+ }
+ }
+ }
+
+ part{
+ name: "elm.swallow.icon.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "item_bg";}
+ rel2 { relative: 1.0 0.7; to: "item_bg";}
+ color: 0 0 0 255;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+
+ part { name: "item_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_ITEM_BG_LEFT_TOP_PADDING_INC;
+ align: 0.0 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1.to: "item_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg";
+ }
+ }
+ }
+ part { name: "item_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_ITEM_BG_RIGHT_BOTTOM_PADDING_INC;
+ align: 1.0 1.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg";
+ }
+ rel2.to: "item_bg";
+ }
+ }
+ part { name: "item_real_bg";
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg_right_bottom_padding";
+ }
+ image.normal: "00_thumbs_loading_bg.png";
+ }
+ }
+ part { name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_ITEM_REAL_BG_RIGHT_PADDING_INC;
+ align: 0.0 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1.to: "item_real_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg";
+ }
+ }
+ }
+ part { name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_ITEM_REAL_BG_RIGHT_PADDING_INC;
+ align: 1.0 1.0;
+ fixed: 1 1;
+ visible: 0;
+ rel1 {
+ relative: 1.0 0.7;
+ to: "item_real_bg";
+ }
+ rel2.to: "item_real_bg";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg_right_bottom_padding";
+ }
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ rel1
+ {
+ relative: 0.8 0.1;
+ to: "elm.swallow.icon";
+ }
+ rel2
+ {
+ relative: 0.9 0.2;
+ to: "elm.swallow.icon";
+ }
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "reorder_bg";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ rel1.to: "item_bg";
+ rel2.to: "item_bg";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ color: GENGRID_PART_REORDER_DEFAULT_BG_COLOR_INC;
+ }
+ }
+ part { name: "focus_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_LEFT_TOP_FOCUS_PADDING_INC;
+ align: 0.0 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "focus_bg_right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GENGRID_DEFAULT_RIGHT_BOTTOM_FOCUS_PADDING_INC;
+ align: 1.0 1.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "focus_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "focus_bg_right_bottom_padding";
+ }
+ image.normal: "00_thumbs_bg_focus.png";
+ image.border: 6 6 6 6;
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+
+ programs {
+ GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "bg";
+ //target: "item_bg";
+ target: "elm.swallow.icon.bg";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ )
+ program { name: "go_mouse_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ after:"go_down";
+ transition: ACCELERATE 0.2;
+ }
+ program { name: "go_mouse_up";
+ signal: "mouse,up,1";
+ source: "reorder_bg";
+ action: STATE_SET "default" 0.0;
+ script {
+ if (get_int(selected)) {
+ set_int(selected, 0);
+ run_program(PROGRAM:"vi_zoom_out");
+ }
+ }
+ transition: DECELERATE 0.2;
+ }
+ program { name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: ACCELERATE 0.3;
+ }
+ program { name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: DECELERATE 0.3;
+ }
+ program { name:"go_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ action: STATE_SET "enabled" 0.0;
+ script {
+ if (!get_int(selected)) {
+ set_int(selected, 1);
+ run_program(PROGRAM:"vi_pressed");
+ }
+ }
+ transition: ACCELERATE 0.2;
+ }
+ }
+ }
+
+
+group { name: "elm/gengrid/item/video/album_grid/default";
+ inherit: "elm/gengrid/item/video/default_grid/default";
+ data.item: "texts" "elm.text elm.text.2";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end elm.progressbar.icon elm.lock.icon elm.dropbox.icon";
+
+ parts {
+ part { name: "elm.progressbar.icon";
+ scale: 1;
+ repeat_events: 1;
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 0 GENGRID_ICON_CUSTOM_VIDEO_PROGRESSBAR_H;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 0.96;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ }
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "main_text_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.05 1.0; to: "elm.swallow.icon"; }
+ rel2 { relative: 0.9 0.82; to: "item_bg"; }
+ min: 0 GENGRID_GRID_TEXT_TITLE_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "sub_text_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.05 0.84; to: "item_bg"; }
+ rel2 { relative: 0.9 0.99; to: "item_bg"; }
+ min: 0 GENGRID_GRID_TEXT_SUB_TITLE_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "bottom_space_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "sub_text_area"; }
+ rel2 { relative: 1.0 1.0; to: "sub_text_area"; }
+ min: 0 GENGRID_GRID_TEXT_BOTTOM_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "main_text_area";
+ rel2.to: "main_text_area";
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_main_text_unread";
+ }
+ }
+ }
+
+ part { name: "elm.text.2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "sub_text_area";
+ rel2.to: "sub_text_area";
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_time_text_unread";
+ }
+ //color: 59 115 182 255;
+ }
+ }
+ //GENGRID_PART_PROGRESS_BAR_ICON("elm.progressbar.icon", "elm.swallow.icon", "elm.swallow.icon")
+ GRID_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.swallow.icon")
+ GRID_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.swallow.icon")
+ part { name: "focus_bg";
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon"; }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ GENGRID_TAP_SOUND
+ GENLIST_PROGRAM_FOCUS_IMAGE
+ GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "bg";
+ target: "item_bg";
+ target: "elm.swallow.icon.bg";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.progressbar.icon";
+ target: "elm.lock.icon";
+ target: "elm.dropbox.icon";
+ )
+ }
+ program{
+ name: "touch_snd0";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd1";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon.bg";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd2";
+ signal: "mouse,clicked,1";
+ source: "item_bg";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd3";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.end";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ }
+
+group { name: "elm/gengrid/item/video/folder_grid/default";
+ inherit: "elm/gengrid/item/video/default_grid/default";
+ data.item: "texts" "elm.text elm.text.2 elm.text.number";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end elm.progressbar.icon elm.lock.icon elm.dropbox.icon elm.sdcard.icon";
+
+ parts {
+ part { name: "elm.progressbar.icon";
+ scale: 1;
+ repeat_events: 1;
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 0 GENGRID_ICON_CUSTOM_VIDEO_PROGRESSBAR_H;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 0.96;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ }
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "main_text_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.05 1.0; to: "elm.swallow.icon"; }
+ rel2 { relative: 0.9 0.82; to: "item_bg"; }
+ min: 0 GENGRID_GRID_TEXT_TITLE_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "sub_text_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.05 0.84; to: "item_bg"; }
+ rel2 { relative: 0.9 0.99; to: "item_bg"; }
+ min: 0 GENGRID_GRID_TEXT_SUB_TITLE_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "bottom_space_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "sub_text_area"; }
+ rel2 { relative: 1.0 1.0; to: "sub_text_area"; }
+ min: 0 GENGRID_GRID_TEXT_BOTTOM_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; to: "main_text_area"; }
+ rel2 { relative: 0.7 0.5; to: "main_text_area"; }
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_main_text_unread";
+ }
+ }
+ }
+
+ part { name: "elm.text.number";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.7 0.5; to: "main_text_area"; }
+ rel2 { relative: 1.0 0.5; to: "main_text_area"; }
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_main_text_unread";
+ }
+ }
+ }
+
+ part { name: "elm.text.2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "sub_text_area";
+ rel2.to: "sub_text_area";
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_time_text_unread";
+ }
+ //color: 59 115 182 255;
+ }
+ }
+ part {
+ name: "elm.sdcard.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.80 0.48;
+ to: item_bg;
+ }
+ rel2 {
+ relative: 0.98 0.65;
+ to: item_bg;
+ }
+ color: 255 0 0 255;
+ }
+ }
+ //GENGRID_PART_PROGRESS_BAR_ICON("elm.progressbar.icon", "elm.swallow.icon", "elm.swallow.icon")
+ GRID_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.swallow.icon")
+ GRID_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.swallow.icon")
+ part { name: "focus_bg";
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon"; }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ GENGRID_TAP_SOUND
+ GENLIST_PROGRAM_FOCUS_IMAGE
+ GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "bg";
+ target: "item_bg";
+ target: "elm.swallow.icon.bg";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.progressbar.icon";
+ target: "elm.lock.icon";
+ target: "elm.dropbox.icon";
+ )
+ }
+ program{
+ name: "touch_snd4";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd5";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon.bg";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd6";
+ signal: "mouse,clicked,1";
+ source: "item_bg";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd7";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.end";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ }
+
+ group { name: "elm/gengrid/item/video/album_grid_r/default";
+ inherit: "elm/gengrid/item/video/album_grid/default";
+ data.item: "texts" "elm.text elm.text.2";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end elm.progressbar.icon elm.lock.icon elm.dropbox.icon";
+ parts {
+ part { name: "left_top_padding";
+ description { state: "default" 0.0;
+ min: GENGRID_R_TEXT_LEFT_TOP_PAD_INC;
+ }
+ }
+ part { name: "right_bottom_padding";
+ description { state: "default" 0.0;
+ min: GENGRID_R_TEXT_RIGHT_BOTTOM_PAD_INC;
+ }
+ }
+ }
+ }
+
+/*
+ group {
+ name: "elm/gengrid/item/livebox/pd_grid/default";
+ inherit: "elm/gengrid/item/video/default_grid/default";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ parts {
+
+ part { name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_PD_ITEM_REAL_BG_RIGHT_PADDING_INC;
+ align: 0.0 0.0;
+ visible: 1;
+ fixed: 1 1;
+ color: 155 155 155 255;
+ rel1.to: "item_real_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg";
+ }
+ }
+ }
+ part { name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: GENGRID_PD_ITEM_REAL_BG_RIGHT_PADDING_INC;
+ align: 1.0 1.0;
+ fixed: 1 1;
+ visible: 1;
+ color: 155 155 155 255;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg";
+ }
+ rel2.to: "item_real_bg";
+ }
+ }
+
+ part { name: "left_top_padding";
+ description { state: "default" 0.0;
+ min: GENGRID_PD_TEXT_LEFT_TOP_PAD_INC;
+ }
+ }
+ part { name: "right_bottom_padding";
+ description { state: "default" 0.0;
+ min: GENGRID_PD_TEXT_RIGHT_BOTTOM_PAD_INC;
+ }
+ }
+ part { name: "padding_center";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to_x: "elm.swallow.icon"; to_y: "right_bottom_padding"; }
+ rel2 { relative: 1.0 0.0; to_x: "elm.swallow.icon"; to_y: "right_bottom_padding"; }
+ min: 0 GENGRID_PD_TEXT_CENTER_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "main_text_area";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "padding_center"; }
+ rel2 { relative: 1.0 1.0; to: "padding_center"; }
+ min: 0 GENGRID_PD_TEXT_TITLE_HEIGHT;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "main_text_area";
+ rel2.to: "main_text_area";
+ text {
+ text: "Tizen:style=Medium";
+ size: 24;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "item_bg_left_top_padding";
+ description { state: "default" 0.0;
+ min: 0 0;
+ }
+ }
+ part { name: "item_bg_right_bottom_padding";
+ description { state: "default" 0.0;
+ min: 0 0;
+ }
+ }
+*/ /*part { name: "item_real_bg_left_top_padding";
+ description { state: "default" 0.0;
+ min: 0 0;
+ }
+ }
+ part { name: "item_real_bg_right_bottom_padding";
+ description { state: "default" 0.0;
+ min: 0 0;
+ }
+ }*/
+/* part { name: "focus_bg";
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon"; }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ GENGRID_TAP_SOUND
+ }
+ }
+*/
diff --git a/res/edc/vp-gengrid.edc b/res/edc/vp-gengrid.edc
new file mode 100644
index 0000000..eeaf5e5
--- /dev/null
+++ b/res/edc/vp-gengrid.edc
@@ -0,0 +1,831 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define GENGRID_FONT_STYLE_18_INC "26"
+#define GENGRID_PART_BG_COLOR_INC 0 0 0 0
+#define GENGRID_PART_ITEM_BG_COLOR_INC 255 0 0 255
+#define GENGRID_PART_REORDER_BG_COLOR_INC 0 0 0 128
+#define GENGRID_PART_TEXTBLOCK_STYLE_COLOR_INC "#F9F9F9"
+
+ styles {
+ style { name: "gengrid_textblock_style";
+ base: "font=Tizen:style=Medium font_size="GENGRID_FONT_STYLE_18_INC" color="GENGRID_PART_TEXTBLOCK_STYLE_COLOR_INC" align=center wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ tag: "b" "+ font=Tizen:style=Bold";
+ }
+ }
+
+ group { name: "elm/gengrid/item/bookmark/default";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ images {
+ image : "00_winset_thumbs_bg.png" COMP;
+ image : "00_winset_thumbs_focus_bg.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ }
+ }
+ part { name: "left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 8 18;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 8 0;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "item_bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "right_bottom_padding";
+ }
+ //image.normal: "00_winset_thumbs_bg.png";
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "item_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 0;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg";
+ }
+ }
+ }
+ part { name: "item_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 6;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg";
+ }
+ rel2.to: "item_bg";
+ }
+ }
+ part { name: "item_real_bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ //color: 190 189 189 255;
+ color: 0 0 0 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg_right_bottom_padding";
+ }
+ }
+ }
+ part { name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 2;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_real_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg";
+ }
+ }
+ }
+ part { name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 2;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg";
+ }
+ rel2.to: "item_real_bg";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg_right_bottom_padding";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ }
+ }
+ part { name: "reorder_bg";
+ type: RECT;
+ scale: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ rel1.to: "item_bg";
+ rel2.to: "item_bg";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ color: GENGRID_PART_REORDER_BG_COLOR_INC;
+ }
+ }
+ part { name: "focus_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 8 16;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "focus_bg_right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 8 4;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "focus_bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "focus_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "focus_bg_right_bottom_padding";
+ }
+ image.normal: "00_winset_thumbs_focus_bg.png";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "go_mouse_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ action: STATE_SET "enabled" 0.0;
+ target: "focus_bg";
+ transition: ACCELERATE 0.2;
+ }
+ program { name: "go_mouse_up";
+ signal: "mouse,up,1";
+ source: "reorder_bg";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ transition: DECELERATE 0.2;
+ }
+ program { name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: ACCELERATE 0.3;
+ }
+ program { name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: DECELERATE 0.3;
+ }
+ }
+ }
+
+ group { name: "elm/gengrid/item/default_gridtext/default";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.block elm.swallow.end";
+ images {
+ image : "00_winset_thumbs_bg.png" COMP;
+ image : "00_winset_thumbs_focus_bg.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ }
+ }
+ part { name: "left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 8 18;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 8 72;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "left_top_padding";
+ to_y: "right_bottom_padding";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "right_bottom_padding";
+ }
+ text {
+ style: "gengrid_textblock_style";
+ min: 0 1;
+ align: 0.5 0.0;
+ }
+ }
+ }
+ part { name: "elm.swallow.block";
+ type: SWALLOW;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1.to : "elm.text";
+ rel2.to : "elm.text";
+ }
+ }
+ part { name: "item_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "right_bottom_padding";
+ }
+ image.normal: "00_winset_thumbs_bg.png";
+ }
+ }
+ part { name: "item_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 0;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg";
+ }
+ }
+ }
+ part { name: "item_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 6;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg";
+ }
+ rel2.to: "item_bg";
+ }
+ }
+ part { name: "item_real_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 190 189 189 255;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg_right_bottom_padding";
+ }
+ }
+ }
+ part { name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 2;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_real_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg";
+ }
+ }
+ }
+ part { name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 2;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg";
+ }
+ rel2.to: "item_real_bg";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg_right_bottom_padding";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ }
+ }
+ part { name: "reorder_bg";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ rel1.to: "item_bg";
+ rel2.to: "item_bg";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ color: GENGRID_PART_REORDER_BG_COLOR_INC;
+ }
+ }
+ part { name: "focus_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 8 16;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "focus_bg_right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 8 76;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "focus_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "focus_bg_right_bottom_padding";
+ }
+ image.normal: "00_winset_thumbs_focus_bg.png";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "go_mouse_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ action: STATE_SET "enabled" 0.0;
+ target: "focus_bg";
+ transition: ACCELERATE 0.2;
+ }
+ program { name: "go_mouse_up";
+ signal: "mouse,up,1";
+ source: "reorder_bg";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ transition: DECELERATE 0.2;
+ }
+ program { name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: ACCELERATE 0.3;
+ }
+ program { name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: DECELERATE 0.3;
+ }
+ }
+ }
+
+ group { name: "elm/gengrid/item/default_gridtext2/default";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.block elm.swallow.end";
+ images {
+ image : "00_winset_thumbs_bg.png" COMP;
+ image : "00_winset_thumbs_focus_bg.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ }
+ }
+ part { name: "left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 8 74;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 8 0;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "right_bottom_padding";
+ to_y: "left_top_padding";
+ }
+ text {
+ style: "gengrid_textblock_style";
+ min: 0 1;
+ align: 0.5 1.0;
+ }
+ }
+ }
+ part { name: "elm.swallow.block";
+ type: SWALLOW;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1.to : "elm.text";
+ rel2.to : "elm.text";
+ }
+ }
+ part { name: "item_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "right_bottom_padding";
+ }
+ image.normal: "00_winset_thumbs_bg.png";
+ }
+ }
+ part { name: "item_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 0;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg";
+ }
+ }
+ }
+ part { name: "item_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 6;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg";
+ }
+ rel2.to: "item_bg";
+ }
+ }
+ part { name: "item_real_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 190 189 189 255;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_bg_right_bottom_padding";
+ }
+ }
+ }
+ part { name: "item_real_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 2;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "item_real_bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg";
+ }
+ }
+ }
+ part { name: "item_real_bg_right_bottom_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 2 2;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg";
+ }
+ rel2.to: "item_real_bg";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "item_real_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "item_real_bg_right_bottom_padding";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ }
+ }
+ part { name: "reorder_bg";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: GENGRID_PART_BG_COLOR_INC;
+ rel1.to: "item_bg";
+ rel2.to: "item_bg";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ color: GENGRID_PART_REORDER_BG_COLOR_INC;
+ }
+ }
+ part { name: "focus_bg_left_top_padding";
+ type: RECT;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 8 72;
+ align: 0.0 0.0;
+ visible: 0;
+ rel1.to: "bg";
+ rel2 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+ part { name: "focus_bg_right_bottom_padding";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 8 4;
+ align: 1.0 1.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "bg";
+ }
+ rel2.to: "bg";
+ }
+ }
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "focus_bg_left_top_padding";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "focus_bg_right_bottom_padding";
+ }
+ image.normal: "00_winset_thumbs_focus_bg.png";
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "go_mouse_down";
+ signal: "mouse,down,1";
+ source: "reorder_bg";
+ action: STATE_SET "enabled" 0.0;
+ target: "focus_bg";
+ transition: ACCELERATE 0.2;
+ }
+ program { name: "go_mouse_up";
+ signal: "mouse,up,1";
+ source: "reorder_bg";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ transition: DECELERATE 0.2;
+ }
+ program { name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: ACCELERATE 0.3;
+ }
+ program { name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ target: "focus_bg";
+ transition: DECELERATE 0.3;
+ }
+ }
+ }
+
+ group { name: "elm/gengrid/item/block/default";
+ parts {
+ part { name: "bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ }
+ }
diff --git a/res/edc/vp-genlist-custom.edc b/res/edc/vp-genlist-custom.edc
new file mode 100644
index 0000000..787b53b
--- /dev/null
+++ b/res/edc/vp-genlist-custom.edc
@@ -0,0 +1,2850 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+/*
+ * vim:ts=3
+*/
+
+/* genlist multisense sample/tone listing */
+ sounds {
+ sample {
+ name: "button-pressed" RAW;
+ source: "button-pressed.wav";
+ }
+ }
+
+#ifndef USE_VIDEO_DOWNLOAD
+#define USE_VIDEO_DOWNLOAD
+#endif
+
+//////////////////////////////
+// tizen-hd-inc.edc
+// List bg color
+#define GENLIST_LIST_BG_COLOR 248 246 239 0
+#define GENLIST_DIALOGUE_BG_COLOR 248 246 239 255
+#define GENLIST_LIST_PRESS_COLOR 87 135 194 255
+#define GENLIST_LIST_DIM_COLOR 219 217 212 255
+#define GENLIST_LIST_LINE1_COLOR 211 209 203 255
+#define GENLIST_LIST_LINE2_COLOR 255 255 255 255
+#define GENLIST_LIST_DIVIDER1_COLOR 185 184 178 255
+#define GENLIST_LIST_DIVIDER2_COLOR 255 255 255 255
+#define GENLIST_LIST_CENTERLINE1_COLOR 206 205 202 255
+#define GENLIST_SELECT_ALL_BG_COLOR 220 218 211 255
+
+// Genlist Text
+#define GENLIST_LIST_RECENT_TEXT_SIZE 38
+#define GENLIST_LIST_MAIN_TEXT_SIZE 44
+#define GENLIST_LIST_SUBITEM_TITLE_TEXT_SIZE 35
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR 0 0 0 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF"
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR 0 0 0 102
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_STYLE "#00000066"
+#define GENLIST_LIST_MAIN_TEXT_READ_COLOR 128 128 128 255
+#define GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR 128 128 128 204
+#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR 255 255 255 255
+#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE "#FFFFFFFF"
+//#define GENLIST_PART_MATCH_TAG_COLOR "+ color=#3F8DAD"
+#define GENLIST_PART_MATCH_TAG_COLOR "+ color=#FE5400"
+#define GENLIST_PART_MATCH_TIME_TAG_COLOR "+ color=#0E68AD"
+
+
+
+#define GENLIST_LIST_SUB_TEXT_SIZE 32
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR 128 128 128 255
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE "#808080FF"
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR 128 128 128 204
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR_STYLE "#808080CC"
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR 59 115 182 255
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR_STYLE "#3B73B6FF"
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_DIM_COLOR 59 115 182 76
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_DIM_COLOR_STYLE "#3B73B64C"
+#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR 255 255 255 255
+#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR_STYLE "#FFFFFFFF"
+
+#define GENLIST_LIST_SUB_TIME_FOCUS_COLOR 248 236 239 255
+#define GENLIST_LIST_SUB_TIME_DEFAULT_COLOR 79 79 79 255
+#define GENLIST_LIST_SUB_TIME_DEFAULT_COLOR_STYLE "#4F4F4FFF"
+#define GENLIST_LIST_SUB_TIME_DEFAULT_DIM_COLOR 79 79 79 204
+
+#define GENLIST_CONTENTS_TEXT_SIZE 28
+#define GENLIST_CONTENTS_TEXT_COLOR 128 128 128 255
+#define GENLIST_CONTENTS_TEXT_COLOR_STYLE "#808080FF"
+
+#define GENLIST_LIST_BUBBLE_TEXT_SIZE 32
+#define GENLIST_LIST_BUBBLE_TEXT_COLOR 249 249 249 255
+
+#define GENLIST_LIST_THUMBNAIL_BG 0 0 0 255
+
+#define GENLIST_LIST_ITEM_FOCUS_BG "00_focus.png"
+
+
+//////////////////////////////
+// genlist_textblock_style.edc
+
+#define STYLE_TAG \
+ tag: "br" "\n";\
+ tag: "ps" "ps";\
+ tag: "tab" "\t";\
+ tag: "b" "+ font=Tizen:style=Bold";\
+
+#define STYLE_TAG_MATCH \
+ tag: "match" GENLIST_PART_MATCH_TAG_COLOR; \
+
+#define STYLE_TIME_TAG_MATCH \
+ tag: "match" GENLIST_PART_MATCH_TIME_TAG_COLOR; \
+
+// FIXME: Why this is needed? just don't use match color, right? damn textblock bug...
+#define STYLE_TAG_MATCH_FOCUS \
+ tag: "match" GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE; \
+
+
+styles {
+ // ********************** list main text
+ style { name: "genlist_style_list_main_text_unread";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_unread_dim";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_read";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_READ_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_read_dim";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_main_text_focus";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH_FOCUS
+ }
+
+ //********************** subitem title text
+ style { name: "genlist_style_list_subitem_title_text_unread";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUBITEM_TITLE_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_subitem_title_text_unread_dim";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_SUBITEM_TITLE_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_subitem_title_text_read";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_SUBITEM_TITLE_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_READ_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_subitem_title_text_read_dim";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_SUBITEM_TITLE_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_subitem_title_text_focus";
+ base: "font=Tizen:style=Regular font_size="GENLIST_LIST_SUBITEM_TITLE_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH_FOCUS
+ }
+
+ // ********************** list time text
+ style { name: "genlist_style_list_time_text_unread";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TIME_TAG_MATCH
+ }
+ style { name: "genlist_style_list_time_text_unread_dim";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_time_text_read";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_time_text_read_dim";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH
+ }
+ style { name: "genlist_style_list_time_text_focus";
+ base: "font=Tizen:style=Bold font_size="GENLIST_LIST_SUB_TEXT_SIZE" color=#FFFFFF ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TAG_MATCH_FOCUS
+ }
+}
+
+
+//////////////////////////////
+// genlist_macro.edc
+#define GENLIST_HEIGHT_MIN_1LINE 50
+#define GENLIST_HEIGHT_1LINE 75
+#define GENLIST_HEIGHT_2LINE_MAIN 54
+#define GENLIST_HEIGHT_2LINE_SUB 42
+#define GENLIST_HEIGHT_3LINE_MAIN 54
+#define GENLIST_HEIGHT_3LINE_SUB1 42
+#define GENLIST_HEIGHT_3LINE_SUB2 38
+#define GENLIST_HEIGHT_MULTILINE_SUB 38
+#define GENLIST_PART_LIST_LINE_HEIGHT 1
+#define GENLIST_HEIGHT_GROUPTITLE 46
+#define GENLIST_HEIGHT_1LINE_RECENT 66
+
+#define GENLIST_ICON_BIG_SIZE 74
+#define GENLIST_ICON_CHECK_RADIO_SIZE 63
+#define GENLIST_BTN_02_SIZE 74
+
+#define GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH 202
+#define GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT 120
+
+#define GENLIST_ICON_CUSTOM_LOCK_WIDTH 45
+#define GENLIST_ICON_CUSTOM_LOCK_HEIGHT 45
+
+#define GENLIST_ICON_CUSTOM_DROPBOX_WIDTH 40
+#define GENLIST_ICON_CUSTOM_DROPBOX_HEIGHT 40
+
+
+#define GENLIST_ICON_CUSTOM_FOLDER_ICON_WIDTH 72
+#define GENLIST_ICON_CUSTOM_FOLDER_ICON_HEIGHT 72
+
+#define GENLIST_PADDING_CUSTOM_SIZE_LEFT_EDIT 26
+#define GENLIST_PADDING_SIZE_DEFAULT 16
+#define GENLIST_PADDING_SIZE_LEFT 16
+#define GENLIST_PADDING_CUSTOM_SIZE_LEFT 16
+#define GENLIST_PADDING_CUSTOM_1ICON_SIZE_LEFT 0
+#define GENLIST_PADDING_SIZE_RIGHT 26
+#define GENLIST_PADDING_CUSTOM_1ICON_SIZE_RIGHT 0
+#define GENLIST_PADDING_SIZE_PLAY_ICON_L 22
+#define GENLIST_PADDING_SIZE_TOP_2LINE 22
+#define GENLIST_PADDING_SIZE_BOTTOM_2LINE 22
+#define GENLIST_PADDING_CUSTOM_SIZE_TOP_2LINE 22
+#define GENLIST_PADDING_CUSTOM_SIZE_BOTTOM_2LINE 22
+#define GENLIST_PADDING_SIZE_TOP_3LINE 17
+#define GENLIST_PADDING_SIZE_BOTTOM_3LINE 17
+#define GENLIST_PADDING_SIZE_NDEPTH 26
+#define GENLIST_PADDING_CUSTOM_1TEXT_LEFT 18
+#define GENLIST_PADDING_CUSTOM_1TEXT_RIGHT 0
+#define GENLIST_PADDING_CUSTOM_1TEXT_TOP 0
+#define GENLIST_PADDING_CUSTOM_1TEXT_BOTTOM 0
+
+#define GENLIST_ICON_CUSTOM_VIDEO_PROGRESSBAR_H 11
+#define GENLIST_PROGRESSBAR_L 10
+#define GENLIST_PROGRESSBAR_R (GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH-GENLIST_PROGRESSBAR_L)
+#define GENLIST_PROGRESSBAR_T 102
+#define GENLIST_PROGRESSBAR_B 113
+
+#define GENLIST_HEIGHT_MIN_1LINE_THUMBNAIL 150
+#define GENLIST_HEIGHT_MIN_1LINE_THUMBNAIL_LANDSCAPE 150
+#define GENLIST_HEIGHT_MAX_1LINE_THUMBNAIL 225
+
+#define GENLIST_TREESIZE_DEFAULT 26
+
+#define GENLIST_ICON_CUSTOM_FOLDER_WIDTH 30
+#define GENLIST_ICON_CUSTOM_FOLDER_HEIGHT 30
+
+#define GENLIST_PARAM_ICON_BIG \
+ min: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; \
+ max: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE;
+
+#define GENLIST_PARAM_ICON_BIG_CUSTOM_THUMBNAIL \
+ min: GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT;\
+ max: GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT;
+
+#define GENLIST_PARAM_ICON_RT_CUSTOM_LOCK \
+ min: GENLIST_ICON_CUSTOM_LOCK_WIDTH GENLIST_ICON_CUSTOM_LOCK_HEIGHT;\
+ max: GENLIST_ICON_CUSTOM_LOCK_WIDTH GENLIST_ICON_CUSTOM_LOCK_HEIGHT;
+
+#define GENLIST_PARAM_ICON_RT_CUSTOM_DROPBOX \
+ min: GENLIST_ICON_CUSTOM_DROPBOX_WIDTH GENLIST_ICON_CUSTOM_DROPBOX_HEIGHT;\
+ max: GENLIST_ICON_CUSTOM_DROPBOX_WIDTH GENLIST_ICON_CUSTOM_DROPBOX_HEIGHT;
+
+
+#define GENLIST_PARAM_ICON_BIG_CUSTOM_FOLDER_ICON \
+ min: GENLIST_ICON_CUSTOM_FOLDER_ICON_WIDTH GENLIST_ICON_CUSTOM_FOLDER_ICON_HEIGHT;\
+ max: GENLIST_ICON_CUSTOM_FOLDER_ICON_WIDTH GENLIST_ICON_CUSTOM_FOLDER_ICON_HEIGHT;
+
+#define GENLIST_PARAM_ICON_CHECK_RADIO \
+ min: GENLIST_ICON_CHECK_RADIO_SIZE GENLIST_ICON_CHECK_RADIO_SIZE; \
+ max: GENLIST_ICON_CHECK_RADIO_SIZE GENLIST_ICON_CHECK_RADIO_SIZE;
+
+#define GENLIST_PARAM_ICON_BTN_02 \
+ min: GENLIST_BTN_02_SIZE GENLIST_BTN_02_SIZE; \
+ max: GENLIST_BTN_02_SIZE GENLIST_BTN_02_SIZE;
+
+#define GENLIST_DATA_ITEM_NORMAL \
+ data.item: "stacking" "above"; \
+ data.item: "selectraise" "on"; \
+ data.item: "flips" "elm.flip.icon elm.flip.content"; \
+ data.item: "treesize" GENLIST_TREESIZE_DEFAULT;
+
+#define GENLIST_DESCRIPTION_FADE_ICON \
+ description { state: "fadeout" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 10; \
+ visible: 0; \
+ } \
+ description { state: "fadein" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+
+#define GENLIST_DESCRIPTION_FADE \
+ description { state: "fadeout" 0.0; \
+ inherit: "default" 0.0; \
+ color: 255 255 255 10; \
+ } \
+ description { state: "fadein" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+
+#define GENLIST_PART_ICON(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: SWALLOW; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADE_ICON \
+ }
+
+#define GENLIST_PART_ICON_REPEAT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 1; \
+ type: SWALLOW; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADE_ICON \
+ }
+
+#define GENLIST_PART_SPACER(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ mouse_events: 0; \
+ repeat_events: 1; \
+ type: SPACER; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_RECT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: RECT; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADE \
+ }
+
+#define GENLIST_PART_IMAGE(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: IMAGE; \
+ DESCRIPION \
+ }
+
+#define GENLIST_PART_TEXT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: TEXT; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADE \
+ }
+
+#define GENLIST_PART_TEXTBLOCK(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: TEXTBLOCK; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADE \
+ }
+
+#define GENLIST_PARAM_LISTITEM \
+ color: GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Regular"; \
+ size: GENLIST_LIST_MAIN_TEXT_SIZE; \
+ }
+
+#define GENLIST_PARAM_LISTITEM_TB \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_main_text_unread"; \
+ }
+
+#define GENLIST_PARAM_SUBTITLE_TITLE_TB \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_subitem_title_text_unread"; \
+ }
+
+#define GENLIST_PARAM_LISTITEM_TIME_TB \
+ text { \
+ min: 0 1; \
+ style: "genlist_style_list_time_text_unread"; \
+ }
+
+
+// | top |
+// ---------------------
+// left | HERE | right
+// ---------------------
+// | bottom |
+#define GENLIST_DESCRIPTION( left, right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+// ---------------------
+// left |--> HERE
+// ---------------------
+#define GENLIST_DESCRIPTION_L( left, param ) \
+ description { state: "default" 0.0;\
+ align: 0 0.5; \
+ fixed: 1 0; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 { \
+ relative: 1 1;\
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// ---------------------
+// HERE <--| right
+// ---------------------
+#define GENLIST_DESCRIPTION_R( right, param ) \
+ description { state: "default" 0.0;\
+ align: 1 0.5; \
+ fixed: 1 0; \
+ rel1 { \
+ relative: 0 0; \
+ to_x: right; \
+ to_y: "base"; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right; \
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// --------------------------
+// left |--> HERE <--| right
+// --------------------------
+#define GENLIST_DESCRIPTION_LR( left, right, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: "base"; \
+ }\
+ param\
+ }
+
+// | top |
+// ---------------------
+// left | HERE | right
+#define GENLIST_DESCRIPTION_LRT( left, right, top, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+ param\
+ }
+
+
+// left | HERE | right
+// ---------------------
+// | bottom |
+#define GENLIST_DESCRIPTION_LRB( left, right, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 1;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: bottom; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+// left | HERE | right
+// ---------------------
+// | bottom |
+#define GENLIST_DESCRIPTION_CUSTOM_LRB_ALIGN_1( left, right, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 1 1;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: bottom; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+// | TOP |
+// ---------------------
+// left | HERE | right
+#define GENLIST_DESCRIPTION_CUSTOM_LRT_ALIGN_1( left, right, top, param ) \
+ description { state: "default" 0.0;\
+ align: 1 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+ param\
+ }
+
+// left | HERE | right | bottom
+#define GENLIST_DESCRIPTION_LRTB( left, right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR; \
+ } \
+ description { state: "read" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_READ_COLOR; \
+ } \
+ description { state: "read,disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR; \
+ }
+
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_unread_dim"; \
+ } \
+ description { state: "read" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_read"; \
+ } \
+ description { state: "read,disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_read_dim"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_main_text_focus"; \
+ }
+
+#define GENLIST_DESCRIPTION_SUBITEM_TITLE_OTHERS_TB \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_subitem_title_text_unread_dim"; \
+ } \
+ description { state: "read" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_subitem_title_text_read"; \
+ } \
+ description { state: "read,disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_subitem_title_text_read_dim"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_subitem_title_text_focus"; \
+ }
+
+#define GENLIST_DESCRIPTION_LISTITEM_TIME_OTHERS_TB \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_time_text_unread_dim"; \
+ } \
+ description { state: "read" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_time_text_read"; \
+ } \
+ description { state: "read,disabled" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_time_text_read_dim"; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "genlist_style_list_time_text_focus"; \
+ }
+
+
+#define GENLIST_PARAM_SUBITEM_DEFAULT \
+ color: GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Medium"; \
+ size: GENLIST_LIST_SUB_TEXT_SIZE; \
+ }
+
+#define GENLIST_PARAM_SUBITEM_TIME_DEFAULT \
+ color: GENLIST_LIST_SUB_TIME_DEFAULT_COLOR; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Bold"; \
+ size: GENLIST_LIST_SUB_TEXT_SIZE; \
+ }
+
+#define GENLIST_PARAM_CUSTOM_SUBITEM_DEFAULT_ALIGN_1 \
+ color: GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR; \
+ text { \
+ align: 1 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Medium"; \
+ size: GENLIST_LIST_SUB_TEXT_SIZE; \
+ }
+
+#define GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_SUB_TEXT_FOCUS_COLOR; \
+ }
+
+#define GENLIST_DESCRIPTION_SUBITEM_TIME_DEFAULT_OTHERS \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_SUB_TIME_DEFAULT_DIM_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_SUB_TIME_FOCUS_COLOR; \
+ }
+
+#define GENLIST_PART_BG_IMAGE \
+ part { name: "bg_image_clip"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ description { state: "2depth" 0.0; \
+ color: 0 0 0 0; \
+ } \
+ } \
+ part { name: "bg_image"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 1; \
+ description { state: "default" 0.0; \
+ color: 21 108 148 255; \
+ } \
+ description { state: "selected" 0.0; \
+ color: 21 108 148 77; \
+ } \
+ description { state: "disabled" 0.0; \
+ color: GENLIST_LIST_DIM_COLOR; \
+ } \
+ GENLIST_DESCRIPTION_FADE \
+ }
+
+#define GENLIST_PART_PERSPECTIVE_POINT \
+ GENLIST_PART_RECT("point", \
+ description { \
+ state: "default" 0.0; \
+ color: 0 0 0 0; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 0.0; } \
+ } \
+ )
+
+#define GENLIST_PART_BASE \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ align: 0.5 0.5; \
+ color: 0 0 0 0; \
+ } \
+ } \
+ GENLIST_PART_PERSPECTIVE_POINT
+
+#define GENLIST_PART_BOTTOM_LINE \
+ part { name: "bottom_line"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+ max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+ fixed: 0 1; \
+ align: 0.5 1; \
+ color: GENLIST_LIST_LINE1_COLOR; \
+ rel1.to: "bottom_line2"; \
+ rel2.to: "bottom_line2"; \
+ rel2.relative: 1 0; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_PRESS_COLOR; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_DIM_COLOR; \
+ } \
+ GENLIST_DESCRIPTION_FADE \
+ } \
+ part { name: "bottom_line2"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+ max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+ fixed: 0 1; \
+ align: 0.5 1; \
+ color: GENLIST_LIST_LINE2_COLOR; \
+ rel1.to_x: "elm.padding.left"; \
+ rel1.relative: 1 0; \
+ rel2.to_x: "elm.padding.right"; \
+ rel2.relative: 0 1; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_PRESS_COLOR; \
+ } \
+ description { state: "reorder" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_LIST_DIM_COLOR; \
+ } \
+ GENLIST_DESCRIPTION_FADE \
+ }
+
+#define GENLIST_PART_EXPANDED_PAD \
+ part { name: "elm.swallow.pad"; \
+ type: SWALLOW; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ min: 0 0; \
+ fixed: 1 0; \
+ align: 0.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 0.0 1.0; \
+ } \
+ } \
+
+#define GENLIST_PART_PADDING_LEFT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_SIZE_LEFT 0; \
+ max: GENLIST_PADDING_SIZE_LEFT -1; \
+ fixed: 1 0; \
+ ) \
+ )
+
+#define GENLIST_PART_CUSTOM_PADDING_LEFT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_CUSTOM_SIZE_LEFT 0; \
+ max: GENLIST_PADDING_CUSTOM_SIZE_LEFT -1; \
+ fixed: 1 0; \
+ ) \
+ )
+
+#define GENLIST_PART_CUSTOM_PADDING_LEFT_EDIT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_CUSTOM_SIZE_LEFT_EDIT 0; \
+ max: GENLIST_PADDING_CUSTOM_SIZE_LEFT_EDIT -1; \
+ fixed: 1 0; \
+ ) \
+ )
+
+
+#define GENLIST_PART_CUSTOM_1ICON_PADDING_LEFT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_CUSTOM_1ICON_SIZE_LEFT 0; \
+ max: GENLIST_PADDING_CUSTOM_1ICON_SIZE_LEFT -1; \
+ fixed: 1 0; \
+ ) \
+ )
+
+#define GENLIST_PART_PADDING_RIGHT \
+ GENLIST_PART_SPACER("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_SIZE_RIGHT 0; \
+ max: GENLIST_PADDING_SIZE_RIGHT -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ )
+
+#define GENLIST_PART_CUSTOM_1ICON_PADDING_RIGHT \
+ GENLIST_PART_SPACER("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_CUSTOM_1ICON_SIZE_RIGHT 0; \
+ max: GENLIST_PADDING_CUSTOM_1ICON_SIZE_RIGHT -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_TOP_2LINE \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_TOP_2LINE; \
+ max: -1 GENLIST_PADDING_SIZE_TOP_2LINE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ )
+
+#define GENLIST_PART_CUSTOM_PADDING_TOP_2LINE \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_CUSTOM_SIZE_TOP_2LINE; \
+ max: -1 GENLIST_PADDING_CUSTOM_SIZE_TOP_2LINE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_BOTTOM_2LINE \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_SIZE_BOTTOM_2LINE; \
+ max: -1 GENLIST_PADDING_SIZE_BOTTOM_2LINE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ )
+
+#define GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_CUSTOM_SIZE_BOTTOM_2LINE; \
+ max: -1 GENLIST_PADDING_CUSTOM_SIZE_BOTTOM_2LINE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ )
+
+#define GENLIST_PART_ICON_CHECK_RADIO_L(NAME, LEFT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_L(LEFT, \
+ GENLIST_PARAM_ICON_CHECK_RADIO \
+ ) \
+ )
+
+
+#define GENLIST_PART_ICON_BIG_L(NAME, LEFT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_L(LEFT, \
+ fixed: 1 1; \
+ GENLIST_PARAM_ICON_BIG \
+ ) \
+ )
+
+#define GENLIST_PART_ICON_BIG_L_CUSTOM_THUMBNAIL(NAME, LEFT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_L(LEFT, \
+ fixed: 1 1; \
+ GENLIST_PARAM_ICON_BIG_CUSTOM_THUMBNAIL \
+ ) \
+ )
+
+#define GENLIST_PART_BG(NAME, PART , COLOR) \
+ GENLIST_PART_RECT(NAME, \
+ description { state: "default" 0.0; \
+ rel1 { \
+ relative: 0 0; \
+ to: PART; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to: PART; \
+ } \
+ color: COLOR; \
+ } \
+ )
+
+#define GENLIST_PART_ICON_BIG_L_CUSTOM_FOLDER_ICON(NAME, LEFT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_L(LEFT, \
+ fixed: 1 1; \
+ GENLIST_PARAM_ICON_BIG_CUSTOM_FOLDER_ICON \
+ ) \
+ )
+
+#define GENLIST_PART_ICON_BTN_02_R(NAME, RIGHT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_R(RIGHT, \
+ GENLIST_PARAM_ICON_BTN_02 \
+ ) \
+ )
+
+#define GENLIST_PART_PADDING_L( NAME, LEFT ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+ max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+ align: 0 0.5; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: LEFT; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ } \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_R( NAME, RIGHT ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+ max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+ align: 1 0.5; \
+ rel1 { \
+ relative: 0 0; \
+ to_x: RIGHT; \
+ } \
+ rel2 { \
+ relative: 0 1; \
+ to_x: RIGHT; \
+ } \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_PLAY_ICON_L( NAME, RIGHT ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 1 0; \
+ min: GENLIST_PADDING_SIZE_PLAY_ICON_L 0; \
+ max: GENLIST_PADDING_SIZE_PLAY_ICON_L -1; \
+ align: 1 0.5; \
+ rel1 { \
+ relative: 0 0; \
+ to_x: RIGHT; \
+ } \
+ rel2 { \
+ relative: 0 1; \
+ to_x: RIGHT; \
+ } \
+ } \
+ )
+
+
+#define GENLIST_PART_LISTITEM_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+ min: 0 HEIGHT; \
+ GENLIST_PARAM_LISTITEM \
+ PARAM \
+ ) \
+ GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+ )
+
+#define GENLIST_PART_LISTITEM_TB_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+ GENLIST_PART_TEXTBLOCK(NAME, \
+ GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+ min: 0 HEIGHT; \
+ GENLIST_PARAM_LISTITEM_TB \
+ PARAM \
+ ) \
+ GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+ )
+
+#define GENLIST_PART_SUBITEM_LRT(NAME, HEIGHT, LEFT, RIGHT, TOP) \
+ GENLIST_PART_SPACER(NAME, \
+ GENLIST_DESCRIPTION_LRT(LEFT, RIGHT, TOP, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; \
+ ) \
+ )
+
+#define GENLIST_PART_SUBITEM_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+ GENLIST_PARAM_SUBITEM_DEFAULT \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ )
+
+#define GENLIST_PART_SUBITEM_TIME_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+ GENLIST_PARAM_SUBITEM_TIME_DEFAULT \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_TIME_DEFAULT_OTHERS \
+ )
+
+#define GENLIST_PART_SUBITEM_TIME_BLOCK_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+ GENLIST_PART_TEXTBLOCK(NAME, \
+ GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+ min: 0 HEIGHT; \
+ GENLIST_PARAM_LISTITEM_TIME_TB \
+ ) \
+ GENLIST_DESCRIPTION_LISTITEM_TIME_OTHERS_TB \
+ )
+
+
+#define GENLIST_PART_CUSTOM_SUBITEM_LRB_ALIGN_1(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_CUSTOM_LRB_ALIGN_1(LEFT, RIGHT, BOTTOM, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+ GENLIST_PARAM_CUSTOM_SUBITEM_DEFAULT_ALIGN_1 \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ )
+
+// only fot recent 1 text style
+#define GENLIST_PARAM_RECENTITEM \
+ color: GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Bold"; \
+ size: GENLIST_LIST_RECENT_TEXT_SIZE; \
+ }
+
+#define GENLIST_PART_CUSTOM_1TEXT_PADDING_LEFT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: GENLIST_PADDING_CUSTOM_1TEXT_LEFT 0; \
+ max: GENLIST_PADDING_CUSTOM_1TEXT_LEFT -1; \
+ fixed: 1 0; \
+ ) \
+ )
+
+#define GENLIST_PART_CUSTOM_1TEXT_PADDING_RIGHT \
+ GENLIST_PART_SPACER("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_CUSTOM_1TEXT_RIGHT 0; \
+ max: GENLIST_PADDING_CUSTOM_1TEXT_RIGHT -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ )
+
+#define GENLIST_PART_CUSTOM_1TEXT_PADDING_TOP \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_CUSTOM_1TEXT_TOP; \
+ max: -1 GENLIST_PADDING_CUSTOM_1TEXT_TOP; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ )
+
+#define GENLIST_PART_CUSTOM_1TEXT_PADDING_BOTTOM \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_PADDING_CUSTOM_1TEXT_BOTTOM; \
+ max: -1 GENLIST_PADDING_CUSTOM_1TEXT_BOTTOM; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ )
+
+#define GENLIST_PART_RECENTLY_ITEM_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+ min: 0 HEIGHT; \
+ GENLIST_PARAM_RECENTITEM \
+ PARAM \
+ ) \
+ GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+ )
+
+// If check is swallowed, genlist selected/unselected should be synched with check.
+
+#define GENLIST_PROGRAM_CHECK(CHECK, TARGET1, TARGET2, TARGET3) \
+ program { name: "selected"CHECK; \
+ signal: "mouse,down,1"; \
+ source: CHECK; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:CHECK, st, 30, vl); \
+ if (strcmp(st, "selected")) \
+ set_state(PART:"bg_image", "selected", 0.0); \
+ set_state(PART:TARGET1, "selected", 0.0); \
+ set_state(PART:TARGET2, "selected", 0.0); \
+ set_state(PART:TARGET3, "selected", 0.0); \
+ } \
+ } \
+ program { name: "unselected"CHECK; \
+ signal: "mouse,up,1"; \
+ source: CHECK; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:CHECK, st, 30, vl); \
+ if (strcmp(st, "disabled")) \
+ set_state(PART:"bg_image", "default", 0.0); \
+ set_state(PART:TARGET1, "default", 0.0); \
+ set_state(PART:TARGET2, "default", 0.0); \
+ set_state(PART:TARGET3, "default", 0.0); \
+ } \
+ }
+
+// 2.2.7 Genlist_Edit mode (Rename)
+// FIXME: padding is not needed when swallow content is NULL.
+// But how can edje kwno existence of swallow content?
+#define GENLIST_PART_FLIP \
+ part { name: "elm.flip.event_block";\
+ type: RECT;\
+ mouse_events: 0; \
+ repeat_events: 0;\
+ description { state: "default" 0.0;\
+ visible: 0; \
+ } \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ color: GENLIST_LIST_BG_COLOR;\
+ }\
+ }\
+ part { name: "elm.flip.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 26 0; \
+ max: 26 -1; \
+ fixed: 1 0; \
+ visible: 0; \
+ align: 0 0.5; \
+ rel1 { \
+ relative: 0 0; \
+ to: "base"; \
+ } \
+ rel2 { \
+ relative: 0 1; \
+ to: "base"; \
+ } \
+ } \
+ } \
+ part { name: "elm.flip.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 26 0; \
+ max: 26 -1; \
+ fixed: 1 0; \
+ visible: 0; \
+ align: 1 0.5; \
+ rel1 { \
+ relative: 1 0; \
+ to: "base"; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to: "base"; \
+ } \
+ } \
+ } \
+ part { name: "elm.flip.content"; \
+ type: SWALLOW; \
+ scale: 1; \
+ GENLIST_DESCRIPTION_LR("elm.flip.padding.left", "elm.flip.padding.icon.left", \
+ aspect: 1 1; visible: 0; ) \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ } \
+ GENLIST_PART_PADDING_R("elm.flip.padding.icon.left", "elm.flip.icon") \
+ GENLIST_PART_ICON( "elm.flip.icon", \
+ GENLIST_DESCRIPTION_R("elm.flip.padding.right", \
+ visible: 0; \
+ aspect: 1 1; \
+ align: 1 0.5; \
+ max: 154 74;) \
+ description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+
+
+#define GENLIST_PART_PROGRESS_BAR_ICON( NAME, REL1_TO, REL2_TO ) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ min: 0 GENLIST_ICON_CUSTOM_VIDEO_PROGRESSBAR_H; \
+ fixed: 0 1; \
+ align: 0.5 1.0; \
+ rel1 { \
+ relative: GENLIST_PROGRESSBAR_L/GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH GENLIST_PROGRESSBAR_T/GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT; \
+ to: REL1_TO; \
+ } \
+ rel2 { \
+ relative: GENLIST_PROGRESSBAR_R/GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH GENLIST_PROGRESSBAR_B/GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT; \
+ to: REL2_TO; \
+ } \
+ } \
+ }
+
+#define GENLIST_PART_ICON_RT_CUSTOM_LOCK(NAME, REL_TO) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ GENLIST_PARAM_ICON_RT_CUSTOM_LOCK \
+ fixed: 1 1; \
+ align: 1.0 0.0; \
+ rel1 { \
+ relative: 1.0 0.0;\
+ to: REL_TO; offset:0 4;\
+ } \
+ rel2 { \
+ to: REL_TO; offset:-4 0;\
+ } \
+ } \
+ }
+
+#define GENLIST_PART_ICON_RT_CUSTOM_DROPBOX(NAME, REL_TO) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ GENLIST_PARAM_ICON_RT_CUSTOM_DROPBOX \
+ fixed: 1 1; \
+ align: 0.0 1.0; \
+ rel1 { \
+ relative: 0.0 1.0;\
+ to: REL_TO; offset:10 0;\
+ } \
+ rel2 { \
+ to: REL_TO; offset:0 -20;\
+ } \
+ } \
+ }
+
+#define GENLIST_PROGRAM_CLICK_SOUND( TARGET ) \
+ program { name: "play_sound"TARGET; \
+ signal: "mouse,clicked,1"; \
+ source: TARGET; \
+ script { \
+ new st[31]; \
+ new Float:vl; \
+ get_state(PART:"base", st, 30, vl); \
+ if (strcmp(st, "disabled")) \
+ run_program(PROGRAM:"play_button_press"TARGET); \
+ } \
+ } \
+ program { name: "play_button_press"TARGET; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ }
+
+/*#define GENLIST_PROGRAM_CLICK_SOUND( TARGET ) \
+ program { name: "touch_click"TARGET; \
+ signal: "mouse,clicked,1"; \
+ source: TARGET; \
+ action: PLAY_SAMPLE "button-pressed" 1.0; \
+ }*/
+
+#define GENLIST_PROGRAM_DISABLED_BOTTOMLINE( TARGET ) \
+ program { name: "enabled"; \
+ signal: "elm,state,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "bg_image"; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ TARGET \
+ } \
+ program { name: "disabled"; \
+ signal: "elm,state,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "disabled" 0.0; \
+ target: "bg_image"; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_SELECT_BOTTOMLINE( TARGET ) \
+ program { name: "selected"; \
+ signal: "elm,state,selected"; \
+ source: "elm"; \
+ action: STATE_SET "selected" 0.0; \
+ target: "bg_image"; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ TARGET \
+ } \
+ program { name: "unselected"; \
+ signal: "elm,state,unselected"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "bg_image"; \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ TARGET \
+ transition: LINEAR 0.1; \
+ }
+
+#define GENLIST_PROGRAM_EXPAND_FADE( TARGET ) \
+ program { name: "bg_color_change"; \
+ signal: "bg_color_change"; \
+ action: STATE_SET "2depth" 0.0; \
+ target: "bg_image_clip"; \
+ after: "expand_start_fade"; \
+ } \
+ program { name: "expand_start_fade"; \
+ signal: "flip_item"; \
+ action: STATE_SET "fadeout" 0.0; \
+ target: "bg_image"; \
+ TARGET \
+ after: "expand_end_fade"; \
+ } \
+ program { name: "expand_end_fade"; \
+ action: STATE_SET "default" 0.0; \
+ transition: DECELERATE 0.3; \
+ target: "bg_image"; \
+ TARGET \
+ } \
+ program { name: "contract_fade"; \
+ signal: "elm,state,contract_flip"; \
+ action: STATE_SET "fadein" 0.0; \
+ target: "bg_image"; \
+ TARGET \
+ after: "contract_end_fade"; \
+ } \
+ program { name: "contract_end_fade"; \
+ action: STATE_SET "fadeout" 0.0; \
+ transition: ACCELERATE 0.3; \
+ target: "bg_image"; \
+ TARGET \
+ }
+
+#define GENLIST_PROGRAM_FLIP \
+ program { name: "flip_enabled"; \
+ signal: "elm,state,flip,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ target: "elm.flip.event_block"; \
+ after: "flip_enabled_next"; \
+ } \
+ program { name: "flip_enabled_next"; \
+ action: STATE_SET "flip_enabled" 0.0; \
+ transition: DECELERATE 0.5; \
+ target: "elm.flip.content"; \
+ target: "elm.flip.icon"; \
+ } \
+ program { name: "flip_disabled"; \
+ signal: "elm,state,flip,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ transition: DECELERATE 0.5; \
+ target: "elm.flip.event_block"; \
+ target: "elm.flip.content"; \
+ target: "elm.flip.icon"; \
+ }
+
+#define GENLIST_PROGRAM_DEFAULT( TARGET ) \
+ program { name: "default"; \
+ signal: "elm,state,default"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ } \
+
+
+#define GENLIST_PROGRAMS_NORMAL( TARGET ) \
+ programs { \
+ GENLIST_PROGRAM_DEFAULT( TARGET \
+ target: "bottom_line"; \
+ target: "bottom_line2"; \
+ target: "bg_image"; \
+ target: "elm.padding.left"; \
+ target: "elm.padding.right"; \
+ ) \
+ GENLIST_PROGRAM_DISABLED_BOTTOMLINE( TARGET ) \
+ GENLIST_PROGRAM_SELECT_BOTTOMLINE( TARGET ) \
+ GENLIST_PROGRAM_CLICK_SOUND( "bg_image" ) \
+ GENLIST_PROGRAM_EXPAND_FADE( target: "bottom_line"; target: "bottom_line2"; TARGET ) \
+ GENLIST_PROGRAM_FLIP \
+ }
+
+#define GENLIST_PROGRAMS_NORMAL_NO_BG_SOUND( TARGET ) \
+ programs { \
+ GENLIST_PROGRAM_DISABLED_BOTTOMLINE( TARGET ) \
+ GENLIST_PROGRAM_SELECT_BOTTOMLINE( TARGET ) \
+ GENLIST_PROGRAM_EXPAND_FADE( target: "bottom_line"; target: "bottom_line2"; TARGET ) \
+ GENLIST_PROGRAM_FLIP \
+ }
+
+//Use for BT keybord focus start
+#define GENLIST_PROGRAM_FOCUS \
+ program { name: "focused"; \
+ signal: "elm,action,focus_highlight,show"; \
+ source: "elm"; \
+ action: STATE_SET "enabled" 0.0; \
+ target: "focus_part"; \
+ } \
+ program { name: "unfocused"; \
+ signal: "elm,action,focus_highlight,hide"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_part"; \
+ }
+
+#define GENLIST_PROGRAM_FOCUS_IMAGE \
+program { name: "action_focus"; \
+ signal: "elm,action,focus_highlight,show"; \
+ source: "elm"; \
+ action: STATE_SET "enabled" 0.0; \
+ target: "focus_bg"; \
+} \
+program { name: "action_unfocus"; \
+ signal: "elm,action,focus_highlight,hide"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "focus_bg"; \
+}
+
+
+#define GENLIST_PART_FOCUS_IMAGE \
+ GENLIST_PART_IMAGE("focus_part", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ image { \
+ normal: GENLIST_LIST_ITEM_FOCUS_BG; \
+ border: 7 7 7 7; \
+ } \
+ } \
+ description { state: "enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+
+#define GENLIST_PART_FOCUS \
+ GENLIST_PART_IMAGE("focus_part", \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ image { \
+ normal: GENLIST_LIST_ITEM_FOCUS_BG; \
+ border: 7 7 7 7; \
+ } \
+ } \
+ description { state: "enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ )
+//Use for BT keybord focus end
+
+
+ group { name: "elm/genlist/item/video/normal_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.thumbnail.icon elm.progressbar.icon elm.lock.icon elm.dropbox.icon";
+
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_PADDING_TOP_2LINE
+ GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_BG("elm.thumbnail.icon.bg", "elm.thumbnail.icon", GENLIST_LIST_THUMBNAIL_BG)
+ GENLIST_PART_ICON_BIG_L_CUSTOM_THUMBNAIL("elm.thumbnail.icon", "elm.padding.left")
+ GENLIST_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.thumbnail.icon")
+ GENLIST_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.thumbnail.icon")
+ GENLIST_PART_PADDING_L("elm.padding.icon.right", "elm.thumbnail.icon")
+ GENLIST_PART_LISTITEM_("elm.text.1", GENLIST_HEIGHT_2LINE_MAIN, "elm.padding.icon.right", "elm.padding.right", "elm.padding.top", "elm.text.2",)
+ GENLIST_PART_SUBITEM_TIME_BLOCK_LRB("elm.text.2", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon.right", "elm.padding.right", "elm.padding.bottom")
+ GENLIST_PART_CUSTOM_SUBITEM_LRB_ALIGN_1("elm.text.3", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon.right", "elm.padding.right", "elm.padding.bottom")
+ GENLIST_PART_PROGRESS_BAR_ICON("elm.progressbar.icon", "elm.thumbnail.icon", "elm.thumbnail.icon")
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ // GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3"; )
+ GENLIST_PROGRAM_FOCUS
+ GENLIST_PROGRAM_CLICK_SOUND("elm.thumbnail.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.progressbar.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.1")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.2")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.3")
+ }
+
+#ifdef USE_VIDEO_DOWNLOAD
+/*video download title item*/
+#define VD_TITLE_TEXT_COLOR 102 102 102 255
+#define VD_TITLE_TEXT_SIZE 32
+#define VD_TITLE_H 76
+#define VD_TITLE_BOTTOM_LINE_COLOR 102 102 102 255
+#define VD_TITLE_BOTTOM_LINE_H 4
+/*video download genlist item*/
+#define VD_GENLIST_ITEM_H 230
+#define VD_GENLIST_ITEM_LEFT 24
+#define VD_GENLIST_ITEM_TOP 16
+#define VD_GENLIST_TEXT1_BOTTOM 6
+#define VD_GENLIST_TEXT2_BOTTOM 2
+#define VD_GENLIST_TEXT3_BOTTOM 15
+#define VD_GENLIST_ITEM_BOTTOM 16
+#define VD_GENLIST_ITEM_THUMBNAIL_W 132
+#define VD_GENLIST_ITEM_THUMBNAIL_H 196
+#define VD_GENLIST_ITEM_DOWNLAOD_ICON_W 72
+#define VD_GENLIST_ITEM_DOWNLAOD_ICON_H 72
+#define VD_GENLIST_ITEM_DOWNLAOD_ICON_L_W 15
+#define VD_GENLIST_ITEM_TEXT1_H 54
+#define VD_GENLIST_ITEM_SPACER_CENTER_TOP_H 59
+#define VD_GENLIST_ITEM_SPACER_CENTER_TOP_H2 19
+#define VD_GENLIST_ITEM_TEXT2_TOP_H 1
+#define VD_GENLIST_ITEM_TEXT2_H 40
+#define VD_GENLIST_ITEM_TEXT3_H 32
+#define VD_GENLIST_ITEM_TEXT4_TOP_H 6
+#define VD_GENLIST_ITEM_TEXT4_H 30
+#define VD_GENLIST_ITEM_TEXT9_H 70
+#define VD_GENLIST_ITEM_PROGRESSBAR_BOTTOM_H 6
+#define VD_GENLIST_ITEM_PROGRESSBAR_W 335
+#define VD_GENLIST_ITEM_PROGRESSBAR_H 11
+#define VD_GENLIST_ITEM_PROGRESSBAR_BG_W 381
+#define VD_GENLIST_ITEM_PROGRESSBAR_BG_H 7
+#define VD_GENLIST_ITEM_TEXT1_COLOR 0 0 0 255
+#define VD_GENLIST_ITEM_TEXT1_STYLE "Tizen:style=Regular"
+#define VD_GENLIST_ITEM_TEXT1_SIZE 35
+#define VD_GENLIST_ITEM_TEXT2_COLOR 102 102 102 255
+#define VD_GENLIST_ITEM_TEXT2_STYLE "Tizen:style=Regular"
+#define VD_GENLIST_ITEM_TEXT2_SIZE 28
+#define VD_GENLIST_ITEM_TEXT3_COLOR 14 104 173 255
+#define VD_GENLIST_ITEM_TEXT3_COLOR_2 79 79 79 255
+#define VD_GENLIST_ITEM_TEXT3_STYLE "Tizen:style=Regular"
+#define VD_GENLIST_ITEM_TEXT3_SIZE 25
+#define VD_GENLIST_ITEM_TEXT4_COLOR 14 104 173 255
+#define VD_GENLIST_ITEM_TEXT4_STYLE "Tizen:style=Regular"
+#define VD_GENLIST_ITEM_TEXT4_SIZE 25
+#define VD_GENLIST_ITEM_THUMBNAIL_BG "T01-2_video_thumbnail_view_bg.png"
+#define VD_GENLIST_ITEM_HD_SD_ICON_W 42
+#define VD_GENLIST_ITEM_HD_SD_ICON_H 32
+#define VD_HD_SD_ICON_PADDING_H 7
+
+styles {
+ style { name: "rent_text_style";
+ base: "font=Tizen:style=Regular font_size=30 color=#3673B6FF wrap=mixed";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ tag: "b" "+ font=Tizen:style=Regular";
+ tag: "match" "+ color=#3F8DAD";
+ }
+}
+
+#define VD_GENLIST_PART_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: 0 0 0 0; \
+ } \
+ } \
+ GENLIST_PART_PERSPECTIVE_POINT
+
+
+#define VD_TITLE_BOTTOM_LINE \
+ part { name: "bottom_line"; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 VD_TITLE_BOTTOM_LINE_H; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: VD_TITLE_BOTTOM_LINE_COLOR; \
+ rel1 { \
+ relative: 1.0 0.0; \
+ to_x: "elm.padding.left"; \
+ to_y: "elm.padding.bottom"; \
+ offset: 0 -(VD_TITLE_BOTTOM_LINE_H); \
+ } \
+ rel2 { \
+ relative: 0.0 0.0; \
+ to_x: "elm.padding.right"; \
+ to_y: "elm.padding.bottom"; \
+ } \
+ } \
+ }
+
+#define VD_TITLE_TEXT \
+ color: VD_TITLE_TEXT_COLOR; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Bold"; \
+ size: VD_TITLE_TEXT_SIZE; \
+ }
+
+#define VD_TITLE_TEXT_PART(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+ min: 0 HEIGHT; \
+ VD_TITLE_TEXT \
+ ) \
+ )
+
+#define VD_GENLIST_ITEM_PADDING_LEFT \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: VD_GENLIST_ITEM_LEFT 0; \
+ max: VD_GENLIST_ITEM_LEFT -1; \
+ fixed: 1 0; \
+ ) \
+ )
+#define VD_GENLIST_ITEM_PADDING_TOP \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 VD_GENLIST_ITEM_TOP; \
+ max: -1 VD_GENLIST_ITEM_TOP; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ )
+
+#define VD_GENLIST_ITEM_PADDING_BOTTOM \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 VD_GENLIST_ITEM_BOTTOM; \
+ max: -1 VD_GENLIST_ITEM_BOTTOM; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ )
+
+#define VD_GENLIST_ITEM_THUMBNAIL(NAME, LEFT, RIGHT, TOP, BOTTOM) \
+ part { name: NAME"_bg"; \
+ mouse_events: 0; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0 0.5; \
+ fixed: 1 1; \
+ min: VD_GENLIST_ITEM_THUMBNAIL_W VD_GENLIST_ITEM_THUMBNAIL_H; \
+ max: VD_GENLIST_ITEM_THUMBNAIL_W VD_GENLIST_ITEM_THUMBNAIL_H; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ to_y: TOP; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: RIGHT;\
+ to_y: BOTTOM;\
+ }\
+ image { \
+ normal: VD_GENLIST_ITEM_THUMBNAIL_BG; \
+ border_scale:1; \
+ border: 4 4 4 4; \
+ } \
+ } \
+ }\
+ GENLIST_PART_ICON (NAME, \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 0 0; \
+ offset: -4 -4; \
+ to: NAME"_bg"; \
+ }\
+ rel2 {\
+ relative: 1 1;\
+ offset: 4 4; \
+ to: NAME"_bg"; \
+ }\
+ }\
+ )
+
+#define VD_GENLIST_ITEM_DOWNLOAD_ICON(NAME, RIGHT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_R(RIGHT, \
+ min: VD_GENLIST_ITEM_DOWNLAOD_ICON_W VD_GENLIST_ITEM_DOWNLAOD_ICON_H; \
+ max: VD_GENLIST_ITEM_DOWNLAOD_ICON_W VD_GENLIST_ITEM_DOWNLAOD_ICON_H; \
+ ) \
+ )
+
+#define VD_GENLIST_ITEM_PLAY_ICON(NAME, RIGHT) \
+ GENLIST_PART_ICON(NAME, \
+ GENLIST_DESCRIPTION_R(RIGHT, \
+ min: VD_GENLIST_ITEM_DOWNLAOD_ICON_W VD_GENLIST_ITEM_DOWNLAOD_ICON_H; \
+ max: VD_GENLIST_ITEM_DOWNLAOD_ICON_W VD_GENLIST_ITEM_DOWNLAOD_ICON_H; \
+ ) \
+ )
+
+#define VD_GENLIST_ITEM_HD_SD_ICON( NAME, LEFT, TOP ) \
+ part { name: NAME; \
+ scale: 1; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ fixed: 1 1; \
+ min: VD_GENLIST_ITEM_HD_SD_ICON_W VD_GENLIST_ITEM_HD_SD_ICON_H; \
+ max: VD_GENLIST_ITEM_HD_SD_ICON_W VD_GENLIST_ITEM_HD_SD_ICON_H; \
+ align: 0.0 0.0; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ to_y: TOP; \
+ offset: 0 VD_HD_SD_ICON_PADDING_H; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ to_y: TOP; \
+ offset: 0 VD_HD_SD_ICON_PADDING_H; \
+ } \
+ } \
+ }
+
+#define VD_GENLIST_ITEM_PROGRESSBAR_ICON( NAME, LEFT, TOP, RIGHT ) \
+ part { name: NAME; \
+ scale: 1; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ fixed: 0 1; \
+ min: VD_GENLIST_ITEM_PROGRESSBAR_W VD_GENLIST_ITEM_PROGRESSBAR_H; \
+ align: 0.0 0.0; \
+ rel1 { \
+ relative: 1 1; \
+ to_x: LEFT; \
+ to_y: TOP; \
+ } \
+ rel2 { \
+ relative: 0 1; \
+ to_x: RIGHT; \
+ to_y: TOP; \
+ } \
+ } \
+ }
+
+#define VD_GENLIST_ITEM_PROGRESSBAR_ICON_BG( NAME, LEFT, BOTTOM ) \
+ part { name: NAME; \
+ scale: 1; \
+ type: RECT; \
+ description { state: "default" 0.0; \
+ fixed: 1 1; \
+ min: VD_GENLIST_ITEM_PROGRESSBAR_BG_W VD_GENLIST_ITEM_PROGRESSBAR_BG_H; \
+ max: VD_GENLIST_ITEM_PROGRESSBAR_BG_W VD_GENLIST_ITEM_PROGRESSBAR_BG_H; \
+ align: 0.0 1.0; \
+ rel1 { \
+ relative: 1 0; \
+ offset: 3 0; \
+ to_x: LEFT; \
+ to_y: BOTTOM; \
+ } \
+ rel2 { \
+ relative: 1 0; \
+ offset: 0 -2; \
+ to_x: LEFT; \
+ to_y: BOTTOM; \
+ } \
+ color:255 255 255 255; \
+ } \
+ }
+
+#define GENLIST_PART_PADDING_T( NAME, TOP, HEIGHT ) \
+ GENLIST_PART_SPACER(NAME, \
+ description { state: "default" 0.0; \
+ fixed: 0 1; \
+ min: 0 HEIGHT; \
+ max: -1 HEIGHT; \
+ align: 0.5 1; \
+ rel1 { \
+ relative: 0 1; \
+ to_y: TOP; \
+ } \
+ rel2 { \
+ relative: 1 1; \
+ to_y: TOP; \
+ } \
+ } \
+ )
+
+#define VD_GENLIST_PARAM_SUBITEM(TEXT_COLOR, TEXT_STYLE, TEXT_SIZE, ALIGN_X) \
+ color: TEXT_COLOR; \
+ text { \
+ align: ALIGN_X 1.0; \
+ min: 0 1; \
+ font: TEXT_STYLE; \
+ size: TEXT_SIZE; \
+ }
+
+#define VD_GENLIST_ITEM_SUBITEM_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM, TEXT_COLOR, TEXT_STYLE, TEXT_SIZE) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; \
+ align: 0 1; \
+ VD_GENLIST_PARAM_SUBITEM(TEXT_COLOR, TEXT_STYLE, TEXT_SIZE, 0) \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ )
+
+#define VD_GENLIST_ITEM_SUBITEM_LRT(NAME, HEIGHT, LEFT, RIGHT, TOP, TEXT_COLOR, TEXT_STYLE, TEXT_SIZE) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_LRT(LEFT, RIGHT, TOP, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; \
+ align: 0 0; \
+ VD_GENLIST_PARAM_SUBITEM(TEXT_COLOR, TEXT_STYLE, TEXT_SIZE, 0) \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ )
+
+#define VD_GENLIST_ITEM_TEXTBLOCK_LRT(NAME, HEIGHT, LEFT, RIGHT, TOP) \
+ GENLIST_PART_TEXTBLOCK(NAME, \
+ GENLIST_DESCRIPTION_LRT(LEFT, RIGHT, TOP, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; \
+ align: 0 0; \
+ GENLIST_PARAM_LISTITEM_TIME_TB \
+ ) \
+ GENLIST_DESCRIPTION_LISTITEM_TIME_OTHERS_TB \
+ )
+
+#define VD_GENLIST_ITEM_SUBITEM_LRTP(NAME, HEIGHT, LEFT, RIGHT, TOP, PARAM) \
+ GENLIST_PART_TEXTBLOCK(NAME, \
+ GENLIST_DESCRIPTION_LRT(LEFT, RIGHT, TOP, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; \
+ align: 0 0; \
+ GENLIST_PARAM_SUBTITLE_TITLE_TB \
+ PARAM \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_TITLE_OTHERS_TB \
+ )
+
+
+#define VD_GENLIST_ITEM_TEXTBLOCK_LRTB(NAME, LEFT, RIGHT, TOP, BOTTOM, TEXT_STYLE) \
+ GENLIST_PART_TEXTBLOCK(NAME, \
+ GENLIST_DESCRIPTION_LRTB(LEFT, RIGHT, TOP, BOTTOM, \
+ min: VD_GENLIST_ITEM_PROGRESSBAR_W 30; \
+ max: VD_GENLIST_ITEM_PROGRESSBAR_W 70; \
+ fixed: 1 1; \
+ align: 0 0; \
+ text { \
+ min: 1 0; \
+ style: TEXT_STYLE; \
+ } \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ )
+
+#define VD_GENLIST_ITEM_SUBITEM_LRT_ALIGN_1(NAME, HEIGHT, LEFT, RIGHT, TOP, TEXT_COLOR, TEXT_STYLE, TEXT_SIZE) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_CUSTOM_LRT_ALIGN_1(LEFT, RIGHT, TOP, \
+ min: 0 HEIGHT; \
+ fixed: 1 1; \
+ VD_GENLIST_PARAM_SUBITEM(TEXT_COLOR, TEXT_STYLE, TEXT_SIZE, 1) \
+ ) \
+ GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+ )
+
+ group { name: "elm/genlist/item/video/download_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3 elm.text.4 elm.text.5";
+ data.item: "contents" "elm.thumbnail.icon elm.progressbar.icon elm.play.icon elm.download.icon elm.hd.sd.icon";
+
+ images {
+ image: VD_GENLIST_ITEM_THUMBNAIL_BG COMP;
+ }
+
+ parts {
+ VD_GENLIST_PART_BASE(VD_GENLIST_ITEM_H)
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ VD_GENLIST_ITEM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ VD_GENLIST_ITEM_PADDING_TOP
+ VD_GENLIST_ITEM_PADDING_BOTTOM
+
+ VD_GENLIST_ITEM_THUMBNAIL("elm.thumbnail.icon", "elm.padding.left",
+ "elm.padding.right", "elm.padding.top",
+ "elm.padding.bottom")
+ GENLIST_PART_PADDING_L("elm.padding.thumbnail.right", "elm.thumbnail.icon")
+
+ VD_GENLIST_ITEM_DOWNLOAD_ICON("elm.download.icon", "elm.padding.right")
+
+ GENLIST_PART_PADDING_R("elm.padding.download.left", "elm.download.icon")
+
+ VD_GENLIST_ITEM_PLAY_ICON("elm.play.icon", "elm.padding.download.left")
+
+ GENLIST_PART_PADDING_PLAY_ICON_L("elm.padding.play.left", "elm.play.icon")
+ /*video title*/
+ VD_GENLIST_ITEM_SUBITEM_LRTP("elm.text.1", VD_GENLIST_ITEM_TEXT1_H,
+ "elm.padding.thumbnail.right", "elm.padding.right",
+ "elm.padding.top",)
+
+ GENLIST_PART_SUBITEM_LRT("elm.text.1.bottom", VD_GENLIST_TEXT1_BOTTOM,
+ "elm.padding.thumbnail.right", "elm.padding.play.left", "elm.text.1")
+ /*video year*/
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.2", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.padding.thumbnail.right", "elm.padding.download.left",
+ "elm.text.1", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+
+ GENLIST_PART_SUBITEM_LRT("elm.text.2.bottom", VD_GENLIST_TEXT2_BOTTOM,
+ "elm.padding.thumbnail.right", "elm.padding.play.left", "elm.text.2")
+ /*HD/SD icon*/
+ VD_GENLIST_ITEM_HD_SD_ICON("elm.hd.sd.icon", "elm.padding.thumbnail.right", "elm.text.2.bottom")
+ GENLIST_PART_PADDING_L("elm.hd.sd.icon.right", "elm.hd.sd.icon")
+ /*Licence/Expired*/
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.3", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.hd.sd.icon.right", "elm.padding.play.left",
+ "elm.text.2.bottom", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+ GENLIST_PART_SUBITEM_LRT("elm.text.3.bottom", VD_GENLIST_TEXT3_BOTTOM,
+ "elm.padding.thumbnail.right", "elm.padding.play.left", "elm.text.3")
+ /*File size/running time*/
+ VD_GENLIST_ITEM_TEXTBLOCK_LRT("elm.text.4", VD_GENLIST_ITEM_TEXT3_H,
+ "elm.padding.thumbnail.right", "elm.padding.play.left",
+ "elm.text.3.bottom")
+
+ /*downloading progressbar*/
+ VD_GENLIST_ITEM_PROGRESSBAR_ICON("elm.progressbar.icon", "elm.padding.thumbnail.right", "elm.text.3.bottom", "elm.padding.play.left")
+ GENLIST_PART_PADDING_T("elm.padding.progressbar.bottom", "elm.progressbar.icon", VD_GENLIST_ITEM_PROGRESSBAR_BOTTOM_H)
+ /*downloading text, such as "0.3GB/1.5GB"*/
+ VD_GENLIST_ITEM_SUBITEM_LRT_ALIGN_1("elm.text.5", VD_GENLIST_ITEM_TEXT4_H,
+ "elm.padding.thumbnail.right", "elm.padding.play.left",
+ "elm.padding.progressbar.bottom", VD_GENLIST_ITEM_TEXT3_COLOR,
+ VD_GENLIST_ITEM_TEXT3_STYLE, VD_GENLIST_ITEM_TEXT3_SIZE)
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3";
+ target: "elm.text.4"; target: "elm.text.5";)
+ GENLIST_PROGRAM_FOCUS
+ }
+
+ group { name: "elm/genlist/item/video/download_series_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3 elm.text.4 elm.text.5";
+ data.item: "contents" "elm.progressbar.icon elm.play.icon elm.download.icon elm.hd.sd.icon";
+
+ parts {
+ VD_GENLIST_PART_BASE(VD_GENLIST_ITEM_H)
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ VD_GENLIST_ITEM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ VD_GENLIST_ITEM_PADDING_TOP
+ VD_GENLIST_ITEM_PADDING_BOTTOM
+
+ VD_GENLIST_ITEM_DOWNLOAD_ICON("elm.download.icon", "elm.padding.right")
+
+ GENLIST_PART_PADDING_R("elm.padding.download.left", "elm.download.icon")
+
+ VD_GENLIST_ITEM_PLAY_ICON("elm.play.icon", "elm.padding.download.left")
+
+ GENLIST_PART_PADDING_PLAY_ICON_L("elm.padding.play.left", "elm.play.icon")
+
+ /*video title*/
+ VD_GENLIST_ITEM_SUBITEM_LRTP("elm.text.1", VD_GENLIST_ITEM_TEXT1_H,
+ "elm.padding.left", "elm.padding.right",
+ "elm.padding.top",)
+
+ GENLIST_PART_SUBITEM_LRT("elm.text.1.bottom", VD_GENLIST_TEXT1_BOTTOM,
+ "elm.padding.left", "elm.padding.play.left", "elm.text.1")
+ /*video year*/
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.2", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.padding.left", "elm.padding.download.left",
+ "elm.text.1", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+
+ GENLIST_PART_SUBITEM_LRT("elm.text.2.bottom", VD_GENLIST_TEXT2_BOTTOM,
+ "elm.padding.left", "elm.padding.play.left", "elm.text.2")
+ /*HD/SD icon*/
+ VD_GENLIST_ITEM_HD_SD_ICON("elm.hd.sd.icon", "elm.padding.left", "elm.text.2.bottom")
+ GENLIST_PART_PADDING_L("elm.hd.sd.icon.right", "elm.hd.sd.icon")
+ /*Licence/Expired*/
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.3", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.hd.sd.icon.right", "elm.padding.play.left",
+ "elm.text.2.bottom", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+ GENLIST_PART_SUBITEM_LRT("elm.text.3.bottom", VD_GENLIST_TEXT3_BOTTOM,
+ "elm.padding.left", "elm.padding.play.left", "elm.text.3")
+ /*File size/running time*/
+ VD_GENLIST_ITEM_TEXTBLOCK_LRT("elm.text.4", VD_GENLIST_ITEM_TEXT3_H,
+ "elm.padding.left", "elm.padding.play.left",
+ "elm.text.3.bottom")
+
+ /*downloading progressbar*/
+ VD_GENLIST_ITEM_PROGRESSBAR_ICON("elm.progressbar.icon", "elm.padding.left", "elm.text.3.bottom", "elm.padding.play.left")
+ GENLIST_PART_PADDING_T("elm.padding.progressbar.bottom", "elm.progressbar.icon", VD_GENLIST_ITEM_PROGRESSBAR_BOTTOM_H)
+ /*downloading text, such as "0.3GB/1.5GB"*/
+ VD_GENLIST_ITEM_SUBITEM_LRT_ALIGN_1("elm.text.5", VD_GENLIST_ITEM_TEXT4_H,
+ "elm.padding.left", "elm.padding.play.left",
+ "elm.padding.progressbar.bottom", VD_GENLIST_ITEM_TEXT3_COLOR,
+ VD_GENLIST_ITEM_TEXT3_STYLE, VD_GENLIST_ITEM_TEXT3_SIZE)
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3";
+ target: "elm.text.4"; target: "elm.text.5";)
+ GENLIST_PROGRAM_FOCUS
+ }
+
+
+ group { name: "elm/genlist/item/video/download_list/rent/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3 elm.text.4 elm.text.5 elm.text.6 elm.text.7 elm.text.8 elm.text.9";
+ data.item: "contents" "elm.thumbnail.icon elm.progressbar.icon elm.play.icon elm.download.icon";
+
+ images {
+ image: VD_GENLIST_ITEM_THUMBNAIL_BG COMP;
+ }
+
+ parts {
+ VD_GENLIST_PART_BASE(VD_GENLIST_ITEM_H)
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ VD_GENLIST_ITEM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ VD_GENLIST_ITEM_PADDING_TOP
+ VD_GENLIST_ITEM_PADDING_BOTTOM
+
+ VD_GENLIST_ITEM_THUMBNAIL("elm.thumbnail.icon", "elm.padding.left",
+ "elm.padding.right", "elm.padding.top",
+ "elm.padding.bottom")
+ GENLIST_PART_PADDING_L("elm.padding.thumbnail.right", "elm.thumbnail.icon")
+
+ VD_GENLIST_ITEM_DOWNLOAD_ICON("elm.download.icon", "elm.padding.right")
+
+ GENLIST_PART_PADDING_R("elm.padding.download.left", "elm.download.icon")
+
+ VD_GENLIST_ITEM_PLAY_ICON("elm.play.icon", "elm.padding.download.left")
+
+ GENLIST_PART_PADDING_PLAY_ICON_L("elm.padding.play.left", "elm.play.icon")
+
+ GENLIST_PART_SUBITEM_LRT("elm.padding.center.top", VD_GENLIST_ITEM_SPACER_CENTER_TOP_H2,
+ "elm.padding.thumbnail.right", "elm.padding.play.left", "elm.padding.top")
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.1", VD_GENLIST_ITEM_TEXT1_H,
+ "elm.padding.thumbnail.right", "elm.padding.right",
+ "elm.padding.center.top", VD_GENLIST_ITEM_TEXT1_COLOR,
+ VD_GENLIST_ITEM_TEXT1_STYLE, VD_GENLIST_ITEM_TEXT1_SIZE)
+
+ GENLIST_PART_SUBITEM_LRT("elm.text.1.bottom", VD_GENLIST_TEXT1_BOTTOM,
+ "elm.padding.thumbnail.right", "elm.padding.play.left", "elm.text.1")
+
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.2", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.padding.thumbnail.right", "elm.padding.download.left",
+ "elm.text.1", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+
+ VD_GENLIST_ITEM_SUBITEM_LRT_ALIGN_1("elm.text.7", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.padding.thumbnail.right", "elm.padding.play.left",
+ "elm.text.1", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+
+ VD_GENLIST_ITEM_PROGRESSBAR_ICON("elm.progressbar.icon", "elm.padding.thumbnail.right", "elm.text.1.bottom", "elm.padding.play.left")
+ GENLIST_PART_PADDING_T("elm.padding.progressbar.bottom", "elm.progressbar.icon", VD_GENLIST_ITEM_PROGRESSBAR_BOTTOM_H)
+
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.3", VD_GENLIST_ITEM_TEXT1_H,
+ "elm.padding.thumbnail.right", "elm.padding.right",
+ "elm.padding.center.top", VD_GENLIST_ITEM_TEXT1_COLOR,
+ VD_GENLIST_ITEM_TEXT1_STYLE, VD_GENLIST_ITEM_TEXT1_SIZE)
+
+ VD_GENLIST_ITEM_TEXTBLOCK_LRT("elm.text.4", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.padding.thumbnail.right", "elm.padding.right",
+ "elm.text.3")
+
+ VD_GENLIST_ITEM_TEXTBLOCK_LRTB("elm.text.9", "elm.padding.thumbnail.right",
+ "elm.padding.play.left", "elm.text.4",
+ "elm.padding.bottom", "rent_text_style")
+
+ VD_GENLIST_ITEM_SUBITEM_LRT_ALIGN_1("elm.text.8", VD_GENLIST_ITEM_TEXT2_H,
+ "elm.padding.thumbnail.right", "elm.padding.play.left",
+ "elm.text.3", VD_GENLIST_ITEM_TEXT2_COLOR,
+ VD_GENLIST_ITEM_TEXT2_STYLE, VD_GENLIST_ITEM_TEXT2_SIZE)
+
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.5", VD_GENLIST_ITEM_TEXT4_H,
+ "elm.padding.thumbnail.right", "elm.padding.play.left",
+ "elm.padding.progressbar.bottom", VD_GENLIST_ITEM_TEXT4_COLOR,
+ VD_GENLIST_ITEM_TEXT4_STYLE, VD_GENLIST_ITEM_TEXT4_SIZE)
+
+ //GENLIST_PART_PADDING_L("elm.progressbar.icon.right", "elm.progressbar.icon")
+ VD_GENLIST_ITEM_SUBITEM_LRT_ALIGN_1("elm.text.6", VD_GENLIST_ITEM_TEXT4_H,
+ "elm.padding.thumbnail.right", "elm.padding.play.left",
+ "elm.padding.progressbar.bottom", VD_GENLIST_ITEM_TEXT4_COLOR,
+ VD_GENLIST_ITEM_TEXT4_STYLE, VD_GENLIST_ITEM_TEXT4_SIZE)
+ //GENLIST_PART_PADDING_B("elm.padding.text5.top", "elm.text.5", VD_GENLIST_ITEM_TEXT4_TOP_H)
+
+ GENLIST_PART_FLIP
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3";
+ target: "elm.text.4"; target: "elm.text.5"; target: "elm.text.6"; )
+ }
+
+ group { name: "elm/genlist/item/video/download_edit_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.edit.icon.1 elm.thumbnail.icon elm.progressbar.icon elm.lock.icon elm.dropbox.icon";
+
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ VD_GENLIST_PART_BASE(VD_GENLIST_ITEM_H)
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ VD_GENLIST_ITEM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ VD_GENLIST_ITEM_PADDING_TOP
+ VD_GENLIST_ITEM_PADDING_BOTTOM
+
+ GENLIST_PART_ICON_CHECK_RADIO_L("elm.edit.icon.1", "elm.padding.left")
+ VD_GENLIST_ITEM_THUMBNAIL("elm.thumbnail.icon", "elm.edit.icon.1",
+ "elm.padding.right", "elm.padding.top",
+ "elm.padding.bottom")
+ GENLIST_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.thumbnail.icon")
+ GENLIST_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.thumbnail.icon")
+ GENLIST_PART_PADDING_L("elm.padding.icon2.right", "elm.thumbnail.icon")
+ /*video title*/
+ VD_GENLIST_ITEM_SUBITEM_LRTP("elm.text.1", VD_GENLIST_ITEM_TEXT1_H,
+ "elm.padding.icon2.right", "elm.padding.right",
+ "elm.padding.top",)
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.2", VD_GENLIST_ITEM_TEXT3_H,
+ "elm.padding.icon2.right", "elm.padding.right",
+ "elm.text.1", VD_GENLIST_ITEM_TEXT3_COLOR_2,
+ VD_GENLIST_ITEM_TEXT3_STYLE, VD_GENLIST_ITEM_TEXT3_SIZE)
+
+ VD_GENLIST_ITEM_SUBITEM_LRT("elm.text.3", VD_GENLIST_ITEM_TEXT3_H,
+ "elm.padding.icon2.right", "elm.padding.right",
+ "elm.text.2", VD_GENLIST_ITEM_TEXT3_COLOR_2,
+ VD_GENLIST_ITEM_TEXT3_STYLE, VD_GENLIST_ITEM_TEXT3_SIZE)
+
+ GENLIST_PART_PROGRESS_BAR_ICON("elm.progressbar.icon", "elm.thumbnail.icon", "elm.thumbnail.icon")
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ //GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3"; )
+ GENLIST_PROGRAM_CHECK("elm.edit.icon.1", "elm.text.1", "elm.text.2", "elm.text.3")
+ GENLIST_PROGRAM_FOCUS
+ GENLIST_PROGRAM_CLICK_SOUND("elm.thumbnail.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.progressbar.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.1")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.2")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.3")
+ }
+
+ group { name: "elm/genlist/item/video/download_title/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+
+ data.item: "texts" "elm.text";
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_CUSTOM_1TEXT_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_1TEXT_PADDING_TOP
+ GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE
+
+ VD_TITLE_BOTTOM_LINE
+ VD_TITLE_TEXT_PART("elm.text", VD_TITLE_H,
+ "elm.padding.left", "elm.padding.right",
+ "elm.padding.top", "elm.padding.bottom"
+ )
+ }
+ }
+#endif
+
+ group {name: "elm/genlist/item/video/search_list/default";
+ //alias: "elm/genlist/item_compress/video/search_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.thumbnail.icon elm.progressbar.icon elm.lock.icon elm.dropbox.icon";
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_PADDING_TOP_2LINE
+ GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_BG("elm.thumbnail.icon.bg", "elm.thumbnail.icon", GENLIST_LIST_THUMBNAIL_BG)
+ GENLIST_PART_ICON_BIG_L_CUSTOM_THUMBNAIL("elm.thumbnail.icon", "elm.padding.left")
+ GENLIST_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.thumbnail.icon")
+ GENLIST_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.thumbnail.icon")
+ GENLIST_PART_PADDING_L("elm.padding.icon.right", "elm.thumbnail.icon")
+ GENLIST_PART_LISTITEM_TB_("elm.text.1", GENLIST_HEIGHT_2LINE_MAIN, "elm.padding.icon.right", "elm.padding.right", "elm.padding.top", "elm.text.2",)
+ GENLIST_PART_SUBITEM_TIME_BLOCK_LRB("elm.text.2", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon.right", "elm.padding.right", "elm.padding.bottom")
+ GENLIST_PART_CUSTOM_SUBITEM_LRB_ALIGN_1("elm.text.3", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon.right", "elm.padding.right", "elm.padding.bottom")
+ GENLIST_PART_PROGRESS_BAR_ICON("elm.progressbar.icon", "elm.thumbnail.icon", "elm.thumbnail.icon")
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ //GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3"; )
+ GENLIST_PROGRAM_FOCUS
+ GENLIST_PROGRAM_CLICK_SOUND("elm.thumbnail.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.progressbar.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.1")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.2")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.3")
+ }
+
+ group { name: "elm/genlist/item/video/edit_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.edit.icon.1 elm.thumbnail.icon elm.progressbar.icon elm.lock.icon elm.dropbox.icon";
+
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_CUSTOM_PADDING_LEFT_EDIT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_PADDING_TOP_2LINE
+ GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_ICON_CHECK_RADIO_L("elm.edit.icon.1", "elm.padding.left")
+ GENLIST_PART_PADDING_L("elm.padding.icon1.right", "elm.edit.icon.1")
+ GENLIST_PART_BG("elm.thumbnail.icon.bg", "elm.thumbnail.icon", GENLIST_LIST_THUMBNAIL_BG)
+ GENLIST_PART_ICON_BIG_L_CUSTOM_THUMBNAIL("elm.thumbnail.icon", "elm.padding.icon1.right")
+ GENLIST_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.thumbnail.icon")
+ GENLIST_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.thumbnail.icon")
+ GENLIST_PART_PADDING_L("elm.padding.icon2.right", "elm.thumbnail.icon")
+ GENLIST_PART_LISTITEM_("elm.text.1", GENLIST_HEIGHT_2LINE_MAIN, "elm.padding.icon2.right", "elm.padding.right", "elm.padding.top", "elm.text.2",)
+ GENLIST_PART_SUBITEM_TIME_BLOCK_LRB("elm.text.2", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon2.right", "elm.padding.right", "elm.padding.bottom")
+ GENLIST_PART_CUSTOM_SUBITEM_LRB_ALIGN_1("elm.text.3", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon2.right", "elm.padding.right", "elm.padding.bottom")
+ GENLIST_PART_PROGRESS_BAR_ICON("elm.progressbar.icon", "elm.thumbnail.icon", "elm.thumbnail.icon")
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ //GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2"; target: "elm.text.3"; )
+ GENLIST_PROGRAM_CHECK("elm.edit.icon.1", "elm.text.1", "elm.text.2", "elm.text.3")
+ GENLIST_PROGRAM_FOCUS
+ GENLIST_PROGRAM_CLICK_SOUND("elm.thumbnail.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.progressbar.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.1")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.2")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.3")
+ }
+
+ group { name: "elm/genlist/item/video/edit_folder/default";
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.edit.icon.1 elm.thumbnail.icon elm.lock.icon";
+
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_PADDING_LEFT_EDIT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_PADDING_TOP_2LINE
+ GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_ICON_CHECK_RADIO_L("elm.edit.icon.1", "elm.padding.left")
+ GENLIST_PART_PADDING_L("elm.padding.icon1.right", "elm.edit.icon.1")
+ GENLIST_PART_ICON_BIG_L_CUSTOM_FOLDER_ICON("elm.thumbnail.icon", "elm.padding.icon1.right")
+ GENLIST_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.thumbnail.icon")
+ GENLIST_PART_PADDING_L("elm.padding.icon2.right", "elm.thumbnail.icon")
+ GENLIST_PART_LISTITEM_("elm.text.1", GENLIST_HEIGHT_2LINE_MAIN, "elm.padding.icon2.right", "elm.padding.right", "elm.padding.top", "elm.text.2",)
+ GENLIST_PART_SUBITEM_LRB("elm.text.2", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon2.right", "elm.padding.right", "elm.padding.bottom")
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ //GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2";)
+ GENLIST_PROGRAM_CHECK("elm.edit.icon.1", "elm.text.1", "elm.text.2", "elm.text.2")
+ GENLIST_PROGRAM_FOCUS
+ GENLIST_PROGRAM_CLICK_SOUND("elm.thumbnail.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.1")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.2")
+ }
+
+ group { name: "elm/genlist/item/video/1icon/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "contents" "elm.icon";
+
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_1ICON_PADDING_LEFT
+ GENLIST_PART_CUSTOM_1ICON_PADDING_RIGHT
+
+ GENLIST_PART_ICON("elm.icon", GENLIST_DESCRIPTION_LR(
+ "elm.padding.left", "elm.padding.right",
+ min: 0 GENLIST_HEIGHT_1LINE; )
+ )
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ //GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL_NO_BG_SOUND( target: "elm.icon"; )
+ GENLIST_PROGRAM_FOCUS
+ }
+
+ group { name: "elm/genlist/item/video/1icon.noline/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "contents" "elm.icon";
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ //GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_1ICON_PADDING_LEFT
+ GENLIST_PART_CUSTOM_1ICON_PADDING_RIGHT
+
+ GENLIST_PART_ICON("elm.icon", GENLIST_DESCRIPTION_LR(
+ "elm.padding.left", "elm.padding.right",
+ min: 0 GENLIST_HEIGHT_MIN_1LINE; )
+ )
+ //GENLIST_PART_FLIP
+ }
+ //GENLIST_PROGRAMS_NORMAL( target: "elm.icon"; )
+ }
+
+ group { name: "elm/genlist/item/video/1icon.thumbnail/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "contents" "elm.icon";
+
+ parts {
+ GENLIST_PART_BASE
+ //GENLIST_PART_BG_IMAGE
+ //GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_1ICON_PADDING_LEFT
+ GENLIST_PART_CUSTOM_1ICON_PADDING_RIGHT
+
+ GENLIST_PART_ICON("elm.icon", GENLIST_DESCRIPTION_LR(
+ "elm.padding.left", "elm.padding.right",
+ min: 0 GENLIST_HEIGHT_MIN_1LINE_THUMBNAIL; )
+ )
+ //GENLIST_PART_FLIP
+ }
+ //GENLIST_PROGRAMS_NORMAL( target: "elm.icon"; )
+ }
+
+ group { name: "elm/genlist/item/video/1icon.thumbnail.landscape/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "contents" "elm.icon";
+
+ parts {
+ GENLIST_PART_BASE
+ //GENLIST_PART_BG_IMAGE
+ //GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_1ICON_PADDING_LEFT
+ GENLIST_PART_CUSTOM_1ICON_PADDING_RIGHT
+
+ GENLIST_PART_ICON("elm.icon", GENLIST_DESCRIPTION_LR(
+ "elm.padding.left", "elm.padding.right",
+ min: 0 GENLIST_HEIGHT_MIN_1LINE_THUMBNAIL_LANDSCAPE; )
+ )
+ //GENLIST_PART_FLIP
+ }
+ //GENLIST_PROGRAMS_NORMAL( target: "elm.icon"; )
+ }
+ group { name: "elm/genlist/item/video/1icon.thumbnail.zoom/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "contents" "elm.icon";
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_CUSTOM_1ICON_PADDING_LEFT
+ GENLIST_PART_CUSTOM_1ICON_PADDING_RIGHT
+
+ GENLIST_PART_ICON("elm.icon", GENLIST_DESCRIPTION_LR(
+ "elm.padding.left", "elm.padding.right",
+ min: 0 GENLIST_HEIGHT_MAX_1LINE_THUMBNAIL; )
+ )
+ }
+ }
+ /*only used for title.*/
+ group { name: "elm/genlist/item/video/1text/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+
+ data.item: "texts" "elm.text";
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ //GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_1TEXT_PADDING_LEFT
+ GENLIST_PART_CUSTOM_1TEXT_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_1TEXT_PADDING_TOP
+ GENLIST_PART_CUSTOM_1TEXT_PADDING_BOTTOM
+
+ GENLIST_PART_RECENTLY_ITEM_("elm.text", GENLIST_HEIGHT_1LINE_RECENT,
+ "elm.padding.left", "elm.padding.right",
+ "elm.padding.top", "elm.padding.bottom",
+ )
+ //GENLIST_PART_FLIP
+ }
+ //GENLIST_PROGRAMS_NORMAL( target: "elm.text"; )
+ }
+
+ group { name: "elm/genlist/item/video/folder_list/default";
+
+ GENLIST_DATA_ITEM_NORMAL
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.thumbnail.icon elm.lock.icon";
+
+ images {
+ image: GENLIST_LIST_ITEM_FOCUS_BG COMP;
+ }
+
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_CUSTOM_PADDING_LEFT
+ GENLIST_PART_PADDING_RIGHT
+ GENLIST_PART_CUSTOM_PADDING_TOP_2LINE
+ GENLIST_PART_CUSTOM_PADDING_BOTTOM_2LINE
+
+ GENLIST_PART_ICON_BIG_L_CUSTOM_FOLDER_ICON("elm.thumbnail.icon", "elm.padding.left")
+ GENLIST_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.thumbnail.icon")
+ GENLIST_PART_PADDING_L("elm.padding.icon.right", "elm.thumbnail.icon")
+ GENLIST_PART_LISTITEM_("elm.text.1", GENLIST_HEIGHT_2LINE_MAIN, "elm.padding.icon.right", "elm.padding.right", "elm.padding.top", "elm.text.2",)
+ GENLIST_PART_SUBITEM_LRB("elm.text.2", GENLIST_HEIGHT_2LINE_SUB, "elm.padding.icon.right", "elm.padding.right", "elm.padding.bottom")
+
+ GENLIST_PART_FLIP
+ GENLIST_PART_FOCUS
+ //GENLIST_PART_FOCUS_IMAGE
+ }
+ GENLIST_PROGRAMS_NORMAL( target: "elm.text.1"; target: "elm.text.2";)
+ GENLIST_PROGRAM_FOCUS
+ GENLIST_PROGRAM_CLICK_SOUND("elm.thumbnail.icon")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.1")
+ GENLIST_PROGRAM_CLICK_SOUND("elm.text.2")
+ }
+
+//------------------for lite---------------------------------------------------------------------------//
+
+#define LITE_GENLIST_ICON_CUSTOM_VIDEO_PROGRESSBAR_H 4
+
+#define LITE_GENLIST_ICON_CUSTOM_BG_WIDTH 90
+#define LITE_GENLIST_ICON_CUSTOM_BG_HEIGHT 55
+
+#define LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH 70
+#define LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT 45
+
+#define LITE_GENLIST_PROGRESSBAR_L 0
+#define LITE_GENLIST_PROGRESSBAR_R (LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH-LITE_GENLIST_PROGRESSBAR_L)
+
+
+#define LITE_GENLIST_ICON_PAD_L 10
+#define LITE_GENLIST_ICON_PAD_R 115
+#define LITE_GENLIST_ICON_PAD_T 8
+
+#define LITE_GENLIST_ICON_CUSTOM_FOLDER_WIDTH 24
+#define LITE_GENLIST_ICON_CUSTOM_FOLDER_HEIGHT 24
+
+#define LITE_GENLIST_PAD_CUSTOM_FOLDER_ICON_RIGHT 8
+#define LITE_GENLIST_PAD_CUSTOM_FOLDER_ICON_BOTTOM 8
+
+ group { name: "listview.thumbnail.layout";
+ images {
+ image: "player_library_list_thumbnail_default.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0 0;
+ min: LITE_GENLIST_ICON_CUSTOM_BG_WIDTH LITE_GENLIST_ICON_CUSTOM_BG_HEIGHT;
+ max: LITE_GENLIST_ICON_CUSTOM_BG_WIDTH LITE_GENLIST_ICON_CUSTOM_BG_HEIGHT;
+ fixed: 0 1;
+ rel1 { relative: 0 0; }
+ rel2 { relative: 1 1; }
+ }
+ }
+
+ part { name: "elm.padding.left";
+ scale: 1;
+ type: SPACER;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0 0.3;
+ rel1 {
+ relative: 0 0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 0 1;
+ to: "bg";
+ }
+ min: LITE_GENLIST_ICON_PAD_L 0;
+ }
+ }
+
+ part { name: "elm.thumbnail.bg";
+ scale: 1;
+ type: IMAGE;
+ description { state: "default" 0.0;
+ align: 0 0.5;
+ fixed: 1 1;
+ rel1 {
+ relative: 1 0;
+ to: "elm.padding.left";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "elm.padding.left";
+ }
+ min: LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT;
+ max: LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT;
+ image.normal: "player_library_list_thumbnail_default.png";
+ }
+ description { state: "fadeout" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 10;
+ visible: 0;
+ }
+ description { state: "fadein" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "elm.thumbnail.icon";
+ scale: 1;
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ align: 0 0.5;
+ fixed: 1 1;
+ rel1 {
+ relative: 0 0;
+ to: "elm.thumbnail.bg";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "elm.thumbnail.bg";
+ }
+ }
+ description { state: "fadeout" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 10;
+ visible: 0;
+ }
+ description { state: "fadein" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "elm.frame.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0 0; to: "elm.thumbnail.icon";
+ }
+ rel2 {
+ relative: 1 0; to: "elm.thumbnail.icon";
+ }
+ fixed: 1 1;
+ min: LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH 1;
+ color: 255 255 255 128;
+ }
+ }
+
+ part { name: "elm.frame.bottom";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ rel1 {
+ relative: 0 1; to: "elm.thumbnail.icon";
+ }
+ rel2 {
+ relative: 1 1; to: "elm.thumbnail.icon";
+ }
+ fixed: 1 1;
+ min: LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH 1;
+ color: 255 255 255 128;
+ }
+ }
+
+ part { name: "elm.frame.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0 0; to: "elm.thumbnail.icon";
+ }
+ rel2 {
+ relative: 0 1; to: "elm.thumbnail.icon";
+ }
+ fixed: 1 1;
+ min: 1 LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT;
+ color: 255 255 255 128;
+ }
+ }
+
+ part { name: "elm.frame.right";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 1 0; to: "elm.thumbnail.icon";
+ }
+ rel2 {
+ relative: 1 1; to: "elm.thumbnail.icon";
+ }
+ fixed: 1 1;
+ min: 1 LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_HEIGHT;
+ color: 255 255 255 128;
+ }
+ }
+
+ part { name: "elm.progressbar.icon";
+ scale: 1;
+ repeat_events: 0;
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH-2 LITE_GENLIST_ICON_CUSTOM_VIDEO_PROGRESSBAR_H;
+ max: LITE_GENLIST_ICON_CUSTOM_THUMBNAIL_WIDTH-2 LITE_GENLIST_ICON_CUSTOM_VIDEO_PROGRESSBAR_H;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0 0.92 ;
+ to: "elm.thumbnail.icon";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "elm.thumbnail.icon";
+ }
+ }
+ }
+
+ part { name: "elm.folder.icon";
+ scale: 1;
+ repeat_events: 0;
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: LITE_GENLIST_ICON_CUSTOM_FOLDER_WIDTH LITE_GENLIST_ICON_CUSTOM_FOLDER_HEIGHT;
+ max: LITE_GENLIST_ICON_CUSTOM_FOLDER_WIDTH LITE_GENLIST_ICON_CUSTOM_FOLDER_HEIGHT;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 {
+ relative: 0 0.5;
+ to: "elm.thumbnail.icon";
+ }
+ rel2 {
+ relative: 1 1;
+ to: "elm.thumbnail.icon";
+ }
+ }
+ }
+
+ part { name: "elm.folder.icon.ef";
+ scale: 1;
+ repeat_events: 0;
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: LITE_GENLIST_ICON_CUSTOM_FOLDER_WIDTH LITE_GENLIST_ICON_CUSTOM_FOLDER_HEIGHT;
+ max: LITE_GENLIST_ICON_CUSTOM_FOLDER_WIDTH LITE_GENLIST_ICON_CUSTOM_FOLDER_HEIGHT;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.folder.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.folder.icon";
+ }
+ }
+ }
+ }
+ }
diff --git a/res/edc/vp-genlist-no-item.edc b/res/edc/vp-genlist-no-item.edc
new file mode 100644
index 0000000..f854a8f
--- /dev/null
+++ b/res/edc/vp-genlist-no-item.edc
@@ -0,0 +1,324 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define VP_EDC_NO_ITEM_IMAGE "T01-2_video_noitem.png"
+
+#define VP_GENLIST_NOITEM_TEXT_HEIGHT 32
+#define VP_GENLIST_NOITEM_ICON_HEIGHT 252
+#define VP_GENLIST_NOITEM_BUTTON_HEIGHT 80
+#define VP_GENLIST_NOITEM_BUTTON_WIDTH 688
+
+styles {
+ style { name: "signin_text_style";
+ base: "font=Tizen:style=Medium font_size=30 align=center valign=middle color=#000000 wrap=word";
+ }
+}
+
+styles {
+ style { name: "noitem_text_style";
+ base: "font=Tizen:style=Medium font_size=30 align=center valign=middle color=#808080 wrap=word";
+ }
+}
+
+collections {
+ group {
+ name: "listview.genlist.noitem.signin";
+ parts {
+ part {
+ name: "listview.genlist.noitem.signin.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: 248 246 239 255;
+ }
+ }
+
+ part {
+ name: "elm.padding.top";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 290;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.signin.background"; }
+ rel2 { relative: 1.0 0.0; to: "listview.genlist.noitem.signin.background"; }
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.signin.text.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 550 140;
+ max: 550 140;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "elm.padding.top"; }
+ rel2 { relative: 1.0 1.0; to_y: "elm.padding.top"; }
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.signin.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.signin.text.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.signin.text.background"; }
+ align: 0.5 0.5;
+ visible: 1;
+ text {
+ style: "signin_text_style";
+ }
+ }
+ }
+
+ part {
+ name: "elm.padding.after.text";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 106;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "listview.genlist.noitem.signin.text.background";}
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.signin.text.background";}
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.signin.button.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ max: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.padding.after.text"; }
+ rel2 { relative: 1.0 1.0; to: "elm.padding.after.text"; }
+ align: 0.5 0.0;
+ visible: 0;
+ color: 153 0 153 255;
+ }
+ }
+ part {
+ name: "listview.genlist.noitem.signin.button";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ max: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.signin.button.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.signin.button.background"; }
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+
+ group {
+ images {
+ image: VP_EDC_NO_ITEM_IMAGE COMP;
+ }
+ name: "listview.genlist.noitem";
+ parts {
+ part {
+ name: "listview.genlist.noitem.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: 248 246 239 255;
+ }
+ }
+
+ part {
+ name: "elm.padding.top";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 113;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.background";}
+ rel2 { relative: 1.0 0.0; to: "listview.genlist.noitem.background";}
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.image.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_GENLIST_NOITEM_ICON_HEIGHT VP_GENLIST_NOITEM_ICON_HEIGHT;
+ max: VP_GENLIST_NOITEM_ICON_HEIGHT VP_GENLIST_NOITEM_ICON_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.padding.top"; }
+ rel2 { relative: 1.0 1.0; to: "elm.padding.top"; }
+ align: 0.5 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.image";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_GENLIST_NOITEM_ICON_HEIGHT VP_GENLIST_NOITEM_ICON_HEIGHT;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ image {
+ normal: VP_EDC_NO_ITEM_IMAGE;
+ }
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.image.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.image.background"; }
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "elm.padding.after.image";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 16;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "listview.genlist.noitem.image.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.image.background"; }
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.text.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 550 120;
+ max: 550 120;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to_y: "elm.padding.after.image"; }
+ rel2 { relative: 1.0 1.0; to_y: "elm.padding.after.image"; }
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.text.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.text.background"; }
+ visible: 1;
+ align: 0.5 0.5;
+ text {
+ style: "noitem_text_style";
+ }
+ }
+ }
+
+ part {
+ name: "elm.padding.after.text";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 60;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "listview.genlist.noitem.text.background";}
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.text.background";}
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.button.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ max: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.padding.after.text"; }
+ rel2 { relative: 1.0 1.0; to: "elm.padding.after.text"; }
+ align: 0.5 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "listview.genlist.noitem.button";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ max: VP_GENLIST_NOITEM_BUTTON_WIDTH VP_GENLIST_NOITEM_BUTTON_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "listview.genlist.noitem.button.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.genlist.noitem.button.background"; }
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+}
+
+
diff --git a/res/edc/vp-images.edc b/res/edc/vp-images.edc
new file mode 100644
index 0000000..cc93b6d
--- /dev/null
+++ b/res/edc/vp-images.edc
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 "edc_image_macro.edc"
+
+collections {
+RESOURCE_IMAGE_LOSSY("turn_over/B15_turn_over_01.png")
+RESOURCE_IMAGE_LOSSY("turn_over/B15_turn_over_02.png")
+RESOURCE_IMAGE_LOSSY("turn_over/B15_turn_over_03.png")
+RESOURCE_IMAGE("icon/T01_2_button_expand_download.png")
+RESOURCE_IMAGE("icon/T01_2_button_expand_download_press.png")
+RESOURCE_IMAGE("icon/T01_2_button_expand_play.png")
+RESOURCE_IMAGE("icon/T01_2_button_expand_stop.png")
+RESOURCE_IMAGE("icon/T01_2_button_expand_cancel.png")
+RESOURCE_IMAGE("icon/T01_2_button_expand_cancel_press.png")
+
+RESOURCE_IMAGE("player_library_list_thumbnail_default.png")
+RESOURCE_IMAGE("icon/T01_2_icon_search.png")
+
+RESOURCE_IMAGE("icon/T01_2_icon_video.png")
+RESOURCE_IMAGE("icon/T01-2_video_noitem.png")
+RESOURCE_IMAGE("icon/T01-2_video_thumbnail_default.png")
+RESOURCE_IMAGE("icon/T02_icon_edit.png")
+RESOURCE_IMAGE("icon/U04_device_None_DNS.png")
+RESOURCE_IMAGE("icon/U04_device_TV.png")
+RESOURCE_IMAGE("icon/U04_device_PC.png")
+RESOURCE_IMAGE("icon/U04_device_STB.png")
+RESOURCE_IMAGE("icon/U04_device_Mobile.png")
+RESOURCE_IMAGE("icon/U04_device_Camera.png")
+RESOURCE_IMAGE("icon/U04_device_Camcorder.png")
+//RESOURCE_IMAGE("icon/U04_device_Tablet.png")
+RESOURCE_IMAGE("icon/T01_2_video_lock_45x45.png")
+RESOURCE_IMAGE("icon/T01_2_thumbnail_icon_drop_box.png")
+RESOURCE_IMAGE("icon/T01_Device_icon_index_refresh_bg.png")
+RESOURCE_IMAGE("icon/T01_Device_icon_index_refresh_focus_ef.png")
+
+//folder view
+RESOURCE_IMAGE("icon/player_folder_list_icon_folder.png")
+RESOURCE_IMAGE("icon/player_folder_list_icon_folder_ef.png")
+RESOURCE_IMAGE("icon/player_folder_list_icon_dropbox.png")
+RESOURCE_IMAGE("icon/player_folder_list_icon_dropbox_ef.png")
+RESOURCE_IMAGE("icon/T01_2_list_icon_inner_usb.png")
+RESOURCE_IMAGE("icon/T01_2_list_icon_sd_card.png")
+
+RESOURCE_IMAGE("toolbar/T01-2_controlbar_icon_video.png")
+RESOURCE_IMAGE("toolbar/T01-2_controlbar_icon_recorded.png")
+RESOURCE_IMAGE("toolbar/T01-2_btn_toolbar_back.png")
+RESOURCE_IMAGE("toolbar/T01-2_icon_toolbar_cancel.png")
+RESOURCE_IMAGE("toolbar/icon_delete.png")
+RESOURCE_IMAGE("toolbar/more_button_icon_add_to_your_personal_storage.png")
+RESOURCE_IMAGE("toolbar/more_button_icon_remove_from_your_personal_storage.png")
+RESOURCE_IMAGE("toolbar/T01-2_icon_toolbar_done.png")
+
+//Use for more button popup
+RESOURCE_IMAGE("toolbar/icon_signin.png")
+RESOURCE_IMAGE("toolbar/icon_download.png")
+RESOURCE_IMAGE("toolbar/icon_refresh.png")
+RESOURCE_IMAGE("toolbar/icon_sort_by.png")
+RESOURCE_IMAGE("toolbar/icon_view_as.png")
+RESOURCE_IMAGE("toolbar/icon_share_via.png")
+RESOURCE_IMAGE("toolbar/icon_nearbydevices.png")
+RESOURCE_IMAGE("T01_icon_soft_back.png");
+}
diff --git a/res/edc/vp-layout.edc b/res/edc/vp-layout.edc
index dff249c..008a7b9 100755..100644
--- a/res/edc/vp-layout.edc
+++ b/res/edc/vp-layout.edc
@@ -1,3 +1,19 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
/*************************************************/
/* elm_layout -> video style */
/*************************************************/
diff --git a/res/edc/vp-main-layout.edc b/res/edc/vp-main-layout.edc
new file mode 100644
index 0000000..c7b9e7c
--- /dev/null
+++ b/res/edc/vp-main-layout.edc
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#define VIDEO_STROE_DEFAULT_TOP_BG_IMAGE "title_line_top_video.png"
+#define VIDEO_STROE_DEFAULT_TOP_BG_MIN_SIZE_INC 72 6
+
+
+/*************************************************/
+/* elm_layout -> fundamental template style */
+/*************************************************/
+
+collections {
+ group { name: "elm/layout/application/video/default";
+ images {
+ image: VIDEO_STROE_DEFAULT_TOP_BG_IMAGE COMP;
+ }
+
+ parts {
+ part { name: "elm.swallow.bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.offset: 0 0;
+ rel2.offset: -1 -1;
+ color: 248 246 239 255;
+ }
+ }
+
+ part {
+ name: "elm.swallow.content";
+ //clip_to: "clipper";
+ type: SWALLOW;
+ scale: 1;
+
+ description {
+ state: "default" 0.0;
+ }
+ }
+ }
+ }
+}
+
diff --git a/res/edc/vp-main-listview-internal.edc b/res/edc/vp-main-listview-internal.edc
new file mode 100644
index 0000000..4cb4186
--- /dev/null
+++ b/res/edc/vp-main-listview-internal.edc
@@ -0,0 +1,172 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "main.listview.internal";
+
+ parts {
+ part {
+ name: "main.listview.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: 248 246 239 0;
+ }
+ }
+ part {
+ name: "main.listview.content";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "progress";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 0 0 0 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name : "main.listview.tabbar";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0 0;
+ visible: 0;
+ min: 0 75;
+ color: 248 246 239 255;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0;
+ to: "main.listview.content";
+ }
+ rel2 { relative: 1.0 0.0;
+ to: "main.listview.content";
+ }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "main.listview.selection.info";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ visible: 0;
+ rel1 { relative: 0.0 1.0; to: "main.listview.content"; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "gesture";
+ 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;}
+ }
+ }
+
+ programs {
+ program {
+ signal: "signal.main.listview.internal.selection.info.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "main.listview.selection.info";
+ }
+ program {
+ signal: "signal.main.listview.internal.selection.info.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "main.listview.selection.info";
+ }
+ program {
+ name: "signal.main.listview.tabbar.show";
+ signal: "signal.main.listview.tabbar.show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "main.listview.tabbar";
+ }
+ program {
+ name: "signal.main.listview.tabbar.hide";
+ signal: "signal.main.listview.tabbar.hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "main.listview.tabbar";
+ }
+ }
+ } /* group */
+} /* collection */
+
diff --git a/res/edc/vp-main-listview-preview.edc b/res/edc/vp-main-listview-preview.edc
new file mode 100644
index 0000000..688cad5
--- /dev/null
+++ b/res/edc/vp-main-listview-preview.edc
@@ -0,0 +1,566 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "image_res.edc"
+#include "vp_font.edc"
+
+
+#define VP_EDC_PLAY_CIRCLE_ICON_PLAY "T01-2_control_circle_icon_play.png"
+
+#define PREVIEW_ICON_PREVIEW_WIDTH 720
+#define PREVIEW_ICON_PREVIEW_HEIGHT 406
+
+#define PREVIEW_ICON_PROGRESSBAR_H 11
+#define PREVIEW_ICON_PROGRESSBAR_W 668
+#define PREVIEW_ICON_PROGRESSBAR_L 26
+#define PREVIEW_ICON_PROGRESSBAR_R (PREVIEW_ICON_PREVIEW_WIDTH-PREVIEW_ICON_PROGRESSBAR_L)
+#define PREVIEW_ICON_PROGRESSBAR_T 375
+#define PREVIEW_ICON_PROGRESSBAR_B 386
+
+//Define for landscape
+#define PREVIEW_PADDING_TOP 10
+#define PREVIEW_PADDING_BOTTOM 10
+#define PREVIEW_PADDING_RIGHT 26
+
+#define PREVIEW_DETAIL_TEXT_LINE 50
+#define PREVIEW_DETAIL_TEXT_COLOR 0 0 0 255
+#define PREVIEW_DETAIL_TEXT_SIZE 30
+
+
+#define PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE 640
+#define PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE 320
+
+#define PREVIEW_ICON_PROGRESSBAR_W_LANDSCAPE 606
+#define PREVIEW_ICON_PROGRESSBAR_L_LANDSCAPE 17
+#define PREVIEW_ICON_PROGRESSBAR_R_LANDSCAPE (PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE-PREVIEW_ICON_PROGRESSBAR_L_LANDSCAPE)
+#define PREVIEW_ICON_PROGRESSBAR_T_LANDSCAPE 289
+#define PREVIEW_ICON_PROGRESSBAR_B_LANDSCAPE 300
+
+
+#define GENLIST_PARAM_LISTITEM \
+ color: PREVIEW_DETAIL_TEXT_COLOR; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ font: "Tizen:style=Bold"; \
+ size: PREVIEW_DETAIL_TEXT_SIZE; \
+ }
+
+#define GENLIST_DESCRIPTION( left, right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+
+#define GENLIST_DESCRIPTION_LRB( left, right, bottom, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 1;\
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: bottom; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+
+#define GENLIST_PART_TEXT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: TEXT; \
+ DESCRIPION \
+ }
+
+
+#define PREVIEW_DEATIL_TEXT(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+ min: 0 HEIGHT; \
+ GENLIST_PARAM_LISTITEM \
+ ) \
+ )
+
+#define PREVIEW_DEATIL_TEXT_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+ GENLIST_PART_TEXT(NAME, \
+ GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+ min: 0 HEIGHT; \
+ fixed: 0 1; \
+ GENLIST_PARAM_LISTITEM \
+ ) \
+ )
+
+collections {
+
+ sounds {
+ sample {
+ name: "button-pressed" RAW;
+ source: "button-pressed.wav";
+ }
+ }
+
+ group {
+ name: "listview.preview.movie.landspace.nocontent";
+ parts {
+ part {
+ name: "listview.preview.movie.nocontent.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: 248 246 239 255;
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.nocontent.pixmap";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ min: PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE;
+ max: PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.nocontent.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.nocontent.background"; }
+ }
+ }
+ }
+ }
+
+ group {
+ name: "listview.preview.movie.nocontent";
+ parts {
+ part {
+ name: "listview.preview.movie.nocontent.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: 248 246 239 255;
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.nocontent.pixmap";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ min: PREVIEW_ICON_PREVIEW_WIDTH PREVIEW_ICON_PREVIEW_HEIGHT;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.nocontent.background"; }
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.nocontent.background"; }
+ }
+ }
+ }
+ }
+
+
+ group {
+ name: "listview.preview.movie.landscape";
+ images {
+ image: VP_EDC_PLAY_CIRCLE_ICON_PLAY COMP;
+ }
+
+ parts {
+ part {
+ name: "listview.preview.movie.landscape.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: 248 246 239 0;
+ }
+ }
+ part {
+ name: "listview.preview.movie.landscape.pixmap.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.landscape.pixmap"; }
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.landscape.pixmap"; }
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "listview.preview.movie.landscape.pixmap";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ min: PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE;
+ max: PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.landscape.background"; }
+ rel2 { relative: 0.5 1.0; to: "listview.preview.movie.landscape.background"; }
+ }
+ }
+
+ part {
+ name: "listview.preview.landscape.play.icon";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 154 154;
+ max: 154 154;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ visible: 1;
+ image {
+ normal: VP_EDC_PLAY_CIRCLE_ICON_PLAY;
+ }
+ rel1 {
+ relative: 0.0 0.0;
+ to: "listview.preview.movie.landscape.pixmap";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "listview.preview.movie.landscape.pixmap";
+ }
+
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.landscape.progressbar";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 PREVIEW_ICON_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {
+ relative: PREVIEW_ICON_PROGRESSBAR_L_LANDSCAPE/PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE PREVIEW_ICON_PROGRESSBAR_T_LANDSCAPE/PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE;
+ to: "listview.preview.movie.landscape.pixmap";
+ }
+ rel2 {
+ relative: PREVIEW_ICON_PROGRESSBAR_R_LANDSCAPE/PREVIEW_ICON_PREVIEW_WIDTH_LANDSCAPE PREVIEW_ICON_PROGRESSBAR_B_LANDSCAPE/PREVIEW_ICON_PREVIEW_HEIGHT_LANDSCAPE;
+ to: "listview.preview.movie.landscape.pixmap";
+ }
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.landscape.event";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.landscape.pixmap"; }
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.landscape.pixmap"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.padding.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ max: 16 320;
+ min: 16 320;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ state: "default" 0.0;
+ rel1 { relative: 1.0 0.0; to: "listview.preview.movie.landscape.pixmap"; }
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.landscape.pixmap"; }
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "elm.padding.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PREVIEW_PADDING_RIGHT 0;
+ max: PREVIEW_PADDING_RIGHT -1;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1.to: "listview.preview.movie.landscape.background";
+ rel2.to: "listview.preview.movie.landscape.background";
+ rel1.relative: 1 0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "elm.padding.top";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 PREVIEW_PADDING_TOP;
+ max: -1 PREVIEW_PADDING_TOP;
+ fixed: 0 1;
+ rel1.to: "listview.preview.movie.landscape.background";
+ rel2.to: "listview.preview.movie.landscape.background";
+ rel2.relative: 1.0 0.0;
+ align: 0.5 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "elm.padding.bottom";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 PREVIEW_PADDING_BOTTOM;
+ max: -1 PREVIEW_PADDING_BOTTOM;
+ fixed: 0 1;
+ rel1.to: "listview.preview.movie.landscape.background";
+ rel2.to: "listview.preview.movie.landscape.background";
+ rel2.relative: 0.0 1.0;
+ align: 0.5 1.0;
+ visible: 0;
+ }
+ }
+
+ PREVIEW_DEATIL_TEXT("elm.text.title", PREVIEW_DETAIL_TEXT_LINE, "listview.preview.movie.padding.left", "elm.padding.right", "elm.padding.top", "elm.text.format")
+ PREVIEW_DEATIL_TEXT_LRB("elm.text.format", PREVIEW_DETAIL_TEXT_LINE, "listview.preview.movie.padding.left", "elm.padding.right", "elm.text.date")
+ PREVIEW_DEATIL_TEXT_LRB("elm.text.date", PREVIEW_DETAIL_TEXT_LINE, "listview.preview.movie.padding.left", "elm.padding.right", "elm.text.size")
+ PREVIEW_DEATIL_TEXT_LRB("elm.text.size", PREVIEW_DETAIL_TEXT_LINE, "listview.preview.movie.padding.left", "elm.padding.right", "elm.text.resolution")
+ PREVIEW_DEATIL_TEXT_LRB("elm.text.resolution", PREVIEW_DETAIL_TEXT_LINE, "listview.preview.movie.padding.left", "elm.padding.right", "elm.text.loaction")
+ PREVIEW_DEATIL_TEXT_LRB("elm.text.loaction", PREVIEW_DETAIL_TEXT_LINE, "listview.preview.movie.padding.left", "elm.padding.right", "elm.padding.bottom")
+ }
+
+ programs {
+ program { name: "play_button_press";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+
+ program { name: "click_event";
+ action: SIGNAL_EMIT "signal.listview.preview.movie.event.clicked" "";
+ }
+
+ program {
+ name: "listview.preview.movie.event";
+ source: "listview.preview.movie.landscape.event";
+ signal: "mouse,clicked,1";
+ script {
+ run_program(PROGRAM:"play_button_press");
+ }
+ }
+
+ program {
+ name: "listview.icon.click";
+ source: "listview.preview.movie.landscape.event";
+ signal: "mouse,clicked,1";
+ after: "listview.preview.movie.event";
+ }
+ }
+ }
+
+ group {
+ name: "listview.preview.movie";
+ images {
+ image: VP_EDC_PLAY_CIRCLE_ICON_PLAY COMP;
+ }
+
+ parts {
+ part {
+ name: "listview.preview.movie.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: "listview.preview.movie.pixmap";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: PREVIEW_ICON_PREVIEW_WIDTH PREVIEW_ICON_PREVIEW_HEIGHT;
+ max: PREVIEW_ICON_PREVIEW_WIDTH PREVIEW_ICON_PREVIEW_HEIGHT;
+ fixed: 1 0;
+ align: 0.5 0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.background";}
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.background";}
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.event";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "listview.preview.movie.background";}
+ rel2 { relative: 1.0 1.0; to: "listview.preview.movie.background";}
+ }
+ }
+
+ part {
+ name: "listview.preview.play.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 154 154;
+ max: 154 154;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "listview.preview.movie.pixmap";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "listview.preview.movie.pixmap";
+ }
+ }
+ }
+
+ part {
+ name: "listview.preview.play.icon.image";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ image {
+ normal: VP_EDC_PLAY_CIRCLE_ICON_PLAY;
+ }
+ rel1 {
+ relative: 0.0 0.0;
+ to: "listview.preview.play.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "listview.preview.play.icon";
+ }
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.play.event";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "listview.preview.play.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "listview.preview.play.icon";
+ }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "listview.preview.movie.progressbar";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 PREVIEW_ICON_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {
+ relative: PREVIEW_ICON_PROGRESSBAR_L/PREVIEW_ICON_PREVIEW_WIDTH PREVIEW_ICON_PROGRESSBAR_T/PREVIEW_ICON_PREVIEW_HEIGHT;
+ to: "listview.preview.movie.background";
+ }
+ rel2 {
+ relative: PREVIEW_ICON_PROGRESSBAR_R/PREVIEW_ICON_PREVIEW_WIDTH PREVIEW_ICON_PROGRESSBAR_B/PREVIEW_ICON_PREVIEW_HEIGHT;
+ to: "listview.preview.movie.background";
+ }
+ }
+ }
+ }
+
+ programs {
+ program { name: "play_button_press";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+
+ program { name: "click_event";
+ action: SIGNAL_EMIT "signal.listview.preview.movie.event.clicked" "";
+ }
+
+ program {
+ name: "listview.preview.movie.event";
+ source: "listview.preview.movie.event";
+ signal: "mouse,clicked,1";
+ after: "play_button_press";
+ }
+
+ program {
+ name: "listview.icon.click";
+ source: "listview.preview.movie.play.event";
+ signal: "mouse,clicked,1";
+ after: "listview.preview.movie.event";
+ }
+ }
+ }
+}
diff --git a/res/edc/vp-motion-popup.edc b/res/edc/vp-motion-popup.edc
new file mode 100644
index 0000000..3ccbfdb
--- /dev/null
+++ b/res/edc/vp-motion-popup.edc
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group { name: "popup_checkview";
+ parts {
+ part { name: "pad_t";
+ type: SPACER;
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 0;
+ 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 0 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";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 0 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: 648 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";
+ type: SPACER;
+ scale : 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 0 84;
+ 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 1.0;
+ min: 64 64;
+ max: 64 64;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.18 0.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_after_check";
+ type : RECT;
+ scale : 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 16 64;
+ fixed: 1 1;
+ visible: 0;
+ rel1 {
+ relative: 1.0 0.0;to: "elm.swallow.end";
+ }
+ rel2 {
+ relative: 1.0 1.0;to: "elm.swallow.end";
+ }
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 42;
+ min: 0 0;
+ align: 0.0 0.5;
+ }
+ color: 0 0 0 255;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "pad_after_check";
+ to_y: "elm.swallow.end";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_y: "elm.swallow.end";
+ }
+ }
+ }
+ }
+ }
+
+ group { name: "popup_checkview_image";
+ inherit: "popup_checkview";
+ parts{
+ part{ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 648 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: "elm.swallow.icon.bg";
+ }
+ }
+ }
+ part { name: "elm.swallow.icon.bg";
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ fixed: 1 1;
+ visible: 0;
+ min: 580 390;
+ rel1 {
+ relative: 0.5 0.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 0.5 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.5;
+ fixed: 0 1;
+ min: 580 390;
+ rel1 {
+ relative: 0.0 0.5;
+ to: "elm.swallow.icon.bg";
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ to: "elm.swallow.icon.bg";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/res/edc/vp-naviframe.edc b/res/edc/vp-naviframe.edc
index 49bde21..48ff5ee 100755..100644
--- a/res/edc/vp-naviframe.edc
+++ b/res/edc/vp-naviframe.edc
@@ -1,4830 +1,397 @@
-#include "image_res.edc"
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
-#define NAVIFRAME_TITLE_H_INC_PORTRATE 90
-#define NAVIFRAME_TITLE_H_INC_LANDSCAPE 72
+#define NAVIFRAME_TOP_LINE_COLOR 146 130 255 255
+#define SEARCHBAR_H_INC 99
+externals {
+ external: "elm";
+ external: "feedback";
+ }
+collections
+{
+ /*************************************************/
+ /* elm_layout -> searchbar style */
+ /*************************************************/
+plugins {
+ plugin {
+ name: "touch_sound_plugin";
+ source: "feedback";
+ param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+ }
+ }
+ base_scale: 2.6;
+ group {
+ name: "search_view_layout";
+ parts {
+ part {
+ name: "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: "search_bar";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 58;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; to:"background"; }
+ rel2 { relative: 1.0 0.0; to:"background"; }
+ color: 255 255 255 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to_y:"search_bar"; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ }
+ }
-#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
+ group {
+ name: "searchbar_video";
+ images{
+ image: "T01_icon_soft_back_blabk.png" COMP;
+ }
+ parts {
+ part {
+ name: "bg";
+ mouse_events: 0;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 58;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "searchbar_video_title_rect";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0;to:"bg"; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "searchbar_video_soft_back_button";
+ type: RECT;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ rel1{ relative: 0.0 0.1; to: "searchbar_video_title_rect"; }
+ rel2{ relative: 0.1 0.9; to: "searchbar_video_title_rect"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "landscape" 0.0;
+ rel1{ relative: 0.0 0.1; to: "searchbar_video_title_rect"; }
+ rel2{ relative: 0.06 0.9; to: "searchbar_video_title_rect"; }
+ }
+ }
+ part {
+ name: "searchbar_video_soft_back_button_image";
+ type: IMAGE;
+ repeat_events : 1;
+ description{ state: "default" 0.0;
+ min : 40 40 ;
+ max : 40 40 ;
+ align: 0.5 0.5;
+ rel1 { relative: 0 0; to: "searchbar_video_soft_back_button"; }
+ rel2 { relative: 1 1; to: "searchbar_video_soft_back_button"; }
+ image.normal: "T01_icon_soft_back_blabk.png";
+ }
+ }
+ part {
+ name: "searchbar_outer_rect";
+ type: RECT;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ rel1 { relative: 0.1 0.12; to: "searchbar_video_title_rect"; }
+ rel2 { relative: 0.95 0.83; to: "searchbar_video_title_rect"; }
+ color: 0 0 0 255;
+ }
+ description{
+ state: "landscape" 0.0;
+ rel1 { relative: 0.06 0.12; to: "searchbar_video_title_rect"; }
+ rel2 { relative: 0.97 0.83; to: "searchbar_video_title_rect"; }
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "searchbar_inner_rect";
+ type: RECT;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ rel1 { relative: 0.104 0.15; to: "searchbar_video_title_rect"; }
+ rel2 { relative: 0.947 0.80; to: "searchbar_video_title_rect"; }
+ color: 255 255 255 255;
+ }
+ description{
+ state: "landscape" 0.0;
+ rel1 { relative: 0.0625 0.15; to: "searchbar_video_title_rect"; }
+ rel2 { relative: 0.9675 0.80; to: "searchbar_video_title_rect"; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "searchbar_outer_line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.98; to_y: "searchbar_video_title_rect"; }
+ rel2 { relative: 1.0 1.0; to: "searchbar_video_title_rect"; }
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "searchbar";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 0 SEARCHBAR_H_INC;
+ //fixed: 0 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.05; to: "searchbar_inner_rect"; }
+ rel2 { relative: 0.9 1.0; to: "searchbar_inner_rect"; }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "searchbar_clear_btn";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ color: 0 0 0 255;
+ rel1 { relative: 0.8 0.0; to_y: "searchbar"; }
+ rel2 { relative: 1.0 1.0; to_y: "searchbar"; }
+ }
+ description{
+ state: "landscape" 0.0;
+ color: 0 0 0 255;
+ rel1 { relative: 0.9 0.05; to: "searchbar_inner_rect"; }
+ rel2 { relative: 1.0 1.0; to: "searchbar_inner_rect"; }
+ }
+ }
+ part {
+ name: "progress";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ color: 0 255 0 0;
+ rel1 { relative: 0.0 1.0; to: "searchbar_video_title_rect"; }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "show_portrait";
+ signal: "elm,state,show,portrait";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ //target: "searchbar_video_title_rect";
+ target: "searchbar_video_soft_back_button";
+ target: "searchbar_outer_rect";
+ target: "searchbar_inner_rect";
+ }
+ program {
+ name: "show_landscape";
+ signal: "elm,state,show,landscape";
+ source: "elm";
+ action: STATE_SET "landscape" 0.0;
+ //target: "searchbar_video_title_rect";
+ target: "searchbar_video_soft_back_button";
+ target: "searchbar_outer_rect";
+ target: "searchbar_inner_rect";
+ }
+ program {
+ name: "show_clear_button_portrait";
+ signal: "elm,state,show,clear_button,portrait";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "searchbar_clear_btn";
+ }
+ program {
+ name: "show_clear_button_landscape";
+ signal: "elm,state,show,clear_button,landscape";
+ source: "elm";
+ action: STATE_SET "landscape" 0.0;
+ target: "searchbar_clear_btn";
+ }
+ program{
+ name: "searchbar_video_send_signal";
+ signal: "mouse,up,1"; //mouse,down,1 // mouse,up,1
+ source: "searchbar_video_soft_back_button";
+ action: SIGNAL_EMIT "elm,action,click" "back_button_callback";
+ target: "searchbar_video_soft_back_button";
+ }
+ program{
+ name: "touch_snd";
+ source: "searchbar_video_soft_back_button";
+ signal: "mouse,clicked,1";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program{
+ name: "touch_snd_clear";
+ source: "searchbar_clear_btn";
+ signal: "mouse,clicked,1";
+ action: RUN_PLUGIN "touch_sound_plugin";
+ }
+ program {
+ name: "show_searchbar";
+ signal: "elm,state,show,searchbar";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
+ target: "searchbar";
+ }
+ program {
+ name: "show_searchbar_with_animation";
+ signal: "elm,state,show,searchbar,animation";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
+ transition: DECELERATE 0.3;
+ target: "searchbar";
+ }
+ program {
+ name: "hide_searchbar";
+ signal: "elm,state,hide,searchbar";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "searchbar";
+ }
+ program {
+ name: "hide_searchbar_with_animation";
+ signal: "elm,state,hide,searchbar,animation";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: ACCELERATE 0.3;
+ target: "searchbar";
+ }
+ }
+ }
-#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" "";
- }
- }
- }
+ group {
+ name: "download.series.view";
+ parts {
+ part {
+ name, "background";
+ type: RECT;
+ scale: 1;
+ description {
+ state, "default" 0.0;
+ visible: 1;
+ color: 248 246 239 255;
+ }
+ description {
+ state, "rotate" 0.0;
+ visible: 1;
+ min: 1280 0;
+ max: 1280 10000;
+ }
+ }
+ part {
+ name: "content";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ }
+ description {
+ state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "progress";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ }
+ description {
+ state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "view,rotate";
+ signal: "view,rotate";
+ source: "elm";
+ action: STATE_SET "rotate" 0.0;
+ target: "background";
+ target: "content";
+ target: "progress";
+ }
+ program {
+ name: "view,default";
+ signal: "view,default";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "background";
+ target: "content";
+ target: "progress";
+ }
+ }
+ }
+}
diff --git a/res/edc/vp-naviframe_white.edc b/res/edc/vp-naviframe_white.edc
deleted file mode 100755
index 059d987..0000000
--- a/res/edc/vp-naviframe_white.edc
+++ /dev/null
@@ -1,853 +0,0 @@
-#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
index 903694a..e86ca21 100755..100644
--- a/res/edc/vp-nocontents.edc
+++ b/res/edc/vp-nocontents.edc
@@ -1,72 +1,429 @@
-#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC 32
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC 32*0.444
#define NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC 173 170 165 255
+#define NOCONTENT_BG_COLOR_INC 0 0 0 0
+#define NOCONTENT_MIDDLE_PADDING_INC 38*0.444
+#define NOCONTENT_IMAGE_COLOR_INC 128 128 128 255
+
+#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC 36*0.444
+#define NOCONTENT_HELP_TEXT_BLOCK_TEXT_SIZE_INC 25*0.444
+#define NOCONTENT_IMAGE_WIDTH_HEIGHT_INC 112 112 //252 252
+#define NOCONTENT_TEXT_STYLE_BG_MIN_INC 0 68*0.444
+#define NOCONTENT_BASE_SEARCH_PADDING_INC 40*0.444
+#define NOCONTENT_PORTRAIT_HELP_TEXT_STYLE_BG_MIN_INC 0 152*0.444
+#define NOCONTENT_LANDSCAPE_HELP_TEXT_STYLE_BG_MIN_INC 0 78*0.444
+#define NOCONTENT_SWALLOW_AREA_MIN_INC 0 80*0.444
+#define NOCONTENT_PORTRAIT_AFTER_HELP_TEXT_PADDING_INC 70*0.444 90*0.444
+#define NOCONTENT_LANDSCAPE_AFTER_HELP_TEXT_PADDING_INC 180*0.444 16*0.444
+#define NOCONTENT_PORTRAIT_AFTER_TEXT_PADDING_INC 70*0.444 96*0.444
+#define NOCONTENT_LANDSCAPE_AFTER_TEXT_PADDING_INC 180*0.444 16*0.444
+#define NOCONTENT_BASE_PORTRAIT_MIN_WIDTH_HEIGHT_INC 0 460*0.444
+#define NOCONTENT_BASE_LANDS_MIN_WIDTH_HEIGHT_INC 0 460*0.444
+#define NOCONTENT_BASE_PORTRAIT_MIN_WIDTH_HEIGHT_WITH_TEXT 0 920*0.444
+#define NOCONTENT_BASE_LANDS_MIN_WIDTH_HEIGHT_WITH_TEXT 0 570*0.444
+#define NOCONTENT_PORTRAIT_BUTTON_PADDING_INC 16*0.444 80*0.444
+#define NOCONTENT_LANDSCAPE_BUTTON_PADDING_INC 180*0.444 80*0.444
+
+//#define MP_LIST_NO_CONTENT_IMAGE "T02_video_noitem.png"
+styles{
+style { name: "nocontent_style";
+ base: "font=Tizen:style=Bold font_size="NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC" align=center color=#000000 wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "hilight" "+ font=Tizen:style=Bold";
+ tag: "b" "+ font=Tizen:style=Bold";
+ tag: "tab" "\t";
+}
+style { name: "nocontent_style_dim";
+ base: "font=Tizen:style=Bold font_size="NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC" align=center color=#000000 wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "hilight" "+ font=Tizen:style=Bold";
+ tag: "b" "+ font=Tizen:style=Bold";
+ tag: "tab" "\t";
+}
+style { name: "nocontent_help_text";
+ base: "font=Tizen:style=Regular font_size="NOCONTENT_HELP_TEXT_BLOCK_TEXT_SIZE_INC" align=center color=#000000 wrap=mixed ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "hilight" "+ font=Tizen:style=Regular";
+ tag: "b" "+ font=Tizen:style=Regular";
+ tag: "tab" "\t";
+}
+}
+
+group { name: "nocontents_layout";
+ parts {
+ part { name: "contents";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ }
+ }
+ part { name: "access";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ rel1.to: "contents";
+ rel2.to: "contents";
+ color: 0 0 0 0;
+ }
+ }
+ }
+}
+
+group {
+ name: "elm/layout/nocontents/video";
+ alias: "elm/nocontents/base/full";
+ alias: "elm/nocontents/base/default";
+ alias: "elm/nocontents/base/text";
+
+ script {
+ public center_align = 0;
+ public landscape_mode = 0;
+ }
+
+ parts {
+ part { name: "bg";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 0 1;
+ min: NOCONTENT_BASE_PORTRAIT_MIN_WIDTH_HEIGHT_INC;
+ rel1 {
+ relative: 0.0 0.0; offset:0 222; //0 500;
+ }
+ rel2 {
+ relative: 1.0 0.0;offset:0 222; //0 500;
+ }
+ }
+ description { state: "help_txt_port_centre_align";
+ inherit: "default" 0.0;
+ min: NOCONTENT_BASE_PORTRAIT_MIN_WIDTH_HEIGHT_WITH_TEXT;
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0; offset:0 280*0.444;
+ }
+ rel2 {
+ relative: 1.0 0.0;offset:0 280*0.444;
+ }
+ min: NOCONTENT_BASE_LANDS_MIN_WIDTH_HEIGHT_INC;
+ }
+ description { state: "help_txt_lands_centre_align";
+ inherit: "landscape" 0.0;
+ min: NOCONTENT_BASE_LANDS_MIN_WIDTH_HEIGHT_WITH_TEXT;
+ }
+ }
+ part { name: "nocontents.image";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ min: 252 252;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0.5 275/1109;
+ to: "bg";
+ }
+ rel2 {
+ relative: 0.5 275/1109;
+ to: "bg";
+ }
+ color: 255 255 255 255;
+ aspect: 1.0 1.0;
+ aspect_preference: BOTH;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ description { state: "default" 0.0;
+ min: 0 68;
+ align: 0.5 0.0;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_y: "nocontents.image";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_y: "nocontents.image";
+ }
+ text {
+ style: "nocontent_style";
+ min: 0 1;
+ max: 0 1;
+ }
+ }
+ description { state: "disabled" 1.0;
+ inherit: "default" 0.0;
+ text {
+ style: "nocontent_style_dim";
+ min: 0 1;
+ max: 0 1;
+ }
+ }
+ }
+ part { name: "padding_after_text";
+ mouse_events: 0;
+ type: SPACER;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 70 5;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_y: "elm.text";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_y: "elm.text";
+ }
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 180 16;
+ }
+ }
+ part { name: "elm.help.text";
+ type: TEXTBLOCK;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ min: NOCONTENT_PORTRAIT_HELP_TEXT_STYLE_BG_MIN_INC;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_after_text";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "pad_after_help_text";
+ to_y: "padding_after_text";
+ }
+ text {
+ style: "nocontent_help_text";
+ align: 0.0 0.5;
+ min: 0 1;
+ max: 0 1;
+ }
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: NOCONTENT_LANDSCAPE_HELP_TEXT_STYLE_BG_MIN_INC;
+ }
+ }
+ part { name: "pad_after_help_text";
+ mouse_events: 0;
+ type: SPACER;
+ description { state: "default" 0.0;
+ align: 1.0 0.0;
+ min: 70 25;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_y: "elm.help.text";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_y: "elm.help.text";
+ }
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ min: 180 5;
+ }
+ }
+ part { name: "swallow_area";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: NOCONTENT_SWALLOW_AREA_MIN_INC;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 {
+ relative: 0.0 1.0; to_x: "bg"; to_y: "pad_after_help_text"; offset: 16 0;
+ }
+ rel2 {
+ relative: 1.0 1.0; to_x: "bg"; to_y: "pad_after_help_text"; offset: -16 0;
+ }
+ }
+ description { state: "landscape" 0.0;
+ inherit: "default";
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "padding_after_text";
+ to_y: "pad_after_help_text";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "pad_after_help_text";
+ }
+ }
+ }
+ }
+ programs {
+ program { name: "landscape_mode";
+ source: "elm";
+ signal: "elm,state,orient,90";
+ script {
+ set_int(landscape_mode, 1);
+ if (get_int(center_align) == 1)
+ set_state(PART:"bg", "help_txt_lands_centre_align", 0.0);
+ else
+ set_state(PART:"bg", "landscape", 0.0);
+ set_state(PART:"elm.help.text", "landscape", 0.0);
+ set_state(PART:"padding_after_text", "landscape", 0.0);
+ set_state(PART:"pad_after_help_text", "landscape", 0.0);
+ set_state(PART:"swallow_area", "landscape", 0.0);
+ }
+ }
+ program { name: "landscape_mode2";
+ source: "elm";
+ signal: "elm,state,orient,270";
+ script {
+ set_int(landscape_mode, 1);
+ if (get_int(center_align) == 1)
+ set_state(PART:"bg", "help_txt_lands_centre_align", 0.0);
+ else
+ set_state(PART:"bg", "landscape", 0.0);
+ set_state(PART:"elm.help.text", "landscape", 0.0);
+ set_state(PART:"padding_after_text", "landscape", 0.0);
+ set_state(PART:"pad_after_help_text", "landscape", 0.0);
+ set_state(PART:"swallow_area", "landscape", 0.0);
+ }
+ }
+ program { name: "portrait_mode";
+ source: "elm";
+ signal: "elm,state,orient,0";
+ script {
+ set_int(landscape_mode, 0);
+ if (get_int(center_align) == 1)
+ set_state(PART:"bg", "help_txt_port_centre_align", 0.0);
+ else
+ set_state(PART:"bg", "default", 0.0);
+ set_state(PART:"elm.help.text", "default", 0.0);
+ set_state(PART:"padding_after_text", "default", 0.0);
+ set_state(PART:"pad_after_help_text", "default", 0.0);
+ set_state(PART:"swallow_area", "default", 0.0);
+ }
+ }
+ program { name: "portrait_mode2";
+ source: "elm";
+ signal: "elm,state,orient,180";
+ script {
+ set_int(landscape_mode, 0);
+ if (get_int(center_align) == 1)
+ set_state(PART:"bg", "help_txt_port_centre_align", 0.0);
+ else
+ set_state(PART:"bg", "default", 0.0);
+ set_state(PART:"elm.help.text", "default", 0.0);
+ set_state(PART:"padding_after_text", "default", 0.0);
+ set_state(PART:"pad_after_help_text", "default", 0.0);
+ set_state(PART:"swallow_area", "default", 0.0);
+ }
+ }
+ program { name: "disabled";
+ signal: "text,disabled";
+ source: "";
+ action: STATE_SET "disabled" 0.0;
+ target: "elm.text";
+ }
+ program { name: "align_center";
+ signal: "align.center";
+ source: "elm";
+ script {
+ if (get_int(landscape_mode) == 1)
+ set_state(PART:"bg", "help_txt_lands_centre_align", 0.0);
+ else
+ set_state(PART:"bg", "help_txt_port_centre_align", 0.0);
+ set_int(center_align, 1);
+ }
+ }
+ }
+}
+
+ group {
+ name: "elm/layout/nocontents/main_navi_video_search_result";
+
+ parts {
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ color: NOCONTENT_BG_COLOR_INC;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+
+ part { name: "elm.text";
+ type: TEXT;
+ description { state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.5 0.5;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ color: 18 18 18 255;
+ text {
+ size: 36;
+ }
+ }
+ }
+ }
+ }
+
group {
- name: "elm/layout/nocontents/video";
+ name: "elm/layout/nocontents/sub_navi_video_search_result";
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";
+ style { name: "nocontent_style_text_sub";
+ base: "font=Tizen:style=Roman 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: "hilight" "+ font=Tizen:style=Bold";
+ tag: "b" "+ font=Tizen:style=Bold";
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;
- }
- }
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ color: NOCONTENT_BG_COLOR_INC;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
}
}
- }
+
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.5 0.28;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 1.0; to: "bg";}
+ color: NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC;
+ text {
+ style: "nocontent_style_text_sub";
+ min: 0 0;
+ max: 0 1;
+ }
+ }
+ }
+ }
+ }
diff --git a/res/edc/vp-numberinfo.edc b/res/edc/vp-numberinfo.edc
new file mode 100644
index 0000000..4827cbf
--- /dev/null
+++ b/res/edc/vp-numberinfo.edc
@@ -0,0 +1,689 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define NUMBER_INFO_BACKGROUND_COLOR_INC 189 187 181 255
+#define NUMBER_INFO_TEXT_COLOR_INC 77 77 77 255//248 246 239 255
+#define NUMBER_INFO_VER_PADDING_INC 50
+#define NUMBER_INFO_LEFT_PADDING_INC 16
+#define NUMBER_INFO_TEXT_FONT_SIZE_INC 30
+#define GROUP_INDEX_HEIGHT 51//28
+#define GROUP_INDEX_PADDING_H 7
+#define GROUP_INDEX_PADDING_W 15
+
+#define SELECT_ALL_PART_H 84
+#define SELECT_ALL_PART_PADDING_L 15
+#define SELECT_ALL_PART_PADDING_R 15
+#define SELECT_ALL_TXT_PADDING_R 15
+#define SELECT_ALL_ICON_SIZE 40
+#define SELECT_ALL_PART_PADDING_T 0
+#define SELECT_ALL_PART_PADDING_B 0
+#define SELECT_ALL_PART_INDEX_H 1
+
+
+sounds {
+ sample {
+ name: "button-pressed" RAW;
+ source: "button-pressed.wav";
+ }
+}
+
+group {
+ name: "count_info_groupindex";
+
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 32;
+ max: 480 51;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ visible: 1;
+ color: 179 179 179 255;
+ }
+ }
+ part {
+ name: "elm.swallow.groupindex";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
+ }
+ }
+ }
+}
+
+group {
+ name: "count_info";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_HEIGHT;
+ max: -1 GROUP_INDEX_HEIGHT;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ visible: 1;
+ color: 179 179 179 255;
+ }
+ }
+ part {
+ name: "text.bg";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ //fixed: 0 1;
+ align: 0.5 0.5;
+ color: 21 108 148 255;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ }
+ }
+ part { name: "pad.left";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: GROUP_INDEX_PADDING_W 0;
+ max: GROUP_INDEX_PADDING_W -1;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ //rel2.relative: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 0.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.right";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: GROUP_INDEX_PADDING_W 0;
+ max: GROUP_INDEX_PADDING_W -1;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ //rel1.relative: 1 0;
+ rel1 { relative: 1.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_PADDING_H;
+ max: -1 GROUP_INDEX_PADDING_H;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ //rel2.relative: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 0.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_PADDING_H;
+ max: -1 GROUP_INDEX_PADDING_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ //rel1.relative: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 0;
+ rel1 { relative: 1 1;
+ to_x: "pad.left";
+ to_y: "pad.top";
+ }
+ rel2 { relative: 0 0;
+ to_x: "pad.right";
+ to_y: "pad.bottom";
+ }
+ //rel1 { relative: 0.0 0.0; to: "pad.right"; }
+ //rel2 { relative: 1.0 1.0; to: "pad.bottom"; }
+
+ color: 21 108 148 255;
+
+ text {
+ align: 0.0 0.5;
+ min: 0 1;
+ size: 27;
+ }
+ }
+ }
+ part {
+ name: "index.bar";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 0 2;
+ max: -1 2;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ color: 217 217 217 255;
+ rel1 { relative: 0.0 1.0; to: "text.bg";}
+ rel2 { relative: 1.0 1.0; to: "base";}
+ visible: 1;
+ }
+ }
+ }
+}
+
+
+group {
+ name: "device.count_info";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 76;
+ max: -1 76;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "text.bg";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 0 72;
+ max: -1 72;
+ //fixed: 0 1;
+ align: 0.5 0.5;
+ color: 21 108 148 255;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ }
+ }
+ part { name: "pad.left";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: GROUP_INDEX_PADDING_W 0;
+ max: GROUP_INDEX_PADDING_W -1;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ //rel2.relative: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 0.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.right";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: GROUP_INDEX_PADDING_W 0;
+ max: GROUP_INDEX_PADDING_W -1;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ //rel1.relative: 1 0;
+ rel1 { relative: 1.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_PADDING_H;
+ max: -1 GROUP_INDEX_PADDING_H;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ //rel2.relative: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 0.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_PADDING_H;
+ max: -1 GROUP_INDEX_PADDING_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ //rel1.relative: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.icon.top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_PADDING_H;
+ max: -1 GROUP_INDEX_PADDING_H;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ //rel2.relative: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 0.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.icon.bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 GROUP_INDEX_PADDING_H;
+ max: -1 GROUP_INDEX_PADDING_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ //rel1.relative: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ //min: 63 63;
+ //max: 63 63;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0 1;
+ to_x: "pad.right";
+ to_y: "pad.icon.top";
+ }
+ rel2 { relative: 0 0;
+ to_x: "pad.right";
+ to_y: "pad.icon.bottom";
+ }
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.bg"; }
+ }
+ }
+ part {
+ name: "elm.swallow.progress";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.bg"; }
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 0;
+ rel1 { relative: 1 1;
+ to_x: "pad.left";
+ to_y: "pad.top";
+ }
+ rel2 { relative: 0 0;
+ to_x: "elm.swallow.bg";
+ to_y: "pad.bottom";
+ }
+
+ color: 21 108 148 255;
+
+ text {
+ align: 0.0 0.5;
+ min: 0 1;
+ size: 27;
+ }
+ }
+ }
+ part {
+ name: "index.bar";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 0 4;
+ max: -1 4;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ color: 217 217 217 255;
+ rel1 { relative: 0.0 1.0; to: "text.bg";}
+ rel2 { relative: 1.0 1.0; to: "base";}
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "image_clicked";
+ source: "elm.swallow.icon";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ }
+}
+
+group {
+ name: "number_info";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 0 NUMBER_INFO_VER_PADDING_INC;
+ fixed: 0 1;
+ align: 0.5 0.5;
+// color: NUMBER_INFO_BACKGROUND_COLOR_INC;
+ color: 255 255 255 255;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part { name: "padding_left";
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 27 0;
+ align: 0.0 0.5;
+ rel1.to: "bg";
+ rel2 {
+ to: "bg";
+ relative: 0.0 1.0;
+ }
+ fixed: 1 0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
+// color: NUMBER_INFO_TEXT_COLOR_INC;
+ color: 240 240 240 255;
+ text {
+ size: 24;
+ }
+ }
+ }
+ }
+}
+
+group {
+ name: "select.all.layout";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 SELECT_ALL_PART_H;
+ max: -1 SELECT_ALL_PART_H;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ visible: 0;
+ }
+ }
+ part {
+ name: "text.bg";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ min: 0 (SELECT_ALL_PART_H-SELECT_ALL_PART_INDEX_H);
+ max: -1 (SELECT_ALL_PART_H-SELECT_ALL_PART_INDEX_H);
+ align: 0.5 0.5;
+ color: 255 255 255 255;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ }
+ }
+ part { name: "pad.left";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: SELECT_ALL_PART_PADDING_L 0;
+ max: SELECT_ALL_PART_PADDING_L -1;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ //rel2.relative: 0.0 1.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 0.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.right";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: SELECT_ALL_PART_PADDING_R 0;
+ max: SELECT_ALL_PART_PADDING_R -1;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ //rel1.relative: 1 0;
+ rel1 { relative: 1.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 SELECT_ALL_PART_PADDING_T;
+ max: -1 SELECT_ALL_PART_PADDING_T;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ //rel2.relative: 1.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "text.bg"; }
+ rel2 { relative: 1.0 0.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+ part { name: "pad.bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 SELECT_ALL_PART_PADDING_B;
+ max: -1 SELECT_ALL_PART_PADDING_B;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ //rel1.relative: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "text.bg"; }
+ rel2 { relative: 1.0 1.0; to: "text.bg"; }
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "elm.swallow.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: SELECT_ALL_ICON_SIZE SELECT_ALL_ICON_SIZE;
+ max: SELECT_ALL_ICON_SIZE SELECT_ALL_ICON_SIZE;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0 1.0;
+ to_x: "pad.right";
+ to_y: "pad.top";
+ }
+ rel2 { relative: 0 0.0;
+ to_x: "pad.right";
+ to_y: "pad.bottom";
+ }
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.bg"; }
+ }
+ }
+
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 1 0;
+ rel1 { relative: 1 1;
+ to_x: "pad.left";
+ to_y: "pad.top";
+ }
+ rel2 { relative: 0 0;
+ to_x: "elm.swallow.bg";
+ to_y: "pad.bottom";
+ }
+
+ color: 8 8 8 255;
+
+ text {
+ align: 0.0 0.5;
+ min: 0 1;
+ size: 30;
+ }
+ }
+ }
+
+ part {
+ name: "index.bar";
+ type: RECT;
+ scale : 1;
+ description {
+ state: "default" 0.0;
+ min: 0 SELECT_ALL_PART_INDEX_H;
+ max: -1 SELECT_ALL_PART_INDEX_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ color: 217 217 217 255;
+ rel1 { relative: 0.0 1.0; to: "text.bg";}
+ rel2 { relative: 1.0 1.0; to: "base";}
+ visible: 1;
+ }
+ }
+
+ }
+ /*programs {
+ program { name: "image_clicked";
+ source: "elm.icon";
+ signal: "mouse,clicked,1";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ }*/
+}
+
diff --git a/res/edc/vp-progressbar-list.edc b/res/edc/vp-progressbar-list.edc
index b9c9041..a130a5a 100755..100644
--- a/res/edc/vp-progressbar-list.edc
+++ b/res/edc/vp-progressbar-list.edc
@@ -1,3 +1,19 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#define PROGRESSBAR_TITLE_FONT_SIZE_INC 28
#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20
@@ -9,8 +25,8 @@
#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"
+#define GALLERY_EDC_IMAGE_LIST_PROGRESS_BG "T01-2_progress_bg.png"
+#define GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR "T01-2_progress_bar.png"
group { name: "elm/progressbar/horizontal/video/list_progress";
images {
@@ -56,7 +72,7 @@
align: 1.0 0.0;
}
}
- part { name: "elm.background.progressbar";
+ part { name: "elm.background.progressbar";
type: RECT;
mouse_events: 0;
scale: 1;
@@ -130,8 +146,7 @@
rel2.relative: 1.0 1.0;
color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
text {
- font: "SLP:style=Medium";
- text_class: "slp";
+ font: "Tizen:style=Medium";
size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
min: 0 0;
align: 0.0 0.5;
@@ -159,7 +174,8 @@
}
image {
normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG;
- border: 0 0 1 1;
+ border: 6 6 0 0;
+ border_scale: 1;
}
}
}
@@ -179,8 +195,7 @@
relative: 0.5 0.5;
}
text {
- font: "SLP:style=Medium";
- text_class: "slp";
+ font: "Tizen:style=Medium";
size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
min: 0 0;
align: 0.5 0.0;
@@ -204,15 +219,17 @@
rel1 {
to: "elm.swallow.bar";
relative: 0.0 0.0;
+ offset: -2 0;
}
rel2 {
to_y: "elm.swallow.bar";
to_x: "elm.cur.progressbar";
- offset: -1 -1;
+ offset: 2 -1;
}
image {
normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR;
- border: 0 0 1 1;
+ border: 6 6 0 0;
+ border_scale: 1;
}
}
description {
@@ -268,8 +285,7 @@
rel2.to: "elm.text.status";
text {
text_source: "elm.text.status";
- font: "SLP:style=Medium";
- text_class: "slp";
+ font: "Tizen:style=Medium";
size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
min: 0 0;
align: 0.0 0.0;
diff --git a/res/edc/vp-remove-list-internal.edc b/res/edc/vp-remove-list-internal.edc
new file mode 100644
index 0000000..2d06a67
--- /dev/null
+++ b/res/edc/vp-remove-list-internal.edc
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define GRAY_RECT_COLOR 128 128 128 128
+#define SPEEDBOX_OFFSET_Y 225
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "main.listview.internal";
+
+ parts {
+ part {
+ name: "main.listview.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: 248 246 239 255;
+ }
+ }
+ part {
+ name: "main.listview.content";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "main.listview.selection.info";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ visible: 0;
+ rel1 { relative: 0.0 1.0; to: "main.listview.content"; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+
+ programs {
+ program {
+ signal: "signal.main.listview.internal.selection.info.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "main.listview.selection.info";
+ }
+ program {
+ signal: "signal.main.listview.internal.selection.info.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "main.listview.selection.info";
+ }
+ }
+ } /* group */
+} /* collection */
+
diff --git a/res/edc/vp-scroller-custom.edc b/res/edc/vp-scroller-custom.edc
new file mode 100644
index 0000000..aa92605
--- /dev/null
+++ b/res/edc/vp-scroller-custom.edc
@@ -0,0 +1,575 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define SCROLLER_DEFAULT_SCROLLBAR_COLOR_INC 248 246 239 255
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE "00_scroll_bar_v.png"
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE "00_scroll_bar_h.png"
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_BG_IMAGE "title_line_top_video.png"
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE_BORDER 0 0 12 14
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE_BORDER 0 0 0 0
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC 18 72
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_MAX_SIZE_INC 18 99999
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC 72 6
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_MAX_SIZE_INC 99999 18
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_PADDING_SIZE 6
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_PADDING_SIZE 6
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_MATCHLIST_SCROLLBAR_BG_IMAGE_BORDER 13 13 10 15
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_PADDING_SIZE 6
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_PADDING_SIZE 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_MIN_SIZE_INC 16 238
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_MAX_SIZE_INC 16 99999
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_MIN_SIZE_INC 180 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_MAX_SIZE_INC 99999 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_RUNNER_BORDER 0 0 4 4
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_RUNNER_BORDER 4 4 0 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_OVER1 6 6 6 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_OVER2 6 6 6 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_OVER1 6 6 6 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_OVER2 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_PADDING_SIZE 6
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_PADDING_SIZE 16
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_MIN_SIZE_INC 16 238
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_MAX_SIZE_INC 16 99999
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_MIN_SIZE_INC 180 16
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_MAX_SIZE_INC 99999 16
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_RUNNER_BORDER 0 0 4 4
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_RUNNER_BORDER 4 4 0 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_OVER1 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_OVER2 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_OVER1 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_OVER2 6 6 6 0
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC 36 234
+#define SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC 234 36
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_MIDDLE_MIN_SIZE_INC 36 37
+#define SCROLLER_HANDLER_SCROLLBAR_HBAR_MIDDLE_MIN_SIZE_INC 37 36
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_BOTTOM_BORDER 10 10 0 10
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_RIGHT_BORDER 0 10 10 10
+
+
+/*
+ * vim:ts=3
+*/
+group { name: "elm/scroller/base/video/default";
+
+ data {
+ item: "focus_highlight" "on";
+ }
+
+ script {
+ public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
+ public sh_v, sh_h, edge_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;
+ }
+ public timer2(val) {
+ emit("do-hide-vshadow", "");
+ emit("do-hide-hshadow", "");
+ set_int(edge_timer, 0);
+ return 0;
+ }
+ }
+
+ images {
+ image: SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE COMP;
+ image: SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE COMP;
+ image: SCROLLER_DEFAULT_SCROLLBAR_HBAR_BG_IMAGE COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.offset: 0 0;
+ rel2.offset: -1 -1;
+ color: 255 255 255 0;
+ }
+ }
+ part { name: "clipper";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ rel1.offset: 0 0;
+ rel2.offset: -1 -1;
+ }
+ }
+
+ part { name: "elm.swallow.content";
+ clip_to: "clipper";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ rel1.offset: 0 0;
+ rel2.offset: -1 -1;
+ }
+ }
+
+ part { name: "sb_vbar_clip_master";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ 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;
+ }
+ description { state: "hidden" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ }
+ }
+
+ part { name: "sb_vbar_top_padding";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 SCROLLER_DEFAULT_SCROLLBAR_VBAR_PADDING_SIZE;
+ max: 0 SCROLLER_DEFAULT_SCROLLBAR_VBAR_PADDING_SIZE;
+ rel1.relative: 1.0 0.0;
+ rel2.relative: 1.0 0.0;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ fixed: 1 1;
+ align: 1.0 0.0;
+ }
+ }
+ part { name: "sb_vbar_bottom_padding";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 SCROLLER_DEFAULT_SCROLLBAR_VBAR_PADDING_SIZE;
+ max: 0 SCROLLER_DEFAULT_SCROLLBAR_VBAR_PADDING_SIZE;
+ rel1.relative: 1.0 1.0;
+ rel2.relative: 1.0 1.0;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ fixed: 1 1;
+ align: 1.0 1.0;
+ }
+ }
+ part { name: "sb_vbar";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ visible: 0;
+ min: SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC;
+ align: 1.0 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ offset: 0 0;
+ to_y: "sb_vbar_top_padding";
+ to_x: "bg";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 1;
+ to_y: "sb_vbar_bottom_padding";
+ to_x: "bg";
+ }
+ }
+ }
+ 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: SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC;
+ max: SCROLLER_DEFAULT_SCROLLBAR_VBAR_MAX_SIZE_INC;
+ rel1 {
+ relative: 0.5 0.5;
+ offset: 0 0;
+ to: "sb_vbar";
+ }
+ rel2 {
+ relative: 0.5 0.5;
+ offset: 0 0;
+ to: "sb_vbar";
+ }
+ image {
+ normal: SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE;
+ border: SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE_BORDER;
+ border_scale: 1;
+ middle: DEFAULT;
+ }
+ }
+ }
+
+
+ part { name: "sb_hbar_clip_master";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ 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;
+ }
+ description { state: "hidden" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ }
+ }
+ part { name: "sb_hbar_left_padding";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: SCROLLER_DEFAULT_SCROLLBAR_HBAR_PADDING_SIZE 0;
+ max: SCROLLER_DEFAULT_SCROLLBAR_HBAR_PADDING_SIZE 0;
+ rel1.relative: 0.0 1.0;
+ rel2.relative: 0.0 1.0;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ fixed: 1 1;
+ align: 0.0 1.0;
+ }
+ }
+ part { name: "sb_hbar_right_padding";
+ type: SPACER;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: SCROLLER_DEFAULT_SCROLLBAR_HBAR_PADDING_SIZE 0;
+ max: SCROLLER_DEFAULT_SCROLLBAR_HBAR_PADDING_SIZE 0;
+ rel1.relative: 1.0 1.0;
+ rel2.relative: 1.0 1.0;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ fixed: 1 1;
+ align: 1.0 1.0;
+ }
+ }
+
+
+ part { name: "sb_hbar";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ visible: 0;
+ min: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "sb_hbar_left_padding";
+ to_y: "bg";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -1 -1;
+ to_x: "sb_hbar_right_padding";
+ to_y: "bg";
+ }
+ }
+ }
+
+ part { name: "sb_hbar.bg";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ visible: 1;
+ min: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ //offset: 0 0;
+ to_x: "bg";
+ to_y: "bg";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ //offset: -1 -1;
+ to_x: "bg";
+ to_y: "bg";
+ }
+
+ image { normal: SCROLLER_DEFAULT_SCROLLBAR_HBAR_BG_IMAGE; }
+ }
+ }
+
+ part { name: "elm.dragable.hbar";
+ type: RECT;
+ 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: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC;
+ max: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MAX_SIZE_INC;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ to: "sb_hbar";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 0 0;
+ to: "sb_hbar";
+ }
+ color: SCROLLER_DEFAULT_SCROLLBAR_COLOR_INC;
+ visible: 1;
+ }
+ }
+
+
+ part { name: "disabler";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 128 128 128 128;
+ }
+ }
+ }
+ programs {
+ program { name: "load";
+ signal: "load";
+ source: "";
+ script {
+ set_state(PART:"sb_hbar_clip", "hidden", 0.0);
+ set_state(PART:"sb_vbar_clip", "hidden", 0.0);
+ set_int(sbvis_h, 0);
+ set_int(sbvis_v, 0);
+ set_int(sbalways_v, 0);
+ set_int(sbalways_h, 0);
+ set_int(sbvis_timer, 0);
+ emit("reload", "elm");
+ }
+ }
+
+ 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 0.5;
+ target: "sb_vbar_clip";
+ }
+ program { name: "sb_vbar_hide";
+ signal: "do-hide-vbar";
+ source: "";
+ action: STATE_SET "hidden" 0.0;
+ transition: LINEAR 0.5;
+ 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 0.5;
+ target: "sb_hbar_clip";
+ }
+ program { name: "sb_hbar_hide";
+ signal: "do-hide-hbar";
+ source: "";
+ action: STATE_SET "hidden" 0.0;
+ transition: LINEAR 0.5;
+ target: "sb_hbar_clip";
+ }
+
+ program { name: "scroll";
+ signal: "elm,action,scroll";
+ source: "elm";
+ 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(1.0, "timer0", 0);
+ set_int(sbvis_timer, v);
+ }
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disabler";
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disabler";
+ }
+ }
+}
diff --git a/res/edc/vp-search-view-internal.edc b/res/edc/vp-search-view-internal.edc
new file mode 100644
index 0000000..c6af1c3
--- /dev/null
+++ b/res/edc/vp-search-view-internal.edc
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define GRAY_RECT_COLOR 128 128 128 128
+#define SPEEDBOX_OFFSET_Y 225
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "search.view.internal";
+
+ parts {
+ part {
+ name: "search.view.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 0;
+ }
+ }
+ part {
+ name: "search.view.content";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ visible: 1;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "search.view.dimming";
+ type: RECT;
+ mouse_events: 1;
+ scale: 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 128;
+ visible: 1;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+
+ programs {
+ program {
+ signal: "signal.search.view.internal.dimming.show";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "search.view.dimming";
+ }
+ program {
+ signal: "signal.search.view.internal.dimming.hide";
+ source: "";
+ action: STATE_SET "hide" 0.0;
+ target: "search.view.dimming";
+ }
+ }
+ } /* group */
+} /* collection */
+
diff --git a/res/edc/vp-speedbox-popup.edc b/res/edc/vp-speedbox-popup.edc
index fe751fb..8d8f49e 100644
--- a/res/edc/vp-speedbox-popup.edc
+++ b/res/edc/vp-speedbox-popup.edc
@@ -1,14 +1,50 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#include "image_res.edc"
#include "vp_font.edc"
#define 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
+#define SPEED_BOX_LINE_COLOR 200 200 200 255
collections {
group {
name: "speedbox";
parts {
+
+ part {
+ name: "speedbox.bg.rect";
+ 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: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
part {
name: "speedbox.bg";
type: IMAGE;
@@ -170,7 +206,6 @@ collections {
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;
@@ -197,7 +232,6 @@ collections {
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;
@@ -224,7 +258,6 @@ collections {
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;
@@ -255,6 +288,7 @@ collections {
source: "*";
action: STATE_SET "show" 0.0;
+ target: "speedbox.bg.rect";
target: "speedbox.bg";
target: "speedbox.step.1";
target: "speedbox.step.2";
@@ -270,7 +304,7 @@ collections {
name: "set.speedbox.visible.off";
source: "*";
action: STATE_SET "default" 0.0;
-
+ target: "speedbox.bg.rect";
target: "speedbox.bg";
target: "speedbox.step.1";
target: "speedbox.step.2";
diff --git a/res/edc/vp-thumbnail-view.edc b/res/edc/vp-thumbnail-view.edc
new file mode 100644
index 0000000..1286ef9
--- /dev/null
+++ b/res/edc/vp-thumbnail-view.edc
@@ -0,0 +1,1883 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+//portrait
+#define GRID_LEFT_PAD_INC 7
+#define GRID_TOP_PAD_INC 4
+#define GRID_CENTER_PAD_INC 6
+#define GRID_MAINTEXT_CENTER_PAD_INC 4
+
+#define GRID_THUMB_TOP 10
+#define GRID_THUMB_HEIGHT 289
+#define GRID_THUMB_ITEM_WIDTH 350
+#define GRID_THUMB_ITEM_HEIGHT 270
+
+#define THUMB_ICON_CUSTOM_WIDTH 350
+#define THUMB_ICON_CUSTOM_HEIGHT 210
+
+//landspace
+#define GRID_LEFT_PAD_INC_LANDSPACE 6
+#define GRID_TOP_PAD_INC_LANDSPACE 10
+
+#define GRID_THUMB_HEIGHT_LANDSPACE 200
+#define GRID_THUMB_ITEM_WIDTH_LANDSPACE 314
+#define GRID_THUMB_ITEM_HEIGHT_LANDSPACE 255
+#define GRID_CENTER_PAD_INC_LANDSPACE 4
+
+
+#define THUMB_ICON_CUSTOM_WIDTH_LANDSPACE 314
+#define THUMB_ICON_CUSTOM_HEIGHT_LANDSPACE 186
+
+//share
+#define GRID_TEXT_TITLE_HEIGHT 34
+#define GRID_TEXT_SUB_TITLE_HEIGHT 27
+#define GRID_ICON_CUSTOM_LOCK_WIDTH 45
+#define GRID_ICON_CUSTOM_LOCK_HEIGHT 45
+#define GRID_ICON_CUSTOM_DROPBOX_WIDTH 40
+#define GRID_ICON_CUSTOM_DROPBOX_LOCK_HEIGHT 40
+
+
+#define GRID_PARAM_ICON_RT_CUSTOM_LOCK \
+ min: GRID_ICON_CUSTOM_LOCK_WIDTH GRID_ICON_CUSTOM_LOCK_HEIGHT;\
+ max: GRID_ICON_CUSTOM_LOCK_WIDTH GRID_ICON_CUSTOM_LOCK_HEIGHT;
+
+#define GRID_PARAM_ICON_RT_CUSTOM_DROPBOX \
+ min: GRID_ICON_CUSTOM_DROPBOX_WIDTH GRID_ICON_CUSTOM_DROPBOX_LOCK_HEIGHT;\
+ max: GRID_ICON_CUSTOM_DROPBOX_WIDTH GRID_ICON_CUSTOM_DROPBOX_LOCK_HEIGHT;
+
+
+#define GRID_PART_ICON_RT_CUSTOM_LOCK(NAME, REL_TO) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ GRID_PARAM_ICON_RT_CUSTOM_LOCK \
+ fixed: 1 1; \
+ align: 1.0 0.0; \
+ rel1 { \
+ relative: 1.0 0.0;\
+ to: REL_TO; offset:0 4;\
+ } \
+ rel2 { \
+ to: REL_TO; offset:-4 0;\
+ } \
+ GENGRID_ITEM_SELECT_VI_EFFECT \
+ } \
+ }
+
+#define GRID_PART_ICON_RT_CUSTOM_DROPBOX(NAME, REL_TO) \
+ part { name: NAME; \
+ scale: 1; \
+ repeat_events: 0; \
+ type: SWALLOW; \
+ description { state: "default" 0.0; \
+ GRID_PARAM_ICON_RT_CUSTOM_DROPBOX \
+ fixed: 1 1; \
+ align: 0.0 1.0; \
+ rel1 { \
+ relative: 0.0 1.0;\
+ to: REL_TO; offset:10 0;\
+ } \
+ rel2 { \
+ to: REL_TO; offset:0 -20;\
+ } \
+ GENGRID_ITEM_SELECT_VI_EFFECT \
+ } \
+ }
+
+#define GENGRID_ITEM_SELECT_VI_EFFECT \
+} \
+description { state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp1"; \
+ smooth: 0; \
+ } \
+} \
+description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ on: 1; \
+ perspective: "persp"; \
+ smooth: 1; \
+ }
+
+#define GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT( TARGET ) \
+ program { name: "vi_pressed"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ after: "vi_zoom_in"; \
+ } \
+ program { name: "vi_zoom_in"; \
+ action: STATE_SET "selected" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ } \
+ program { name: "vi_zoom_out"; \
+ action: STATE_SET "pressed" 0.0; \
+ TARGET \
+ transition: SIN_FAC 0.167 1.1; \
+ after: "vi_default"; \
+ } \
+ program { name: "vi_default"; \
+ action: STATE_SET "default" 0.0; \
+ TARGET \
+ }
+
+
+
+//progress
+#define THUMBNAIL_PROGRESSBAR_H 11
+#define THUMBNAIL_PROGRESSBAR_W 326
+#define THUMBNAIL_PROGRESSBAR_L 12
+#define THUMBNAIL_PROGRESSBAR_R (THUMB_ICON_CUSTOM_WIDTH-THUMBNAIL_PROGRESSBAR_L)
+#define THUMBNAIL_PROGRESSBAR_T 188
+#define THUMBNAIL_PROGRESSBAR_B 199
+
+
+#define THUMBNAIL_PROGRESSBAR_W_LANDSPACE 290
+#define THUMBNAIL_PROGRESSBAR_L_LANDSPACE 12
+#define THUMBNAIL_PROGRESSBAR_R_LANDSPACE (THUMB_ICON_CUSTOM_WIDTH_LANDSPACE-THUMBNAIL_PROGRESSBAR_L_LANDSPACE)
+#define THUMBNAIL_PROGRESSBAR_T_LANDSPACE 164
+#define THUMBNAIL_PROGRESSBAR_B_LANDSPACE 175
+
+/*Download item*/
+#define DWONLOAD_TEXT_PADDING_H 2
+#define DWONLOAD_GRID_THUMB_W 350
+#define DWONLOAD_GRID_THUMB_H 291
+#define DWONLOAD_GRID_THUMB_ITEM_W 350
+#define DWONLOAD_GRID_THUMB_ITEM_H 281
+#define DWONLOAD_GRID_THUMB_ICON_W DWONLOAD_GRID_THUMB_ITEM_W
+#define DWONLOAD_GRID_THUMB_ICON_H 210
+/*button*/
+#define GRID_THUMB_BUTTON_SIZE 72
+#define GRID_THUMB_BUTTON_PADDING 16
+//left button
+#define GRID_THUMB_BUTTON_LEFT_SX ((DWONLOAD_GRID_THUMB_ITEM_W-(GRID_THUMB_BUTTON_SIZE*2+GRID_THUMB_BUTTON_PADDING))/2)
+#define GRID_THUMB_BUTTON_LEFT_SY 104
+#define GRID_THUMB_BUTTON_LEFT_EX (GRID_THUMB_BUTTON_LEFT_SX+GRID_THUMB_BUTTON_SIZE)
+#define GRID_THUMB_BUTTON_LEFT_EY (GRID_THUMB_BUTTON_LEFT_SY+GRID_THUMB_BUTTON_SIZE)
+//right button
+#define GRID_THUMB_BUTTON_RIGHT_SX (GRID_THUMB_BUTTON_LEFT_EX+GRID_THUMB_BUTTON_PADDING)
+#define GRID_THUMB_BUTTON_RIGHT_SY GRID_THUMB_BUTTON_LEFT_SY
+#define GRID_THUMB_BUTTON_RIGHT_EX (GRID_THUMB_BUTTON_RIGHT_SX+GRID_THUMB_BUTTON_SIZE)
+#define GRID_THUMB_BUTTON_RIGHT_EY GRID_THUMB_BUTTON_LEFT_EY
+//progressbar
+#define GRID_THUMB_PROGRESSBAR_W 326
+#define GRID_THUMB_PROGRESSBAR_SX 12
+#define GRID_THUMB_PROGRESSBAR_SY 188
+#define GRID_THUMB_PROGRESSBAR_EX (DWONLOAD_GRID_THUMB_ICON_W-GRID_THUMB_PROGRESSBAR_SX)
+#define GRID_THUMB_PROGRESSBAR_EY 199
+/*Download item -- landscape*/
+#define LS_DWONLOAD_GRID_THUMB_W 314
+#define LS_DWONLOAD_GRID_THUMB_H 271
+#define LS_DWONLOAD_GRID_THUMB_ITEM_W 314
+#define LS_DWONLOAD_GRID_THUMB_ITEM_H 271
+#define LS_DWONLOAD_GRID_THUMB_ICON_W LS_DWONLOAD_GRID_THUMB_ITEM_W
+#define LS_DWONLOAD_GRID_THUMB_ICON_H 190
+//left button
+#define LS_GRID_THUMB_BUTTON_LEFT_SX ((LS_DWONLOAD_GRID_THUMB_ITEM_W-(GRID_THUMB_BUTTON_SIZE*2+GRID_THUMB_BUTTON_PADDING))/2)
+#define LS_GRID_THUMB_BUTTON_LEFT_SY 82
+#define LS_GRID_THUMB_BUTTON_LEFT_EX (LS_GRID_THUMB_BUTTON_LEFT_SX+GRID_THUMB_BUTTON_SIZE)
+#define LS_GRID_THUMB_BUTTON_LEFT_EY (LS_GRID_THUMB_BUTTON_LEFT_SY+GRID_THUMB_BUTTON_SIZE)
+//right button
+#define LS_GRID_THUMB_BUTTON_RIGHT_SX (LS_GRID_THUMB_BUTTON_LEFT_EX+GRID_THUMB_BUTTON_PADDING)
+#define LS_GRID_THUMB_BUTTON_RIGHT_SY LS_GRID_THUMB_BUTTON_LEFT_SY
+#define LS_GRID_THUMB_BUTTON_RIGHT_EX (LS_GRID_THUMB_BUTTON_RIGHT_SX+GRID_THUMB_BUTTON_SIZE)
+#define LS_GRID_THUMB_BUTTON_RIGHT_EY LS_GRID_THUMB_BUTTON_LEFT_EY
+//progressbar
+#define LS_GRID_THUMB_PROGRESSBAR_W 290
+#define LS_GRID_THUMB_PROGRESSBAR_SX 12
+#define LS_GRID_THUMB_PROGRESSBAR_SY 164
+#define LS_GRID_THUMB_PROGRESSBAR_EX (LS_DWONLOAD_GRID_THUMB_ICON_W-LS_GRID_THUMB_PROGRESSBAR_SX)
+#define LS_GRID_THUMB_PROGRESSBAR_EY 175
+
+#define GENGIID_LIST_SUB_TEXT_SIZE 25
+#define GENGIID_PART_MATCH_TIME_TAG_COLOR "+ color=#0E68AD"
+#define GENGIID_LIST_SUB_TIME_DEFAULT_COLOR_STYLE "#4F4F4FFF"
+
+#define STYLE_TAG \
+ tag: "br" "\n";\
+ tag: "ps" "ps";\
+ tag: "tab" "\t";\
+ tag: "b" "+ font=Tizen:style=Bold";\
+
+#define STYLE_TIME_TAG_MATCH \
+ tag: "match" GENGIID_PART_MATCH_TIME_TAG_COLOR; \
+
+styles {
+ style { name: "gengrid_style_list_time_text_unread";
+ base: "font=Tizen:style=Regular font_size="GENGIID_LIST_SUB_TEXT_SIZE" color="GENGIID_LIST_SUB_TIME_DEFAULT_COLOR_STYLE" ellipsis=1.0";
+ STYLE_TAG
+ STYLE_TIME_TAG_MATCH
+ }
+}
+
+
+collections {
+
+sounds {
+ sample {
+ name: "button-pressed" RAW;
+ source: "button-pressed.wav";
+ }
+}
+
+/*grid layout*/
+group { name: "video_thumbnail_grid_layout";
+ parts{
+ part{
+ name: "pad.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_LEFT_PAD_INC GRID_THUMB_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 0.0; }
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_0";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH GRID_THUMB_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.left";}
+ rel2 { relative: 1.0 0.0; to: "pad.left";}
+ align: 0.0 0.0;
+ }
+ }
+ part{
+ name: "pad.center.1";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_CENTER_PAD_INC GRID_THUMB_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to_x: "item_0";}
+ rel2 { relative: 1.0 1.0; to_x: "item_0";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_1";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH GRID_THUMB_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.1";}
+ rel2 { relative: 1.0 0.0; to: "pad.center.1";}
+ align: 0.0 0.0;
+ }
+ }
+ }
+}
+
+/*grid item*/
+group { name: "video_thumbnail_grid_item";
+ images {
+ //image : "00_thumbs_line_bg.png" COMP;
+ image : "00_thumbs_bg_focus.png" COMP;
+ //image : "00_thumbs_loading_bg.png" COMP;
+ }
+ script {
+ public selected = 0;
+ }
+ parts{
+ part{
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "persp";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: -70;
+ focal: 1000;
+ }
+ }
+ }
+ part { name: "persp1";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: 0;
+ focal: 1000;
+ }
+ }
+ }
+ part{
+ name: "pad.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: THUMB_ICON_CUSTOM_WIDTH GRID_THUMB_TOP;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "elm.swallow.icon.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon";}
+ color: 0 0 0 255;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part{
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: THUMB_ICON_CUSTOM_WIDTH THUMB_ICON_CUSTOM_HEIGHT;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "pad.top";}
+ rel2 { relative: 1.0 1.0; to: "pad.top";}
+ align: 0.0 0.0;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part {
+ name: "elm.progressbar.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 THUMBNAIL_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {
+ relative: THUMBNAIL_PROGRESSBAR_L/THUMB_ICON_CUSTOM_WIDTH THUMBNAIL_PROGRESSBAR_T/THUMB_ICON_CUSTOM_HEIGHT;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: THUMBNAIL_PROGRESSBAR_R/THUMB_ICON_CUSTOM_WIDTH THUMBNAIL_PROGRESSBAR_B/THUMB_ICON_CUSTOM_HEIGHT;
+ to: "elm.swallow.icon";
+ }
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ GRID_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.swallow.icon")
+ GRID_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.swallow.icon")
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ }
+ image.normal: "00_thumbs_bg_focus.png";
+ image.border: 13 13 13 13;
+ }
+ description { state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part{
+ name: "pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: THUMB_ICON_CUSTOM_WIDTH GRID_MAINTEXT_CENTER_PAD_INC;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.icon";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.1";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pad";}
+ rel2 { relative: 1.0 1.0; to: "pad";}
+ fixed: 1 1;
+ min: THUMB_ICON_CUSTOM_WIDTH GRID_TEXT_TITLE_HEIGHT;
+ align: 0.0 0.0;
+ color: 0 0 0 255;
+ text {
+ font: "Tizen:style=Regular";
+ align: 0.0 0.5;
+ size: 32;
+ }
+ }
+ }
+ part{
+ name: "pad_after_text1";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: THUMB_ICON_CUSTOM_WIDTH GRID_MAINTEXT_CENTER_PAD_INC;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.text.1";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.1";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.2";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pad_after_text1";}
+ rel2 { relative: 1.0 1.0; to: "pad_after_text1";}
+ fixed: 1 1;
+ min: THUMB_ICON_CUSTOM_WIDTH GRID_TEXT_SUB_TITLE_HEIGHT;
+ align: 0.0 0.0;
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_time_text_unread";
+ }
+
+ }
+ }
+ }
+ programs {
+ GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "elm.swallow.icon";
+ target: "bg";
+ target: "elm.swallow.icon.bg";
+ target: "elm.progressbar.icon";
+ target: "elm.lock.icon";
+ target: "elm.dropbox.icon";
+ )
+ program {
+ name: "mouse_down";
+ signal: "mouse,down,1";
+ source: "bg";
+ action: SIGNAL_EMIT "down" "*";
+ script {
+ if (!get_int(selected)) {
+ set_int(selected, 1);
+ run_program(PROGRAM:"vi_pressed");
+ }
+ }
+ }
+ program {
+ name: "mouse_up";
+ signal: "mouse,up,1";
+ source: "bg";
+ action: SIGNAL_EMIT "up" "*";
+ script {
+ if (get_int(selected)) {
+ set_int(selected, 0);
+ run_program(PROGRAM:"vi_zoom_out");
+ }
+ }
+ }
+ program {
+ name: "clicked";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: SIGNAL_EMIT "clicked" "*";
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ }
+}
+
+/*download grid layout*/
+group { name: "download_thumbnail_grid_layout";
+ parts{
+ part{
+ name: "pad.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 40 513;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 0.0; }
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_0";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 306 513;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.left";}
+ rel2 { relative: 1.0 0.0; to: "pad.left";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.1";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 28 513;
+ max: 28 513;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_0";}
+ rel2 { relative: 1.0 1.0; to: "item_0";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_1";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 306 513;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.1";}
+ rel2 { relative: 1.0 0.0; to: "pad.center.1";}
+ align: 0.0 0.0;
+ }
+ }
+
+ }
+}
+
+/*download grid item*/
+group { name: "download_thumbnail_grid_item";
+ images {
+ image : "00_thumbs_bg_focus.png" COMP;
+ }
+ parts{
+ part{
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "pad.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 306 12;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "icon.bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 306 317;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "pad.top";}
+ rel2 { relative: 1.0 1.0; to: "pad.top";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ min: 212 317;
+ max: 212 317;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "icon.bg";}
+ rel2 { relative: 1.0 1.0; to: "icon.bg";}
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "button.left";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: GRID_THUMB_BUTTON_SIZE GRID_THUMB_BUTTON_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.icon";
+ offset: 50 -80;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.icon";
+ offset: 122 -8;
+ }
+ }
+ }
+
+ part {
+ name: "button.right";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: GRID_THUMB_BUTTON_SIZE GRID_THUMB_BUTTON_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ offset: -84 -80;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ offset: -12 -8;
+ }
+ }
+ }
+
+ part {
+ name: "elm.progressbar.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 THUMBNAIL_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "elm.swallow.icon";
+ offset: 12 -22;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ offset: -12 -11;
+ }
+ }
+ }
+
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ }
+ image.normal: "00_thumbs_bg_focus.png";
+ image.border: 13 13 13 13;
+ }
+ description { state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 306 3;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "icon.bg";}
+ rel2 { relative: 1.0 1.0; to: "icon.bg";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.1";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pad";}
+ rel2 { relative: 1.0 1.0; to: "pad";}
+ fixed: 1 1;
+ min: 306 34;
+ align: 0.0 0.0;
+ color: 0 0 0 255;
+ text {
+ font: "Tizen:style=Regular";
+ align: 0.0 0.5;
+ size: 35;
+ }
+ }
+ }
+ part{ name: "elm.text.1.pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 7;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "elm.text.1";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.1";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.year";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.text.1.pad";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.1.pad";}
+ fixed: 1 1;
+ min: 306 32;
+ align: 0.0 0.0;
+ color: 102 102 102 255;
+ text {
+ align: 0.0 0.5;
+ font: "Tizen:style=Regular";
+ size: 28;
+ }
+ }
+ }
+ part{ name: "elm.text.year.pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 3;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "elm.text.year";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.year";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.sdhd.bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.text.year.pad";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.year.pad";}
+ fixed: 1 1;
+ min: 306 32;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part{ name: "elm.swallow.sdhd";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 42 32;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "elm.sdhd.bg";}
+ rel2 { relative: 0.0 1.0; to: "elm.sdhd.bg";}
+ align: 0.0 0.0;
+ }
+ }
+ part{ name: "elm.text.sdhd";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 32;
+ fixed: 0 1;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.sdhd"; offset: 12 0;}
+ rel2 { relative: 1.0 1.0; to: "elm.sdhd.bg";}
+ align: 0.0 0.0;
+ color: 102 102 102 255;
+ text {
+ align: 0.0 0.5;
+ font: "Tizen:style=Regular";
+ size: 28;
+ }
+ }
+ }
+ part{ name: "elm.sdhd.pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 9;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "elm.sdhd.bg";}
+ rel2 { relative: 1.0 1.0; to: "elm.sdhd.bg";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.2";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.sdhd.pad";}
+ rel2 { relative: 1.0 1.0; to: "elm.sdhd.pad";}
+ fixed: 1 1;
+ min: 306 28;
+ align: 0.0 0.0;
+ color: 14 104 173 255;
+ text {
+ align: 0.0 0.5;
+ font: "Tizen:style=Rugular";
+ size: 25;
+ }
+ }
+ }
+ part {
+ name: "download.progressbar";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 THUMBNAIL_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0 1.0;
+ to: "elm.sdhd.pad";
+ offset: 0 2;
+ }
+ rel2 {
+ relative: 1 1.0;
+ offset: 0 THUMBNAIL_PROGRESSBAR_H+2;
+ to: "elm.sdhd.pad";
+ }
+ }
+ }
+ part { name: "downloading.text.2";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "download.progressbar"; offset:0 3;}
+ rel2 { relative: 1.0 1.0; to: "download.progressbar"; offset:0 3;}
+ fixed: 1 1;
+ min: 306 28;
+ align: 0.0 0.0;
+ color: 14 104 173 255;
+ text {
+ align: 1.0 0.5;
+ font: "Tizen:style=Bold";
+ size: 25;
+ }
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "mouse_down";
+ signal: "mouse,down,1";
+ source: "elm.swallow.icon";
+ action: SIGNAL_EMIT "down" "*";
+ }
+ program { signal: "mouse,down,1";
+ source: "elm.swallow.icon";
+ action: STATE_SET "pressed" 0.0;
+ target: "focus_bg";
+ after: "mouse_down";
+ }
+ program {
+ name: "mouse_up";
+ signal: "mouse,up,1";
+ source: "elm.swallow.icon";
+ action: SIGNAL_EMIT "up" "*";
+ }
+ program { signal: "mouse,up,1";
+ source: "elm.swallow.icon";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ after: "mouse_up";
+ }
+ program {
+ name: "clicked";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon";
+ action: SIGNAL_EMIT "clicked" "*";
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ after: "clicked";
+ }
+ }
+}
+
+
+/*landspace grid layout*/
+group { name: "video_thumbnail_grid_layout_landspace";
+ parts{
+ part{
+ name: "pad.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_LEFT_PAD_INC_LANDSPACE GRID_THUMB_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 0.0; }
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "pad.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_LEFT_PAD_INC_LANDSPACE GRID_TOP_PAD_INC_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 0.0; }
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "item_0";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 1.0; to_x: "pad.left"; to_y: "pad.top";}
+ rel2 { relative: 1.0 1.0; to_x: "pad.left"; to_y: "pad.top";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.1";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_CENTER_PAD_INC_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_0";}
+ rel2 { relative: 1.0 1.0; to: "item_0";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_1";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.1";}
+ rel2 { relative: 1.0 1.0; to: "pad.center.1";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.2";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_CENTER_PAD_INC_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_1";}
+ rel2 { relative: 1.0 1.0; to: "item_1";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_2";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.2";}
+ rel2 { relative: 1.0 1.0; to: "pad.center.2";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.3";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_CENTER_PAD_INC_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_2";}
+ rel2 { relative: 1.0 1.0; to: "item_2";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_3";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH_LANDSPACE GRID_THUMB_ITEM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.3";}
+ rel2 { relative: 1.0 1.0; to: "pad.center.3";}
+ align: 0.0 0.0;
+ }
+ }
+
+ }
+}
+
+/*grid item*/
+group { name: "video_thumbnail_grid_item_landspace";
+ images {
+ //image : "00_thumbs_line_bg.png" COMP;
+ image : "00_thumbs_bg_focus.png" COMP;
+ //image : "00_thumbs_loading_bg.png" COMP;
+ }
+ script {
+ public selected = 0;
+ }
+ parts{
+ part{
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part { name: "persp";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: -70;
+ focal: 1000;
+ }
+ }
+ }
+ part { name: "persp1";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color: 0 0 0 0;
+ visible: 1;
+ perspective {
+ zplane: 0;
+ focal: 1000;
+ }
+ }
+ }
+ part{
+ name: "pad.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "elm.swallow.icon.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon";}
+ color: 0 0 0 255;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part{
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: GRID_THUMB_ITEM_WIDTH_LANDSPACE THUMB_ICON_CUSTOM_HEIGHT_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "pad.top";}
+ rel2 { relative: 1.0 1.0; to: "pad.top";}
+ align: 0.0 0.0;
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ part {
+ name: "elm.progressbar.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 THUMBNAIL_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {
+ relative: THUMBNAIL_PROGRESSBAR_L_LANDSPACE/GRID_THUMB_ITEM_WIDTH_LANDSPACE THUMBNAIL_PROGRESSBAR_T_LANDSPACE/THUMB_ICON_CUSTOM_HEIGHT_LANDSPACE;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: THUMBNAIL_PROGRESSBAR_R_LANDSPACE/GRID_THUMB_ITEM_WIDTH_LANDSPACE THUMBNAIL_PROGRESSBAR_B_LANDSPACE/THUMB_ICON_CUSTOM_HEIGHT_LANDSPACE;
+ to: "elm.swallow.icon";
+ }
+ GENGRID_ITEM_SELECT_VI_EFFECT
+ }
+ }
+ GRID_PART_ICON_RT_CUSTOM_LOCK("elm.lock.icon", "elm.swallow.icon")
+ GRID_PART_ICON_RT_CUSTOM_DROPBOX("elm.dropbox.icon", "elm.swallow.icon")
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ }
+ image.normal: "00_thumbs_bg_focus.png";
+ image.border: 13 13 13 13;
+ }
+ description { state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: THUMB_ICON_CUSTOM_WIDTH_LANDSPACE GRID_CENTER_PAD_INC_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.icon";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.1";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pad";}
+ rel2 { relative: 1.0 1.0; to: "pad";}
+ fixed: 1 1;
+ min: THUMB_ICON_CUSTOM_WIDTH_LANDSPACE GRID_TEXT_TITLE_HEIGHT;
+ align: 0.0 0.0;
+ color: 0 0 0 255;
+ text {
+ font: "Tizen:style=Regular";
+ align: 0.0 0.5;
+ size: 32;
+ }
+ }
+ }
+ part{
+ name: "pad_after_text1";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: THUMB_ICON_CUSTOM_WIDTH_LANDSPACE GRID_CENTER_PAD_INC_LANDSPACE;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "elm.text.1";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.1";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.2";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pad_after_text1";}
+ rel2 { relative: 1.0 1.0; to: "pad_after_text1";}
+ fixed: 1 1;
+ min: THUMB_ICON_CUSTOM_WIDTH_LANDSPACE GRID_TEXT_SUB_TITLE_HEIGHT;
+ align: 0.0 0.0;
+ text {
+ min: 0 1;
+ style: "gengrid_style_list_time_text_unread";
+ }
+ }
+ }
+ }
+ programs {
+ GENGRID_PROGRAM_ITEM_SELECT_VI_EFFECT(
+ target: "elm.swallow.icon";
+ target: "bg";
+ target: "elm.swallow.icon.bg";
+ target: "elm.progressbar.icon";
+ target: "elm.lock.icon";
+ target: "elm.dropbox.icon";
+ )
+ program {
+ name: "mouse_down";
+ signal: "mouse,down,1";
+ source: "bg";
+ action: SIGNAL_EMIT "down" "*";
+ script {
+ if (!get_int(selected)) {
+ set_int(selected, 1);
+ run_program(PROGRAM:"vi_pressed");
+ }
+ }
+ }
+ program {
+ name: "mouse_up";
+ signal: "mouse,up,1";
+ source: "bg";
+ action: SIGNAL_EMIT "up" "*";
+ script {
+ if (get_int(selected)) {
+ set_int(selected, 0);
+ run_program(PROGRAM:"vi_zoom_out");
+ }
+ }
+ }
+ program {
+ name: "clicked";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: SIGNAL_EMIT "clicked" "*";
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "bg";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ }
+ }
+}
+/*download landspace grid layout*/
+group { name: "download_thumbnail_grid_layout_landspace";
+ parts{
+ part{
+ name: "pad.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 28 485;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 0.0; }
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "pad.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1280 10;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.0 0.0; }
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "item_0";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 266 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 1.0; to_x: "pad.left"; to_y: "pad.top";}
+ rel2 { relative: 1.0 1.0; to_x: "pad.left"; to_y: "pad.top";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.1";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 53 475;
+ max: 53 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_0";}
+ rel2 { relative: 1.0 1.0; to: "item_0";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_1";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 266 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.1";}
+ rel2 { relative: 1.0 1.0; to: "pad.center.1";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.2";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 53 475;
+ max: 53 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_1";}
+ rel2 { relative: 1.0 1.0; to: "item_1";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_2";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 266 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.2";}
+ rel2 { relative: 1.0 1.0; to: "pad.center.2";}
+ align: 0.0 0.0;
+ }
+ }
+
+ part{
+ name: "pad.center.3";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 53 475;
+ max: 53 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "item_2";}
+ rel2 { relative: 1.0 1.0; to: "item_2";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "item_3";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 266 475;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "pad.center.3";}
+ rel2 { relative: 1.0 1.0; to: "pad.center.3";}
+ align: 0.0 0.0;
+ }
+ }
+
+ }
+}
+/*download landscape grid item*/
+group { name: "download_thumbnail_grid_item_landspace";
+ images {
+ image : "00_thumbs_bg_focus.png" COMP;
+ }
+ parts{
+ part{
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "pad.top";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "icon.bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 266 301;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "pad.top";}
+ rel2 { relative: 1.0 1.0; to: "pad.top";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part{
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ min: 202 301;
+ max: 202 301;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "icon.bg";}
+ rel2 { relative: 1.0 1.0; to: "icon.bg";}
+ align: 0.5 0.0;
+ }
+ }
+
+ part {
+ name: "button.left";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: GRID_THUMB_BUTTON_SIZE GRID_THUMB_BUTTON_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.icon";
+ offset: 40 -80;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.icon";
+ offset: 112 -8;
+ }
+ }
+ }
+
+ part {
+ name: "button.right";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: GRID_THUMB_BUTTON_SIZE GRID_THUMB_BUTTON_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ offset:-84 -80;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ offset:-12 -8;
+ }
+ }
+ }
+
+ part {
+ name: "elm.progressbar.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 THUMBNAIL_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "elm.swallow.icon";
+ offset: 12 -22;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ offset: -12 -11;
+ }
+ }
+ }
+
+ part { name: "focus_bg";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.swallow.icon";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.swallow.icon";
+ }
+ image.normal: "00_thumbs_bg_focus.png";
+ image.border: 13 13 13 13;
+ }
+ description { state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 266 3;
+ fixed: 1 1;
+ rel1 { relative: 0.0 1.0; to: "icon.bg";}
+ rel2 { relative: 1.0 1.0; to: "icon.bg";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.1";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "pad";}
+ rel2 { relative: 1.0 1.0; to: "pad";}
+ fixed: 1 1;
+ min: 266 34;
+ align: 0.0 0.0;
+ color: 0 0 0 255;
+ text {
+ font: "Tizen:style=Regular";
+ align: 0.0 0.5;
+ size: 35;
+ }
+ }
+ }
+ part{ name: "elm.text.1.pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 7;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "elm.text.1";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.1";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.year";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.text.1.pad";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.1.pad";}
+ fixed: 1 1;
+ min: 266 32;
+ align: 0.0 0.0;
+ color: 102 102 102 255;
+ text {
+ align: 0.0 0.5;
+ font: "Tizen:style=Regular";
+ size: 28;
+ }
+ }
+ }
+ part{ name: "elm.text.year.pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 3;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "elm.text.year";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.year";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.sdhd.bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.text.year.pad";}
+ rel2 { relative: 1.0 1.0; to: "elm.text.year.pad";}
+ fixed: 1 1;
+ min: 266 32;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part{ name: "elm.swallow.sdhd";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 42 32;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "elm.sdhd.bg";}
+ rel2 { relative: 0.0 1.0; to: "elm.sdhd.bg";}
+ align: 0.0 0.0;
+ }
+ }
+ part{ name: "elm.text.sdhd";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 32;
+ fixed: 0 1;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.sdhd"; offset: 12 0;}
+ rel2 { relative: 1.0 1.0; to: "elm.sdhd.bg";}
+ align: 0.0 0.0;
+ color: 102 102 102 255;
+ text {
+ align: 0.0 0.5;
+ font: "Tizen:style=Regular";
+ size: 28;
+ }
+ }
+ }
+ part{ name: "elm.sdhd.pad";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 9;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "elm.sdhd.bg";}
+ rel2 { relative: 1.0 1.0; to: "elm.sdhd.bg";}
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.text.2";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.sdhd.pad";}
+ rel2 { relative: 1.0 1.0; to: "elm.sdhd.pad";}
+ fixed: 1 1;
+ min: 266 28;
+ align: 0.0 0.0;
+ color: 14 104 173 255;
+ text {
+ align: 0.0 0.5;
+ font: "Tizen:style=Bold";
+ size: 25;
+ }
+ }
+ }
+ part {
+ name: "download.progressbar";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 THUMBNAIL_PROGRESSBAR_H;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0 1;
+ to: "elm.sdhd.pad";
+ offset:0 2;
+ }
+ rel2 {
+ relative: 1 1;
+ offset: 0 THUMBNAIL_PROGRESSBAR_H+2;
+ to: "elm.sdhd.pad";
+ }
+ }
+ }
+ part { name: "downloading.text.2";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "download.progressbar";}
+ rel2 { relative: 1.0 1.0; to: "download.progressbar";}
+ fixed: 1 1;
+ min: 266 28;
+ align: 0.0 0.0;
+ color: 14 104 173 255;
+ text {
+ align: 1.0 0.5;
+ font: "Tizen:style=Bold";
+ size: 25;
+ }
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "mouse_down";
+ signal: "mouse,down,1";
+ source: "elm.swallow.icon";
+ action: SIGNAL_EMIT "down" "*";
+ }
+ program { signal: "mouse,down,1";
+ source: "elm.swallow.icon";
+ action: STATE_SET "pressed" 0.0;
+ target: "focus_bg";
+ after: "mouse_down";
+ }
+ program {
+ name: "mouse_up";
+ signal: "mouse,up,1";
+ source: "elm.swallow.icon";
+ action: SIGNAL_EMIT "up" "*";
+ }
+ program { signal: "mouse,up,1";
+ source: "elm.swallow.icon";
+ action: STATE_SET "default" 0.0;
+ target: "focus_bg";
+ after: "mouse_up";
+ }
+ program {
+ name: "clicked";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon";
+ action: SIGNAL_EMIT "clicked" "*";
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "elm.swallow.icon";
+ action: PLAY_SAMPLE "button-pressed" 1.0;
+ after: "clicked";
+ }
+ }
+}
+
+group
+{
+ name:"thumbnail_preload_image";
+ parts
+ {
+ part
+ {
+ name:"base";
+ type:RECT;
+ scale: 1;
+ description
+ {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 8 8 8 0;
+ }
+ }
+
+ part
+ {
+ name:"bg";
+ type:RECT;
+ scale: 1;
+ description
+ {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to:"base";}
+ rel2 { relative: 1.0 1.0; to:"base";}
+ color: 8 8 8 0;
+ }
+ }
+
+ part
+ {
+ name:"file_icon_clipper";
+ type:RECT;
+ scale: 1;
+ description
+ {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to:"bg";}
+ rel2 { relative: 1.0 1.0; to:"bg";}
+ }
+ }
+
+ part
+ {
+ name:"thumbnail";
+ type:SWALLOW;
+ clip_to: "file_icon_clipper";
+ scale: 1;
+ description
+ {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to:"file_icon_clipper";}
+ rel2 { relative: 1.0 1.0; to:"file_icon_clipper";}
+ }
+ }
+ }
+}
+
+}
+
diff --git a/res/edc/vp-toolbar.edc b/res/edc/vp-toolbar.edc
index 0a937fb..79feacd 100755..100644
--- a/res/edc/vp-toolbar.edc
+++ b/res/edc/vp-toolbar.edc
@@ -1,1733 +1,61 @@
-#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;
- }
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+
+group { name: "elm/toolbar/2buttons";
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;
+ type: SPACER;
description {
state: "default" 0.0;
- rel1 {
- to: "base";
- offset: 2 2;
- }
- rel2 {
- to: "base";
- offset: -3 -3;
- }
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
}
}
- part { name: "elm.swallow.content";
- clip_to: "clipper";
- type: SWALLOW;
+ part { name: "bg.button.1";
+ type: SPACER;
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;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 0.5 1.0; to: "bg"; }
}
}
- 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;
+ part { name: "bg.button.2";
+ type: SPACER;
description {
state: "default" 0.0;
- rel1 {
- to: "base";
- offset: 2 2;
- }
- rel2 {
- to: "base";
- offset: -3 -3;
- }
+ rel1 { relative: 0.5 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
}
}
- part { name: "elm.swallow.content";
- clip_to: "clipper";
+ part { name: "elm.swallow.button.1";
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;
+ rel1 { relative: 0.0 0.0; to: "bg.button.1"; }
+ rel2 { relative: 1.0 1.0; to: "bg.button.1"; }
}
}
- }
-}
-
-group { name: "elm/toolbar/object/naviframe";
- parts {
- part { name: "elm.swallow.object"; // object group
+ part { name: "elm.swallow.button.2";
type: SWALLOW;
description {
- state: "default" 0.0;
- rel1.offset: 5 0;
- rel2.offset: -6 -1;
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg.button.2"; }
+ rel2 { relative: 1.0 1.0; to: "bg.button.2"; }
}
}
}
}
-
diff --git a/res/edc/vp-volume-popup.edc b/res/edc/vp-volume-popup.edc
deleted file mode 100644
index 6229e06..0000000
--- a/res/edc/vp-volume-popup.edc
+++ /dev/null
@@ -1,318 +0,0 @@
-#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
index 560bbbf..cd35256 100755..100644
--- a/res/edc/vp_font.edc
+++ b/res/edc/vp_font.edc
@@ -1,7 +1,23 @@
-#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"
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+#define FONT_BOLD_TYPE "Tizen:style=Bold"
+#define FONT_MEDIUM_TYPE "Tizen:style=Medium"
+#define FONT_REGULAR_TYPE "Tizen:style=Regular"
+#define FONT_ROMAN_TYPE "Tizen:style=Roman"
#define FONT_COLOR 255 255 255 255
@@ -20,9 +36,6 @@
#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
+#define TEXT_TRIM_SIZE 25
diff --git a/res/images/00_Option_header_bt.png b/res/images/00_Option_header_bt.png
deleted file mode 100755
index 659fc23..0000000
--- a/res/images/00_Option_header_bt.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_Option_header_bt_dim.png b/res/images/00_Option_header_bt_dim.png
deleted file mode 100755
index 3fb76e2..0000000
--- a/res/images/00_Option_header_bt_dim.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_Option_header_bt_press.png b/res/images/00_Option_header_bt_press.png
deleted file mode 100755
index 8a05504..0000000
--- a/res/images/00_Option_header_bt_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_button_01_normal.png b/res/images/00_button_01_normal.png
deleted file mode 100755
index fd06c1c..0000000
--- a/res/images/00_button_01_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_button_01_normal_dim.png b/res/images/00_button_01_normal_dim.png
deleted file mode 100755
index 7bb54fc..0000000
--- a/res/images/00_button_01_normal_dim.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_button_01_normal_press.png b/res/images/00_button_01_normal_press.png
deleted file mode 100755
index 829554a..0000000
--- a/res/images/00_button_01_normal_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_check_bg_dim.png b/res/images/00_check_bg_dim.png
index d95649c..ff8f7dd 100755..100644
--- a/res/images/00_check_bg_dim.png
+++ b/res/images/00_check_bg_dim.png
Binary files differ
diff --git a/res/images/00_focus.png b/res/images/00_focus.png
new file mode 100644
index 0000000..4f46811
--- /dev/null
+++ b/res/images/00_focus.png
Binary files differ
diff --git a/res/images/00_grid_select_check.png b/res/images/00_grid_select_check.png
index 4385567..29b10ff 100755..100644
--- a/res/images/00_grid_select_check.png
+++ b/res/images/00_grid_select_check.png
Binary files differ
diff --git a/res/images/00_list_group_bg.png b/res/images/00_list_group_bg.png
new file mode 100644
index 0000000..612fbc5
--- /dev/null
+++ b/res/images/00_list_group_bg.png
Binary files differ
diff --git a/res/images/00_list_group_bg_press.png b/res/images/00_list_group_bg_press.png
new file mode 100644
index 0000000..01edbc1
--- /dev/null
+++ b/res/images/00_list_group_bg_press.png
Binary files differ
diff --git a/res/images/00_popup_list_press.png b/res/images/00_popup_list_press.png
new file mode 100644
index 0000000..a19964e
--- /dev/null
+++ b/res/images/00_popup_list_press.png
Binary files differ
diff --git a/res/images/00_scroll_bar.png b/res/images/00_scroll_bar.png
new file mode 100755
index 0000000..9930bbf
--- /dev/null
+++ b/res/images/00_scroll_bar.png
Binary files differ
diff --git a/res/images/00_scroll_bar_h.png b/res/images/00_scroll_bar_h.png
new file mode 100755
index 0000000..5f00760
--- /dev/null
+++ b/res/images/00_scroll_bar_h.png
Binary files differ
diff --git a/res/images/00_scroll_bar_v.png b/res/images/00_scroll_bar_v.png
new file mode 100755
index 0000000..a777740
--- /dev/null
+++ b/res/images/00_scroll_bar_v.png
Binary files differ
diff --git a/res/images/00_thumbs_bg_focus.png b/res/images/00_thumbs_bg_focus.png
new file mode 100644
index 0000000..681c3ba
--- /dev/null
+++ b/res/images/00_thumbs_bg_focus.png
Binary files differ
diff --git a/res/images/00_thumbs_line_bg.png b/res/images/00_thumbs_line_bg.png
new file mode 100644
index 0000000..ae1338b
--- /dev/null
+++ b/res/images/00_thumbs_line_bg.png
Binary files differ
diff --git a/res/images/00_thumbs_loading_bg.png b/res/images/00_thumbs_loading_bg.png
new file mode 100644
index 0000000..f3e8bd0
--- /dev/null
+++ b/res/images/00_thumbs_loading_bg.png
Binary files differ
diff --git a/res/images/00_winset_btn_prev.png b/res/images/00_winset_btn_prev.png
deleted file mode 100755
index 15b43b0..0000000
--- a/res/images/00_winset_btn_prev.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_winset_btn_prev_press.png b/res/images/00_winset_btn_prev_press.png
deleted file mode 100755
index 1ffbb0b..0000000
--- a/res/images/00_winset_btn_prev_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_winset_control_top_arrow.png b/res/images/00_winset_control_top_arrow.png
deleted file mode 100755
index 9f31c89..0000000
--- a/res/images/00_winset_control_top_arrow.png
+++ /dev/null
Binary files differ
diff --git a/res/images/00_winset_thumbs_bg.png b/res/images/00_winset_thumbs_bg.png
index 6226c90..8f132c9 100755..100644
--- a/res/images/00_winset_thumbs_bg.png
+++ b/res/images/00_winset_thumbs_bg.png
Binary files differ
diff --git a/res/images/00_winset_thumbs_focus_bg.png b/res/images/00_winset_thumbs_focus_bg.png
index 4f7d66f..5170036 100755..100644
--- a/res/images/00_winset_thumbs_focus_bg.png
+++ b/res/images/00_winset_thumbs_focus_bg.png
Binary files differ
diff --git a/res/images/00_winset_thumbs_loading_bg.png b/res/images/00_winset_thumbs_loading_bg.png
deleted file mode 100755
index 0472430..0000000
--- a/res/images/00_winset_thumbs_loading_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/01_controlbar_icon_delete.png b/res/images/01_controlbar_icon_delete.png
deleted file mode 100755
index 07e2898..0000000
--- a/res/images/01_controlbar_icon_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/images/01_controlbar_icon_set_as.png b/res/images/01_controlbar_icon_set_as.png
deleted file mode 100755
index 3f5a68f..0000000
--- a/res/images/01_controlbar_icon_set_as.png
+++ /dev/null
Binary files differ
diff --git a/res/images/01_controlbar_icon_share.png b/res/images/01_controlbar_icon_share.png
deleted file mode 100755
index 76ef1ce..0000000
--- a/res/images/01_controlbar_icon_share.png
+++ /dev/null
Binary files differ
diff --git a/res/images/01_header_icon_add.png b/res/images/01_header_icon_add.png
deleted file mode 100755
index 43c4984..0000000
--- a/res/images/01_header_icon_add.png
+++ /dev/null
Binary files differ
diff --git a/res/images/01_header_icon_cancel.png b/res/images/01_header_icon_cancel.png
deleted file mode 100755
index 4fb54c3..0000000
--- a/res/images/01_header_icon_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/images/01_header_icon_others.png b/res/images/01_header_icon_others.png
deleted file mode 100755
index 4fc9dfa..0000000
--- a/res/images/01_header_icon_others.png
+++ /dev/null
Binary files differ
diff --git a/res/images/12_music_player_sound_path.png b/res/images/12_music_player_sound_path.png
deleted file mode 100755
index 771ebb8..0000000
--- a/res/images/12_music_player_sound_path.png
+++ /dev/null
Binary files differ
diff --git a/res/images/DM_Gallery_Increase.png b/res/images/DM_Gallery_Increase.png
deleted file mode 100755
index fdf6231..0000000
--- a/res/images/DM_Gallery_Increase.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01-2_control_circle_icon_play.png b/res/images/T01-2_control_circle_icon_play.png
new file mode 100644
index 0000000..ccc48b0
--- /dev/null
+++ b/res/images/T01-2_control_circle_icon_play.png
Binary files differ
diff --git a/res/images/T01-2_hold_icon_lock.png b/res/images/T01-2_hold_icon_lock.png
index 8e34351..0fb24c1 100755..100644
--- a/res/images/T01-2_hold_icon_lock.png
+++ b/res/images/T01-2_hold_icon_lock.png
Binary files differ
diff --git a/res/images/T01-2_icon_toolbar_cancel.png b/res/images/T01-2_icon_toolbar_cancel.png
index 5cb7824..7fbe2e0 100755..100644
--- a/res/images/T01-2_icon_toolbar_cancel.png
+++ b/res/images/T01-2_icon_toolbar_cancel.png
Binary files differ
diff --git a/res/images/T01-2_progress_bar.png b/res/images/T01-2_progress_bar.png
new file mode 100755
index 0000000..c3809cf
--- /dev/null
+++ b/res/images/T01-2_progress_bar.png
Binary files differ
diff --git a/res/images/T01-2_progress_bg.png b/res/images/T01-2_progress_bg.png
new file mode 100755
index 0000000..a3df036
--- /dev/null
+++ b/res/images/T01-2_progress_bg.png
Binary files differ
diff --git a/res/images/T01-2_progress_bg_02.png b/res/images/T01-2_progress_bg_02.png
new file mode 100644
index 0000000..f242a99
--- /dev/null
+++ b/res/images/T01-2_progress_bg_02.png
Binary files differ
diff --git a/res/images/T01-2_video_noitem.png b/res/images/T01-2_video_noitem.png
new file mode 100755
index 0000000..d273ad4
--- /dev/null
+++ b/res/images/T01-2_video_noitem.png
Binary files differ
diff --git a/res/images/T01-2_video_thumbnail_view_bg.png b/res/images/T01-2_video_thumbnail_view_bg.png
new file mode 100755
index 0000000..1e98fd0
--- /dev/null
+++ b/res/images/T01-2_video_thumbnail_view_bg.png
Binary files differ
diff --git a/res/images/T01_Image_Look.png b/res/images/T01_Image_Look.png
deleted file mode 100755
index 5ecda87..0000000
--- a/res/images/T01_Image_Look.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_Nocontents_multimedia.png b/res/images/T01_Nocontents_multimedia.png
index a59046f..d8d0ee8 100755..100644
--- a/res/images/T01_Nocontents_multimedia.png
+++ b/res/images/T01_Nocontents_multimedia.png
Binary files differ
diff --git a/res/images/T01_Option_header_bt.png b/res/images/T01_Option_header_bt.png
deleted file mode 100755
index 94b1e2f..0000000
--- a/res/images/T01_Option_header_bt.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_Option_header_bt_press.png b/res/images/T01_Option_header_bt_press.png
deleted file mode 100755
index 17331c1..0000000
--- a/res/images/T01_Option_header_bt_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_Trim_handle_beginning.png b/res/images/T01_Trim_handle_beginning.png
deleted file mode 100755
index 859aa3e..0000000
--- a/res/images/T01_Trim_handle_beginning.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_Trim_handle_ending.png b/res/images/T01_Trim_handle_ending.png
deleted file mode 100755
index adf7c82..0000000
--- a/res/images/T01_Trim_handle_ending.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_back.png b/res/images/T01_back.png
deleted file mode 100755
index 73d57a5..0000000
--- a/res/images/T01_back.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_btn_prev.png b/res/images/T01_btn_prev.png
deleted file mode 100755
index ccaf337..0000000
--- a/res/images/T01_btn_prev.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_check.png b/res/images/T01_check.png
index d5057e4..b5f5a66 100755..100644
--- a/res/images/T01_check.png
+++ b/res/images/T01_check.png
Binary files differ
diff --git a/res/images/T01_checkbox.png b/res/images/T01_checkbox.png
index 61dc76a..928d234 100755..100644
--- a/res/images/T01_checkbox.png
+++ b/res/images/T01_checkbox.png
Binary files differ
diff --git a/res/images/T01_control_icon_detail.png b/res/images/T01_control_icon_detail.png
deleted file mode 100755
index e82b44d..0000000
--- a/res/images/T01_control_icon_detail.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_control_icon_fullscreen.png b/res/images/T01_control_icon_fullscreen.png
deleted file mode 100755
index 7fa140f..0000000
--- a/res/images/T01_control_icon_fullscreen.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_control_icon_reduce.png b/res/images/T01_control_icon_reduce.png
deleted file mode 100755
index fbdb906..0000000
--- a/res/images/T01_control_icon_reduce.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_control_top_arrow.png b/res/images/T01_control_top_arrow.png
deleted file mode 100755
index 3f2ee50..0000000
--- a/res/images/T01_control_top_arrow.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_control_top_bg.png b/res/images/T01_control_top_bg.png
deleted file mode 100755
index e7b5045..0000000
--- a/res/images/T01_control_top_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_controlbar_icon_cancel.png b/res/images/T01_controlbar_icon_cancel.png
deleted file mode 100755
index 5cb7824..0000000
--- a/res/images/T01_controlbar_icon_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_controlbar_icon_done.png b/res/images/T01_controlbar_icon_done.png
deleted file mode 100755
index 46304a4..0000000
--- a/res/images/T01_controlbar_icon_done.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_controller_btn.png b/res/images/T01_controller_btn.png
deleted file mode 100755
index 4db7a11..0000000
--- a/res/images/T01_controller_btn.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_controller_btn_press.png b/res/images/T01_controller_btn_press.png
deleted file mode 100755
index 4069b0f..0000000
--- a/res/images/T01_controller_btn_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_grid_select_check.png b/res/images/T01_grid_select_check.png
index f131f47..55b1f5e 100755..100644
--- a/res/images/T01_grid_select_check.png
+++ b/res/images/T01_grid_select_check.png
Binary files differ
diff --git a/res/images/T01_icon_expand.png b/res/images/T01_icon_expand.png
deleted file mode 100755
index ba1158e..0000000
--- a/res/images/T01_icon_expand.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_icon_reduce.png b/res/images/T01_icon_reduce.png
deleted file mode 100755
index 7e80daa..0000000
--- a/res/images/T01_icon_reduce.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_icon_soft_back.png b/res/images/T01_icon_soft_back.png
new file mode 100644
index 0000000..f8e4d01
--- /dev/null
+++ b/res/images/T01_icon_soft_back.png
Binary files differ
diff --git a/res/images/T01_icon_soft_back_blabk.png b/res/images/T01_icon_soft_back_blabk.png
new file mode 100644
index 0000000..7a548a4
--- /dev/null
+++ b/res/images/T01_icon_soft_back_blabk.png
Binary files differ
diff --git a/res/images/T01_icon_soundPath.png b/res/images/T01_icon_soundPath.png
deleted file mode 100755
index 79e0cda..0000000
--- a/res/images/T01_icon_soundPath.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_icon_soundPath_h.png b/res/images/T01_icon_soundPath_h.png
deleted file mode 100755
index ad3b1d4..0000000
--- a/res/images/T01_icon_soundPath_h.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_icon_soundPath_press.png b/res/images/T01_icon_soundPath_press.png
deleted file mode 100755
index 9fcc466..0000000
--- a/res/images/T01_icon_soundPath_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_player_progress_bar.png b/res/images/T01_player_progress_bar.png
deleted file mode 100755
index 2f25452..0000000
--- a/res/images/T01_player_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_player_progress_bg.png b/res/images/T01_player_progress_bg.png
deleted file mode 100755
index 58d94cc..0000000
--- a/res/images/T01_player_progress_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_player_progress_point.png b/res/images/T01_player_progress_point.png
deleted file mode 100755
index 0e8c5c5..0000000
--- a/res/images/T01_player_progress_point.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_sound_path.png b/res/images/T01_sound_path.png
deleted file mode 100755
index d4f3843..0000000
--- a/res/images/T01_sound_path.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_title_bg.png b/res/images/T01_title_bg.png
deleted file mode 100755
index 039da67..0000000
--- a/res/images/T01_title_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_title_bg_h.png b/res/images/T01_title_bg_h.png
deleted file mode 100755
index 7d0cec4..0000000
--- a/res/images/T01_title_bg_h.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_title_btn.png b/res/images/T01_title_btn.png
deleted file mode 100755
index 20c31f1..0000000
--- a/res/images/T01_title_btn.png
+++ /dev/null
Binary files differ
diff --git a/res/images/T01_title_btn_press.png b/res/images/T01_title_btn_press.png
deleted file mode 100755
index 49861ed..0000000
--- a/res/images/T01_title_btn_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_controller_progress_handle.png b/res/images/adjustment/T01-2_controller_progress_handle.png
deleted file mode 100755
index fc80139..0000000
--- a/res/images/adjustment/T01-2_controller_progress_handle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_controller_progress_handle_press.png b/res/images/adjustment/T01-2_controller_progress_handle_press.png
deleted file mode 100755
index d14c5f6..0000000
--- a/res/images/adjustment/T01-2_controller_progress_handle_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_bg.png b/res/images/adjustment/T01-2_fine_adjustment_bg.png
deleted file mode 100755
index 40efe0e..0000000
--- a/res/images/adjustment/T01-2_fine_adjustment_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png b/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png
deleted file mode 100755
index b088e8a..0000000
--- a/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png b/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png
deleted file mode 100755
index 34240ab..0000000
--- a/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png b/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png
deleted file mode 100755
index b4c6def..0000000
--- a/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png b/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png
deleted file mode 100755
index b8fa147..0000000
--- a/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_bookmark_thumbnail.png b/res/images/bookmark/T01-2_bookmark_thumbnail.png
deleted file mode 100755
index 2d4a8ca..0000000
--- a/res/images/bookmark/T01-2_bookmark_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_btn_bookmark.png b/res/images/bookmark/T01-2_btn_bookmark.png
deleted file mode 100755
index 13fa60a..0000000
--- a/res/images/bookmark/T01-2_btn_bookmark.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_btn_bookmark_press.png b/res/images/bookmark/T01-2_btn_bookmark_press.png
deleted file mode 100755
index 34ef87f..0000000
--- a/res/images/bookmark/T01-2_btn_bookmark_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_btn_remove_bookmark.png b/res/images/bookmark/T01-2_btn_remove_bookmark.png
deleted file mode 100755
index a040031..0000000
--- a/res/images/bookmark/T01-2_btn_remove_bookmark.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_btn_remove_bookmark_press.png b/res/images/bookmark/T01-2_btn_remove_bookmark_press.png
deleted file mode 100755
index 812f6f0..0000000
--- a/res/images/bookmark/T01-2_btn_remove_bookmark_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_function_tray.png b/res/images/bookmark/T01-2_function_tray.png
deleted file mode 100755
index 2df684b..0000000
--- a/res/images/bookmark/T01-2_function_tray.png
+++ /dev/null
Binary files differ
diff --git a/res/images/bookmark/T01-2_icon_thumbnail_bg.png b/res/images/bookmark/T01-2_icon_thumbnail_bg.png
deleted file mode 100755
index b5692d1..0000000
--- a/res/images/bookmark/T01-2_icon_thumbnail_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/com.samsung.video-player.png b/res/images/com.samsung.video-player.png
deleted file mode 100644
index 0cc2384..0000000
--- a/res/images/com.samsung.video-player.png
+++ /dev/null
Binary files differ
diff --git a/res/images/com.samsung.video-player.png_old b/res/images/com.samsung.video-player.png_old
deleted file mode 100755
index aa8b191..0000000
--- a/res/images/com.samsung.video-player.png_old
+++ /dev/null
Binary files differ
diff --git a/res/images/core_theme_bg_01.png b/res/images/core_theme_bg_01.png
new file mode 100644
index 0000000..be3057d
--- /dev/null
+++ b/res/images/core_theme_bg_01.png
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_01.png b/res/images/desktop/controlbar/DM_Key screen_icon_01.png
deleted file mode 100755
index 89e94e7..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_01.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_02.png b/res/images/desktop/controlbar/DM_Key screen_icon_02.png
deleted file mode 100755
index 06e41d4..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_02.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_03.png b/res/images/desktop/controlbar/DM_Key screen_icon_03.png
deleted file mode 100755
index 919801c..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_03.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png
deleted file mode 100755
index 4bc3885..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_ff.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png
deleted file mode 100755
index c5b9e8f..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_pause.png b/res/images/desktop/controlbar/DM_Key screen_icon_pause.png
deleted file mode 100644
index 28a8872..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_pause.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png
deleted file mode 100644
index 37609ad..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play.png b/res/images/desktop/controlbar/DM_Key screen_icon_play.png
deleted file mode 100755
index 9bf836d..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_play.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png
deleted file mode 100755
index e9e9583..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png
deleted file mode 100755
index 1140a01..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_rew.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png
deleted file mode 100755
index 306af4e..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_volume.png b/res/images/desktop/controlbar/DM_Key screen_icon_volume.png
deleted file mode 100755
index 8d2fe43..0000000
--- a/res/images/desktop/controlbar/DM_Key screen_icon_volume.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_bar.png b/res/images/desktop/winset/T01-2_controller_progress_bar.png
deleted file mode 100755
index 03f54cf..0000000
--- a/res/images/desktop/winset/T01-2_controller_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_bg.png b/res/images/desktop/winset/T01-2_controller_progress_bg.png
deleted file mode 100755
index f020771..0000000
--- a/res/images/desktop/winset/T01-2_controller_progress_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle.png b/res/images/desktop/winset/T01-2_controller_progress_handle.png
deleted file mode 100755
index fc80139..0000000
--- a/res/images/desktop/winset/T01-2_controller_progress_handle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle_press.png b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png
deleted file mode 100755
index d14c5f6..0000000
--- a/res/images/desktop/winset/T01-2_controller_progress_handle_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_bg.png b/res/images/desktop/winset/T01-2_fine_adjustment_bg.png
deleted file mode 100755
index 40efe0e..0000000
--- a/res/images/desktop/winset/T01-2_fine_adjustment_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png b/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png
deleted file mode 100755
index b088e8a..0000000
--- a/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png
deleted file mode 100755
index 34240ab..0000000
--- a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png
deleted file mode 100755
index b4c6def..0000000
--- a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png
deleted file mode 100755
index b8fa147..0000000
--- a/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/download/T01-2_video_thumbnail_view_default.png b/res/images/download/T01-2_video_thumbnail_view_default.png
new file mode 100755
index 0000000..2995668
--- /dev/null
+++ b/res/images/download/T01-2_video_thumbnail_view_default.png
Binary files differ
diff --git a/res/images/download/T01-2_video_thumbnail_view_default_h.png b/res/images/download/T01-2_video_thumbnail_view_default_h.png
new file mode 100755
index 0000000..a3b65ac
--- /dev/null
+++ b/res/images/download/T01-2_video_thumbnail_view_default_h.png
Binary files differ
diff --git a/res/images/download/T01-2_video_thumbnail_view_hd.png b/res/images/download/T01-2_video_thumbnail_view_hd.png
new file mode 100755
index 0000000..4e88707
--- /dev/null
+++ b/res/images/download/T01-2_video_thumbnail_view_hd.png
Binary files differ
diff --git a/res/images/download/T01-2_video_thumbnail_view_hd_press.png b/res/images/download/T01-2_video_thumbnail_view_hd_press.png
new file mode 100755
index 0000000..62ac33b
--- /dev/null
+++ b/res/images/download/T01-2_video_thumbnail_view_hd_press.png
Binary files differ
diff --git a/res/images/download/T01-2_video_thumbnail_view_sd.png b/res/images/download/T01-2_video_thumbnail_view_sd.png
new file mode 100755
index 0000000..904d535
--- /dev/null
+++ b/res/images/download/T01-2_video_thumbnail_view_sd.png
Binary files differ
diff --git a/res/images/download/T01-2_video_thumbnail_view_sd_press.png b/res/images/download/T01-2_video_thumbnail_view_sd_press.png
new file mode 100755
index 0000000..01f8368
--- /dev/null
+++ b/res/images/download/T01-2_video_thumbnail_view_sd_press.png
Binary files differ
diff --git a/res/images/gallery_loading_ani_01.png b/res/images/gallery_loading_ani_01.png
deleted file mode 100755
index 9402e71..0000000
--- a/res/images/gallery_loading_ani_01.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_02.png b/res/images/gallery_loading_ani_02.png
deleted file mode 100755
index e71d491..0000000
--- a/res/images/gallery_loading_ani_02.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_03.png b/res/images/gallery_loading_ani_03.png
deleted file mode 100755
index 1ed0de9..0000000
--- a/res/images/gallery_loading_ani_03.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_04.png b/res/images/gallery_loading_ani_04.png
deleted file mode 100755
index 18cc497..0000000
--- a/res/images/gallery_loading_ani_04.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_05.png b/res/images/gallery_loading_ani_05.png
deleted file mode 100755
index 036c49b..0000000
--- a/res/images/gallery_loading_ani_05.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_06.png b/res/images/gallery_loading_ani_06.png
deleted file mode 100755
index 3cb5e33..0000000
--- a/res/images/gallery_loading_ani_06.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_07.png b/res/images/gallery_loading_ani_07.png
deleted file mode 100755
index fae06de..0000000
--- a/res/images/gallery_loading_ani_07.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_08.png b/res/images/gallery_loading_ani_08.png
deleted file mode 100755
index 70eaaf0..0000000
--- a/res/images/gallery_loading_ani_08.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_09.png b/res/images/gallery_loading_ani_09.png
deleted file mode 100755
index 7fb390c..0000000
--- a/res/images/gallery_loading_ani_09.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_10.png b/res/images/gallery_loading_ani_10.png
deleted file mode 100755
index 941fc3b..0000000
--- a/res/images/gallery_loading_ani_10.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_11.png b/res/images/gallery_loading_ani_11.png
deleted file mode 100755
index a67149d..0000000
--- a/res/images/gallery_loading_ani_11.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_12.png b/res/images/gallery_loading_ani_12.png
deleted file mode 100755
index b36421a..0000000
--- a/res/images/gallery_loading_ani_12.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_13.png b/res/images/gallery_loading_ani_13.png
deleted file mode 100755
index d70d609..0000000
--- a/res/images/gallery_loading_ani_13.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_14.png b/res/images/gallery_loading_ani_14.png
deleted file mode 100755
index ab52db7..0000000
--- a/res/images/gallery_loading_ani_14.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_15.png b/res/images/gallery_loading_ani_15.png
deleted file mode 100755
index 1de8adb..0000000
--- a/res/images/gallery_loading_ani_15.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_16.png b/res/images/gallery_loading_ani_16.png
deleted file mode 100755
index 521b61f..0000000
--- a/res/images/gallery_loading_ani_16.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_17.png b/res/images/gallery_loading_ani_17.png
deleted file mode 100755
index 6cb5ba9..0000000
--- a/res/images/gallery_loading_ani_17.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_18.png b/res/images/gallery_loading_ani_18.png
deleted file mode 100755
index a636079..0000000
--- a/res/images/gallery_loading_ani_18.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_19.png b/res/images/gallery_loading_ani_19.png
deleted file mode 100755
index 0a4f650..0000000
--- a/res/images/gallery_loading_ani_19.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_20.png b/res/images/gallery_loading_ani_20.png
deleted file mode 100755
index 14cc339..0000000
--- a/res/images/gallery_loading_ani_20.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_21.png b/res/images/gallery_loading_ani_21.png
deleted file mode 100755
index 0e78db7..0000000
--- a/res/images/gallery_loading_ani_21.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_22.png b/res/images/gallery_loading_ani_22.png
deleted file mode 100755
index 80d592e..0000000
--- a/res/images/gallery_loading_ani_22.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_23.png b/res/images/gallery_loading_ani_23.png
deleted file mode 100755
index b4bd7ca..0000000
--- a/res/images/gallery_loading_ani_23.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_24.png b/res/images/gallery_loading_ani_24.png
deleted file mode 100755
index 69445e4..0000000
--- a/res/images/gallery_loading_ani_24.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_25.png b/res/images/gallery_loading_ani_25.png
deleted file mode 100755
index 233a038..0000000
--- a/res/images/gallery_loading_ani_25.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_26.png b/res/images/gallery_loading_ani_26.png
deleted file mode 100755
index d52a017..0000000
--- a/res/images/gallery_loading_ani_26.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_27.png b/res/images/gallery_loading_ani_27.png
deleted file mode 100755
index 4221ecc..0000000
--- a/res/images/gallery_loading_ani_27.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_28.png b/res/images/gallery_loading_ani_28.png
deleted file mode 100755
index da37330..0000000
--- a/res/images/gallery_loading_ani_28.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_29.png b/res/images/gallery_loading_ani_29.png
deleted file mode 100755
index 41e97e1..0000000
--- a/res/images/gallery_loading_ani_29.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_loading_ani_30.png b/res/images/gallery_loading_ani_30.png
deleted file mode 100755
index ac0bb55..0000000
--- a/res/images/gallery_loading_ani_30.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_add_btn.png b/res/images/gallery_video_add_btn.png
deleted file mode 100755
index 63f7d63..0000000
--- a/res/images/gallery_video_add_btn.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_add_btn_press.png b/res/images/gallery_video_add_btn_press.png
deleted file mode 100755
index 2bfc65b..0000000
--- a/res/images/gallery_video_add_btn_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_ff.png b/res/images/gallery_video_control_ff.png
deleted file mode 100755
index e0a49f1..0000000
--- a/res/images/gallery_video_control_ff.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_ff_2.png b/res/images/gallery_video_control_ff_2.png
deleted file mode 100755
index 57d60d6..0000000
--- a/res/images/gallery_video_control_ff_2.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_ff_3.png b/res/images/gallery_video_control_ff_3.png
deleted file mode 100755
index 6f023ea..0000000
--- a/res/images/gallery_video_control_ff_3.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_ff_4.png b/res/images/gallery_video_control_ff_4.png
deleted file mode 100755
index 427735f..0000000
--- a/res/images/gallery_video_control_ff_4.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_ff_5.png b/res/images/gallery_video_control_ff_5.png
deleted file mode 100755
index 93aa2be..0000000
--- a/res/images/gallery_video_control_ff_5.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_frame_back.png b/res/images/gallery_video_control_frame_back.png
deleted file mode 100755
index 7a0428d..0000000
--- a/res/images/gallery_video_control_frame_back.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_frame_forword.png b/res/images/gallery_video_control_frame_forword.png
deleted file mode 100755
index af2b776..0000000
--- a/res/images/gallery_video_control_frame_forword.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_next.png b/res/images/gallery_video_control_next.png
deleted file mode 100755
index e0a49f1..0000000
--- a/res/images/gallery_video_control_next.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_pause.png b/res/images/gallery_video_control_pause.png
deleted file mode 100755
index d36fbf4..0000000
--- a/res/images/gallery_video_control_pause.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_play.png b/res/images/gallery_video_control_play.png
deleted file mode 100755
index 16b49a5..0000000
--- a/res/images/gallery_video_control_play.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_prev.png b/res/images/gallery_video_control_prev.png
deleted file mode 100755
index 029e57c..0000000
--- a/res/images/gallery_video_control_prev.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_rew.png b/res/images/gallery_video_control_rew.png
deleted file mode 100755
index 029e57c..0000000
--- a/res/images/gallery_video_control_rew.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_rew_2.png b/res/images/gallery_video_control_rew_2.png
deleted file mode 100755
index ad63c27..0000000
--- a/res/images/gallery_video_control_rew_2.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_rew_3.png b/res/images/gallery_video_control_rew_3.png
deleted file mode 100755
index 96d43fd..0000000
--- a/res/images/gallery_video_control_rew_3.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_rew_4.png b/res/images/gallery_video_control_rew_4.png
deleted file mode 100755
index 60f2a1d..0000000
--- a/res/images/gallery_video_control_rew_4.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_control_rew_5.png b/res/images/gallery_video_control_rew_5.png
deleted file mode 100755
index 2eba4f6..0000000
--- a/res/images/gallery_video_control_rew_5.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_delete_btn.png b/res/images/gallery_video_delete_btn.png
deleted file mode 100755
index fe62076..0000000
--- a/res/images/gallery_video_delete_btn.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_delete_btn_press.png b/res/images/gallery_video_delete_btn_press.png
deleted file mode 100755
index 2d2466f..0000000
--- a/res/images/gallery_video_delete_btn_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_fastforward_1x.png b/res/images/gallery_video_fastforward_1x.png
deleted file mode 100755
index c1ea6b1..0000000
--- a/res/images/gallery_video_fastforward_1x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_fastforward_2x.png b/res/images/gallery_video_fastforward_2x.png
deleted file mode 100755
index ea0486c..0000000
--- a/res/images/gallery_video_fastforward_2x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_fastforward_3x.png b/res/images/gallery_video_fastforward_3x.png
deleted file mode 100755
index 6e16eff..0000000
--- a/res/images/gallery_video_fastforward_3x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_fastforward_4x.png b/res/images/gallery_video_fastforward_4x.png
deleted file mode 100755
index a1eeacb..0000000
--- a/res/images/gallery_video_fastforward_4x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_icon_btn.png b/res/images/gallery_video_icon_btn.png
deleted file mode 100755
index 9ef6888..0000000
--- a/res/images/gallery_video_icon_btn.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_icon_btn_press.png b/res/images/gallery_video_icon_btn_press.png
deleted file mode 100755
index 628c8e7..0000000
--- a/res/images/gallery_video_icon_btn_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_icon_mute.png b/res/images/gallery_video_icon_mute.png
deleted file mode 100755
index e92f376..0000000
--- a/res/images/gallery_video_icon_mute.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_icon_volume.png b/res/images/gallery_video_icon_volume.png
deleted file mode 100755
index 49d9cf5..0000000
--- a/res/images/gallery_video_icon_volume.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_player_bg.png b/res/images/gallery_video_player_bg.png
deleted file mode 100755
index 611a7b7..0000000
--- a/res/images/gallery_video_player_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_popup_mute.png b/res/images/gallery_video_popup_mute.png
deleted file mode 100755
index 32f447c..0000000
--- a/res/images/gallery_video_popup_mute.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_rewind_1x.png b/res/images/gallery_video_rewind_1x.png
deleted file mode 100755
index 31f3696..0000000
--- a/res/images/gallery_video_rewind_1x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_rewind_2x.png b/res/images/gallery_video_rewind_2x.png
deleted file mode 100755
index 17c17c9..0000000
--- a/res/images/gallery_video_rewind_2x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_rewind_3x.png b/res/images/gallery_video_rewind_3x.png
deleted file mode 100755
index badb983..0000000
--- a/res/images/gallery_video_rewind_3x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/gallery_video_rewind_4x.png b/res/images/gallery_video_rewind_4x.png
deleted file mode 100755
index a855514..0000000
--- a/res/images/gallery_video_rewind_4x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/genlist/00_focus.png b/res/images/genlist/00_focus.png
new file mode 100644
index 0000000..4f46811
--- /dev/null
+++ b/res/images/genlist/00_focus.png
Binary files differ
diff --git a/res/images/genlist/00_list_group_bg.png b/res/images/genlist/00_list_group_bg.png
new file mode 100644
index 0000000..612fbc5
--- /dev/null
+++ b/res/images/genlist/00_list_group_bg.png
Binary files differ
diff --git a/res/images/genlist/00_list_group_bg_press.png b/res/images/genlist/00_list_group_bg_press.png
new file mode 100644
index 0000000..01edbc1
--- /dev/null
+++ b/res/images/genlist/00_list_group_bg_press.png
Binary files differ
diff --git a/res/images/genlist/00_popup_list_press.png b/res/images/genlist/00_popup_list_press.png
new file mode 100644
index 0000000..a19964e
--- /dev/null
+++ b/res/images/genlist/00_popup_list_press.png
Binary files differ
diff --git a/res/images/icon/06_myfiles_list_folder.png b/res/images/icon/06_myfiles_list_folder.png
deleted file mode 100644
index d53be43..0000000
--- a/res/images/icon/06_myfiles_list_folder.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_function_bg.png b/res/images/icon/T01-2_icon_function_bg.png
deleted file mode 100755
index 7354c9e..0000000
--- a/res/images/icon/T01-2_icon_function_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_allive.png b/res/images/icon/T01-2_icon_popup_sound_allive.png
deleted file mode 100755
index 0f40b7b..0000000
--- a/res/images/icon/T01-2_icon_popup_sound_allive.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_audio_track.png b/res/images/icon/T01-2_icon_popup_sound_audio_track.png
deleted file mode 100755
index eb9b26d..0000000
--- a/res/images/icon/T01-2_icon_popup_sound_audio_track.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png b/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png
deleted file mode 100755
index a5aa8a0..0000000
--- a/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_popup_sound_settings.png b/res/images/icon/T01-2_icon_popup_sound_settings.png
deleted file mode 100755
index b548ecd..0000000
--- a/res/images/icon/T01-2_icon_popup_sound_settings.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_popup_subtitle.png b/res/images/icon/T01-2_icon_popup_subtitle.png
deleted file mode 100755
index 5122b35..0000000
--- a/res/images/icon/T01-2_icon_popup_subtitle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_popup_trim.png b/res/images/icon/T01-2_icon_popup_trim.png
deleted file mode 100755
index 1cab618..0000000
--- a/res/images/icon/T01-2_icon_popup_trim.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_title_allshare.png b/res/images/icon/T01-2_icon_title_allshare.png
deleted file mode 100755
index 2e46917..0000000
--- a/res/images/icon/T01-2_icon_title_allshare.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_icon_title_soundpath.png b/res/images/icon/T01-2_icon_title_soundpath.png
deleted file mode 100755
index 1da849c..0000000
--- a/res/images/icon/T01-2_icon_title_soundpath.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T01-2_video_noitem.png b/res/images/icon/T01-2_video_noitem.png
new file mode 100755
index 0000000..bbe66f3
--- /dev/null
+++ b/res/images/icon/T01-2_video_noitem.png
Binary files differ
diff --git a/res/images/icon/T01-2_video_thumbnail_default.png b/res/images/icon/T01-2_video_thumbnail_default.png
new file mode 100644
index 0000000..4ed4630
--- /dev/null
+++ b/res/images/icon/T01-2_video_thumbnail_default.png
Binary files differ
diff --git a/res/images/icon/T01_2_button_expand_cancel.png b/res/images/icon/T01_2_button_expand_cancel.png
new file mode 100644
index 0000000..7dfcde3
--- /dev/null
+++ b/res/images/icon/T01_2_button_expand_cancel.png
Binary files differ
diff --git a/res/images/icon/T01_2_button_expand_cancel_press.png b/res/images/icon/T01_2_button_expand_cancel_press.png
new file mode 100755
index 0000000..2570325
--- /dev/null
+++ b/res/images/icon/T01_2_button_expand_cancel_press.png
Binary files differ
diff --git a/res/images/icon/T01_2_button_expand_download.png b/res/images/icon/T01_2_button_expand_download.png
new file mode 100644
index 0000000..d24de02
--- /dev/null
+++ b/res/images/icon/T01_2_button_expand_download.png
Binary files differ
diff --git a/res/images/icon/T01_2_button_expand_download_press.png b/res/images/icon/T01_2_button_expand_download_press.png
new file mode 100644
index 0000000..d2e5a06
--- /dev/null
+++ b/res/images/icon/T01_2_button_expand_download_press.png
Binary files differ
diff --git a/res/images/icon/T01_2_button_expand_play.png b/res/images/icon/T01_2_button_expand_play.png
new file mode 100644
index 0000000..0dc5c72
--- /dev/null
+++ b/res/images/icon/T01_2_button_expand_play.png
Binary files differ
diff --git a/res/images/icon/T01_2_button_expand_stop.png b/res/images/icon/T01_2_button_expand_stop.png
new file mode 100644
index 0000000..7e2cb4e
--- /dev/null
+++ b/res/images/icon/T01_2_button_expand_stop.png
Binary files differ
diff --git a/res/images/icon/T01_2_icon_search.png b/res/images/icon/T01_2_icon_search.png
new file mode 100755
index 0000000..5967c64
--- /dev/null
+++ b/res/images/icon/T01_2_icon_search.png
Binary files differ
diff --git a/res/images/icon/T01_2_icon_video.png b/res/images/icon/T01_2_icon_video.png
new file mode 100644
index 0000000..97614e1
--- /dev/null
+++ b/res/images/icon/T01_2_icon_video.png
Binary files differ
diff --git a/res/images/icon/T01_2_list_icon_inner_usb.png b/res/images/icon/T01_2_list_icon_inner_usb.png
new file mode 100755
index 0000000..87807d4
--- /dev/null
+++ b/res/images/icon/T01_2_list_icon_inner_usb.png
Binary files differ
diff --git a/res/images/icon/T01_2_list_icon_sd_card.png b/res/images/icon/T01_2_list_icon_sd_card.png
new file mode 100755
index 0000000..516cfa5
--- /dev/null
+++ b/res/images/icon/T01_2_list_icon_sd_card.png
Binary files differ
diff --git a/res/images/icon/T01_2_thumbnail_icon_drop_box.png b/res/images/icon/T01_2_thumbnail_icon_drop_box.png
new file mode 100644
index 0000000..51da85f
--- /dev/null
+++ b/res/images/icon/T01_2_thumbnail_icon_drop_box.png
Binary files differ
diff --git a/res/images/icon/T01_2_video_lock_45x45.png b/res/images/icon/T01_2_video_lock_45x45.png
new file mode 100755
index 0000000..49dffa0
--- /dev/null
+++ b/res/images/icon/T01_2_video_lock_45x45.png
Binary files differ
diff --git a/res/images/icon/T01_Device_icon_index_refresh_bg.png b/res/images/icon/T01_Device_icon_index_refresh_bg.png
new file mode 100755
index 0000000..f84c234
--- /dev/null
+++ b/res/images/icon/T01_Device_icon_index_refresh_bg.png
Binary files differ
diff --git a/res/images/icon/T01_Device_icon_index_refresh_focus_ef.png b/res/images/icon/T01_Device_icon_index_refresh_focus_ef.png
new file mode 100755
index 0000000..ac29676
--- /dev/null
+++ b/res/images/icon/T01_Device_icon_index_refresh_focus_ef.png
Binary files differ
diff --git a/res/images/icon/T01_controlbar_icon_add_to_home.png b/res/images/icon/T01_controlbar_icon_add_to_home.png
deleted file mode 100755
index ff44f72..0000000
--- a/res/images/icon/T01_controlbar_icon_add_to_home.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/T02_icon_edit.png b/res/images/icon/T02_icon_edit.png
new file mode 100755
index 0000000..0c531fc
--- /dev/null
+++ b/res/images/icon/T02_icon_edit.png
Binary files differ
diff --git a/res/images/icon/U04_device_Camcorder.png b/res/images/icon/U04_device_Camcorder.png
new file mode 100644
index 0000000..b4a7ec6
--- /dev/null
+++ b/res/images/icon/U04_device_Camcorder.png
Binary files differ
diff --git a/res/images/icon/U04_device_Camera.png b/res/images/icon/U04_device_Camera.png
new file mode 100644
index 0000000..796b765
--- /dev/null
+++ b/res/images/icon/U04_device_Camera.png
Binary files differ
diff --git a/res/images/icon/U04_device_Mobile.png b/res/images/icon/U04_device_Mobile.png
new file mode 100644
index 0000000..f2e7825
--- /dev/null
+++ b/res/images/icon/U04_device_Mobile.png
Binary files differ
diff --git a/res/images/icon/U04_device_None_DNS.png b/res/images/icon/U04_device_None_DNS.png
new file mode 100644
index 0000000..adeba27
--- /dev/null
+++ b/res/images/icon/U04_device_None_DNS.png
Binary files differ
diff --git a/res/images/icon/U04_device_PC.png b/res/images/icon/U04_device_PC.png
new file mode 100644
index 0000000..24b7475
--- /dev/null
+++ b/res/images/icon/U04_device_PC.png
Binary files differ
diff --git a/res/images/icon/U04_device_STB.png b/res/images/icon/U04_device_STB.png
new file mode 100644
index 0000000..55ea8a9
--- /dev/null
+++ b/res/images/icon/U04_device_STB.png
Binary files differ
diff --git a/res/images/icon/U04_device_TV.png b/res/images/icon/U04_device_TV.png
new file mode 100644
index 0000000..a981577
--- /dev/null
+++ b/res/images/icon/U04_device_TV.png
Binary files differ
diff --git a/res/images/icon/_06_myfiles_list_folder.png b/res/images/icon/_06_myfiles_list_folder.png
deleted file mode 100644
index 52b77ba..0000000
--- a/res/images/icon/_06_myfiles_list_folder.png
+++ /dev/null
Binary files differ
diff --git a/res/images/icon/player_folder_list_icon_dropbox.png b/res/images/icon/player_folder_list_icon_dropbox.png
new file mode 100644
index 0000000..8d932c1
--- /dev/null
+++ b/res/images/icon/player_folder_list_icon_dropbox.png
Binary files differ
diff --git a/res/images/icon/player_folder_list_icon_dropbox_ef.png b/res/images/icon/player_folder_list_icon_dropbox_ef.png
new file mode 100644
index 0000000..994f451
--- /dev/null
+++ b/res/images/icon/player_folder_list_icon_dropbox_ef.png
Binary files differ
diff --git a/res/images/icon/player_folder_list_icon_folder.png b/res/images/icon/player_folder_list_icon_folder.png
new file mode 100644
index 0000000..7c25416
--- /dev/null
+++ b/res/images/icon/player_folder_list_icon_folder.png
Binary files differ
diff --git a/res/images/icon/player_folder_list_icon_folder_ef.png b/res/images/icon/player_folder_list_icon_folder_ef.png
new file mode 100644
index 0000000..1cba630
--- /dev/null
+++ b/res/images/icon/player_folder_list_icon_folder_ef.png
Binary files differ
diff --git a/res/images/mw/T01-2_icon_close.png b/res/images/mw/T01-2_icon_close.png
deleted file mode 100755
index 535503b..0000000
--- a/res/images/mw/T01-2_icon_close.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_icon_full_size.png b/res/images/mw/T01-2_icon_full_size.png
deleted file mode 100755
index 49b535c..0000000
--- a/res/images/mw/T01-2_icon_full_size.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_icon_hide_panel.png b/res/images/mw/T01-2_icon_hide_panel.png
deleted file mode 100755
index df600e1..0000000
--- a/res/images/mw/T01-2_icon_hide_panel.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_icon_open_panel.png b/res/images/mw/T01-2_icon_open_panel.png
deleted file mode 100755
index df473a6..0000000
--- a/res/images/mw/T01-2_icon_open_panel.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_multiscreen_bg.png b/res/images/mw/T01-2_multiscreen_bg.png
deleted file mode 100755
index e509e80..0000000
--- a/res/images/mw/T01-2_multiscreen_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_multiscreen_bg_press.png b/res/images/mw/T01-2_multiscreen_bg_press.png
deleted file mode 100755
index 72463d6..0000000
--- a/res/images/mw/T01-2_multiscreen_bg_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_multiscreen_player_bg.png b/res/images/mw/T01-2_multiscreen_player_bg.png
deleted file mode 100755
index 17b8cc8..0000000
--- a/res/images/mw/T01-2_multiscreen_player_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_FF.png b/res/images/mw/T01-2_player_icon_FF.png
deleted file mode 100755
index c53ca33..0000000
--- a/res/images/mw/T01-2_player_icon_FF.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_FF_press.png b/res/images/mw/T01-2_player_icon_FF_press.png
deleted file mode 100755
index 76fdaee..0000000
--- a/res/images/mw/T01-2_player_icon_FF_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_Pause.png b/res/images/mw/T01-2_player_icon_Pause.png
deleted file mode 100755
index 367d26d..0000000
--- a/res/images/mw/T01-2_player_icon_Pause.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_Pause_press.png b/res/images/mw/T01-2_player_icon_Pause_press.png
deleted file mode 100755
index 65b0d49..0000000
--- a/res/images/mw/T01-2_player_icon_Pause_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_Play.png b/res/images/mw/T01-2_player_icon_Play.png
deleted file mode 100755
index 4ef93d9..0000000
--- a/res/images/mw/T01-2_player_icon_Play.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_Play_press.png b/res/images/mw/T01-2_player_icon_Play_press.png
deleted file mode 100755
index 123bd29..0000000
--- a/res/images/mw/T01-2_player_icon_Play_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_REW.png b/res/images/mw/T01-2_player_icon_REW.png
deleted file mode 100755
index 4ceb469..0000000
--- a/res/images/mw/T01-2_player_icon_REW.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_player_icon_REW_press.png b/res/images/mw/T01-2_player_icon_REW_press.png
deleted file mode 100755
index 82f9b5e..0000000
--- a/res/images/mw/T01-2_player_icon_REW_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_resize_controller.png b/res/images/mw/T01-2_resize_controller.png
deleted file mode 100755
index b1fee34..0000000
--- a/res/images/mw/T01-2_resize_controller.png
+++ /dev/null
Binary files differ
diff --git a/res/images/mw/T01-2_resize_controller_press.png b/res/images/mw/T01-2_resize_controller_press.png
deleted file mode 100755
index 185866b..0000000
--- a/res/images/mw/T01-2_resize_controller_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/navibar_item_separator_shadow.png b/res/images/navibar_item_separator_shadow.png
deleted file mode 100755
index 05d347d..0000000
--- a/res/images/navibar_item_separator_shadow.png
+++ /dev/null
Binary files differ
diff --git a/res/images/naviframe_optionheader.png b/res/images/naviframe_optionheader.png
deleted file mode 100755
index e90f19c..0000000
--- a/res/images/naviframe_optionheader.png
+++ /dev/null
Binary files differ
diff --git a/res/images/naviframe_optionheader_arrow.png b/res/images/naviframe_optionheader_arrow.png
deleted file mode 100755
index de84372..0000000
--- a/res/images/naviframe_optionheader_arrow.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_connection_info.png b/res/images/option/T01-2_icon_controller_connection_info.png
deleted file mode 100755
index ac1beec..0000000
--- a/res/images/option/T01-2_icon_controller_connection_info.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_more.png b/res/images/option/T01-2_icon_controller_more.png
deleted file mode 100755
index 715a23d..0000000
--- a/res/images/option/T01-2_icon_controller_more.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_multiwin.png b/res/images/option/T01-2_icon_controller_multiwin.png
deleted file mode 100755
index abc3dd4..0000000
--- a/res/images/option/T01-2_icon_controller_multiwin.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_repeat_off.png b/res/images/option/T01-2_icon_controller_repeat_off.png
deleted file mode 100755
index 3ab9f18..0000000
--- a/res/images/option/T01-2_icon_controller_repeat_off.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_repeat_on.png b/res/images/option/T01-2_icon_controller_repeat_on.png
deleted file mode 100755
index 42ea4cc..0000000
--- a/res/images/option/T01-2_icon_controller_repeat_on.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_sa.png b/res/images/option/T01-2_icon_controller_sa.png
deleted file mode 100755
index 0619a24..0000000
--- a/res/images/option/T01-2_icon_controller_sa.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_controller_trim.png b/res/images/option/T01-2_icon_controller_trim.png
deleted file mode 100755
index f1e796a..0000000
--- a/res/images/option/T01-2_icon_controller_trim.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_bg.png b/res/images/option/T01-2_icon_function_bg.png
deleted file mode 100755
index 7354c9e..0000000
--- a/res/images/option/T01-2_icon_function_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_bookmark.png b/res/images/option/T01-2_icon_function_bookmark.png
deleted file mode 100755
index 76e182f..0000000
--- a/res/images/option/T01-2_icon_function_bookmark.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_screenmode.png b/res/images/option/T01-2_icon_function_screenmode.png
deleted file mode 100755
index 6c9a5d3..0000000
--- a/res/images/option/T01-2_icon_function_screenmode.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_screenmode02.png b/res/images/option/T01-2_icon_function_screenmode02.png
deleted file mode 100755
index 3a545b6..0000000
--- a/res/images/option/T01-2_icon_function_screenmode02.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_screenmode03.png b/res/images/option/T01-2_icon_function_screenmode03.png
deleted file mode 100755
index 9c001f6..0000000
--- a/res/images/option/T01-2_icon_function_screenmode03.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_select_bg.png b/res/images/option/T01-2_icon_function_select_bg.png
deleted file mode 100755
index 614c426..0000000
--- a/res/images/option/T01-2_icon_function_select_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_share.png b/res/images/option/T01-2_icon_function_share.png
deleted file mode 100755
index 39d8972..0000000
--- a/res/images/option/T01-2_icon_function_share.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_subtitle.png b/res/images/option/T01-2_icon_function_subtitle.png
deleted file mode 100755
index 51207bb..0000000
--- a/res/images/option/T01-2_icon_function_subtitle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/option/T01-2_icon_function_trim.png b/res/images/option/T01-2_icon_function_trim.png
deleted file mode 100755
index 0619696..0000000
--- a/res/images/option/T01-2_icon_function_trim.png
+++ /dev/null
Binary files differ
diff --git a/res/images/org.tizen.video-player.png b/res/images/org.tizen.video-player.png
index 8814085..c7c5875 100755
--- a/res/images/org.tizen.video-player.png
+++ b/res/images/org.tizen.video-player.png
Binary files differ
diff --git a/res/images/org.tizen.videos.png b/res/images/org.tizen.videos.png
new file mode 100755
index 0000000..c7c5875
--- /dev/null
+++ b/res/images/org.tizen.videos.png
Binary files differ
diff --git a/res/images/panel/T01-2_btn_toolbar_back.png b/res/images/panel/T01-2_btn_toolbar_back.png
deleted file mode 100755
index e58ce84..0000000
--- a/res/images/panel/T01-2_btn_toolbar_back.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_btn_toolbar_back_press.png b/res/images/panel/T01-2_btn_toolbar_back_press.png
deleted file mode 100755
index 0852249..0000000
--- a/res/images/panel/T01-2_btn_toolbar_back_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_btn_toolbar_volum.png b/res/images/panel/T01-2_btn_toolbar_volum.png
deleted file mode 100755
index 3e09485..0000000
--- a/res/images/panel/T01-2_btn_toolbar_volum.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_btn_toolbar_volum_press.png b/res/images/panel/T01-2_btn_toolbar_volum_press.png
deleted file mode 100755
index d07e670..0000000
--- a/res/images/panel/T01-2_btn_toolbar_volum_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_btn_toolbar_volume.png b/res/images/panel/T01-2_btn_toolbar_volume.png
deleted file mode 100755
index f7c10e8..0000000
--- a/res/images/panel/T01-2_btn_toolbar_volume.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_controller_progress_bar.png b/res/images/panel/T01-2_controller_progress_bar.png
deleted file mode 100755
index 03f54cf..0000000
--- a/res/images/panel/T01-2_controller_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_controller_progress_bg.png b/res/images/panel/T01-2_controller_progress_bg.png
deleted file mode 100755
index f020771..0000000
--- a/res/images/panel/T01-2_controller_progress_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_icon_controller_repeat.png b/res/images/panel/T01-2_icon_controller_repeat.png
deleted file mode 100755
index e8012e3..0000000
--- a/res/images/panel/T01-2_icon_controller_repeat.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_icon_controller_repeat_1.png b/res/images/panel/T01-2_icon_controller_repeat_1.png
deleted file mode 100755
index 941301f..0000000
--- a/res/images/panel/T01-2_icon_controller_repeat_1.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_icon_controller_repeat_all.png b/res/images/panel/T01-2_icon_controller_repeat_all.png
deleted file mode 100755
index bdd28af..0000000
--- a/res/images/panel/T01-2_icon_controller_repeat_all.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_icon_controller_sa.png b/res/images/panel/T01-2_icon_controller_sa.png
deleted file mode 100755
index 3b6b488..0000000
--- a/res/images/panel/T01-2_icon_controller_sa.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_icon_toolbar_cancel.png b/res/images/panel/T01-2_icon_toolbar_cancel.png
deleted file mode 100755
index 5cb7824..0000000
--- a/res/images/panel/T01-2_icon_toolbar_cancel.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T01-2_icon_toolbar_done.png b/res/images/panel/T01-2_icon_toolbar_done.png
deleted file mode 100755
index 46304a4..0000000
--- a/res/images/panel/T01-2_icon_toolbar_done.png
+++ /dev/null
Binary files differ
diff --git a/res/images/panel/T02_volume_icon_Mute.png b/res/images/panel/T02_volume_icon_Mute.png
deleted file mode 100755
index 2918312..0000000
--- a/res/images/panel/T02_volume_icon_Mute.png
+++ /dev/null
Binary files differ
diff --git a/res/images/player_library_list_thumbnail_default.png b/res/images/player_library_list_thumbnail_default.png
new file mode 100644
index 0000000..b1a672d
--- /dev/null
+++ b/res/images/player_library_list_thumbnail_default.png
Binary files differ
diff --git a/res/images/subtitle/T01-2_sync_btn_bg.png b/res/images/subtitle/T01-2_sync_btn_bg.png
deleted file mode 100755
index a7a8fd0..0000000
--- a/res/images/subtitle/T01-2_sync_btn_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/subtitle/T01-2_sync_faster.png b/res/images/subtitle/T01-2_sync_faster.png
deleted file mode 100755
index 44cb065..0000000
--- a/res/images/subtitle/T01-2_sync_faster.png
+++ /dev/null
Binary files differ
diff --git a/res/images/subtitle/T01-2_sync_list_press.png b/res/images/subtitle/T01-2_sync_list_press.png
deleted file mode 100755
index f252cc3..0000000
--- a/res/images/subtitle/T01-2_sync_list_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/subtitle/T01-2_sync_slowly.png b/res/images/subtitle/T01-2_sync_slowly.png
deleted file mode 100755
index 92b43e6..0000000
--- a/res/images/subtitle/T01-2_sync_slowly.png
+++ /dev/null
Binary files differ
diff --git a/res/images/title_line_top_video.png b/res/images/title_line_top_video.png
new file mode 100755
index 0000000..1de6f49
--- /dev/null
+++ b/res/images/title_line_top_video.png
Binary files differ
diff --git a/res/images/toolbar/T01-2_btn_toolbar_back.png b/res/images/toolbar/T01-2_btn_toolbar_back.png
index e58ce84..995afaf 100755..100644
--- a/res/images/toolbar/T01-2_btn_toolbar_back.png
+++ b/res/images/toolbar/T01-2_btn_toolbar_back.png
Binary files differ
diff --git a/res/images/toolbar/T01-2_btn_toolbar_volum.png b/res/images/toolbar/T01-2_btn_toolbar_volum.png
deleted file mode 100755
index 3e09485..0000000
--- a/res/images/toolbar/T01-2_btn_toolbar_volum.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T01-2_btn_toolbar_volume.png b/res/images/toolbar/T01-2_btn_toolbar_volume.png
deleted file mode 100755
index f7c10e8..0000000
--- a/res/images/toolbar/T01-2_btn_toolbar_volume.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_folder.png b/res/images/toolbar/T01-2_controlbar_icon_folder.png
deleted file mode 100644
index 53500ff..0000000
--- a/res/images/toolbar/T01-2_controlbar_icon_folder.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_near_device.png b/res/images/toolbar/T01-2_controlbar_icon_near_device.png
deleted file mode 100644
index 0520970..0000000
--- a/res/images/toolbar/T01-2_controlbar_icon_near_device.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_recorded.png b/res/images/toolbar/T01-2_controlbar_icon_recorded.png
index 0717057..2d74180 100644
--- a/res/images/toolbar/T01-2_controlbar_icon_recorded.png
+++ b/res/images/toolbar/T01-2_controlbar_icon_recorded.png
Binary files differ
diff --git a/res/images/toolbar/T01-2_controlbar_icon_video.png b/res/images/toolbar/T01-2_controlbar_icon_video.png
index da41533..a9cc464 100644
--- a/res/images/toolbar/T01-2_controlbar_icon_video.png
+++ b/res/images/toolbar/T01-2_controlbar_icon_video.png
Binary files differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_cancel.png b/res/images/toolbar/T01-2_icon_toolbar_cancel.png
index 5cb7824..7fbe2e0 100755..100644
--- a/res/images/toolbar/T01-2_icon_toolbar_cancel.png
+++ b/res/images/toolbar/T01-2_icon_toolbar_cancel.png
Binary files differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_delete.png b/res/images/toolbar/T01-2_icon_toolbar_delete.png
deleted file mode 100755
index 757aee3..0000000
--- a/res/images/toolbar/T01-2_icon_toolbar_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_done.png b/res/images/toolbar/T01-2_icon_toolbar_done.png
index 46304a4..6bd6608 100755..100644
--- a/res/images/toolbar/T01-2_icon_toolbar_done.png
+++ b/res/images/toolbar/T01-2_icon_toolbar_done.png
Binary files differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_setting.png b/res/images/toolbar/T01-2_icon_toolbar_setting.png
deleted file mode 100644
index 4dcd409..0000000
--- a/res/images/toolbar/T01-2_icon_toolbar_setting.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T01-2_icon_toolbar_sort_by.png b/res/images/toolbar/T01-2_icon_toolbar_sort_by.png
deleted file mode 100644
index e252d2b..0000000
--- a/res/images/toolbar/T01-2_icon_toolbar_sort_by.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T02_controlbar_icon_search.png b/res/images/toolbar/T02_controlbar_icon_search.png
deleted file mode 100755
index e748043..0000000
--- a/res/images/toolbar/T02_controlbar_icon_search.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/T02_volume_icon_Mute.png b/res/images/toolbar/T02_volume_icon_Mute.png
deleted file mode 100755
index 2918312..0000000
--- a/res/images/toolbar/T02_volume_icon_Mute.png
+++ /dev/null
Binary files differ
diff --git a/res/images/toolbar/icon_delete.png b/res/images/toolbar/icon_delete.png
new file mode 100755
index 0000000..c7e7719
--- /dev/null
+++ b/res/images/toolbar/icon_delete.png
Binary files differ
diff --git a/res/images/toolbar/icon_download.png b/res/images/toolbar/icon_download.png
new file mode 100755
index 0000000..ceb91db
--- /dev/null
+++ b/res/images/toolbar/icon_download.png
Binary files differ
diff --git a/res/images/toolbar/icon_nearbydevices.png b/res/images/toolbar/icon_nearbydevices.png
new file mode 100755
index 0000000..1611c96
--- /dev/null
+++ b/res/images/toolbar/icon_nearbydevices.png
Binary files differ
diff --git a/res/images/toolbar/icon_refresh.png b/res/images/toolbar/icon_refresh.png
new file mode 100755
index 0000000..2c75e64
--- /dev/null
+++ b/res/images/toolbar/icon_refresh.png
Binary files differ
diff --git a/res/images/toolbar/icon_share_via.png b/res/images/toolbar/icon_share_via.png
new file mode 100755
index 0000000..eb9bc07
--- /dev/null
+++ b/res/images/toolbar/icon_share_via.png
Binary files differ
diff --git a/res/images/toolbar/icon_signin.png b/res/images/toolbar/icon_signin.png
new file mode 100644
index 0000000..8d2df75
--- /dev/null
+++ b/res/images/toolbar/icon_signin.png
Binary files differ
diff --git a/res/images/toolbar/icon_sort_by.png b/res/images/toolbar/icon_sort_by.png
new file mode 100755
index 0000000..595fdf5
--- /dev/null
+++ b/res/images/toolbar/icon_sort_by.png
Binary files differ
diff --git a/res/images/toolbar/icon_view_as.png b/res/images/toolbar/icon_view_as.png
new file mode 100755
index 0000000..cfc0b77
--- /dev/null
+++ b/res/images/toolbar/icon_view_as.png
Binary files differ
diff --git a/res/images/toolbar/more_button_icon_add_to_your_personal_storage.png b/res/images/toolbar/more_button_icon_add_to_your_personal_storage.png
new file mode 100755
index 0000000..c41cf8c
--- /dev/null
+++ b/res/images/toolbar/more_button_icon_add_to_your_personal_storage.png
Binary files differ
diff --git a/res/images/toolbar/more_button_icon_remove_from_your_personal_storage.png b/res/images/toolbar/more_button_icon_remove_from_your_personal_storage.png
new file mode 100755
index 0000000..d33fa44
--- /dev/null
+++ b/res/images/toolbar/more_button_icon_remove_from_your_personal_storage.png
Binary files differ
diff --git a/res/images/trim/T01-2_controller_track_ball.png b/res/images/trim/T01-2_controller_track_ball.png
deleted file mode 100755
index 0f92633..0000000
--- a/res/images/trim/T01-2_controller_track_ball.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_beginning.png b/res/images/trim/T01-2_controller_trimming_handle_beginning.png
deleted file mode 100755
index 46dbb93..0000000
--- a/res/images/trim/T01-2_controller_trimming_handle_beginning.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png b/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png
deleted file mode 100755
index f610a78..0000000
--- a/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending.png b/res/images/trim/T01-2_controller_trimming_handle_ending.png
deleted file mode 100755
index 3984517..0000000
--- a/res/images/trim/T01-2_controller_trimming_handle_ending.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending_press.png b/res/images/trim/T01-2_controller_trimming_handle_ending_press.png
deleted file mode 100755
index bae372a..0000000
--- a/res/images/trim/T01-2_controller_trimming_handle_ending_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/T01-2_icon_toolbar_forward.png b/res/images/trim/T01-2_icon_toolbar_forward.png
deleted file mode 100755
index a6aaf21..0000000
--- a/res/images/trim/T01-2_icon_toolbar_forward.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/T01-2_icon_toolbar_reverse.png b/res/images/trim/T01-2_icon_toolbar_reverse.png
deleted file mode 100755
index 6b9d2d8..0000000
--- a/res/images/trim/T01-2_icon_toolbar_reverse.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_fastforward_1x.png b/res/images/trim/gallery_video_fastforward_1x.png
deleted file mode 100755
index c1ea6b1..0000000
--- a/res/images/trim/gallery_video_fastforward_1x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_fastforward_2x.png b/res/images/trim/gallery_video_fastforward_2x.png
deleted file mode 100755
index ea0486c..0000000
--- a/res/images/trim/gallery_video_fastforward_2x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_fastforward_3x.png b/res/images/trim/gallery_video_fastforward_3x.png
deleted file mode 100755
index 6e16eff..0000000
--- a/res/images/trim/gallery_video_fastforward_3x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_fastforward_4x.png b/res/images/trim/gallery_video_fastforward_4x.png
deleted file mode 100755
index a1eeacb..0000000
--- a/res/images/trim/gallery_video_fastforward_4x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_rewind_1x.png b/res/images/trim/gallery_video_rewind_1x.png
deleted file mode 100755
index 31f3696..0000000
--- a/res/images/trim/gallery_video_rewind_1x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_rewind_2x.png b/res/images/trim/gallery_video_rewind_2x.png
deleted file mode 100755
index 17c17c9..0000000
--- a/res/images/trim/gallery_video_rewind_2x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_rewind_3x.png b/res/images/trim/gallery_video_rewind_3x.png
deleted file mode 100755
index badb983..0000000
--- a/res/images/trim/gallery_video_rewind_3x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/trim/gallery_video_rewind_4x.png b/res/images/trim/gallery_video_rewind_4x.png
deleted file mode 100755
index a855514..0000000
--- a/res/images/trim/gallery_video_rewind_4x.png
+++ /dev/null
Binary files differ
diff --git a/res/images/turn_over/B15_turn_over_01.png b/res/images/turn_over/B15_turn_over_01.png
new file mode 100644
index 0000000..2bc3166
--- /dev/null
+++ b/res/images/turn_over/B15_turn_over_01.png
Binary files differ
diff --git a/res/images/turn_over/B15_turn_over_02.png b/res/images/turn_over/B15_turn_over_02.png
new file mode 100644
index 0000000..d8d7c84
--- /dev/null
+++ b/res/images/turn_over/B15_turn_over_02.png
Binary files differ
diff --git a/res/images/turn_over/B15_turn_over_03.png b/res/images/turn_over/B15_turn_over_03.png
new file mode 100644
index 0000000..81481d8
--- /dev/null
+++ b/res/images/turn_over/B15_turn_over_03.png
Binary files differ
diff --git a/res/images/video_preview.png b/res/images/video_preview.png
new file mode 100644
index 0000000..0bb31ab
--- /dev/null
+++ b/res/images/video_preview.png
Binary files differ
diff --git a/res/images/video_preview_l.png b/res/images/video_preview_l.png
new file mode 100644
index 0000000..6b1b6c6
--- /dev/null
+++ b/res/images/video_preview_l.png
Binary files differ
diff --git a/res/images/video_sound_path_dim.png b/res/images/video_sound_path_dim.png
deleted file mode 100755
index 02b5867..0000000
--- a/res/images/video_sound_path_dim.png
+++ /dev/null
Binary files differ
diff --git a/res/images/volume/T01-2_player_progress_bar.png b/res/images/volume/T01-2_player_progress_bar.png
deleted file mode 100755
index 00d960c..0000000
--- a/res/images/volume/T01-2_player_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/res/images/volume/T01-2_player_progress_bg.png b/res/images/volume/T01-2_player_progress_bg.png
deleted file mode 100755
index a9a629a..0000000
--- a/res/images/volume/T01-2_player_progress_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/volume/T01-2_player_volume_handle.png b/res/images/volume/T01-2_player_volume_handle.png
deleted file mode 100755
index a5bb976..0000000
--- a/res/images/volume/T01-2_player_volume_handle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/volume/T01-2_player_volume_handle_press.png b/res/images/volume/T01-2_player_volume_handle_press.png
deleted file mode 100755
index 598fb63..0000000
--- a/res/images/volume/T01-2_player_volume_handle_press.png
+++ /dev/null
Binary files differ
diff --git a/res/images/volume/T01-2_volume_icon_01.png b/res/images/volume/T01-2_volume_icon_01.png
deleted file mode 100755
index da5bf5d..0000000
--- a/res/images/volume/T01-2_volume_icon_01.png
+++ /dev/null
Binary files differ
diff --git a/res/images/volume/T01-2_volume_icon_02.png b/res/images/volume/T01-2_volume_icon_02.png
deleted file mode 100755
index 8020ecb..0000000
--- a/res/images/volume/T01-2_volume_icon_02.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/00_button_01.png b/res/images/white/common/00_button_01.png
new file mode 100755
index 0000000..66044c9
--- /dev/null
+++ b/res/images/white/common/00_button_01.png
Binary files differ
diff --git a/res/images/white/common/00_button_01_press.png b/res/images/white/common/00_button_01_press.png
new file mode 100755
index 0000000..ef77037
--- /dev/null
+++ b/res/images/white/common/00_button_01_press.png
Binary files differ
diff --git a/res/images/white/common/00_popup_bubble_bg.png b/res/images/white/common/00_popup_bubble_bg.png
index 11b536d..cacc248 100755..100644
--- a/res/images/white/common/00_popup_bubble_bg.png
+++ b/res/images/white/common/00_popup_bubble_bg.png
Binary files differ
diff --git a/res/images/white/common/00_popup_scroll.9.png b/res/images/white/common/00_popup_scroll.9.png
new file mode 100755
index 0000000..59fa0ff
--- /dev/null
+++ b/res/images/white/common/00_popup_scroll.9.png
Binary files differ
diff --git a/res/images/white/common/00_winset_control_top_arrow.png b/res/images/white/common/00_winset_control_top_arrow.png
deleted file mode 100755
index 2d0503d..0000000
--- a/res/images/white/common/00_winset_control_top_arrow.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/00_winset_control_top_bg.png b/res/images/white/common/00_winset_control_top_bg.png
deleted file mode 100755
index 187516e..0000000
--- a/res/images/white/common/00_winset_control_top_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/00_winset_title_line.png b/res/images/white/common/00_winset_title_line.png
deleted file mode 100755
index 2be73aa..0000000
--- a/res/images/white/common/00_winset_title_line.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_bg.png b/res/images/white/common/T01-2_popup_bg.png
index aa3a361..3ff02f1 100755..100644
--- a/res/images/white/common/T01-2_popup_bg.png
+++ b/res/images/white/common/T01-2_popup_bg.png
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_btn_bg.png b/res/images/white/common/T01-2_popup_btn_bg.png
deleted file mode 100755
index e86b399..0000000
--- a/res/images/white/common/T01-2_popup_btn_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_btn_bg2.9.png b/res/images/white/common/T01-2_popup_btn_bg2.9.png
deleted file mode 100755
index 53427eb..0000000
--- a/res/images/white/common/T01-2_popup_btn_bg2.9.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_btn_normal.png b/res/images/white/common/T01-2_popup_btn_normal.png
deleted file mode 100755
index c4be89a..0000000
--- a/res/images/white/common/T01-2_popup_btn_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_btn_press_bottom.png b/res/images/white/common/T01-2_popup_btn_press_bottom.png
deleted file mode 100755
index c62a838..0000000
--- a/res/images/white/common/T01-2_popup_btn_press_bottom.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_btn_press_middle.png b/res/images/white/common/T01-2_popup_btn_press_middle.png
deleted file mode 100755
index f60efb0..0000000
--- a/res/images/white/common/T01-2_popup_btn_press_middle.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_btn_press_top.png b/res/images/white/common/T01-2_popup_btn_press_top.png
deleted file mode 100755
index 6da7da9..0000000
--- a/res/images/white/common/T01-2_popup_btn_press_top.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_popup_divider.png b/res/images/white/common/T01-2_popup_divider.png
deleted file mode 100755
index 16ceb28..0000000
--- a/res/images/white/common/T01-2_popup_divider.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_title_btn_bg.png b/res/images/white/common/T01-2_title_btn_bg.png
deleted file mode 100755
index fe53ace..0000000
--- a/res/images/white/common/T01-2_title_btn_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_title_btn_bg_press_01.png b/res/images/white/common/T01-2_title_btn_bg_press_01.png
deleted file mode 100755
index c74d762..0000000
--- a/res/images/white/common/T01-2_title_btn_bg_press_01.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/common/T01-2_title_btn_bg_press_02.png b/res/images/white/common/T01-2_title_btn_bg_press_02.png
deleted file mode 100755
index 4c56281..0000000
--- a/res/images/white/common/T01-2_title_btn_bg_press_02.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_next.png b/res/images/white/control/T01-2_icon_toolbar_next.png
deleted file mode 100755
index 413b481..0000000
--- a/res/images/white/control/T01-2_icon_toolbar_next.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_pause.png b/res/images/white/control/T01-2_icon_toolbar_pause.png
deleted file mode 100755
index cd95fae..0000000
--- a/res/images/white/control/T01-2_icon_toolbar_pause.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_play.png b/res/images/white/control/T01-2_icon_toolbar_play.png
deleted file mode 100755
index e939a59..0000000
--- a/res/images/white/control/T01-2_icon_toolbar_play.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_previous.png b/res/images/white/control/T01-2_icon_toolbar_previous.png
deleted file mode 100755
index c57dd54..0000000
--- a/res/images/white/control/T01-2_icon_toolbar_previous.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/control/T01-2_icon_toolbar_stop.png b/res/images/white/control/T01-2_icon_toolbar_stop.png
deleted file mode 100755
index d2ce746..0000000
--- a/res/images/white/control/T01-2_icon_toolbar_stop.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/panel/T01-2_btn_toolbar_back.png b/res/images/white/panel/T01-2_btn_toolbar_back.png
deleted file mode 100755
index e58ce84..0000000
--- a/res/images/white/panel/T01-2_btn_toolbar_back.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/panel/T01-2_btn_toolbar_volume.png b/res/images/white/panel/T01-2_btn_toolbar_volume.png
deleted file mode 100755
index f7c10e8..0000000
--- a/res/images/white/panel/T01-2_btn_toolbar_volume.png
+++ /dev/null
Binary files differ
diff --git a/res/images/white/panel/T02_volume_icon_Mute.png b/res/images/white/panel/T02_volume_icon_Mute.png
deleted file mode 100755
index 2918312..0000000
--- a/res/images/white/panel/T02_volume_icon_Mute.png
+++ /dev/null
Binary files differ
diff --git a/res/po/CMakeLists.txt b/res/po/CMakeLists.txt
index 407cb2b..07058e3 100755
--- a/res/po/CMakeLists.txt
+++ b/res/po/CMakeLists.txt
@@ -1,6 +1,10 @@
# 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(POFILES ar.po az.po bg.po ca.po cs.po da.po de.po el_GR.po en_PH.po en.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr_CA.po
+fr.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl.po pl.po pt_BR.po
+pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_TW.po)
+
+
SET(MSGFMT "/usr/bin/msgfmt")
FOREACH(pofile ${POFILES})
diff --git a/res/po/POTFILES.in b/res/po/POTFILES.in
deleted file mode 100755
index eb1a31e..0000000
--- a/res/po/POTFILES.in
+++ /dev/null
@@ -1,2 +0,0 @@
-# List of source files containing translatable strings.
-PlayViewCtrl.c
diff --git a/res/po/ar.po b/res/po/ar.po
new file mode 100755
index 0000000..62bbd8e
--- /dev/null
+++ b/res/po/ar.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "تنزيل"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "سيتم تنزيل مجلد واحد."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "سيتم تنزيل فيديو واحد."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "سيتم تنزيل كل المجلدات."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "سيتم تنزيل كل مقاطع الفيديو."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "سيتم تنزيل %d من المجلدات."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "سيتم تنزيل %d من مقاطع الفيديو."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "تم إيقاف تشغيل بيانات الهاتف المحمول. بدلاً من ذلك، اتصل بشبكة Wi-Fi، أو شغّل بيانات الهاتف المحمول وحاول مرة أخرى."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "خاص"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "ب."
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "ج.ب"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "ك.ب"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "الموقع"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "م.ب"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "غير معروف"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "موافق"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "مجلد واحد"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "مقطع فيديو واحد"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "الكل"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "من الجهاز"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "من Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "آخر تعديل"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "المحتوى المطلوب عرضه"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "البحث"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "مشاركة"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "سيتم حذف مجلد واحد."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "جارٍ الحذف..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "سيتم عرض مقاطع فيديو التي تم تسجيلها باستخدام الكاميرا هنا."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d مقاطع فيديو"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "فيديو"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "ما من مقاطع فيديو"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "التفاصيل"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "المجلد"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "اللائحة"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "مضاف مؤخرا"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "تمت مشاهدتها مؤخراً"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "تغيير الاسم"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "الحجم"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "فرز حسب"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "العنوان"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "النوع"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "عرض كـ"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "سيتم حذف جميع مقاطع الفيديو."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "سيتم حذف %d مجلدات."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "سيتم حذف %d مقاطع فيديو."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "سيتم حذف هذا المجلد."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "مجلدات %d"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "الضبط"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "يتعذر تشغيل الفيديو"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "محاذاة"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "حجم الخط"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "ضبط التكرار"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "العناوين الفرعية (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "سيتم حذف كل المجلدات."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "وسط"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "كبير"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "إلى اليسار"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "متوسطة"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "إلى اليمين"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "صغير"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "اسم الملف مستخدم بالفعل"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "إزالة من الخاص"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "نقل إلى الخاص"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "المدخل خالي."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "تنسيق"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "يتعذر تشغيل الصوت أثناء المكالمة."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "هذا الملف غير متاح أثناء عدم الاتصال الشبكة. تحقق من اتصال الشبكة وحاول مرة أخرى."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "سيتم نقل العنصر المحدد إلى %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "سيتم نقل العناصر المحددة إلى %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "جاري الحذف..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "جاري النقل..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "فشل النقل إلى التخزين الشخصي."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "فشل النقل إلى التخزين العادي."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "الرسالة"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "مجلدات"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "بريد إلكتروني"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "التاريخ (الأحدث)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "تم تحديد %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "حذف مقاطع الفيديو"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "حذف مقطع الفيديو"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "نقل"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "خط الطول"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "المدى"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "بعد تسجيل مقاطع فيديو باستخدام الكاميرا، سيتم عرض مقاطع الفيديو"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "إلغاء"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "بعد إيقاف الكل"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "تكرار الحالية"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "تكرار الكل"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "الدقة"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "حذف"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "مسح الكل"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "هذا الملف يعتمد بيانات الصوت فقط. تشغيل الصوت الآن."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "هذا الملف يعتمد بيانات الفيديو فقط. تشغيل الفيديو الآن."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "إعادة تسمية"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "سماعات رأس"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "تنزيل"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "غير مفعل"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "مفعل"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "سيتم حذف مقطع فيديو واحد."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "حرف غير صالح"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "لا توجد نتائج للبحث"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "تحديد"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "آخر تعديل"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "تم"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "التاريخ"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "المدى"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "الاسم"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "الاسم (من أ إلى ي)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "الفيديو"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "تم تجاوز الحد الأقصى لعدد المرفقات (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "تحديد الكل"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "وحدة تخزين الجهاز"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "بطاقة SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "مشاركة عبر"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "حدث خطأ في الشبكة. حاول مرة أخرى."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "تشغيل التالي تلقائيا"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "جاري المعالجة..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "تم بلوغ الحد الأقصى لعدد الأحرف."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "حذف"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "مسح الكل"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "لا يوجد نتيجة للبحث"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "اختيار عنصر"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "تحديد العناصر"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "إلغاء"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "تم"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "إلغاء"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "حذف"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "موقع التخزين"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "تحديد الفيديو"
+
diff --git a/res/po/az.po b/res/po/az.po
new file mode 100755
index 0000000..0b05e4e
--- /dev/null
+++ b/res/po/az.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Yüklə"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 qovluq yüklənəcək."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video yüklənəcək."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Bütün qovluqlar yüklənəcək."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Bütün videolar yüklənəcək."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d qovluq yüklənəcək."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d video yüklənəcək."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobil tarif söndürüldü. Əvəzinə Wi-Fi şəbəkəsinə qoşulun və ya Mobil tarifi aktivləşdirin və yenidən cəhd edin."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Şəxsi"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "QB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Yeri"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Naməlum"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 qovluq"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Hamısını"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Cihazdan"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox-dan"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Son dəyişmə"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Göstərmək üçün məzmun"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Axtar"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 qovluq silinəcək."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Silinir..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kamera vasitəsilə videoları çəkdikdən sonra onlar burada görünəcək."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d video"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Video yoxdur"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Təfsilatlar"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Qovluq"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Siyahı"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Son əlavələr"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Bu yaxınlarda baxılmış"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Adını dəyişdir"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Ölçü"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Çeşidlə"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Başlıq"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Növ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Fərqli bax"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Bütün videolar silinəcək."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d qovluq silinəcək."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d video silinəcək."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Bu qovluq silinəcək."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d qovluq"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Parametrlər"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videonu göstərmək mümkün deyil"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Nizamlama"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Şriftin ölçüsü"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Parametri təkrarla"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Yarım başlıqlar (bağlı)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Bütün qovluqlar silinəcək."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Mərkəz"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Böyük"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Sol"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Orta"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Sağ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Kiçik"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Fayl adı artıq istifadədədir"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Şəxsi rejimdən sil"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Şəxsiyə köçür"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Boş qeyd."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Zəng zamanı videonu göstərmək mümkün deyildir."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Bu fayl oflayn mümkün deyil. Şəbəkə bağlantısını yoxlayın və yenidən cəhd edin"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Seçilən element %s-a köçürüləcəkdir."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Seçilən elementlər %s-a köçürüləcəkdir."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Silinir..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Göndərilmə..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Fərdi yaddaşa köçürmək mümkün olmadı."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Normal yaddaşa köçürmək mümkün olmadı."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mesaj"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Qovluqlar"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Epoçt"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Tarix (ən son)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seçilmişdir"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Videoları sil"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Videonu sil"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Köçür"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Uzunluq"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "En"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Kamera vasitəsilə videoları çəkdikdən sonra videolar göstəriləcək."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Ləğv et"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Bitəndə dayandır"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "İndikini təkrarla"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Hamısını təkrarla"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolyusiya"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Sil"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Hamısı silindi"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Bu fayl yalnız audio məlumatı dəstəkləyir. İndi səsləndirilən audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Bu fayl yalnız video məlumatı dəstəkləyir. İndi görüntülənən video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Adını dəyiş"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Qulaqlıqlar"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Yükləyin"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Söndür"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Qoş"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video silinəcək."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Yalnış simvol"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Axtarış nəticəsi yoxdur"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seç"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Son dəyişdirilmə"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Tamam"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Tarix"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "En"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ad"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Ad (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Qoşmaların sayı maksimumu (%d) keçmişdir."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Hamısını seç"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Cihazın yaddaşı"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD kart"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Paylaş"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Şəbəkə xətası baş verdi. Yenidən cəhd edin."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Növbətini avto-göstər"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Emal edilir..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Simvolların sayı maksimuma çatıb."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Hamısı silindi"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Axtarış nəticəsi yoxdur"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Element seç"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Elementləri seç"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Ləğv et"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HAZIR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "LƏĞV ET"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SİL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Yaddaş yeri"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Video seçin"
+
diff --git a/res/po/bg.po b/res/po/bg.po
new file mode 100755
index 0000000..edbee8d
--- /dev/null
+++ b/res/po/bg.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Изтегляне"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 папка ще бъде изтеглена."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 видео ще бъде изтеглено."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Всички папки ще бъдат изтеглени."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Всички видеоклипове ще бъдат изтеглени."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d папки ще бъдат изтеглени."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d видеоклипа ще бъдат изтеглени."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Мобилните данни са изключени. Вместо това се свържете към Wi-Fi мрежа или включете мобилните данни и опитайте отново."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Лична"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Позиция"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Няма информация"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 папка"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 видео"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Всички"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "От устройството"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "От Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Последна промяна"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Съдържание за показване"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Търсене"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Споделяне"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 папка ще бъде изтрита."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Изтриване..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "След като заснемете видеоклипове с камерата, те ще се покажат тук."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d клипа"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Видеоклип"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Няма видео"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Детайли"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Папка"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Списък"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Последно добавени"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Последно разглеждани"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Преименуване"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Размер"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Сортиране по"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Заглавие"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Тип"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Преглед като"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Всички видеоклипове ще бъдат изтрити."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d папки ще бъдат изтрити."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d видеоклипа ще бъдат изтрити."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Тази папка ще бъде изтрита."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d папки"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Не може да се възпр. видео"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Подравняване"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Р-р шрифт"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Настройка за повторение"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитри (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Всички папки ще бъдат изтрити."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Център"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Голям"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Отляво"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Средно"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Отдясно"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Малък"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Името на файла вече се използва."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Премахване от Лични"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Преместване в Лична"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Празен запис"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Не може да се възпроизвежда видео по време на разговор."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Този файл е недостъпен офлайн. Проверете връзката с мрежата и опитайте отново."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Избраният елемент ще бъде преместен в %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Избраните елементи ще бъдат преместени в %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Премахване..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Преместване"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Преместването в персоналното място за съхранение е неуспешно."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Преместването в стандартното място за съхранение е неуспешно."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Съобщ-ие"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Папки"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Имейл"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Дата (най-нови)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d избрани"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Изтриване клипове"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Изтриване на видео"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Преместване"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Геогр. дължина"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Геогр. ширина"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "След като заснемете клипове с камерата, те ще се покажат."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Отказ"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Спри след всички"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повтаряне на текущо"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторение на всички"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Разделителна способност"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Изтрий"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Изтриване на всички"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Само аудио данни, поддържани от този файл. В момента се възпроизвежда аудио."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Само видео данни, поддържани от този файл. В момента се възпроизвежда видео."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Преименуване"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Слушалки"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Изтегли"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Изключено"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Включено"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Ще бъде изтрит 1 видеоклип."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Невалиден знак"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Няма резултати от търсенето"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Избор"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Последна промяна"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Дата"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Геогр. ширина"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Име"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Име (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Видеоклипове"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Максималният брой на прикачени файлове (%d) е надвишен."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Избор на всичко"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Памет на устройството"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD карта"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Споделяне с"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Възникна мрежова грешка. Опитайте отново."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Авт. възпр. следващ"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Обработване..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Достигнат е максималният брой символи."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Изтриване"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Изтриване на всички"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Няма резултати"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Изберете елемент"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Изберете елементи"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Отказ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ОТКАЗ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ИЗТРИВАНЕ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Място за съхранение"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Избор на видео"
+
diff --git a/res/po/ca.po b/res/po/ca.po
new file mode 100755
index 0000000..9ad6c16
--- /dev/null
+++ b/res/po/ca.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Descarregar"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Es descarregarà 1 carpeta."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Es descarregarà 1 vídeo."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Es descarregaran totes les carpetes."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Es descarregaran tots els vídeos."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Es descarregaran %d carpetes."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Es descarregaran %d vídeos."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Dades mòbils desactivades. Connecti's a una xarxa Wi-Fi o activi les dades mòbils i torni-ho a intentar."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privat"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Ubicació"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Desconegut"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Acceptar"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 carpeta"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vídeo"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Tot"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Des del dispositiu"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Des de Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Última modificació"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contingut per mostrar"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Cercar"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "S'esborrarà 1 carpeta."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Esborrant..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Després de gravar vídeos amb la càmera, es mostraran aquí."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vídeos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vídeo"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "No hi ha vídeos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalls"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Carpeta"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Llista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Afegits fa poc"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Vist fa poc"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Canviar nom"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Mida"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ordenar per"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Títol"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipus"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Veure com a"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "S'esborraran tots els vídeos"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "S'esborraran %d carpetes"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "S'esborraran %d vídeos"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "S'esborrarà aquesta carpeta"
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d carpetes"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ajustaments"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "No es pot reproduir el vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alineació"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Mida font"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir ajustament"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítols"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "S'esborraran totes les carpetes"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Gran"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mitjana"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dreta"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Petita"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "El nom de fitxer està en ús."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Esborrar de Privat"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Moure a Privat"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "L'entrada és buida"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No es pot reproduir un vídeo durant una trucada"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Aquest fitxer no està disponible quan està desconnectat. Comprovi la connexió de xarxa i torni-ho a intentar."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "L'element seleccionat es mourà a %s"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Els elements seleccionats es mouran a %s"
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Eliminant..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Movent..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Error en moure a l'emmagatzematge personal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Error en moure a l'emmagatzematge normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Missatge"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Carpetes"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correu elec"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (més recents)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seleccionat"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Esborrar vídeos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Esborrar vídeo"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Moure"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Després de gravar vídeos amb la càmera, es mostraran els vídeos"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Aturar després tot"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir tot"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolució"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Esborr"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Esborrar tot"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Aquest fitxer només admet dades d'àudio. Ara està reproduint àudio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Aquest fitxer només admet dades de vídeo. Ara està reproduint vídeo."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Canviar nom"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auriculars"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descarregar"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desactivat"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Activat"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "S'esborrarà 1 vídeo."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Caràcter no vàlids"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "No hi ha cap resultat de cerca"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seleccionar"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Última modificació"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Fet"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nom (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vídeos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "S'ha excedit el nombre màxim d'adjunts (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Seleccionar tot"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Emmagatzematge de dispositiu"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Targeta SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir mitjançant"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "S'ha produït un error de xarxa. Torni a intentar-ho."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Rep. aut. següent"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Processant..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "S'ha assolit el nombre màxim de caràcters."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Esborrar"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Esborrar tot"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "No hi ha resultats de cerca"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Seleccionar element"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Seleccionar elements"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "REALITZAT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL·LAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ESBORRAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Ubicació d'emmagatzematge"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Seleccionar vídeo"
+
diff --git a/res/po/cs.po b/res/po/cs.po
new file mode 100755
index 0000000..1cd9f70
--- /dev/null
+++ b/res/po/cs.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Stáhnout"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Bude stažena 1 složka."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Bude staženo 1 video."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Budou staženy všechny složky."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Budou stažena všechna videa."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Bude staženo %d složek."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Bude staženo %d videí."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobilní data jsou vypnutá. Připojte se k síti Wi-Fi nebo zapněte Mobilní data a opakujte akci."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Soukromé"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Místo"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Neznámé"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 složka"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Vše"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Ze zařízení"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Z Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Naposledy změněno"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Obsah k zobrazení"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Hledat"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Sdílet"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 složka bude odstraněna."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Odstraňování..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Až nahrajete videa pomocí fotoaparátu, zobrazí se zde."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videoklipů"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Žádná videa"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Složka"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Seznam"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Posl. přidané"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Poslední zobrazené"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Přejmenovat"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Velikost"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Seřadit podle"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Název"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Typ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Zobrazit jako"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Budou odstraněny všechny videoklipy."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Bude odstraněno %d složek."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Bude odstraněno %d videoklipů."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Složka bude odstraněna."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "Počet složek: %d"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nastavení"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Video nelze přehrát"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Zarovnání"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Velikost písma"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Nastavení opakování"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Budou odstraněny všechny složky."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Na střed"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velké"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Doleva"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Střední"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Doprava"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Malé"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Název souboru je již použit."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Odebrat ze složky Soukromé"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Přesunout do složky Soukromé"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Prázdná položka."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formát"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Během hovoru nelze přehrát videoklip."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Soubor není v režimu offline dostupný. Zkontrolujte připojení k síti a opakujte akci."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Vybraná položka bude přesunuta do %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Vybrané položky budou přesunuty do %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Odebírání..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Probíhá přesouvání"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Nepodařilo se přesunout video do osobního úložiště."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Nepodařilo se přesunout video do normálního úložiště."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Zpráva"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Složky"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (nejnovější)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Vybráno: %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Odstranit videa"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Odstranit video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Přesunout"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Zeměpisná délka"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Zeměpisná šířka"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Až nahrajete videa pomocí fotoaparátu, videa se zobrazí."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Zruš."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zast. po přeh. všech"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Opakovat aktuální"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Opakovat vše"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rozlišení"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Odstr."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Odstranit vše"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Tento soubor podporuje pouze zvuková data. Nyní se přehrává zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Tento soubor podporuje pouze obrazová data. Nyní se přehrává video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Přejmenovat"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Sluchátka"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Stáhnout"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Vypnuto"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Zapnuto"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video bude odstraněno."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Neplatný znak"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Žádné výsledky"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Vybrat"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Naposledy změněno"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Hot."
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Zeměpisná šířka"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Jméno"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Název (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videa"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Byl překročen maximální počet příloh (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Vybrat vše"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Paměť zařízení"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD karta"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Sdílet přes"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Došlo k chybě sítě. Opakujte akci."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Automaticky další"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Probíhá zpracování..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Bylo dosaženo maximálního počtu znaků."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Odstranit"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Odstranit vše"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Žádný výsledek hledání"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Vybrat položku"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Vyberte položky"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Storno"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ZRUŠIT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ODSTRANIT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Místo uložení"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Vybrat videoklip"
+
diff --git a/res/po/da.po b/res/po/da.po
new file mode 100755
index 0000000..b95e0c2
--- /dev/null
+++ b/res/po/da.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Der vil blive downloadet 1 mappe."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Der vil blive downloadet 1 video."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Alle mapper vil blive downloadet."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Alle videoer vil blive downloadet."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Der vil blive downloadet %d mapper."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Der vil blive downloadet %d videoer."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobile data er slået fra. Opret forbindelse til et Wi-Fi-netværk i stedet, eller slå Mobile data til, og prøv igen."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privat"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Placering"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Ukendt"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mappe"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Alle"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Fra enhed"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Fra Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Sidst ændret"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Indhold, du vil vise"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Søg"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Del"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Der vil blive slettet 1 mappe."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Sletter ..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Når du har optaget videoer ved hjælp af kameraet, vil de blive vist her."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videoer"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Videoklip"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Ingen videoer"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mappe"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Liste"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nyligt tilføjet"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Senest set"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Omdøb"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Størrelse"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortér efter"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titel"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Se som"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Alle videoer vil blive slettet."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d mapper bliver slettet."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videoer vil blive slettet."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Denne mappe vil blive slettet."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mapper"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Indstillinger"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan ej afspille video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Justering"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Skriftstørrelse"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Gentag indstilling"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Alle mapper bliver slettet."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrer"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stor"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Venstre"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mellem"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Højre"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Lille"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Filnavn allerede i brug."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Fjern fra Privat"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Flyt til Privat"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Posten er tom."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan ikke afspille videoen under samtale."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Denne fil er ikke tilgængelig, mens du er offline. Kontrollér netværksforbindelsen, og prøv igen."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Det valgte element vil blive flyttet til %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "De valgte elementer vil blive flyttet til %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Fjerner..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Flytter ..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Kunne ikke flytte til personligt lager."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Kunne ikke flytte til normalt lager."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Besked"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mapper"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dato (nyeste)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d valgt"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Slet videoer"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Slet videoklip"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Flyt"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Længdegrad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breddegrad"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Når du har optaget videoer ved hjælp af kameraet, vises videoerne."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Afbr."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop efter alle"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Gentag aktuel"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Gentag alle"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Opløsning"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Slet"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Slet alle"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Kun lyddata understøttes af denne fil. Spiller lyd nu."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Kun videodata understøttes af denne fil. Spiller video nu."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Omdøb"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Høretelefoner"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Fra"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Til"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video bliver slettet."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Ugyldigt tegn"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Ingen søgeresultater"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Vælg"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Sidst ændret"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Udført"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dato"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Breddegrad"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Navn"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Navn (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Det maksimale antal vedhæftede filer (%d) er overskredet."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Vælg alle"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Enhedslager"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Del via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Der opstod en netværksfejl. Prøv igen."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Autospil næste"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Behandler ..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Det maksimale antal tegn er nået."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Slet"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Slet alle"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Intet søgeresultat"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Vælg element"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Vælg elementer"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annullér"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "UDFØRT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULLER"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SLET"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Lagerplacering"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Vælg video"
+
diff --git a/res/po/de.po b/res/po/de.po
new file mode 100755
index 0000000..ca4f8f5
--- /dev/null
+++ b/res/po/de.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 Ordner wird heruntergeladen."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 Video wird heruntergeladen."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Alle Ordner werden heruntergeladen."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Alle Videos werden heruntergeladen."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d Ordner werden heruntergeladen."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d Videos werden heruntergeladen."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobile Daten sind deaktiviert. Stellen Sie stattdessen eine Verbindung mit einem WLAN her oder aktivieren Sie mobile Daten und versuchen Sie es erneut."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privat"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Standort"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Unbekannt"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 Ordner"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 Video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Alle"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Vom Gerät"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Aus Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Letzte Änderung"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Anzuzeigender Inhalt"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Suche"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Senden"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 Ordner wird gelöscht."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Wird gelöscht..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Nach dem Aufnehmen von Videos mit der Kamera werden diese Videos hier angezeigt."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d Videos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Keine Videos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Ordner"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Liste"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Zul. hinzug."
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Kürzlich angesehen"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Umbenennen"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Größe"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortieren nach"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titel"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Typ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Ansicht"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Alle Videos werden gelöscht."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d Ordner werden gelöscht."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d Videos werden gelöscht."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Dieser Ordner wird gelöscht."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d Ordner"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Einstellungen"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videowiedergabe nicht möglich."
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Ausrichtung"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Schriftgröße"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Einstellung wiederholen"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Untertitel (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Alle Ordner werden gelöscht."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Mitte"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Groß"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Links"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mittel"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Rechts"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Klein"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Dateiname wird bereits verwendet."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Aus Privat entfernen"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Nach Privat verschieben"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Eintrag ist leer"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Video kann während eines Anrufs nicht wiedergegeben werden"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Die Datei ist offline nicht verfügbar. Überprüfen Sie die Netzwerkverbindung, und versuchen Sie es erneut."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Das ausgewählte Element wird zu %s verschoben."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Die ausgewählten Elemente werden zu %s verschoben."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Entferne..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Verschiebevorgang aktiv..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Verschieben in den persönlichen Speicher nicht möglich."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Verschieben in den normalen Speicher nicht möglich."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Nachr."
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Ordner"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-Mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (neueste)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d ausgewählt"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Löschen von Videos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Video löschen"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Verschieben"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Länge"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breite"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Nach dem Aufnehmen von Videos mit der Kamera werden die Videos angezeigt."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Abbr."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Nach allen anh."
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Aktuelles wiederh."
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Alle wiederholen"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Auflösung"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Lösch."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Alle löschen"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Für diese Datei werden nur Audiodaten unterstützt. Audio wird jetzt wiedergegeben."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Für diese Datei werden nur Videodaten unterstützt. Video wird jetzt wiedergegeben."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Umbenennen"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kopfhörer"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Herunterladen"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Aus"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Ein"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 Video wird gelöscht."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Ungültiges Zeichen"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Keine Suchergebnisse"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Auswählen"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Zuletzt geändert"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Fertig"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Breite"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Name (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maximale Anzahl von Anhängen (%d) überschritten."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Alle auswählen"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Gerätespeicher"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-Karte"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Senden via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ein Netzwerkfehler ist aufgetreten. Versuchen Sie es erneut."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Automatisch nächste Datei"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Verarbeitung läuft ..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maximale Anzahl von Zeichen erreicht."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Löschen"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Alle löschen"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Kein Suchergebnis"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Element auswählen"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Elemente auswählen"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Abbruch"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FERTIG"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ABBRECHEN"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "LÖSCHEN"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Speicherort"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Wählen Sie ein Video aus"
+
diff --git a/res/po/de_DE.po b/res/po/de_DE.po
deleted file mode 100755
index c000c40..0000000
--- a/res/po/de_DE.po
+++ /dev/null
@@ -1,198 +0,0 @@
-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
index e3e9716..e58d47d 100755
--- a/res/po/el_GR.po
+++ b/res/po/el_GR.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Υπάρχει ήδη"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Λήψη"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Το κύριο στερεοφωνικό σετ ακουστικών Bluetooth αποσυνδέθηκε"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Θα γίνει λήψη 1 φακέλου."
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "Το αρχείο DRM υποστηρ. μόνο για κλείδωμα προώθησης"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Θα γίνει λήψη 1 βίντεο."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "Νέα ετικέτα"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Θα γίνει λήψη όλων των φακέλων."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Αρχικό"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Θα γίνει λήψη όλων των βίντεο."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "Αναπαραγωγή σε αθόρυβη λειτουργία;"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Θα γίνει λήψη %d φακέλων."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Δεν είναι δυνατή η αναπαραγωγή του αρχείου DRM"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Θα γίνει λήψη %d βίντεο."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "Δεν είναι δυνατή η αποστολή. Έχει απενεργοποιηθεί η δυνατότητα προώθησης"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Τα δεδομένα κινητής τηλεφωνίας απενεργοποιήθηκαν. Συνδεθείτε σε ένα δίκτυο Wi-Fi ή ενεργοποιήστε τα δεδομένα κινητής τηλεφωνίας και δοκιμάστε ξανά."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Μη υποστηριζόμενη έκδοση DivX DRM"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Προσωπικό"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Σελιδοδείκτης"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "Τέλος"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Τοποθεσία"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Άγνωστο"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 φάκελος"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 βίντεο"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Όλα"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Από τη συσκευή"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Από το Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Τελευταία τροποποίηση"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Περιεχόμενο για εμφάνιση"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Αναζήτηση"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Κοινή χρήση"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 φάκελος θα διαγραφεί."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Διαγραφή..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Αφού τραβήξετε βίντεο με την κάμερα, τα βίντεο θα εμφανιστούν εδώ."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d βίντεο"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Βίντεο"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Αγαπημένα"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Δεν υπάρχουν βίντεο"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgid "IDS_VIDEO_OPT_DETAILS"
msgstr "Λεπτομέρειες"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Ανάλυση"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Φάκελος"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Προσθήκη σελιδοδείκτη"
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Λίστα"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Πρόσφ. προσθ."
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Μήνυμα"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Προβλήθηκαν πρόσφατα"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "Όνομα"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Μετονομασία"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "Στο AllShare"
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Μέγεθος"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Περικοπή ως νέο βίντεο"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ταξινόμηση κατά"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Περικοπή αρχικού βίντεο"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Τίτλος"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Λογαριασμός"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Είδος"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Προσθήκη συντόμευσης"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Προβολή ως"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "Πρ. ετικ."
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Θα διαγραφούν όλα τα βίντεο."
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Η λίστα σελιδοδεικτών είναι πλήρης. Θέλετε να διαγράψετε μερικούς σελιδοδείκτες"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Θα διαγραφούν %d φάκελοι."
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Αποσυνδέθηκε από τον διακομιστή"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Θα διαγραφούν %d βίντεο."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Λήξη χρονικού ορίου για πύλη"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ο φάκελος θα διαγραφεί."
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Σφάλμα"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d φάκελοι"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "Η άδεια χρήσης έχει λήξει"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ρυθμίσεις"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "Φόρτωση..."
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Αδύν. η αναπαρ. του βίντεο"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "Δεν βρέθηκαν αρχεία"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Στοίχιση"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Η μνήμη εξαντλήθηκε"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Μέγ. γραμματοσειράς"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Αποθήκευση ως"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+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_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Υπότιτλοι (CC)"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "Περικοπή βίντεο..."
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Θα διαγραφούν όλοι οι φάκελοι."
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "Δεν είναι δυνατή η σύνδεση"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Σεντρ"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "Δεν είναι δυνατή η αναπαραγωγή. Μη έγκυρο πακέτο από διακομιστή"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Μεγάλο"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε την αναλογική έξοδο για να προβάλλετε αυτό το προστατευμένο βίντεο DivX"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Αριστερό"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε HDMI για να προβάλλετε αυτό το προστατευμένο βίντεο DivX"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Μεσαίο"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "Η συσκευή σας δεν έχει εξουσιοδότηση για αναπαραγωγή αυτού του προστατευμένου βίντεο DivX®"
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Δεξιά"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Ξάκρισμα"
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Μικρό"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Βίντεο"
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Το όνομα αρχείου χρησιμοποιείται ήδη."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Κατάργηση από το φάκελο «Απόρρητο»"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Μετακίνηση στο φάκελο «Ιδιωτικό»"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Κενή καταχώρηση."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Μορφή"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Το αρχείο δεν είναι διαθέσιμο εκτός σύνδεσης. Ελέγξτε τη σύνδεση δικτύου σας και δοκιμάστε ξανά."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Το επιλεγμένο στοιχείο θα μετακινηθεί στο %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Τα επιλεγμένα στοιχεία θα μετακινηθούν στο %s."
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "Δεν βρέθηκε αρχείο μέσων"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Αφαίρεση..."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Προέκυψε σφάλμα"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Μετακίνηση..."
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "Μέγεθος αρχείου"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Απέτυχε η μετακίνηση στον προσωπικό χώρο αποθήκευσης."
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Κόψιμο"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Απέτυχε η μετακίνηση στον κανονικό χώρο αποθήκευσης."
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Κοινή χρ.βίν."
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Μήνυμα"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Φάκελοι"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Λίστα βίντεο"
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "Διατήρηση αναλογίας εικόνας"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Ημερ. (πιο πρόσφ.)"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Ορισμός ως"
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d επιλέχθηκαν"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "Υπότιτλοι"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Διαγραφή βίντεο"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "Δεν είναι δυνατή η εύρεση του αρχείου"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Διαγραφή βίντεο"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Μη έγκυρα δεδομένα ροής"
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Μετακίνηση"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Μη υποστηριζόμενη μορφή ήχου"
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Γεωγραφικό μήκος"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Γεωγραφικό πλάτος"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Μη υποστηριζόμενος τύπος αρχείου"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Τα στοιχεία θα εμφανιστούν, μετά την εγγραφή βίντεο μέσω της κάμερας."
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Μη υποστ. μορφή"
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Άκυρο"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Μη υποστηριζόμενη μορφή βίντεο"
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Όλα και μετά διακοπή"
-msgid "IDS_VPL_OPT_RESOLUTION"
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Επανάληψη τρέχοντος"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Επανάληψη όλων"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
msgstr "Ανάλυση"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση"
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Διαγρ."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Διαγραφή όλων"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Υποστηρίζονται μόνο δεδομένα ήχου από αυτό το αρχείο. Γίνεται αναπαραγωγή του ήχου."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Υποστηρίζονται μόνο δεδομένα βίντεο από αυτό το αρχείο. Γίνεται αναπαραγωγή του βίντεο."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Μετονομασία"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Ακουστικά"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Λήψη"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Ανενεργό"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "Κανονικό"
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Ενεργό"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Φωνή"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 βίντεο θα διαγραφεί."
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Ταινία"
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Μη έγκυρος χαρακτήρας"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1 καν."
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Δεν υπάρχουν αποτελέσματα αναζήτησης"
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "Τo εφέ ήχων του καναλιού 7.1 εκτελείται μ στη λειτουργία ακουστικών"
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Επιλογή"
-msgid "IDS_VPL_BODY_LATITUDE"
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Τελευταία τροποποίηση"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Τέλος"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Ημερομηνία"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
msgstr "Γεωγραφικό πλάτος"
-msgid "IDS_VPL_BODY_LONGITUDE"
-msgstr "Γεωγραφικό μήκος"
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Όνομα"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Όνομα (Α-Ω)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Βίντεο"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Έγινε υπέρβαση του μέγιστου αριθμού συνημμένων (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Επιλογή όλων"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Χώρος αποθήκευσης συσκευής"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Κάρτα SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Κοινή χρήση μέσω"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Προέκυψε σφάλμα δικτύου. Δοκιμάστε ξανά."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Αυτ. αναπ. επόμ."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Επεξεργασία..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Συμπληρώθηκε ο μέγιστος αριθμός χαρακτήρων."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Διαγραφή"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Διαγραφή όλων"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Δεν υπ. απ. αναζ."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Επιλογή στοιχείου"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Επιλογή στοιχείων"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Ακύρωση"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ΤΕΛΟΣ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ΑΚΥΡΟ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ΔΙΑΓΡΑΦΗ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Θέση αποθήκευσης"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Επιλογή βίντεο"
diff --git a/res/po/en.po b/res/po/en.po
index e39a146..975cf77 100755
--- a/res/po/en.po
+++ b/res/po/en.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Already exists"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Download"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Bluetooth stereo headset disconnected"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 folder will be downloaded."
-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_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video will be downloaded."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "New tag"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "All folders will be downloaded."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Original"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "All videos will be downloaded."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "Play in Silent mode?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d folders will be downloaded."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Unable to play DRM file"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videos will be downloaded."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "Unable to send. This item is forward-locked"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobile data turned off. Connect to Wi-Fi network instead, or turn on Mobile data and try again."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Unsupported DivX DRM version"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Private"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Bookmark"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "Done"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Location"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 folder"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "All"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "From device"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "From Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Content to display"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Search"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Share"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 folder will be deleted."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Deleting..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "After you record videos using the camera, they will be shown here."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videos"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Favourite"
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "No videos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
msgstr "Details"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Resolution"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Folder"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Add bookmark"
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "List"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Recently added"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Message"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Recently viewed"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "Name"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Size"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "On AllShare"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sort by"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Trim as new video"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Title"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Trim original video"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Account"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "View as"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Add shortcut"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "All videos will be deleted."
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "Add tag"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d folders will be deleted."
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Bookmark list full. Delete some bookmarks"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videos will be deleted."
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Disconnected from server"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "This folder will be deleted."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Gateway timeout"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d folders"
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Internal server error"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Settings"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "Licence expired"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Unable to play video"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "Loading..."
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignment"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "No files"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Font size"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Out of memories"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repeat setting"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Save as"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
-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_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "All folders will be deleted."
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "Trimming video..."
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "Unable to connect"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Large"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "Unable to play. Invalid packet from server"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Left"
-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_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
-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_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Right"
-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_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Small"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Trim"
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "File name already in use."
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Video player"
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Remove from Private"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Move to Private"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entry is empty."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call."
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "No media file"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "This file is unavailable while offline. Check network connection and try again."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "The selected item will be moved to %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "The selected items will be moved to %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Removing..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Moving..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Failed to move to personal storage."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Failed to move to normal storage."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "Unable to play video. Error occurred"
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Folders"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "File size"
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Trim"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Date (most recent)"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Share video"
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d selected"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Video list"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Delete videos"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "Keep aspect ratio"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Delete video"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Set as"
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Move"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "Subtitles"
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "Unable to find file"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "Unable to play video. Invalid streaming data"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "After you record videos using the camera, videos will be shown."
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Unsupported audio format"
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cancel"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Unsupported file type"
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop after all"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Unsupported format"
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repeat current"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Unsupported video format"
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repeat all"
-msgid "IDS_VPL_OPT_RESOLUTION"
+msgid "IDS_VIDEO_BODY_RESOLUTION"
msgstr "Resolution"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "Unable to play video during call"
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Delete all"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file. Now playing audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file. Now playing video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Headphones"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Off"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "Normal"
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "On"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Voice"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video will be deleted."
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Movie"
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Invalid character"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1ch"
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "No search results"
-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_GALLERY_HEADER_SELECT"
+msgstr "Select"
-msgid "IDS_VPL_BODY_LATITUDE"
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
msgstr "Latitude"
-msgid "IDS_VPL_BODY_LONGITUDE"
-msgstr "Longitude"
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Name (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maximum number of attachments (%d) exceeded."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Select all"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Device storage"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD card"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Share via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A network error has occurred. Try again."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Auto play next"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Processing..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maximum number of characters reached."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Delete all"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "No search result"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Select item"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Select items"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DONE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "DELETE"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Storage location"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Select video"
diff --git a/res/po/en_PH.po b/res/po/en_PH.po
new file mode 100755
index 0000000..111a28f
--- /dev/null
+++ b/res/po/en_PH.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 folder will be downloaded."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video will be downloaded."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "All folders will be downloaded."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "All videos will be downloaded."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d folders will be downloaded."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videos will be downloaded."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobile data turned off. Connect to Wi-Fi network instead, or turn on Mobile data and try again."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Private"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Location"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 folder"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "All"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "From device"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "From Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Content to display"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Search"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Share"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 folder will be deleted."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Deleting..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "After you record videos using the camera, they will be shown here."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "No videos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Folder"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "List"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Recently added"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Recently viewed"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Size"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sort by"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Title"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "View as"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "All videos will be deleted."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d folders will be deleted."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videos will be deleted."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "This folder will be deleted."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d folders"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Unable to play video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignment"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repeat setting"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "All folders will be deleted."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Center"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Large"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Left"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Right"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Small"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "File name already in use."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Remove from Private"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Move to Private"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entry is empty."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "This file is unavailable while offline. Check network connection and try again."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "The selected item will be moved to %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "The selected items will be moved to %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Removing..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Moving..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Failed to move to personal storage."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Failed to move to normal storage."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Folders"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Date (most recent)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d selected"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Delete videos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Delete video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Move"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "After you record videos using the camera, videos will be shown."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop after all"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repeat current"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repeat all"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Delete all"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file. Now playing audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file. Now playing video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Headphones"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "On"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video will be deleted."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Invalid character"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "No search results"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Select"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Name (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maximum number of attachments (%d) exceeded."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Select all"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Device storage"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD card"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Share via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A network error has occurred. Try again."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Auto play next"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Processing..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maximum number of characters reached."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Delete all"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "No search result"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Select item"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Select items"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DONE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "DELETE"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Storage location"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Select video"
+
diff --git a/res/po/en_US.po b/res/po/en_US.po
new file mode 100755
index 0000000..25f9e8a
--- /dev/null
+++ b/res/po/en_US.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 folder will be downloaded."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video will be downloaded."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "All folders will be downloaded."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "All videos will be downloaded."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d folders will be downloaded."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videos will be downloaded."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobile data off. Connect to Wi-Fi network instead, or turn on Mobile data and try again."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Private"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Location"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 folder"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "All"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "From device"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "From Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Content to show"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Search"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Share"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 folder will be deleted."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Deleting..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "After you record videos using the camera, they will be shown here."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "No videos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Folder"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "List"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Recently added"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Recently viewed"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Size"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sort by"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Title"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "View as"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "All videos will be deleted."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d folders will be deleted."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videos will be deleted."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "This folder will be deleted."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d folders"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Unable to play video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignment"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repeat setting"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "All folders will be deleted."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Center"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Large"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Left"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Right"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Small"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "File name already in use."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Remove from Private"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Move to Private"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entry is empty."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "This file is unavailable while offline. Check network connection and try again."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "The selected item will be moved to %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "The selected items will be moved to %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Removing..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Moving..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Failed to move to personal storage."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Failed to move to normal storage."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Folders"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Date (most recent)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d selected"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Delete videos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Delete video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Move"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "After you record videos using the camera, videos will be shown."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop after all"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repeat current"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repeat all"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Delete all"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file. Now playing audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file. Now playing video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Headphones"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "On"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video will be deleted."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Invalid character"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "No search results"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Select"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Name (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maximum number of attachments (%d) exceeded."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Select all"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Device storage"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD card"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Share via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A network error has occurred. Try again."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Auto play next"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Processing..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maximum number of characters reached."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Delete all"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "No search result"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Select item"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Select items"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DONE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "DELETE"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Storage location"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Select video"
+
diff --git a/res/po/es_ES.po b/res/po/es_ES.po
index 89ad5c6..9e68f17 100755
--- a/res/po/es_ES.po
+++ b/res/po/es_ES.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Ya existe"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Descargar"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Auricular estéreo Bluetooth desconectado"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Se descargará 1 carpeta."
-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_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Se descargará 1 vídeo."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "Nueva etiqueta"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán todas las carpetas."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Original"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán todos los vídeos."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "¿Reproducir en modo silencio?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán %d carpetas."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "No se puede reproducir archivo DRM"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán %d vídeos."
-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_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Los datos móviles están desactivados. En su lugar, conéctese a una red Wi-Fi o active los datos móviles y vuelva a intentarlo."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Versión DivX DRM no admitida"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privado"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Favorito"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "Finalizado"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Favorito"
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
-msgstr "Detalles"
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Ubicación"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Resolución"
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Añadir elemento favorito"
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Desconocido"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Aceptar"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Mensajes"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 carpeta"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "Nombre"
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vídeo"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "En AllShare"
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Todo"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Recortar como vídeo nuevo"
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Desde el dispositivo"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Recortar vídeo original"
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Desde Dropbox"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Cuenta"
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Modificado por última vez"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Agregar acceso directo"
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contenido para mostrar"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "Añad etiq"
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Buscar"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Lista de favoritos llena. Elimine algunos favoritos"
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Desconectado del servidor"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Se eliminará 1 carpeta."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Tiempo de espera de puerta de enlace"
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Eliminando..."
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Error interno del servidor"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Después de grabar vídeos con la cámara, se mostrarán aquí."
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "La licencia ha caducado"
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vídeos"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "Cargando..."
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vídeo"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "Ningún archivo"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Sin vídeos"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Sin memoria"
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalles"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Guardar como"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Carpeta"
-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_VIDEO_OPT_LIST"
+msgstr "Lista"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "Recortando vídeo..."
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Añad recient"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "No se puede conectar"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Vistos recientemente"
-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_VIDEO_OPT_RENAME"
+msgstr "Renombrar"
-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_VIDEO_OPT_SIZE"
+msgstr "Tamaño"
-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_VIDEO_OPT_SORT_BY"
+msgstr "Ordenar por"
-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_VIDEO_OPT_TITLE"
+msgstr "Título"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Recortar"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipo"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Vídeos"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Ver como"
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "No hay archivo multimedia"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Se eliminarán todos los vídeos"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "No se puede reproducir vídeo. Se ha producido un error"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Se eliminarán %d carpetas"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "Tamaño del archivo"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Se eliminarán %d vídeos"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Recortar"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Esta carpeta se eliminará"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Compart vídeo"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d carpetas"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Lista de vídeos"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ajustes"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "Mantener relación de aspecto"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "No se puede reproducir vídeo"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Definir como"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alineación"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "Subtítulos"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamaño de fuente"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "No se puede encontrar el archivo"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir ajuste"
-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_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos (CC)"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Formato de audio no compatible"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Se eliminarán todas las carpetas"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Tipo de archivo no admitido"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centro"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Formato no admitido"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Formato de vídeo no admitido"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Izquierda"
-msgid "IDS_VPL_OPT_RESOLUTION"
-msgstr "Resolución"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medio"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Derecha"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeño"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "El nombre de archivo ya está en uso."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Eliminar de Privado"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mover a Privado"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entrada vacía"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
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_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Voz"
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Este archivo no está disponible cuando está fuera de línea. Compruebe su conexión de red y vuélvalo a intentar."
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Película"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "El elemento seleccionado se moverá a %s"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "Can. 7.1"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Los elementos seleccionados se moverán a %s"
-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_VIDEO_POP_REMOVING_ING"
+msgstr "Eliminando..."
-msgid "IDS_VPL_BODY_LATITUDE"
-msgstr "Latitud"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Moviendo..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Error al mover al almacenamiento personal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Error al mover al almacenamiento normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensaje"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Carpetas"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correo elect"
-msgid "IDS_VPL_BODY_LONGITUDE"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Fecha (reciente)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seleccionado(s)"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Eliminar vídeos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Eliminar vídeo"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mover"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
msgstr "Longitud"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Después de grabar vídeos con la cámara, se mostrarán los vídeos"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Detener después todo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todo"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Elim."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Este archivo solo admite datos de audio. Ahora se reproduce audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Este archivo solo admite datos de vídeo. Ahora se reproduce vídeo."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Cambiar nombre"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auriculares"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Se eliminará 1 vídeo."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Carácter no válido"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "No se han encontrado resultados"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seleccionar"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Última modificación"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Hecho"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Fecha"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nombre"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nombre (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vídeos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Se ha superado el número máximo de adjuntos (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Seleccionar todo"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Almacenamiento del dispositivo"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Tarjeta SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Se ha producido un error de red. Vuelva a intentarlo."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Reproducción continua"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Procesando..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Número máximo de caracteres alcanzado."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Sin resultados"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Seleccionar elemento"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Seleccionar elementos"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HECHO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ELIMINAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Ubicación almacenamiento"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Seleccionar vídeo"
+
diff --git a/res/po/es_US.po b/res/po/es_US.po
new file mode 100755
index 0000000..f906fc4
--- /dev/null
+++ b/res/po/es_US.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Se descargará 1 carpeta."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Se descargará 1 video."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán todas las carpetas."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán todos los videos."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán %d carpetas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Se descargarán %d videos."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Los datos móviles están desactivados. Conéctese a una red Wi-Fi o active Datos móviles e inténtelo de nuevo."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privado"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Ubicación"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Desconocido"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 carpeta"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Todo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Desde el dispositivo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Desde Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contenido para mostrar"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Buscar"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Se eliminará 1 carpeta."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Después de grabar videos con la cámara, los videos se mostrarán aquí."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Sin videos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Carpeta"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Añadido reciente"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Visto recientemente"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Renombrar"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ordenar por"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipo"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Ver como"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Se eliminarán todos los videos."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Se eliminarán %d carpetas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Se eliminarán %d videos."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Esta carpeta se eliminará."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d carpetas"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ajustes"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "No se puede reproducir video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alineación"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamaño de fuente"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir configuración"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Se eliminarán todas las carpetas."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Central"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Izquierda"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medio"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Derecha"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeño"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Nombre de archivo ya existe."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Eliminar de Privado"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mover a Privado"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entrada vacía."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No es posible reproducir video durante la llamada."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Este archivo no está disponible sin conexión. Verifique su conexión de red e inténtelo de nuevo."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "El elemento seleccionado se moverá a %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Los elementos seleccionados se moverán a %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Moviendo…"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Error al mover al almacenamiento personal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Error al mover al almacenamiento normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensaje"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Carpetas"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correo"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Fecha (reciente)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seleccionado(s)"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Eliminar videos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Eliminar video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mover"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Se mostrarán los videos después de ser grabados con Cámara."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Detener desp. todo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todo"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Este archivo sólo admite datos de audio. Ahora se reproduce audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Este archivo sólo admite datos de video. Ahora se reproduce video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renombrar"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auricular"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Se eliminará 1 video."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Carácter no válido"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "No se han encontrado resultados"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seleccionar"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Fecha"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nombre"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nombre (A a Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Se excedió el número máximo de archivos adjuntos (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Todo"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Almacenamiento del dispositivo"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Tarjeta de memoria"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir vía"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Se produjo un error de red. Inténtelo de nuevo."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Reproducción continua"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Procesando..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Se alcanzó el número máximo de caracteres."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Sin resultados"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Seleccionar elemento"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Seleccionar archivos"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "REALIZADO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ELIMINAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Ubicación de almacenam."
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Seleccionar video"
+
diff --git a/res/po/et.po b/res/po/et.po
new file mode 100755
index 0000000..49955b9
--- /dev/null
+++ b/res/po/et.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Laadi alla"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 kaust laaditakse alla."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video laaditakse alla."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Kõik kaustad laaditakse alla."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Kõik videod laaditakse alla."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d kausta laaditakse alla."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videot laaditakse alla."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobiilne andmeside on välja lülitatud. Looge selle asemel ühendus Wi-Fi võrguga või lülitage mobiilne andmeside sisse ja proovige uuesti."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privaatne"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Asukoht"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Tundmatu"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 kaust"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Kõik"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Seadmest"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropboxist"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Viimati muudetud"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Sisu, mida kuvada"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Otsi"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Jaga"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 kaust kustutatakse."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Kustutamine..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Videod kuvatakse pärast nende salvestamist kaameraga."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videot"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Videoid pole"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Üksikasjad"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Kaust"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Loend"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Hiljuti lisatud"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Hiljuti vaadatud"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Nimeta ümber"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Suurus"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortimisalus"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Pealkiri"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tüüp"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Kuva:"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Koik videod kustutatakse."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d kausta kustutatakse."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videot kustutatakse."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "See kaust kustutatakse."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d kaustad"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Seaded"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videot ei saa esitada"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Joondamine"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Fondi suurus"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Korduse seadistus"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtiitrid (peittiitrid)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Koik kaustad kustutatakse."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Keskel"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Suur"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vasakul"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Keskmine"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Paremal"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Väike"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Failinimi on juba kasutusel"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Eemalda kaustast Privaatne"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Teisalda kausta Privaatne"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Kirje on tuhi."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Vorminda"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kõne ajal ei saa videot esitada."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "See fail pole võrguühenduseta olekus saadaval. Kontrollige võrguühendust ja proovige uuesti."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Valitud uksus teisaldatakse asukohta %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Valitud uksused teisaldatakse asukohta %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Eemaldamine..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Teisaldamine..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Isiklikku mällu teisaldamine nurjus."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Tavamällu teisaldamine nurjus."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Sõnum"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Kaustad"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-kiri"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Kuupäev (hilis)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d valitud"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Kustuta videod"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Kustuta video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Teisalda"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Pikkuskraad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Laiuskraad"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Videod kuvatakse parast nende salvestamist kaameraga."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Tühis."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Lõpeta pärast kõiki"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Korda praegust"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Korda kõik"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Eraldusvõime"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Kust."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Kustuta kõik"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "See fail toetab ainult heliandmeid. Nüüd esitatakse heli."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "See fail toetab ainult videoandmeid. Nüüd esitatakse videot."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Nimeta ümber"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kõrvaklapid"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Laadi alla"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Väljas"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Sees"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video kustutatakse."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Lubamatu tähemärk"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Otsingutulemeid pole"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Vali"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Viimati muudetud"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Valmis"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Kuupäev"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Laiuskraad"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nimi"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nimi (A‒Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videod"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Manuste maksimaalne arv (%d) on ületatud."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Vali kõik"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Seadme mälu"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kaart"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Jaga:"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ilmnes võrgutõrge. Proovige uuesti."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Esita järgm. auto."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Töötlemine..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Tähemärkide maksimaalne arv on saavutatud."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Kustuta"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Kustuta kõik"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Otsing ei andnud"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Vali üksus"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Vali üksusi"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Tühista"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "VALMIS"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "TÜHISTA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "KUSTUTA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Salvestamise asukoht"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Valige video"
+
diff --git a/res/po/eu.po b/res/po/eu.po
new file mode 100755
index 0000000..fe5f9a9
--- /dev/null
+++ b/res/po/eu.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Deskargatu"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Karpeta 1 deskargatuko da."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Bideo 1 deskargatuko da."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Karpeta guztiak deskargatuko dira."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Bideo guztiak deskargatuko dira."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d karpeta deskargatuko dira."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d bideo deskargatuko dira."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Datu mugikorrak itzalita. Konektatu Wi-Fi sare batera edo piztu datu mugikorrak eta saiatu berriz."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Pribatua"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Kokalekua"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Ezezaguna"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Ados"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "Karpeta 1"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "Bideo 1"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Guztiak"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Gailutik"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox-etik"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Azken aldaketa"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Erakusteko edukia"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Bilatu"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partekatu"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Karpeta 1 ezabatuko da."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Ezabatzen..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kamera erabiliz bideoak grabatu ondoren, hemen erakutsiko dira."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d bideo"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Bideoa"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Ez dago bideorik"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Xehetasunak"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Karpeta"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Zerrenda"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Berriki gehituak"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Berriki ikusitakoak"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Berrizendatu"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Tamaina"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sailkatu honela"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Izenburua"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Mota"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Ikusi honela"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Bideo guztiak ezabatuko dira"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d karpeta ezabatuko dira"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d bideo ezabatuko dira"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Karpeta hau ezabatuko da"
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d karpeta"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ezarpenak"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Ezin da bideoa erreproduzitu"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Lerrokatzea"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Letraren neurria"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Errepikatu ezarpena"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Azpitituluak (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Karpeta guztiak ezabatuko dira"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Erdikoa"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Handia"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Ezkerra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Ertaina"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Eskuinekoa"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Txikia"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Fitxategi izena aurretik erabiltzen ari zara."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Kendu Pribatutik"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mugitu pribatura"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Sarrera hutsik dago"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formateatu"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ezin da bideoa erreproduzitu deia egiten ari den bitartean"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Fitxategi hau ez dago erabilgarri lineaz kanpo. Egiaztatu sare konexioa eta saiatu berriz."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Hautatutako gaia %s-(e)ra mugituko da"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Hautatutako elementuak %s-(e)ra mugituko dira"
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Ezabatzen..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Mugitzen..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Huts egin da biltegi pertsonalera mugitzean."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Huts egin da ohiko biltegira mugitzean."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mezua"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Karpetak"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Helb. elek."
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (berriena)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d aukeratuta"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Ezabatu bideoak"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Ezabatu bideoa"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mugitu"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitudea"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitudea"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Kamera erabiliz bideoak grabatu ondoren, bideoak erakutsiko dira"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Ezez."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Eten denen ondoren"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Errepikatu hau"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Errepikatu dena"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Bereizmena"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Ezab."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Dena(k) ezabatu"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Fitxategi honek audio datuak baino ez ditu onartzen. Audioa erreproduzitzen."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Fitxategi honek bideo datuak baino ez ditu onartzen. Bideoa erreproduzitzen."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Berrizendatu"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Aurikularrak"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Deskargatu"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desaktibatuta"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Aktibatuta"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Bideo 1 ezabatuko da."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Karaktere baliogabea"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Ez dago bilaketaren emaitzarik"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Hautatu"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Azken aldaketa"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Egina"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitudea"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Izena"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Izena (Atik Zra)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Bideoak"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Eranskinen gehieneko kopurua (%d) gainditu duzu."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Hautatu guztiak"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Gailu biltegia"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD txartela"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partekatu honen bidez"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Sare errorea gertatu da. Saiatu berriz."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Errep. hur. auto."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Prozesatzen..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Gehieneko karaktere kopurura iritsi zara."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ezabatu"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Dena(k) ezabatu"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Ez dago bilaketa emaitzarik"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Elementua aukeratu"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Aukeratu elementuak"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Ezeztatu"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "EGINA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "UTZI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "EZABATU"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Biltegiratze kokapena"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Hautatu bideoa"
+
diff --git a/res/po/fi.po b/res/po/fi.po
new file mode 100755
index 0000000..14f2dbf
--- /dev/null
+++ b/res/po/fi.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Lataa"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 kansio ladataan."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video ladataan."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Kaikki kansiot ladataan."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Kaikki videot ladataan."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d kansiota ladataan."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videota ladataan."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobiilidata on poistettu käytöstä. Muodosta sen sijaan yhteys Wi-Fi-verkon kautta tai ota mobiilidata käyttöön ja yritä uudelleen."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Yksityinen"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "t"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Gt"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kt"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Sijainti"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mt"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Tuntematon"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 kansio"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Kaikki"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Laitteesta"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropboxista"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Muutettu viimeksi"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Näytettävä sisältö"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Hae"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Jaa"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 kansio poistetaan."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Poistetaan..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kun olet tallentanut kameralla videoita, ne näytetään täällä."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videota"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Ei videoita"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Lisätiedot"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Kansio"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Luettelo"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Viim. lisätyt"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Viimeksi katsotut"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Nimeä uudelleen"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Koko"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Lajitteluperuste"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Otsikko"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tyyppi"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Näyttötapa"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Kaikki videot poistetaan."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d kansiota poistetaan."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videota poistetaan."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Tämä kansio poistetaan."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d kansiota"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Asetukset"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videota ei voi toistaa"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Kohdistus"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Fonttikoko"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Toistoasetus"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Tekstitys (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Kaikki kansiot poistetaan."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Keskelle"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Suuri"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vasemmalle"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Keskisuuri"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Oikealle"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pieni"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Tiedoston nimi jo käytössä."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Poista Yksityiset-kansiosta"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Siirrä Yksityiset-kansioon"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Tyhjä tieto"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Muoto"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Puhelun aikana ei voi toistaa videota."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Tätä tiedostoa ei voi käyttää offline-tilassa. Tarkista verkkoyhteys ja yritä uudelleen."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Valittu kohde siirretään kohteeseen %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Valitut kohteet siirretään kohteeseen %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Poistetaan..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Siirretään..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Siirtäminen henkilökohtaiseen tallennustilaan epäonnistui."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Siirtäminen normaaliin tallennustilaan epäonnistui."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Viesti"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Kansiot"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Sähköposti"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Päiväys (uusimmat)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d valittu"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Poista videot"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Poista video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Siirrä"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Pituusaste"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Leveysaste"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Videot näytetään, kun olet tallentanut videoita kameralla."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Per."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Pysäytä kaikk. jälk."
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Toista nykyinen"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Toista kaikki"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Tarkkuus"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Poista"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Poista kaikki"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Tiedosto tukee vain äänitietoja. Toistetaan ääntä."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Tiedosto tukee vain videotietoja. Toistetaan videota."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Nimeä uudelleen"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kuulokkeet"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Lataa"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Pois"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Päälle"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video poistetaan."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Virheellinen merkki"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Ei hakutuloksia"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Valitse"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Muutettu viimeksi"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Valmis"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Päivämäärä"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Leveysaste"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nimi"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nimi (A–Ö)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videot"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Liitteiden enimmäismäärä (%d) on ylitetty."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Valitse kaikki"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Laitteen muisti"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kortti"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Jakotapa"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Verkkovirhe. Yritä uudelleen."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Toista seur. aut."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Käsitellään..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Merkkien enimmäismäärä on saavutettu."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Poista"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Poista kaikki"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Ei hakutuloksia"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Valitse kohde"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Valitse kohteet"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Peruuta"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "VALMIS"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "PERUUTA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "POISTA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Tallennuspaikka"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Valitse video"
+
diff --git a/res/po/fr.po b/res/po/fr.po
new file mode 100755
index 0000000..cf6cd4c
--- /dev/null
+++ b/res/po/fr.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Télécharger"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 dossier va être téléchargé."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 vidéo va être téléchargée."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Tous les dossiers vont être téléchargés."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Toutes les vidéos vont être téléchargées."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d dossiers vont être téléchargés."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d vidéos vont être téléchargées."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Données mobiles désactivées. Connectez-vous à un réseau Wi-Fi ou activez les données mobiles, puis réessayez."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privé"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "o"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Go"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "Ko"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localisation"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mo"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Inconnu"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 dossier"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vidéo"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Tout"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "À partir de l'appareil"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "À partir de Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Dernière modification"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contenu à afficher"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Rechercher"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partager"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 dossier va être supprimé."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Suppression en cours..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Les vidéos enregistrées avec l'appareil photo seront affichées ici."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vidéos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vidéo"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Aucune vidéo"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Dossier"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Liste"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Ajout récent"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Visionnées récemment"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Taille"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Trier par"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titre"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Afficher en tant que"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Toutes les vidéos seront supprimées."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d dossiers seront supprimés."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d vidéos seront supprimées."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ce dossier sera supprimé."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d dossiers"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Paramètres"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossible de lire la vidéo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignement"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Taille de police"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Répéter le paramètre"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Tous les dossiers seront supprimés."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grand"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Gauche"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Moyen"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Droit"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Petit"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Le nom de fichier est déjà utilisé."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Supprimer de Privé"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Déplacer dans Privé"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entrée vide"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossible de lire la vidéo pendant un appel."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Ce fichier est indisponible en mode hors-ligne. Vérifiez la connexion réseau et réessayez."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "L'élément sélectionné sera déplacé vers %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Les éléments sélectionnés seront déplacés vers %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Suppression..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Déplacement..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Déplacement vers l'espace de stockage personnel impossible."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Déplacement vers l'espace de stockage normal impossible."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Dossiers"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Date (+ récent)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d sélectionné(es)"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Supprimer les vidéos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Supprimer la vidéo"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Déplacer"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Les vidéos enregistrées avec l'appareil photo seront affichées."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Annul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Arrêter après tout"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Répéter élém. actuel"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Tout répéter"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Suppr."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Tout supprimer"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Seules les données audio sont prises en charge par ce fichier. Audio en cours de lecture."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Seules les données vidéo sont prises en charge par ce fichier. Vidéo en cours de lecture."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Écouteurs"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Télécharger"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Activé"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 vidéo sera supprimée."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Caractère non valide"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Aucun résultat trouvé"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Sélectionner"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Dernière modification"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nom (A à Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vidéos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Le nombre maximal de pièces jointes (%d) a été dépassé."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Sélectionner tout"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Espace sur l'appareil"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Carte SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partager via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Une erreur réseau s'est produite. Réessayez."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Lire suivant auto"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "En cours..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Nombre maximal de caractères atteint."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Tout supprimer"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Aucun résultat"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Sélectionnez votre choix"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Sélectionner éléments"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULER"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SUPPRIMER"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Emplacement de stockage"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Sélectionner une vidéo"
+
diff --git a/res/po/fr_CA.po b/res/po/fr_CA.po
new file mode 100755
index 0000000..710f2e6
--- /dev/null
+++ b/res/po/fr_CA.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Télécharger"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 dossier va être téléchargé."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 vidéo va être téléchargée."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Tous les dossiers vont être téléchargés."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Toutes les vidéos vont être téléchargées."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d dossiers vont être téléchargés."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d vidéos vont être téléchargées."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Données mobiles désactivées. Connectez-vous à un réseau wifi ou activez les données mobiles, puis réessayez."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privé"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "O"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Go"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "Ko"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localisation"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mo"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Inconnu"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 dossier"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vidéo"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Tous"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "À partir de l'appareil"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "À partir de Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Dernière modification"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contenu à afficher"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Rechercher"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partager"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 dossier va être supprimé."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Suppression en cours..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Les vidéos enregistrées avec l'appareil photo seront affichées ici."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vidéos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vidéo"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Aucune vidéo"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Dossier"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Liste"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Ajouté récem."
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Stylet"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Taille"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Trier par"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titre"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Afficher en tant que"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Toutes les vidéos seront supprimées."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d dossiers seront supprimés."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d vidéos seront supprimées."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ce dossier sera supprimé."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d dossiers"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Réglages"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossible de lire la vidéo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignement"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Taille de police"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Répéter le paramètre"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sous-titres"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Tous les dossiers seront supprimés."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grand"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Gauche"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Moyen"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Droit"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Petit"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Le nom de fichier est déjà utilisé."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Supprimer de Privé"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Déplacer dans Privé"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entrée vide"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossible de jouer la vidéo pendant un appel."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Ce fichier est indisponible en mode hors-ligne. Vérifiez la connexion réseau et réessayez."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "L'élément sélectionné sera déplacé vers %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Les éléments sélectionnés seront déplacés vers %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Retrait..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Déplacement..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Déplacement vers l'espace de stockage personnel impossible."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Déplacement vers l'espace de stockage normal impossible."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Dossiers"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Courriel"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Date (+ récent)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d sélect."
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Supprimer les vidéos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Supprimer la vidéo"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Déplacer"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Les vidéos enregistrées avec l'appareil photo seront affichées."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Annuler"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Arrêter après tout"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Répéter élém. actuel"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Tout répéter"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Suppr."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Supprimer tout"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Seules les données audios sont prises en charge par ce fichier. Audio en cours de lecture."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Seules les données vidéos sont prises en charge par ce fichier. Vidéo en cours de lecture."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Écouteurs"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Télécharger"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Activé"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 vidéo sera supprimée."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Caractère non valide"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Aucun résultat de recherche"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Sélectionner"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Dernière modification"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nom (A à Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vidéos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Le nombre maximal de pièces jointes (%d) a été dépassé."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Sélectionner tout"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Espace sur l'appareil"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Carte SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partager via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Une erreur réseau s'est produite. Réessayez."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Lire auto. suiv."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Traitement…"
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Nombre maximal de caractères atteint."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Supprimer tout"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Aucun résultat"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Sélectionner un élément"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Sélectionner éléments"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULER"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SUPPRIMER"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Emplacement de stockage"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Sélectionner une vidéo"
+
diff --git a/res/po/fr_FR.po b/res/po/fr_FR.po
deleted file mode 100755
index ffa675c..0000000
--- a/res/po/fr_FR.po
+++ /dev/null
@@ -1,198 +0,0 @@
-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/ga.po b/res/po/ga.po
new file mode 100755
index 0000000..a34c4ea
--- /dev/null
+++ b/res/po/ga.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Íoslódáil"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Íoslódálfar 1 fhillteán."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Íoslódálfar 1 fhíseán."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Íoslódálfar gach fillteán."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Íoslódálfar gach físeán."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Íoslódálfar %d fillteán."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Íoslódálfar %d físeán."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Sonraí móibíleacha casta as. Nasc le líonra Wi-Fi ina ionad, nó cas Sonraí móibíleacha air agus triail arís."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Príobháideach"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Suíomh"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Anaithnid"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 Fhillteán"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 fhíseán"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Gach"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Ó ghléas"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Ó Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Mionathrú is déanaí"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Inneachar le taispeáint"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Cuardaigh"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Comhroinn"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Scriosfar 1 fhillteán."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Scriosadh..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Tar éis duit físeáin a thaifeadadh leis an gceamara, taispeánfar anseo iad."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d físeán"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Físeán"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Níl físeáin ann"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Sonraí"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Fillteán"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Liostaigh"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Curtha leis le déanaí"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Amharc orthu le déanaí"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Athainmnigh"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Méid"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sórt de réir"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Teideal"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Cineál"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Amharc air mar"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Scriosfar gach físeán"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Scriosfar %d fillteán"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Scriosfar %d físeán"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Scriosfar an fillteán seo"
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d fillteán"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Socruithe"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Ní féidir físeán a sheinm"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Ailíniú"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Méid cló"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Socrú athsheanma"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Fotheidil (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Scriosfar gach fillteán"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Lárnach"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Mór"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Clé"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Meánach"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Deas"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Beag"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Comhadainm in úsáid cheana."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Bain ó Phríobháideach"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Bog chuig Príobháideach"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Tá an iontráil folamh"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formáid"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ní féidir físeán a sheinm le linn glao."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "N‎íl an comhad seo ar fáil fad is atá tú as líne. Seiceáil do nasc líonra le do thoil agus triail arís."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Bogfar an mhír roghnaithe chuig %s"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Bogfar na míreanna roghnaithe chuig %s"
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Ag baint..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Ag bogadh..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Theip ar bhogadh chuig stóras pearsanta."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Theip ar bhogadh chuig gnáthstóras."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Teachtai"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Fillteáin"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "R-phost"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dáta (is déanaí)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d roghnaithe"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Scrios físeáin"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Scrios físeán"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Bog"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Domhanfad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Leithead"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Tar éis duit físeáin a thaifeadadh ag úsáid an cheamara, taispeánfar na físeáin"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cealú"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop tar eis gach"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Athdhean cuid reatha"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Athdhéan gach"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Taifeach"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Scrios gach"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Níl tacú sa chomhad seo ach do shonraí fuaime. Fuaim á seinm anois."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Níl tacú sa chomhad seo ach do shonraí físe. Físeán á sheinm anois."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Athainmnigh"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Cluasáin"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Íoslódáil"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "As"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Air"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Scriosfar 1 fhíseán."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Carachtar neamhbhailí"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Níl torthaí cuardaigh ann"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Roghnaigh"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Mionathrú is déanaí"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Déanta"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dáta"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Leithead"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ainm"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Ainm (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Físeáin"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Uaslíon na gceangaltán (%d) sáraithe."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Roghnaigh gach"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Stóras gléis"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Cárta SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Comhroinn le"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Tharla earráid líonra. Triail arís."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "U. sheinn ar lean"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Ag próiseáil..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Uaslíon na gcarachtar bainte amach."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Scrios gach"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Níl toradh cuardaigh ann"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Roghnaigh mír"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Roghnaigh míreanna"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cealaigh"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DÉANTA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CUIR AR CEAL"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SCRIOS"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Suíomh stórais"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Roghnaigh físeán"
+
diff --git a/res/po/gl.po b/res/po/gl.po
new file mode 100755
index 0000000..76bfbf3
--- /dev/null
+++ b/res/po/gl.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Descargarase 1 carpeta."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Descargarase 1 vídeo."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Descargaranse todas as carpetas."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Descargaranse todos os vídeos."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Descargaranse %d carpetas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Descargaranse %d vídeos."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Os datos móbiles están desactivados. Conéctate a unha rede Wi-Fi no seu lugar ou activa os datos móbiles e téntao de novo."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privado"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localización"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Descoñecido"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 carpeta"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vídeo"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Todas"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Do dispositivo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "De Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contido a amosar"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Buscar"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Eliminarase 1 carpeta."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Despois de gravar vídeos coa cámara, amosaranse aquí."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vídeos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vídeo"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Non hai vídeos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Carpeta"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Engadido recen."
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Vistos recentemente"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "C. nome"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ordenar por"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipo"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Ver como"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Eliminaranse todos os vídeos"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Eliminaranse %d carpetas"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Eliminaranse %d vídeos"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Eliminarase esta carpeta"
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d carpetas"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Axustes"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Imposible reproducir vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Aliñamento"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamaño da fonte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Axustes de repetición"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Eliminaranse todas as carpetas"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centro"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerda"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Media"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dereita"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeno"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Nome do arquivo xa en uso."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Eliminar de Privado"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mover a Privado"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "A entrada está baleira"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formatar"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Non se pode reproducir vídeo durante a chamada"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Este arquivo non está dispoñible mentres estás fóra de liña. Comproba a conexión de rede e téntao de novo."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "O elemento seleccionado moverase a %s"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Os elementos seleccionados moveranse a %s"
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Movendo..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Non se puido mover ao almacenamento persoal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Non se puido mover ao almacenamento normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensaxe"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Carpetas"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correo e."
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (recente)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seleccionados"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Eliminar vídeos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Eliminar vídeo"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mover"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lonxitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Despois de gravar vídeos mediante a cámara, estes amosaranse"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Deter despo. de todo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todos"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Elim"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Este arquivo só admite datos de audio. Reprodución de audio en curso."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Este arquivo só admite datos de vídeo. Reprodución de vídeo en curso."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Cambiar nome"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auriculares"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Eliminarase 1 vídeo."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Carácter non válido"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Non hai resultados da busca"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seleccionar"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Feito"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nome (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vídeos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Superouse o número máximo de adxuntos (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Seleccionar todo"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Almacenamento do dispositivo"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Tarxeta SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir mediante"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Produciuse un erro de rede. Téntao de novo."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Reprod seg autom"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Procesando..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Alcanzouse o número máximo de carácteres."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Sen resultado da busca"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Seleccionar elemento"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Seleccionar elementos"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FEITO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ELIMINAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Localización almacenam."
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Seleccionar vídeo"
+
diff --git a/res/po/hi.po b/res/po/hi.po
new file mode 100755
index 0000000..dbd5811
--- /dev/null
+++ b/res/po/hi.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "डाउनलोड"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 फोल्डर डाउनलोड किया जाएगा।"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 वीडियो डाउनलोड किया जाएगा।"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "सभी फोल्डर्स डाउनलोड किए जाएँगे।"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "सभी वीडियो डाउनलोड किए जाएँगे।"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d फोल्डर्स डाउनलोड किए जाएँगे।"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d वीडियोज डाउनलोड किए जाएँगे।"
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "मोबाइल डाटा बंद किया गया। इसके बजाय किसी Wi-Fi नेटवर्क से कनेक्ट करें या मोबाइल डाटा चालू करें और फिर से प्रयास करें।"
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "निजी"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "स्थान"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "अज्ञात"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "ओके"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 फोल्डर"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 वीडियो"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "सभी"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "डिवाइस से"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "ड्रॉपबॉक्स से"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "अंतिम बार संशोधित"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "प्रदर्शन के लिए सामग्री"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "खोजें"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "साझा करें"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 फोल्डर हटाया जाएगा।"
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "हटाया जा रहा है..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "आपके द्वारा कैमरे का उपयोग करके वीडियोज रिकॉर्ड करने के बाद, वे यहाँ दिखाई जाएँगे।"
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d वीडियोज़"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "वीडियो"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "कोई वीडियो नहीं"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "विवरण"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "फोल्डर"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "सूची"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "हाल ही में जोड़ें गए"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "हाल ही में देखा गया"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "नाम बदलें"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "आकार"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "इसके द्वारा क्रमबद्ध करें"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "शीर्षक"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "प्रकार"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "इस रूप में देखें"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "सभी वीडियो हटाए जाएँगे"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d फोल्‍डर्स हटाए जाएँगे"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d वीडियोज हटाए जायेंगे।"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "यह फोल्डर हटाया जाएगा।"
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d फोल्डर्स"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "सेटिंग्स"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "वीडियो चलाने में असमर्थ"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "संरेखण"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "फॉन्ट आकार"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "दोहराव सेटिंग"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "उपशीर्षक (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "सभी फोल्‍डर्स हटाए जाएँगे।"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "केंद्र"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "बड़ा"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "बाएँ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "मध्यम"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "दाएँ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "छोटा"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "फाइल नाम पहले से ही उपयोग में है।"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "निजी से निकालें"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "निजी पर ले जाएँ"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "प्रविष्टि खाली है"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "फॉर्मेट"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "कॉल के दौरान वीडियो चलाने में असमर्थ।"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "ड्रॉपबॉक्स"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "यह फाइल ऑफलाइन में अनुपलब्ध है। नेटवर्क कनेक्‍शन जाँचें और फिर से प्रयास करें।"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "चुनी हुई मद %s में ले जाई जाएँगी"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "चुनी हुई मदें %s में ले जाई जाएँगी"
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "हटा रहा है..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "ले जा रहा है..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "व्यक्गित स्टोरेज पर ले जाने में विफल।"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "सामान्य स्टोरेज पर ले जाने में विफल।"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "सन्देश"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "फोल्डर्स"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "ईमेल"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "तिथि (सबसे नवीनतम)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d चयनित"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "वीडियोज हटाएँ"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "वीडियो हटाएँ"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "ले जाएँ"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "देशांतर"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "अक्षांश"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "आपके द्वारा कैमरे का उपयोग करके वीडियो रिकॉर्ड करने के बाद, वीडियो दिखाए जाएंगे।"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "रद्द"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "सब के बाद रोकें"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "वर्तमान को दोहराएँ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "सभी दोहराएँ"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "रिजॉल्यूशन"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "सभी हटाएँ"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "इस फाइल के द्वारा केवल ऑडियो डाटा समर्थित है। अब ऑडियो चलाया जा रहा है।"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "इस फ़ाइल के द्वारा केवल वीडियो डाटा समर्थित है। अब वीडियो चलाया जा रहा है।"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "नाम बदलें"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "हेडफोन्‍स"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "डाउनलोड करें"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "बंद"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "चालू"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 वीडियो हटाया जाएगा।"
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "अमान्य वर्ण"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "कोई खोज परिणाम नहीं"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "चयन करें"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "अंतिम बार संशोधित"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "पूर्ण"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "तिथि"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "अक्षांश"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "नाम"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "नाम (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "वीडियो"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "संलग्नक की अधिकतम संख्या (%d) पार हुई।"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "सभी चुनें"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "डिवाइस स्टोरेज"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD कार्ड"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "इसके द्वारा साझा करें"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "नेटवर्क त्रुटि उत्पन्न हुई है। फिर से प्रयास करें।"
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "अगला स्वतः चलाना"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "प्रक्रिया हो रही है..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "वर्णों की अधिकतम संख्या पूरी हो गई।"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "सभी हटाएँ"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "खोज का कोई परिणाम नहीं"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "मद चुनें"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "मद चुनें"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "रद्द"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "पूर्ण"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "रद्द करें"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "हटाएँ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "संग्रहण स्‍थान"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "वीडियो चुनें"
+
diff --git a/res/po/hr.po b/res/po/hr.po
new file mode 100755
index 0000000..61669c6
--- /dev/null
+++ b/res/po/hr.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Preuzmi"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Preuzet će se 1 mapa."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Preuzet će se 1 videozapis."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Preuzet će se sve mape."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Preuzet će se svi videozapisi."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Preuzet će se ovoliko mapa: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Preuzet će se ovoliko videozapisa: %d."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobilni su podaci isključeni. Spojite se na Wi-Fi mrežu ili uključite Mobilne podatke i pokušajte ponovno."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privatno"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Nepoznato"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "U redu"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mapa"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Sve"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "S uređaja"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "S Dropboxa"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Zadnja promjena"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Prikaz sadržaja"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Traži"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Dijeli"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 će se mapa izbrisati."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Brisanje..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Nakon što kamerom snimite videozapise, prikazat će se ovdje."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videa"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Nema videa"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mapa"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Popis"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nedavno dodano"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Nedavno pogledano"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Veličina"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortiraj"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Naslov"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Vrsta"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Prikaži kao"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Svi će videi biti obrisani."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d će se mapa obrisati."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videa bit će obrisano."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ova će mapa biti obrisana."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mapa"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Postavke"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nemoguće reproduc. videozapis"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Poravnanje"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Veličina slova"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Postavka ponavljanja"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titlovi (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Sve mape će se obrisati."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centralno"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velika"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Lijevo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Srednja"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Desno"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mala"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Već postoji naziv datoteke."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Ukloni iz Privatnog"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Premjesti u Privatno"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Unos prazan."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Tijekom razgovora nemoguća video reprodukcija."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Datoteka nije dostupna dok ste izvan mreže. Provjerite mrežnu vezu i pokušajte ponovno."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Odabrana stavka bit će premještena u %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Odabrane stavke bit će premještene u %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Uklanjanje..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Premještanje..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Neuspješno premještanje na osobnu memoriju."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Neuspješno premještanje na normalnu memoriju."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Poruka"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mape"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (najnoviji)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d odabrano"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Izbriši videozapise"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Obriši video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Premjesti"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Geo. duljina"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Geo. širina"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Vaši videozapisi bit će prikazani ovdje."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Prekid"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stati nakon svega"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ponovi trenutno"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ponovi sve"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolucija"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Obriši sve"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Datoteka podržava samo audio podatke. Sada reproducira zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Datoteka podržava samo video podatke. Sada reproducira video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Promjeni ime"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slušalice"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Skidanje"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Isključeno"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Uključeno"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 će videozapis biti izbrisan."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Neispravan znak"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nema traženih rezultata"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Odaberi"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Zadnja promjena"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Geo. širina"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ime"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Naziv (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Premašen je maksimalni broj privitaka (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Odaberi sve"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Memorija uređaja"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD kartica"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Dijeli preko"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Došlo je do mrežne pogreške. Pokušajte ponovno."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Auto. rep. idući"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Procesiranje..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Dosegnut maksimalan broj znakova."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Obriši sve"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Nema traženih rezultata"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Odaberite stavku"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Odaberite stavke"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Prekid"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ODUSTANI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "IZBRIŠI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Mjesto spremanja"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Odaberite video"
+
diff --git a/res/po/hu.po b/res/po/hu.po
new file mode 100755
index 0000000..d2e429a
--- /dev/null
+++ b/res/po/hu.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Letöltés"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Letölt 1 mappát."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Letölt 1 videót."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Az összes mappát letölti."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Az összes videót letölti."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Letölt %d mappát."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Letölt %d videót."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "A mobil internetkapcsolat ki van kapcsolva. Kapcsolódjon Wi-Fi-hálózathoz, vagy kapcsolja be a mobil internetkapcsolatot, és próbálja újra."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privát"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Hely"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Ismeretlen"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mappa"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 videó"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Mind"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Az eszközről"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "A Dropboxból"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Legutóbbi módosítás"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Megjelenítendő tartalom"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Keresés"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Megosztás"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 mappát törölni fog."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Törlés..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Itt jelennek majd meg a fényképezővel rögzített videók."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videó"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Videó"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Nincs videó"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Részletek"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mappa"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Legut. ho.adott"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Legutóbb megtekintett"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Átnevez"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Méret"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Rendezés szempontja"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Cím"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Típus"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Megjelenítés módja"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Minden videót törölni fog."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Törölni fogja a(z) %d mappát."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videót törölni fog."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Törölni fogja a mappát."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mappa"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Beállítások"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nem lehet lejátszani a videót"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Igazítás"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Betűméret"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ismétlési beállítás"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Feliratok (hangfelirat)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Minden mappát törölni fog."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Középső"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Nagy"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Balra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Közepes"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Jobbra"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Kicsi"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Ilyen fájlnév már van."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Eltávolítás a Privátból"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Áthelyezés a Privátba"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "A bejegyzés üres."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formátum"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Hívás közben nem lehet videót lejátszani."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Offline állapotban ez a fájl nem elérhető. Ellenőrizze a hálózati kapcsolatot, és próbálja újra."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "A kijelölt tételt a(z) %s mappába helyezi."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "A kijelölt tételeket a(z) %s mappába helyezi."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Eltávolítás..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Áthelyezés..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Nem sikerült áthelyezni a személyes tárhelyre."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Nem sikerült áthelyezni a normál tárhelyre."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Üzenet"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mappák"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dátum (legújabb)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d kiválasztva"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Videók törlése"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Videó törlése"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Áthelyezés"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Hosszúság"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Szélesség"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Ha majd készít videofelvételeket a fényképező használatával, azok megjelennek itt."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Mégse"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Mégis leállítja"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Aktuális ismétlése"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Összes ismétlése"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Felbontás"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Törlés"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Összes törlése"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "A fájl csak hangadatokat támogat. Jelenleg hanglejátszás zajlik."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "A fájl csak videóadatokat támogat. Jelenleg videólejátszás zajlik."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Átnevezés"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Fejhallgató"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Letöltés"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Ki"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Be"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 videót törölni fog."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Érvénytelen karakter"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nincs találat"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Kiválasztás"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Legutóbbi módosítás"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Kész"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dátum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Szélesség"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Név"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Név (A–Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videók"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Túllépte a mellékletek maximális számát (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Mind kijelöli"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Eszköz tárhelye"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kártya"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Megosztás"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Hálózati hiba történt. Próbálja újra."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Automatikus lejátszás"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Feldolgozás folyamatban"
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Elérte a karakterek maximális számát."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Törlés"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Összes törlése"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Nincs találat"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Elem kiválasztása"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Jelöljön ki tételeket"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Mégse"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "KÉSZ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "MÉGSE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "TÖRLÉS"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Mentési hely"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Videó kiválasztása"
+
diff --git a/res/po/hy.po b/res/po/hy.po
new file mode 100755
index 0000000..844b394
--- /dev/null
+++ b/res/po/hy.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Ներբեռնել"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 պանակ կներբեռնվի:"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 տեսանյութ կներբեռնվի:"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Բոլոր պանակները կներբեռնվեն:"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Բոլոր տեսանյութերը կներբեռնվեն:"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d պանակ կներբեռնվի:"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d տեսանյութ կներբեռնվի:"
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Շարժական տվյալներն անջատված են: Փոխարենը միացեք Wi-Fi ցանցի կամ միացրեք Շարժական տվյալներն ու նորից փորձեք:"
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Գաղտնի"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "Բ"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "ԳԲ"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "ԿԲ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Գտնվելու վայր"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "ՄԲ"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Անհայտ"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 թղթապանակ"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 տեսանյութ"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Բոլոր"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Սարքից"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox-ից"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Վերջին փոփոխումը"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Ցուցադրման ենթակա բովանդակութ."
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Որոնել"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Համօգտագործել"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 պանակ կջնջվի:"
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Վերացվում է..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Խցիկով տեսանյութեր տեսագրելուց հետո դրանք կցուցադրվեն այստեղ:"
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d տեսանյութ"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Վիդեո"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Տեսանյութեր չկան"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Մանրամասներ"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Թղթապանակ"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Ցանկ"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Վերջերս ավելցվծ"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Վերջերս դիտված"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Վերանվանել"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Չափս"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Տեսակավորել ըստ"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Վերնագիր"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Տեսակ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Դիտել որպես"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Բոլոր տեսանյութերը կվերացվեն:"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d թղթապանակ կջնջվի:"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d տեսանյութեր կվերացվեն:"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Այս թղթապանակը կվերացվի:"
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d թղթպանակ"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Պարամետրեր"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Անհնար է նվագարկել տեսանյութը"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Հավասարեցում"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Տառաչափ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Կրկնման դրվածք"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Ենթավերնագրեր (ԹԵ)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Բոլոր թղթապանակները կջնջվեն:"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Կենտրոն"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Մեծ"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Ձախ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Միջին"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Աջ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Փոքր"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Ֆայլի անունն արդեն գործածվում է"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Հեռացնել Գաղտնիից"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Տեղափոխել դեպի Գաղտնի"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Գրառումը դատարկ է:"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Ձևաչափ"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Հնարավոր չէ վիդեո նվագարկել կանչի ընթացքում:"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Այս ֆայլն անմատչելի է ցանցից դուրս: Ստուգեք ցանցային միացումը և նորից փորձեք"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Ընտրված տարրը կտեղափոխվի %s:"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Ընտրված տարրերը կտեղափոխվեն %s:"
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Հեռացնում է..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Տեղափոխում..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Չհաջողվեց տեղափոխել անձնական պահեստ:"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Չհաջողվեց տեղափոխել սովորական պահեստ:"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Հղգրթյն"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Պանակներ"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Էլփոստ"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Ամսթվ (առ. վերջին)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d ընտրվել է"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Վերացնել տեսանյութեր"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Վերացնել տեսանյութ"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Տեղափոխել"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Երկայնք"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Լայնք"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Խցիկով տեսանյութեր տեսագրելուց հետո տեսանյութերը կցուցադրվեն:"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Չեղկլ"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Կանգ բոլորից հետո"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Կրկնել ընթացիկը"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Կրկնել բոլորը"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Լուծաչափ"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Վրցնլ"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Ջնջել բոլորը"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Այս ֆայլը միայն ձայնատվյալներ է ապահովում: Այժմ ձայնանյութ է նվագարկվում:"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Այս ֆայլը միայն տեսատվյալներ է ապահովում: Այժմ տեսանյութ է նվագարկվում:"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Վերանվանել"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Գլխ. հեռախոսներ"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Ներլցնել"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Անջատված է"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Միացված է"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 տեսանյութ կվերացվի:"
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Անվավեր նիշ"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Որոնման արդյունքներ չկան"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Ընտրել"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Վերջին փոփոխվածը"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Արված է"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Ամսաթիվ"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Լայնք"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Անուն"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Անուն (Ա-Ֆ)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Տեսահոլովակներ"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Կցուրդների առավելագույն քանակը (%d) գերազանցվել է:"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Ընտրել բոլորը"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Սարքի պահոց"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD քարտ"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Համօգտ. հետևյալով՝"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ցանցի սխալ է տեղի ունեցել: Նորից փորձեք:"
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Ինք. նվգրկել հջրդ"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Ընթացքում է"
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Հասել է նիշերի առավելագույն քանակին:"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Վերացնել"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Ջնջել բոլորը"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Որոնման արդյունք չկա"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Ընտրել տարրը"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Ընտրել տարրեր"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Չեղարկել"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ԱՐՎԱԾ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ԴԱԴԱՐԵՑՆԵԼ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ՎԵՐԱՑՆԵԼ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Պահման տեղը"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Ընտրել տեսանյութը"
+
diff --git a/res/po/is.po b/res/po/is.po
new file mode 100755
index 0000000..52ed8b0
--- /dev/null
+++ b/res/po/is.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Sækja"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 mappa verður sótt."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 myndskeið verður sótt."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Allar möppur verða sóttar."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Öll myndskeið verða sótt."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d möppur verða sóttar."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d myndskeið verða sótt."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Slökkt er á farsímagögnum. Tengstu Wi-Fi neti í staðinn eða kveiktu á farsímagögnum og reyndu aftur."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Einkamál"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Staðsetning"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Óþekkt"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Í lagi"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mappa"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "Eitt myndskeið"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Allt"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Úr tæki"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Af Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Síðast breytt"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Efni til að birta"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Leita"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Deila"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Einni möppu verður eytt."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Eyði..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Eftir að þú tekur upp myndskeið með myndavélinni verða þau birt hér."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d myndskeið"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Myndskeið"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Engin myndskeið"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Upplýsingar"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mappa"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Listi"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nýlega bætt við"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Skoðað nýlega"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Endurnefna"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Stærð"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Raða eftir"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titill"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Gerð"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Skoða sem"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Öllum myndskeiðum verður eytt."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d möppum verður eytt."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d myndskeiðum verður eytt."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Þessari möppu verður eytt."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d möppur"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Stillingar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Ekki hægt að spila myndskeið"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Jöfnun"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Leturstærð"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Endurtekningarstilling"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Skjátextar"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Öllum möppum verður eytt."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Miðja"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stórt"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vinstri"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Miðlungs"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Hægri"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Lítið"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Skráarheitið er þegar í notkun."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Fjarlægja úr einkamálum"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Færa í einkamál"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Færsla er tóm."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Snið"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ekki er hægt að spila vídeó á meðan símtal stendur yfir."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Þessi skrá er ekki í boði án nettengingar. Athugaðu nettenginguna og reyndu aftur."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Valið atriði verður fært í %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Valin atriði verða færð í %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Verið er að fjarlægja..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Verið er að flytja..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Mistókst að færa í einkageymslu."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Mistókst að færa í venjulega geymslu."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Skilaboð"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Möppur"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Netfang"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dags. (nýjasta)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d valið"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Eyða myndskeiðum"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Eyða myndskeiði"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Færa"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lengdargráða"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breiddargráða"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Eftir að þú tekur upp myndskeið með myndavélinni verða myndskeið birt."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Hætta við"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stöðva eftir allt"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Endurtaka þetta"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Endurtaka öll"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Upplausn"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Eyða öllu"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Þessi skrá styður aðeins hljóðgögn. Hljóð er nú í spilun."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Þessi skrá styður aðeins myndgögn. Myndskeið er nú í spilun."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Endurnefna"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Höfuðtól"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Sækja"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Slökkt"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Kveikt"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 myndskeiði verður eytt."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Ógildur stafur"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Engar leitarniðurstöður"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Velja"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Síðast breytt"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Lokið"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dagsetning"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Breiddargráða"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Heiti"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Heiti (A–Ö)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Myndskeið"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Hámarksfjölda viðhengja (%d) hefur verið náð."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Velja allt"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Geymsla tækis"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Deila um"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Netvilla kom upp. Reyndu aftur."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Sp. næsta sj.kr."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Vinnsla í gangi..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Hámarksfjölda stafa hefur verið náð."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Eyða öllu"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Engar leitarniðurstöður"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Velja hlut"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Velja hluti"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Hætta v."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "LOKIÐ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "HÆTTA VIÐ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "EYÐA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Geymslustaður"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Velja myndskeið"
+
diff --git a/res/po/it_IT.po b/res/po/it_IT.po
index 1e0fa64..b652510 100755
--- a/res/po/it_IT.po
+++ b/res/po/it_IT.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Già esiste"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Scarica"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Auricolare stereo Bluetooth disconnesso"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 cartella verrà scaricata."
-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_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video verrà scaricato."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "Nuovo tag"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Tutte le cartelle verranno scaricate."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Originali"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Tutti i video verranno scaricati."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "Riprodurre con profilo Silenzioso?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d cartelle verranno scaricate."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Impossibile riprodurre file DRM"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d video verranno scaricati."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "Impossibile inviare. L'elemento è bloccato per l'invio"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Connessione dati disattivata. Connettetevi a una rete Wi-Fi o attivate la connessione dati e riprovate."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Versione DRM DivX non supportata"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privato"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Preferito"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "Fatto"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Posizione"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Sconosciuto"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 cartella"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Tutti/e"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Dal dispositivo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Da Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Ultima modifica"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Contenuto da visualizzare"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Cerca"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Condividi"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 cartella sarà eliminata."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Eliminazione in corso..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Una volta registrati con la fotocamera, i video saranno visualizzati qui."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d video"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Preferiti"
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Nessun video"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
msgstr "Dettagli"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Risoluzione"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Cartella"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Aggiungi preferito"
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Elenco"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "DLNA"
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Agg. di recente"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Messaggio"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Visti di recente"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "Nome"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Rinomina"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Dimensioni"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ordina per"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titolo"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipo"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Visualizza come"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Tutti i video verranno eliminati."
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "Su AllShare"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d cartelle verranno eliminate."
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Ritaglia come nuovo video"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d video saranno eliminati."
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Ritaglia video originale"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Questa cartella verrà eliminata."
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Account"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d cartelle"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Aggiungi collegamento"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Impostaz."
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "Aggiungi tag"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossibile riprodurre video"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Elenco preferiti pieno. Eliminare alcuni preferiti"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Allineamento"
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Disconnesso dal server"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Dimensione carattere"
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Time out Gateway"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ripeti impostazione"
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Errore interno server"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sottotitoli (CC)"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "Licenza scaduta"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Tutte le cartelle verranno eliminate."
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "Caricamento..."
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrale"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "Nessun file"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Memoria insufficiente"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Sinistra"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Salva con nome"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medio"
-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_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Destra"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "Ritaglio video in corso..."
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Piccolo"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "Impossibile stabilire connessione"
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Il nome del file è già in uso."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "Impossibile avviare riproduzione. Pacchetto non valido dal server"
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Rimuovi da Privato"
-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_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Sposta in Privato"
-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_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Voce vuota"
-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_OPT_FORMAT"
+msgstr "Formato"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Ritaglia"
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossibile riprodurre durante chiamata."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Questo file non è disponibile se si è offline. Controllate la connessione di rete e riprovate."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "L'elemento selezionato verrà spostato in %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Gli elementi selezionati verranno spostati in %s."
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Lettore video"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Rimozione..."
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "Nessun file multimediale"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Spostamento..."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "Impossibile riprodurre il video. Si è verificato un errore"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Impossibile spostare nella memoria personale."
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "Dimensioni file"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Impossibile spostare nella memoria normale."
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Ritaglia"
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mess."
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Condiv. video"
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Cartelle"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Elenco video"
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "Conserva formato"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (più recente)"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Imposta come"
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d selezionato/i"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "Sottotitoli"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Elimina video"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Elimina video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Sposta"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitudine"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "Espl. file non riuscita"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitudine"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "Impossibile riprodurre il video. Dati di streaming non validi"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "I video verranno visualizzati dopo averli registrati con la fotocamera."
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Formato audio non supportato"
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Ann."
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Tipo file non supportato"
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Interrom. dopo tutto"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Formato non supp."
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ripeti corrente"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Formato video non supportato"
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ripeti tutto"
-msgid "IDS_VPL_OPT_RESOLUTION"
+msgid "IDS_VIDEO_BODY_RESOLUTION"
msgstr "Risoluzione"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "Impossibile riprodurre durante chiamata"
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Elimina tutto"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Questo file è in grado di supportare soltanto i dati audio. Audio attualmente in riproduzione."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Questo file è in grado di supportare soltanto i dati video. Video attualmente in riproduzione."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rinomina"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Cuffie"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Scarica"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Non attivo"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Attivo"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "Normale"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video verrà eliminato."
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Voce"
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Carattere non valido"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Filmato"
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nessun risultato della ricerca"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1 ch"
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seleziona"
-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_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Ultima modifica"
-msgid "IDS_VPL_BODY_LATITUDE"
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Fatto"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
msgstr "Latitudine"
-msgid "IDS_VPL_BODY_LONGITUDE"
-msgstr "Longitudine"
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nome (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Il numero massimo di allegati (%d) è stato superato."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Seleziona tutto"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Memoria dispositivo"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Scheda SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Condividi con"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Si è verificato un errore di rete. Riprovate."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Riprod. succ. in autom."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Elaborazione..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Il numero massimo di caratteri è stato raggiunto."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Elimina tutto"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Nessun risultato ricerca"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Selezione elemento"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Seleziona elementi"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annulla"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FATTO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULLA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ELIMINA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Posizione di memoria"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Seleziona video"
diff --git a/res/po/ja_JP.po b/res/po/ja_JP.po
index bcb7201..2ab0d00 100755
--- a/res/po/ja_JP.po
+++ b/res/po/ja_JP.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "既に登録されています。"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "ダウンロード"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Bluetooth​ステレオ​ヘッド​セット​は​切断​され​ました"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1件のフォルダをダウンロードします。"
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "フォワード​ロック​タイプ​以外​の​DRM​ファイル​には​対応​して​いません"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1件の動画をダウンロードします。"
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "新しい​タグ"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "全てのフォルダをダウンロードします。"
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "オリジナル"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "全ての動画をダウンロードします。"
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "マナーモード中ですが、再生しますか?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d件のフォルダをダウンロードします。"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "DRMファイルを再生できません"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d件の動画をダウンロードします。"
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "送信​できません。​この​アイテム​は​転送​ロック​されて​います"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "モバイルデータがOFFになっています。Wi-Fiネットワークに接続するか、モバイルデータをONにしてから再度お試しください。"
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "未対応​DivX DRM​バージョン"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "プライベート"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "ブック​マーク"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "完了"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "お気に入り"
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
-msgstr "詳細"
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "場所"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "解像度"
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "ブックマーク登録"
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "不明"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "SMS"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1件のフォルダ"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "名前"
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1件の動画"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "全て"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "AllShare"
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "端末の動画"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "新しいビデオとしてトリミング"
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropboxの動画"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "元のビデオをトリミング"
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "最終更新日"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "アカウント"
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "表示するコンテンツ"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "ショートカット​を​追加​"
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "検索"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "タグ​を​追加​"
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "共有"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "ブックマーク​リスト​が​いっぱいです。​ブックマーク​を​いくつか​削除​してください。"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1件のフォルダを削除します。"
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "サーバー​から​切断​され​ました"
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "削除中..."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "ゲートウェイ​タイムアウト"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "カメラで動画を撮影した後に、動画が表示されます。"
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Internal server error"
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d件の動画"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "ライセンス​の​有効期限​が​切れ​ました"
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "動画"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "読み込み中..."
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "動画がありません"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "ファイルがありません。"
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "詳細"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "メモリが不足しています"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "フォルダ"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "名前​を​付けて​保存​"
+msgid "IDS_VIDEO_OPT_LIST"
+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_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "最近追加した順"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "ビデオをトリミング中..."
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "最近閲覧した順"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "接続​できません。"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "名前を変更"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "再生​できません。​サーバー​から​の​パケット​が​無効​です"
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "サイズ"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "許可されていない​ビデオが​再生されました。​​保護されてるDivX​ビデオを​再生するには​アナログ出力を​使用してください"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "並べ替え"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "許可されていない​ビデオが​再生されました。保護されてるDivXビデオを​再生するには​HDMI出力を​使用してください"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "タイトル"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "このデバイスではDivX®保護ビデオを再生できません"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "タイプ"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "整備"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "表示形式"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "動画"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "全ての動画が削除されます。"
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d件のフォルダを削除します。"
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d件の動画を削除します。"
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "メディア​ファイルが​ありません"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "このフォルダを削除します。"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "ビデオ​を​再生​できません​。​エラー​が​発生​しました"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d件のフォルダ"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "ファイル​サイズ"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "設定"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "トリミング"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "動画再生不可"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "動画を共有"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "配置"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "ビデオ​リスト"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "文字サイズ"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "縦横​比​を​保存​"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "リピート設定"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "登録"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "サブタイトル"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "全てのフォルダを削除します。"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "ファイル​が​見つかり​ません"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "中央"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "ビデオ​を​再生​できません​。​無効​な​ストリーミング​データ​です"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "サポートされていない​オーディオ​形式"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "左"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "未対応のファイルです"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "未対応フォーマット"
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "右"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "未対応​ビデオ​形式"
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
-msgid "IDS_VPL_OPT_RESOLUTION"
-msgstr "撮影サイズ"
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "ファイル名は既に使用されています。"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "プライベートから削除"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "プライベートに移動"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "入力されていません。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "ファイル形式"
msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "通話中​は​ビデオ​再生​できません"
+msgstr "通話中はビデオ再生できません"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "標準"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "音声"
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "オフラインの間はこのファイルは利用できません。インターネット接続を確認してからやり直してください。"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "映画"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "選択したアイテムを%sに移動します。"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1ch"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "選択したアイテムを%sに移動します。"
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "7.1チャンネルは、イヤホンモードでのみ使用できます。"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "削除中..."
-msgid "IDS_VPL_BODY_LATITUDE"
-msgstr "緯度"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "移動中..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "パーソナルストレージへの移動に失敗しました。"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "標準ストレージへの移動に失敗しました。"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "メッセージ"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "フォルダ"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Eメール"
-msgid "IDS_VPL_BODY_LONGITUDE"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "日付(新しい順)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d件選択"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "動画を削除"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "動画を削除"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "移動"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
msgstr "経度"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "カメラで動画を撮影した後に、動画が表示されます。"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "キャンセル"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "終了後に停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "現在の動画をリピート"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "全てリピート"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "削除"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "全て削除"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "このファイルはオーディオデータのみ再生することができます。音声のみ再生します。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "このファイルは動画データのみ再生することができます。動画のみ再生します。"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "名前を変更"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "ヘッドホン"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "ダウンロード"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "OFF"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "ON"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1件の動画を削除します。"
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "無効な文字"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "検索結果がありません。"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "選択"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "最終更新日"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完了"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日付"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名前"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "名前(A~Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "動画"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "添付ファイルの最大件数(%d件)を超えています。"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "全て選択"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "システムメモリ(本体)"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "外部SDカード"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "共有"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "ネットワークエラーが発生しました。再度お試しください。"
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "次の動画を自動再生"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "処理中..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "最大文字数に達しました。"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "削除"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "全て削除"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "検索結果がありません。"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "アイテムを選択してください。"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "アイテムを選択"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "キャンセル"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完了"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "キャンセル"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "削除"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "保存場所"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "動画を選択"
+
diff --git a/res/po/ka.po b/res/po/ka.po
new file mode 100755
index 0000000..3e23be1
--- /dev/null
+++ b/res/po/ka.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "ჩამოტვირთვა"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "ჩამოიტვირთება 1 საქაღალდე."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "ჩამოიტვირთება 1 ვიდეო."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "ჩამოიტვირთება ყველა საქაღალდე."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "ჩამოიტვირთება ყველა ვიდეო."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "ჩამოიტვირთება %d საქაღალდე."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "ჩამოიტვირთება %d ვიდეო."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "მობილურ მონაცემთა ქსელი გამორთულია. სანაცვლოდ, დაუკავშირდით Wi-Fi ქსელს, ან ჩართეთ მობილური მონაცემები და ისევ სცადეთ."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "პერსონალური"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "ადგილმდებ."
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "უცნობი"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "კი"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 საქაღალდე"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 ვიდეო"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "ყველა"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "მოწყობილობიდან"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox-დან"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "ბოლოს შესწორდა"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "ეკრანზე გამოსაჩენი მასალა"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "ძებნა"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "გაზიარება"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 საქაღალდე წაიშლება."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "წაშლა..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "როდესაც ჩაწერთ ვიდეოს კამერით, ისინი გამოჩნდება აქ."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d ვიდეო"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "ვიდეო"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "ვიდეოები არ არის"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "დეტალები"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "საქაღალდე"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "სია"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "ბოლო დამატებული"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "ბოლოს ნანახი"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "ხელახლა დასათაურება"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "ზომა"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "დალაგება კრიტერიუმით"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "სათაური"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "ტიპი"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "ნახეთ როგორც"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "ყველა ვიდეო წაიშლება."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d საქაღალდე წაიშლება."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d ვიდეო წაიშლება."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "ეს საქაღალდე წაიშლება."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d საქაღალდე"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "პარამეტრები"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "ვიდეოს დაკვრა შეუძლებელია"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "განაწილება"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "შრიფტის ზომა"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "გამეორების პარამეტრი"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "ტიტრები (სუბტიტრები)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "ყველა საქაღალდე წაიშლება."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "ცენტრი"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "დიდი"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "მარცხნივ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "საშუალო"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "მარჯვნივ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "მცირე"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "ფაილის სახელი უკვე გამოყენებულია"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "პერსონალურიდან წაშლა"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "პერსონალურში გადატანა"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "ცარიელი ჩანაწ."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "დაფორმატება"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "ვიდეოს ვერ გაუშვებთ ზარის დროს."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "ეს ფაილი მიუწვდომელია ინტერნეტის გარეშე. შეამოწმეთ კავშირი ქსელთან და ისევ მოსინჯეთ"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "შერჩეული ელემენტი გადავა ადგილზე: %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "შერჩეული ელემენტები გადავა ადგილზე: %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "იშლება..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "გადატანა..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "პერსონალურ საცავში ვერ გადავიდა."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "ნორმალურ საცავში ვერ გადავიდა."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "წერილი"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "საქაღალდეები"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "ელ.ფოსტა"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "თარიღი (უახლესი)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d არჩეულია"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "ვიდეოების წაშლა"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "ვიდეოს წაშლა"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "გადატანა"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "გრძედი"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "განედი"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "როდესაც ჩაწერთ ვიდეოს კამერით, გამოჩნდება ვიდეოები."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "გაუქმ."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "გაჩერდეს ბოლოში"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "მიმდინარეს გამეორება"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "გაიმეორე ყველა"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "გარჩევადობა"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "წაშლა"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "ყველას წაშლა"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "ამ ფაილს აქვს მხოლოდ აუდიო მონაცემთა მხარდაჭერა. ახლა ჩართულია აუდიო."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "ამ ფაილს აქვს მხოლოდ ვიდეო მონაცემთა მხარდაჭერა. ახლა ჩართულია ვიდეო."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "გადარქმევა"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "გარნიტურები"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "ჩამოტვირთვა"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "გამორთ."
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "ჩართვა"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 ვიდეო წაიშლება."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "სიმბოლო არასწორია"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "ძიების შედეგი არ არის"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "არჩევა"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "ბოლოს შესწორდა"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "შესრულდა"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "თარიღი"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "განედი"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "სახელი"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "სახელი (ა-ჰ)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "ვიდეოები"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "გადაჭარბებულია დანართების მაქსიმალური რაოდენობა (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "აირჩიეთ ყველა"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "აპარატის მეხსიერება"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD ბარათი"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "გაზიარება მეთოდით"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "მოხდა ქსელის შეცდომა. ისევ სცადეთ."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "ავტომატური ტექსტი"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "მუშავდება..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "მიღწეულია სიმბოლოების მაქსიმალური რაოდენობა."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "წაშლა"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "ყველას წაშლა"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "ძიების შედეგი არ არის"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "ელემენტის არჩევა"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "ელემენტების არჩევა"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "გაუქმება"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "მზადაა"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "გაუქმება"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "წაშლა"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "შენახვის ადგილი"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "აირჩიეთ ვიდეო"
+
diff --git a/res/po/kk.po b/res/po/kk.po
new file mode 100755
index 0000000..22b2062
--- /dev/null
+++ b/res/po/kk.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Жүктеу"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 қалта жойылады."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 бейне жүктеледі."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Барлық қалталар жүктеледі."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Барлық бейнелер жүктеледі."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d қалта жүктеледі."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d бейне жүктеледі."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Ұялы деректер өшірілді. Оның орнына Wi-Fi желісіне қосылыңыз немесе ұялы деректерді қосып, әрекетті қайталаңыз."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Жеке аумақ"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "Б"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Гбайт"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KБ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Орналасу орны"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "МБ"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Белгісіз"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 қалта"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 бейне"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Барлығы"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Құрылғыдан"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox қызметінен"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Соңғы өзгертілген"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Көрсетілетін мазмұн"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Іздеу"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Бөлісу"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 қалта жойылады."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Жойылуда..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Камераның көмегімен бейнелер жазып алғаннан кейін олар мына жерде көрсетіледі."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d бейне"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Бейне"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Бейнелер жоқ"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Өзгешеліктері"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Қалта"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Тізім"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Соңғы қосылған"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Соңғы көрсетілген"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Атын өзгерту"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Өлшемі"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Сұрыптау тәртібі"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Тақырыбы"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Түрі"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Басқаша көру"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Барлық бейнелер жойылады."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d қалта жойылады."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d бейне жойылады."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Бұл қалта жойылады."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d қалталары"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Қондырғылар"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Бейнені ойнату мүмкін емес"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Туралау"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Қаріп өлшемі"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Қайталау параметрі"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитрлер (ЖТ)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Барлық қалталар жойылады."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Орталық"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Үлкен"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Сол жақ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Орташа"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Оң жақ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Кіші"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Файл атауы бұрыннан пайдаланылуда"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Жеке қалтадан жою"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Жеке қалтаға көшіру"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Енгізбе бос."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Пішімдеу"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Қоңырау кезінде бейне ойнатылмайды."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Бұл файл желіден тыс болған жағдайда, қол жетімді емес. Желі байланысын тексеріп, әрекетті қайталап көріңіз"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Таңдалған элемент %s орнына жылжытылады."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Таңдалған элементтер %s орнына жылжытылады."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Шығаруда..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Орналастырылды"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Жеке сақтау орнына жылжыту сәтсіз аяқталды."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Қалыпты сақтау орнына жылжыту сәтсіз аяқталды."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Хабар"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Қалталар"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Элек. пошта"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Күні (соңғы)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d таңдалды"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Бейнелерді жою"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Бейнені жою"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Жылжыту"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Ұзақтық"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Кеңділік"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Камераны пайдалану арқылы бейнені жазғаннан кейін бейнелер көрсетіледі."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Тоқт"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Тоқтату"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ағымдағыны қайталау"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Барлығын қайталау"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Шешім"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Жою"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Барлық жойылды"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Бұл файл арқылы тек аудио деректер берілген. Қазір ойнатылып жатқап аудио."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Бұл файл арқылы тек бейне деректер берілген. Қазір ойнатылып жатқап бейне."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Атын өзгерту"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Құлаққаптар"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Жүктеу"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Өшірілген"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Қосылған"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 бейне жойылады."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Қате әріп"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Іздеу нәтижелері жоқ"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Таңдау"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Соңғы өзгертілген"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Дайын"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Күні"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Кеңділік"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Аты"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Атауы (А-Я)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Бейнежазбалар"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Тіркемелердің ең көп санынан (%d) асып кетті."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Барлығын таңдау"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Құрылғы қоймасы"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD картасы"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Бөлісу құралы"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Желі қатесі пайда болды. Әрекетті қайталаңыз."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Авто ойн. келесі"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Өңделуде..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Ең көп таңбалар санына жетті."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Жою"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Барлық жойылды"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Іздеу нәтижелері жоқ"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Элемент таңдау"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Элементтер таңдау"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Тоқтату"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ДАЙЫН"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "БАС ТАРТУ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ЖОЮ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Сақтау орны"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Бейнені таңдау"
+
diff --git a/res/po/ko_KR.po b/res/po/ko_KR.po
index 013f753..2f38958 100755
--- a/res/po/ko_KR.po
+++ b/res/po/ko_KR.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "이미 저장되어 있습니다"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "다운로드"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "블루투스 스테레오 헤드셋 연결이 끊어졌습니다"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "폴더 1개를 다운로드합니다."
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "전달 잠금 파일을 제외한 DRM 파일은 지원되지 않습니다"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "동영상 1개를 다운로드합니다."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "태그 추가"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "모든 폴더를 다운로드합니다."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "원본"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "모든 동영상을 다운로드합니다."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "무음 모드에서 재생할까요?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "폴더 %d개를 다운로드합니다."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "DRM 파일은 재생할 수 없습니다"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "동영상 %d개를 다운로드합니다."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "전송할 수 없습니다. 잠금이 설정되어 있습니다"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "[모바일 데이터]가 해제된 상태입니다. Wi-Fi 네트워크에 연결하거나, [모바일 데이터]를 실행한 후 다시 시도하세요."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "지원되지 않는 DivX DRM 버전입니다"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "프라이빗"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "북마크"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "완료"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "즐겨찾기"
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
-msgstr "상세 정보"
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "위치"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "해상도"
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "북마크 추가"
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "알 수 없음"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "확인"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "메시지"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "폴더 1개"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "이름"
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "동영상 1개"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "전체"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "AllShare에서"
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "디바이스"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "새 동영상으로 잘라내기"
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "원본 동영상 잘라내기"
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "마지막 수정"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "계정"
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "표시할 컨텐츠"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "단축메뉴 추가"
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "검색"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "태그 추가"
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "공유"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "북마크 목록이 가득 찼습니다. 북마크 일부를 삭제하세요"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "폴더 1개를 삭제합니다."
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "서버와 연결이 끊어졌습니다"
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "삭제 중..."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "게이트웨이 시간이 만료되었습니다"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "카메라를 사용하여 동영상을 촬영하면 동영상이 여기에 표시됩니다."
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "서버 오류가 발생하였습니다"
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "동영상 %d개"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "라이선스 기한이 만료되었습니다"
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "동영상"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "로딩 중..."
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "동영상이 없습니다"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "파일이 없습니다"
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "상세정보"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "메모리가 부족합니다"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "폴더"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "저장"
+msgid "IDS_VIDEO_OPT_LIST"
+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_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "최근 추가 순"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "동영상 잘라내는 중..."
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "최근 본 항목 순"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "연결할 수 없습니다"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "이름 변경"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "서버에서 받은 패킷이 바르지 않아 재생할 수 없습니다"
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "크기"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 아날로그 출력 방식을 사용하세요"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "정렬 방식"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 HDMI 방식를 사용하세요"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "제목"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "귀하의 제품은 DivX® DRM이 적용된 동영상의 재생 권한이 없습니다."
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "종류"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "잘라내기"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "보기 방식"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "비디오 플레이어"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "모든 동영상을 삭제합니다."
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "미디어 파일이 없습니다"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "폴더 %d개를 삭제합니다."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "동영상을 재생할 수 없습니다. 오류가 발생하였습니다"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "동영상 %d개를 삭제합니다."
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "파일 크기"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "이 폴더를 삭제합니다."
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "잘라내기"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "폴더 %d개"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "동영상 공유"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "설정"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "동영상 목록"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "동영상을 재생할 수 없음"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "비율 유지"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "정렬"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "설정"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "글자 크기"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "자막"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "반복 설정"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "파일을 찾을 수 없습니다"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "자막(CC)"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "동영상을 재생할 수 없습니다. 스트리밍 데이터가 바르지 않습니다"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "모든 폴더를 삭제합니다."
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "지원되지 않는 오디오 포맷입니다"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "가운데"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "지원되지 않는 파일 형식입니다"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "크게"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "지원되지 않는 형식입니다"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "왼쪽"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "지원되지 않는 동영상 포맷입니다"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "중간"
-msgid "IDS_VPL_OPT_RESOLUTION"
-msgstr "해상도"
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "오른쪽"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "작게"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "사용 중인 파일 이름입니다."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "프라이빗에서 제거"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "프라이빗으로 이동"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "입력된 내용이 없습니다."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "형식"
msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "통화 중에는 동영상을 재생할 수 없습니다"
+msgstr "통화 중에는 동영상을 재생할 수 없습니다."
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "보통"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "음성"
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "오프라인에서 사용할 수 없는 파일입니다. 네트워크 연결을 확인한 후 다시 시도하세요."
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "영화"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "선택한 항목을 %s(으)로 이동합니다."
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1채널"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "선택한 항목을 %s(으)로 이동합니다."
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "7.1채널 음향효과는 이어폰 연결 시에 적용됩니다"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "제거 중..."
-msgid "IDS_VPL_BODY_LATITUDE"
-msgstr "위도"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "이동 중..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "퍼스널 저장공간으로 이동하지 못하였습니다."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "일반 저장공간으로 이동하지 못하였습니다."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "메시지"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "폴더"
-msgid "IDS_VPL_BODY_LONGITUDE"
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "이메일"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "날짜(최근 순)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d개 선택"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "동영상 삭제"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "동영상 삭제"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "이동"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
msgstr "경도"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "위도"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "카메라로 동영상을 녹화하면 동영상이 여기에 표시됩니다."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "취소"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "모두 재생 후 중지"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "현재 동영상 반복"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "모두 반복"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "삭제"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "모두 삭제"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "이 파일은 오디오 데이터만 지원합니다. 오디오를 재생합니다."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "이 파일은 동영상 데이터만 지원합니다. 동영상을 재생합니다."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "이름 변경"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "헤드폰"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "다운로드"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "해제"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "사용"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "동영상 1개를 삭제합니다."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "바르지 않은 글자"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "검색 결과가 없습니다"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "선택"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "마지막 수정"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "완료"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "날짜"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "위도"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "이름"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "이름(가나다 순)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "동영상"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "최대 첨부파일 수(%d)를 초과하였습니다."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "모두 선택"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "디바이스 저장공간"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD 카드"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "공유"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "네트워크 오류가 발생하였습니다. 다시 시도하세요."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "다음 파일 자동 재생"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "진행 중..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "최대 글자 수에 도달하였습니다."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "삭제"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "모두 삭제"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "검색 결과가 없습니다"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "항목 선택"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "항목 선택"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "취소"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "완료"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "취소"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "삭제"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "저장 위치"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "동영상 선택"
+
diff --git a/res/po/lt.po b/res/po/lt.po
new file mode 100755
index 0000000..4595867
--- /dev/null
+++ b/res/po/lt.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Atsisiųsti"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Bus atsiųstas 1 aplankas."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Bus atsiųstas 1 vaizdo įrašas."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Bus atsiųsti visi aplankai."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Bus atsiųsti visi vaizdo įrašai."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Bus atsiųsta aplankų: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Bus atsiųsta vaizdo įrašų: %d."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobilieji duomenys išjungti. Vietoj to prisijunkite prie „Wi-Fi“ tinklo arba įjunkite mobiliuosius duomenis ir bandykite dar kartą."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privatus"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Vieta"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Nežinomas"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Gerai"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 aplankas"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vaizdo įrašas"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Visos"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Iš įrenginio"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Iš „Dropbox“"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Paskutinį kartą keista"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Rodytinas turinys"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Paieška"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Dalytis"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Bus ištrintas 1 aplankas."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Trinama..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kai fotoaparatu įrašysite vaizdo įrašų, jie bus rodomi čia."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vaizdo įrašai (-ų)"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vaizdo įrašas"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Vaizdo įrašų nėra"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Išsami informacija"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Aplankas"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Sąrašas"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Neseniai prid."
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Neseniai peržiūrėta"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Pervardyti"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Dydis"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Rūšiuoti pagal"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Pavadinimas"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipas"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Peržiūrėti kaip"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Visi vaizdo įrašai bus ištrinti."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Bus ištrinti aplankai: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Bus ištrinta vaizdo įrašų: %d."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Šis aplankas bus ištrintas."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d aplankai (-ų)"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nustatymai"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Negalima paleisti vaizdo įrašo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Lygiavimas"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Šrifto dydis"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Kartoti nustatymą"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrai (pasirenkami)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Bus ištrinti visi aplankai."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centruoti"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Didelis"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Kairė"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Vidutinis"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dešinė"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mažas"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Failo pavadinimas jau naudojamas"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Pašalinti iš privataus"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Perkelti į asmeninį"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Įrašas tuščias."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formatas"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Pokalbio metu negalima paleisti vaizdo įrašo."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Šio failo neįmanoma pasiekti atsijungus. Patikrinkite tinklo ryšį ir bandykite dar kartą."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Pasirinktas elementas bus perkeltas į %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Pasirinkti elementai bus perkelti į %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Šalinama..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Perkeliama..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Nepavyko perkelti į asmeninę saugyklą."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Nepavyko perkelti į įprastą saugyklą."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Žinutė"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Aplankai"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "El. paštas"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (naujausi)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Pasirinkta: %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Trinti vaizdo įrašus"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Trinti vaizdo įrašą"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Perkelti"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Ilguma"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Platuma"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Kai įrašysite vaizdo įrašus naudodami fotoaparatą, jie bus rodomi."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Atš."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stabdyti po visų"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Kartoti dabartinį"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Kartoti viską"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Raiška"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Trinti viską"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Šis failas palaiko tik garso duomenis. Dabar atkuriamas garsas."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Šis failas palaiko tik vaizdo duomenis. Dabar atkuriamas vaizdas."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Pervardyti"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Ausinės"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Atsisiųsti"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Išjungta"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Įjungta"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Bus pašalintas 1 vaizdo įrašas."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Neteisingas simbolis"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nėra paieškos rezultatų"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Pasirinkti"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Paskutinį kartą keista"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Atlikta"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Platuma"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Vardas"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Pavadinimas (A–Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vaizdo įrašai"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Viršytas didžiausias priedų skaičius (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Rinktis viską"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Įrenginio atmintis"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD kortelė"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Bendrinti per"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Įvyko tinklo klaida. Bandykite dar kartą."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Autm. leisti kitą"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Apdorojama..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Pasiektas didžiausias simbolių skaičius."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Trinti viską"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Rezultatų nerasta"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Pasirinkti elementą"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Pasirinkti elementų"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Atšaukti"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ATLIKTA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ATŠAUKTI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "IŠTRINTI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Saugojimo vieta"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Pasirinkti vaizdo įrašą"
+
diff --git a/res/po/lv.po b/res/po/lv.po
new file mode 100755
index 0000000..b4570c2
--- /dev/null
+++ b/res/po/lv.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Lejupielādēt"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Tiks lejupielādēta 1 mape."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Tiks lejupielādēts 1 videoklips."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Tiks lejupielādētas visas mapes."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Tiks lejupielādēti visi videoklipi."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Tiks lejupielādētas %d mapes."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Tiks lejupielādēti %d videoklipi."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobilie dati ir izslēgti. Izveidojiet savienojumu ar Wi-Fi tīklu vai ieslēdziet mobilos datus un mēģiniet vēlreiz."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privāts"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Atrašanās vieta"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Nezināms"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Labi"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mape"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 videoklips"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Visas"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "No ierīces"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "No Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Pēdējo reizi mainīts"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Parādāmais saturs"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Meklēt"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Kopīgot"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Tiks izdzēsta 1 mape."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Dzēš..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kad būsit ierakstījis videoklipus, izmantojot kameru, tie būs redzami šeit."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videoklipi"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Nav videoklipu"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Dati"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mape"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Saraksts"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nesen pievien."
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Pēdējie skatītie"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Pārdēvēt"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Lielums"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Kārtot pēc"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Nosaukums"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Veids"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Skatīt kā"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Visi videoklipi tiks izdzēsti."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Tiks izdzēstas %d mapes."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videoklipi tiks izdzēsti."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Šī mape tiks izdzēsta."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mapes"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Iestatījumi"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nevar demonstrēt video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Līdzinājums"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Fonta lielums"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Atkārtošanas iestatījums"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitri (slēptie titri)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Tiks izdzēstas visas mapes."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrā"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Liels"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Pa kreisi"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Vidējs"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Pa labi"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mazs"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Faila nosaukums jau tiek lietots"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Noņemt no mapes Privāti"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Pārvietot uz privāto krātuvi"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Ieraksts nav norādīts."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formāts"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Sarunas laikā nevar demonstrēt video."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Šis fails nav pieejams bezsaistē. Pārbaudiet savienojumu ar tīklu un mēģiniet vēlreiz."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Izvēlētais objekts tiks pārvietots uz %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Izvēlētie objekti tiks pārvietoti uz %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Noņem..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Pārvieto..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Neizdevās pārvietot uz privāto krātuvi."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Neizdevās pārvietot uz parasto krātuvi."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Ziņa"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mapes"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pasts"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datums (jaunākais)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Izvēlēti: %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Dzēst videoklipus"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Dzēst videoklipu"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Pārvietot"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Garums"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Platums"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Videoklipi tiks parādīti, kad tie būs ierakstīti ar kameru."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Atcelt"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Pārtraukt"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Atkārtot pašreizējo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Atkārtot visu"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Izšķirtspēja"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Dzēst visu"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Šis fails atbalsta tikai audio datus. Tagad atskaņo audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Šis fails atbalsta tikai video datus. Tagad demonstrē video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Pārdēvēt"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Austiņas"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Lejupielādēt"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Izslēgts"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Ieslēgts"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Tiks izdzēsts 1 videoklips."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Nederīga rakstzīme"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nav meklēšanas rezultātu"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Izvēlēties"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Pēdējo reizi mainīts"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gatavs"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datums"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Platums"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Vārds"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nosaukums (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Pārsniegts maksimālais pielikumu skaits (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Izvēlēties visu"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Ierīces krātuve"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD karte"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Kopīgot, izmantojot"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Radās tīkla kļūda. Mēģiniet vēlreiz."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Autom.dem. nākamo"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Notiek apstrāde..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Sasniegts maksimālais rakstzīmju skaits."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Dzēst visu"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Rezultāta nav"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Izvēlieties objektu"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Izvēlēties objektus"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Atcelt"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GATAVS"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ATCELT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "DZĒST"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Krātuves atrašanās vieta"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Izvēlēties video"
+
diff --git a/res/po/mk.po b/res/po/mk.po
new file mode 100755
index 0000000..55e280c
--- /dev/null
+++ b/res/po/mk.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Преземи"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 папка ќе се преземе."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 видео ќе се преземе."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Ќе се преземат сите папки."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Ќе се преземат сите видеа."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Ќе се преземат %d папки."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Ќе се преземат %d видеа."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Мобилните податоци се исклучени. Поврзете се со мрежа Wi-Fi или вклучете Мобилни податоци и обидете се повторно."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Приватно"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Локација"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Непознато"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 папка"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 видео"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Сите"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Од уред"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Од Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Последно менување"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Содржина за приказ"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Пребарување"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Сподели"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 папка ќе се избрише."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Се брише..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Откако ќе снимите видеа со камерата, ќе се прикажат тука."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d видеа"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Видео-запис"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Нема видеа"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Детали"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Папка"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Листа"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Послед.додадено"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Последни разгледани"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Преименувај"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Големина"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Подреди според"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Наслов"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Вид"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Преглед како"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Сите видеа ќе се избришат."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d папки ќе се избришат."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d видеа ќе се избришат."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Папката ќе се избрише."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d папки"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Опции"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Не може да се емитува видеото"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Порамнување"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Големина на букви"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Поставка за повторување"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Титли (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Сите папки ќе се избришат."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Центар"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Големи"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Лево"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Средни"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Десно"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Мали"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Името на фајлот се користи."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Отстрани од Приватно"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Премести во Приватно"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Записот е празен."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Не може да се пушти видео за време на разговор."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Овој фајл е недостапен без мрежа. Проверете го мрежното поврзување и обидете се повторно."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Избраниот запис ќе се премести во %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Избраните записи ќе се преместат во %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Отстранување..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Се преместува..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Не можеше да се премести во лична меморија."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Не можеше да се премести во нормална меморија."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Порака"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Папки"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Е-пошта"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Датум (најнов)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Избрани се %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Избриши видеа"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Избриши видео-запис"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Премести"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Географска должина"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Географска широчина"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Откако ќе снимите видеа со камерата, ќе се прикажат видеа."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Откажи"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Сопри после сѐ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повт. моментална"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторувај сè"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Резолуција"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Бриши"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Избриши сè"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Овој фајл поддржува само аудио податоци. Се емитува звук."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Овој фајл поддржува само видео податоци. Се емитува видео."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Преименувај"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Слушалки"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Преземи"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Исклучено"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Вклучено"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 видео ќе се избрише."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Погрешен знак"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Нема резултати од пребарувањето"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Избери"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Последно менување"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Датум"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Географска широчина"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Име"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Име (А-Ш)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Видео-записи"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Надминат е максималниот број прилози (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Избери ги сите"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Меморија на уредот"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-картичка"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Сподели преку"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Дојде до мрежна грешка. Обидете се повторно."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Следното автом."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Обработување..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Достигнат е максималниот број знаци."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Избриши"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Избриши сè"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Нема резултат од пребарувањето"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Избери запис"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Изберете записи"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Откажи"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ОТКАЖИ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ИЗБРИШИ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Место за меморирање"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Избери видео"
+
diff --git a/res/po/nb.po b/res/po/nb.po
new file mode 100755
index 0000000..cedb3f5
--- /dev/null
+++ b/res/po/nb.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Last ned"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 mappe blir lastet ned."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video blir lastet ned."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Alle mapper blir lastet ned."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Alle videoer blir lastet ned."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d mapper blir lastet ned."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videoer blir lastet ned."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobildata er slått av. Koble til Wi-Fi-nettverk i stedet, eller slå på mobildata, og prøv på nytt."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privat"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Posisjon"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Ukjent"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mappe"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Alle"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Fra enhet"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Fra Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Sist endret"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Innhold du vil vise"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Søk"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Del"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 mappe blir slettet."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Sletter..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Når du har spilt inn videoer med kameraet, vises de her."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videoer"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Ingen videoer"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mappe"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Liste"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nylig lagt til"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Nylig vist"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Endre navn"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Størrelse"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sorter etter"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Tittel"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Vis som"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Alle videoer vil bli slettet."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d mapper vil bli slettet."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videoer vil bli slettet."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Denne mappen vil bli slettet."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mapper"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Innstillinger"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan ikke spille av video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Justering"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Skriftstørrelse"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Gjentakelsesinnstilling"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Alle mapper vil bli slettet."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Midtstill"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stor"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Venstre"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Middels"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Høyre"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Liten"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Filnavnet er allerede i bruk."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Fjern fra Privat"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Flytt til Privat"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Oppføringen er tom."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan ikke spille av video under samtale."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Denne filen er ikke tilgjengelig i frakoblet modus. Kontroller nettverkstilkoblingen og prøv på nytt."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Det valgte elementet vil bli flyttet til %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "De valgte elementene vil bli flyttet til %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Tar bort..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Flytter..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Kunne ikke flytte til personlig lagring."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Kunne ikke flytte til normal lagring."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Melding"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mapper"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-post"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dato (nyeste)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d valgt"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Slett videoer"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Slett video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Flytt"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lengdegrad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breddegrad"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Når du har spilt inn videoer med kameraet, vises videoene dine."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Avbryt"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stopp etter alle"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Gjenta gjeldende"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Gjenta alle"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Oppløsning"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Slett"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Slett alle"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Bare lyddata støttes av denne filen. Spiller nå av lyd."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Bare videodata støttes av denne filen. Spiller nå av video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Endre navn"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Hodetelefoner"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Last ned"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Av"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "På"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video blir slettet."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Ugyldig tegn"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Ingen søkeresultater"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Velg"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Sist endret"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dato"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Breddegrad"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Navn"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Navn (A–Å)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maksimalt antall vedlegg (%d) er oversteget."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Merk alt"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Enhetsminne"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Del via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Det har oppstått en nettverksfeil. Prøv på nytt."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Autospill neste"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Behandler..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maksimalt antall tegn er nådd."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Slett"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Slett alle"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Ingen søketreff"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Velg objekt"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Merk elementer"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FULLFØRT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "AVBRYT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SLETT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Lagringssted"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Velg video"
+
diff --git a/res/po/nl.po b/res/po/nl.po
new file mode 100755
index 0000000..5bb9856
--- /dev/null
+++ b/res/po/nl.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Downloaden"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 map wordt gedownload."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video wordt gedownload."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Alle mappen worden gedownload."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Alle video's worden gedownload."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d mappen worden gedownload."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d video's worden gedownload."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobiele gegevens zijn uitgeschakeld. Maak in plaats daarvan verbinding met een Wi-Fi-netwerk of schakel Mobiele gegevens in en probeer het opnieuw."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privé"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Locatie"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Onbekend"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 map"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Alles"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Van apparaat"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Van Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Laatst gewijzigd op"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Weer te geven inhoud"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Zoeken"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Delen"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 map wordt verwijderd."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Verwijderen..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Nadat u video´s hebt opgenomen met de camera, worden ze hier getoond."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d video's"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Geen video's"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Gegevens"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Map"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lijst"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Onlangs toegev"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Onlangs bekeken"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Naam wijzigen"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Grootte"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sorteren op"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titel"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Type"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Weergeven als"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Alle video´s worden verwijderd."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d mappen worden verwijderd."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d video´s worden verwijderd."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Deze map wordt verwijderd."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mappen"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Instellingen"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan deze video niet afspelen"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Uitlijning"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tekstgrootte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Instelling herhalen"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Ondertiteling"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Alle mappen worden verwijderd."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Midden"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Groot"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Links"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Gemiddeld"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Rechts"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Klein"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Bestandsnaam is al in gebruik."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Verwijderen uit Privé"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Verplaatsen naar Privé"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Geen gegevens."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Indeling"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan video niet afspelen tijdens gesprek."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Dit bestand is offline niet beschikbaar. Controleer de netwerkverbinding en probeer het opnieuw."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Het geselecteerde item wordt verplaatst naar %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "De geselecteerde items worden verplaatst naar %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Verwijderen..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Verplaatsen..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Kan niet verplaatsen naar persoonlijke opslag."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Kan niet verplaatsen naar normale opslag."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Bericht"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mappen"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (recentst)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d geselecteerd"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Video´s verwijderen"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Video verwijderen"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Verplaatsen"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lengtegraad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breedtegraad"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Nadat u video´s hebt genomen met de camera, worden de video´s getoond."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Annul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop na alles"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Huidige herhalen"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Alles herhalen"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolutie"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Wissen"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Alles verwijderen"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Alleen audiogegevens ondersteund door dit bestand. Speelt nu audio af."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Alleen videogegevens ondersteund door dit bestand. Speelt nu video af."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Naam wijzigen"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Koptelefoons"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Downloaden"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Uit"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Aan"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video wordt verwijderd."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Ongeldig teken"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Geen zoekresultaten"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Selecteren"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Laatst gewijzigd op"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gereed"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Breedtegraad"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Naam"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Naam (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video's"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maximumaantal bijlagen (%d) overschreden."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Alles selecteren"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Apparaatopslag"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kaart"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Delen via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Er is een netwerkfout opgetreden. Probeer het opnieuw."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Volgende autom. afspelen"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Verwerken..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maximumaantal tekens bereikt."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Wissen"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Alles verwijderen"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Geen zoekresultaten"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Item selecteren"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Items selecteren"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annuleer"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GEREED"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULEREN"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "VERWIJDEREN"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Opslaglocatie"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Selecteer video"
+
diff --git a/res/po/nl_NL.po b/res/po/nl_NL.po
deleted file mode 100755
index 9b866cc..0000000
--- a/res/po/nl_NL.po
+++ /dev/null
@@ -1,198 +0,0 @@
-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/pl.po b/res/po/pl.po
new file mode 100755
index 0000000..74f7908
--- /dev/null
+++ b/res/po/pl.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Pobierz"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 katalog zostanie pobrany."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 film zostanie pobrany."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Wszystkie katalogi zostaną pobrane."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Wszystkie filmy zostaną pobrane."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Zostanie pobranych katalogów: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Zostanie pobranych filmów: %d."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Funkcja Dane komórkowe jest wyłączona. Połącz się z siecią Wi-Fi lub włącz funkcję Dane komórkowe i spróbuj ponownie."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Prywatne"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokalizacja"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Nieznane"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "Katalogów: 1"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "Filmów: 1"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Wszystkie"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Z urządzenia"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Z Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Ostatnia modyfikacja"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Zawartość do wyświetlenia"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Szukaj"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Udostępniaj"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Usuniętych zostanie katalogów: 1."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Usuwanie..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Filmy zostaną tutaj wyświetlone po ich nagraniu za pomocą aparatu."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "Filmów: %d"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Film"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Brak filmów"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Szczegóły"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Katalog"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Ostatnio dodane"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Ostatnio wyświetlane"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Zmień nazwę"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Rozmiar"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortuj według"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Tytuł"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Typ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Widok"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Wszystkie filmy zostaną usunięte."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Zostanie usuniętych katalogów: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Filmów wideo do usunięcia: %d."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ten katalog zostanie usunięty."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "Katalogów: %d"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ustawienia"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nie można odtworzyć filmu"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Wyrównanie"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Rozmiar tekstu"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ustawienie powtarzania"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Napisy (kodowane)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Wszystkie katalogi zostaną usunięte."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Pośrodku"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Duży"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Do lewej"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Średnia"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Do prawej"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mały"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Nazwa pliku już w użyciu."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Usuń z Prywatnych"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Przenieś do Prywatnych"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Wpis jest pusty."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Nie można odtwarzać wideo podczas połączenia."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Ten plik jest niedostępny w trybie offline. Sprawdź połączenie sieciowe i spróbuj ponownie."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Wybrany element zostanie przeniesiony do lokalizacji %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Wybrane elementy zostaną przeniesione do lokalizacji %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Usuwanie..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Przenoszenie..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Przeniesienie do pamięci osobistej nie powiodło się."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Przeniesienie do pamięci zwykłej nie powiodło się."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Wiadom."
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Katalogi"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (najnowsze)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Wybrano %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Usuwanie filmów"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Usuń film"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Przenieś"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Długość geogr."
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Szerokość geogr."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Filmy zostaną wyświetlone po ich nagraniu za pomocą Aparatu."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Anul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zatrzymaj po wszyst."
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Powtórz bieżący"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Powtórz wszystkie"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rozdzielczość"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Usuń wszystko"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Ten plik obsługuje tylko dane audio. Trwa odtwarzanie dźwięku."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Ten plik obsługuje tylko dane wideo. Trwa odtwarzanie wideo."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Zmień nazwę"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Słuchawki"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Pobierz"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Wyłącz"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Włącz"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Zostanie usuniętych filmów: 1."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Nieprawidłowy znak"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Brak wyników wyszukiwania"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Wybór"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Ostatnia modyfikacja"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gotowe"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Szerokość geogr."
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nazwa"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nazwa (od A do Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Filmy"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Przekroczono maksymalną liczbę załączników (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Zaznacz wszystko"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Pamięć urządzenia"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Karta pamięci"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Udostępnij przez"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Wystąpił błąd sieci. Spróbuj później."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Autom. odt. nast."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Przetwarzanie..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Osiągnięto maksymalną liczbę znaków."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Usuń wszystko"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Brak wyników"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Wybierz element"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Wybierz elementy"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Anuluj"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GOTOWE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANULUJ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "USUŃ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Położenie pamięci"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Wybierz film"
+
diff --git a/res/po/pt_BR.po b/res/po/pt_BR.po
new file mode 100755
index 0000000..61511ab
--- /dev/null
+++ b/res/po/pt_BR.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Baixar"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 pasta será baixada."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 vídeo será baixado."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Todas as pastas serão baixadas."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Todos os vídeos serão baixados."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d pastas serão baixadas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d vídeos serão baixados."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Dados móveis desligados. Conecte-se a uma rede Wi-Fi em seu lugar ou ligue os Dados móveis e tente novamente."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privado"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Local"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Desconhecido"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 pasta"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vídeo"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Todos"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Do dispositivo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Do Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Última modificação"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Conteúdo para exibição"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Pesquisar"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartilhar"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 pasta será excluída."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Excluindo..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Após gravar vídeos usando a câmera, eles serão exibidos aqui."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vídeos"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vídeo"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Nenhum vídeo"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Pasta"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Recém adicion."
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Recém visualizados"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Renomear"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Tamanho"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ordenar por"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipo"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Visualizar como"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Todos os vídeos serão excluídos."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d pastas serão apagadas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d vídeos serão excluídos."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Esta pasta será apagada."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d pastas"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Configurações"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Não é possível reprod. vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alinhamento"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamanho da fonte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir configuração"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Legendas"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Todas as pastas serão excluídas."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centralizar"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerdo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Média"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Direito"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequena"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "O nome do arquivo já está em uso."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Remover do Modo Privado"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mover para o Modo Privado"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entrada vazia."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossível reproduzir vídeo durante chamada."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Este arquivo não está disponível offline. Verifique a conexão de rede e tente novamente."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "O item selecionado será movido para %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Os itens selecionados serão movidos para %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "A remover..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Movendo…"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Falha ao mover para o armazenamento pessoal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Falha ao mover para o armazenamento normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensagem"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Pastas"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (+ recente)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d selecionado(s)"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Excluir vídeos"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Excluir vídeo"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mover"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Após gravar vídeos usando a câmera, os vídeos serão exibidos."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Parar após todos"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir atual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todos"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Apagar"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Apagar tudo"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Somente dados de áudio são suportados por este arquivo. Agora reproduzindo áudio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Somente dados de vídeo são suportados por este arquivo. Agora reproduzindo vídeo."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renomear"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Fones de ouvido"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Baixar"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desativado"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Ativado"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 vídeo será excluído."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Caractere inválido"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nenhum resultado encontrado"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Selecionar"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Última modificação"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nome (A a Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vídeos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Número máximo de anexos (%d) excedido."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Selecionar tudo"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Armazenamento do dispositivo"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Cartão SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartilhar via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ocorreu um erro de rede. Tente novamente."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Repr. prox. autom."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Processando…"
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Número máximo de caracteres atingido."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Excluir"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Apagar tudo"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Sem resultado da busca"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Selecionar item"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Selecionar itens"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "CONCLUÍDO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "EXCLUIR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Local de armazenamento"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Selecionar vídeo"
+
diff --git a/res/po/pt_PT.po b/res/po/pt_PT.po
index 7e467b2..81581fc 100755
--- a/res/po/pt_PT.po
+++ b/res/po/pt_PT.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Já existe"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Transferir"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Auricular estéreo Bluetooth desligado"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 pasta será transferida."
-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_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 vídeo será transferido."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "Etiqueta nova"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Todas as pastas serão transferidas."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Original"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Todos os vídeos serão transferidos."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "Reproduzir no modo silencioso?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d pastas serão transferidas."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Impossível reproduzir ficheiro DRM"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d vídeos serão transferidos."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "Impossível enviar. Este item tem o reencaminhamento bloqueado."
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Dados móveis desligados. Em alternativa, ligue-se a uma rede Wi-Fi ou ligue os Dados móveis e tente de novo."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Versão de DRM DivX não suportada"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privado"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Favorito"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "Concluir"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localização"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Desconhecido"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 pasta"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 vídeo"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Tudo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Do dispositivo"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Da Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Última modificação"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Conteúdo a apresentar"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Procurar"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Enviar"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 pasta será eliminada."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "A eliminar..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Depois de gravar vídeos utilizando a câmara, os vídeos serão mostrados aqui."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d vídeos"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Favoritos"
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Vídeo"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Sem vídeos"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
msgstr "Detalhes"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Resolução"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Pasta"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Adicionar favorito"
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Adic. recentemente"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Mensagem"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Visto recentemente"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "Nome"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Mudar nome"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Tamanho"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "Com AllShare"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Ordenar por"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Cortar como vídeo novo"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Cortar vídeo original"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tipo"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Conta"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Ver como"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Adicionar atalho"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Todos os vídeos serão eliminados."
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "Ad. etiq."
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d pastas serão eliminadas."
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Lista de marcadores cheia. Apague alguns marcadores"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d vídeos serão eliminados."
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Desligada do servidor"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Esta pasta será eliminada."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Tempo de gateway esgotado"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d pastas"
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Erro interno de servidor"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Definições"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "Licença expirou"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossível reproduzir vídeo"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "A carregar"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alinhamento"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "Sem ficheiros"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamanho de fonte"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Memória esgotada"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir definição"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Guardar como"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Legendas (CC)"
-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_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Todas as pastas serão eliminadas."
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "A limitar vídeo..."
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centro"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "Impossível ligar"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "Impossível reproduzir. Pacote inválido do servidor"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerda"
-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_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Média"
-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_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Direita"
-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_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeno"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Cortar"
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Nome ficheiro já utilizado."
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Leitor de vídeo"
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Remover de Privado"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mover para Privado"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Entrada vazia."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossível reproduzir vídeo durante chamada."
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "Nenhum ficheiro multimédia"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Este ficheiro está indisponível offline. Verifique a sua ligação de rede e tente novamente."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "O item seleccionado será movido para %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Os itens seleccionados serão movidos para %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "A remover..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "A mover..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Falha na mudança para armazenamento pessoal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Falha na mudança para armazenamento normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensagem"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "Impossível reproduzir vídeo. Ocorreu um erro"
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Pastas"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "Tamanho do ficheiro"
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Cortar"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Data (+ recente)"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Part. vídeo"
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seleccionado(s)"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Lista de vídeos"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Eliminar vídeos"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "Manter relação de visualização"
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Apagar vídeo"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Definir como"
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mover"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "Legendas"
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "Ficheiro não encontrado"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "Impossível reproduzir vídeo. Dados de streaming inválidos"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Depois de gravar vídeos utilizando a câmara, os vídeos serão mostrados."
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Formato de áudio não suportado"
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Tipo de ficheiro não suportado"
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Parar depois de tudo"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Formato não suportado"
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Formato de vídeo não suportado"
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir tudo"
-msgid "IDS_VPL_OPT_RESOLUTION"
+msgid "IDS_VIDEO_BODY_RESOLUTION"
msgstr "Resolução"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "Impossível reproduzir vídeo durante chamada"
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Elim."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Eliminar tudo"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Só são suportados por este ficheiro dados de áudio. A reproduzir áudio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Só são suportados por este ficheiro dados de vídeo. A reproduzir vídeo."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Mudar nome"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auscultadores"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Transferir"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Desligado"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "Normal"
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Ligado"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Voz"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 vídeo será eliminado."
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Filme"
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Carácter inválido"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1cn"
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nenhuns resultados de procura"
-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_GALLERY_HEADER_SELECT"
+msgstr "Seleccionar"
-msgid "IDS_VPL_BODY_LATITUDE"
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Última modificação"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Concluir"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
msgstr "Latitude"
-msgid "IDS_VPL_BODY_LONGITUDE"
-msgstr "Longitude"
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nome (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Vídeos"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Número máximo de anexos (%d) excedido."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Seleccionar tudo"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Armazenamento do dispositivo"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Cartão SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partilhar via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ocorreu um erro de rede. Tente novamente."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Reprodução automática"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "A processar..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Número máximo de caracteres atingido."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Eliminar tudo"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "S/ resul. pesq."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Seleccionar item"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Seleccionar itens"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "CONCLUÍDO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ELIMINAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Localização armazenamento"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Seleccionar vídeo"
diff --git a/res/po/ro.po b/res/po/ro.po
new file mode 100755
index 0000000..32e865b
--- /dev/null
+++ b/res/po/ro.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Descărcaţi"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 folder va fi descărcat."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 videoclip va fi descărcat."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Toate folderele vor fi descărcate."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Toate videoclipurile vor fi descărcate."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d foldere vor fi descărcate."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videoclipuri vor fi descărcate."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Datele mobile sunt dezactivate. Conectaţi-vă în schimb la o reţea Wi-Fi sau activaţi Datele mobile şi încercaţi din nou."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Private"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KO"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Locaţie"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MO"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Necunoscut"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 director"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 videoclip"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Toate"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "De pe dispozitiv"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Din Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Ultima modificare"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Conţinut de afişat"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Căutare"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partajaţi"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 folder va fi şters."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Se şterge..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "După ce înregistraţi videoclipuri utilizând camera, acestea se vor afişa aici."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videoclipuri"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Videoclip"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Niciun videoclip"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalii"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Folder"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Listă"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Adăugate recent"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Vizualizate recent"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Redenumire"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Dimensiune"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortare după"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titlu"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tip"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Vizualizare ca"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Toate videoclipurile vor fi şterse."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d foldere vor fi şterse."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videoclipuri vor fi şterse."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Acest folder va fi şters."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d directoare"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Setări"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videoclipul nu poate fi redat"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Aliniere"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Dimensiune font"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Setare repetare"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrări (complexe)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Toate folderele vor fi şterse."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centru"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Mare"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Stânga"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mediu"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dreapta"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mic"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Numele de fişier este deja utilizat."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Eliminare din Private"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Mutare în Private"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Locaţie liberă"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formatare"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Imposibil de redat videoclipul în timpul apelului"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Acest fişier nu este disponibil offline. Verificaţi conexiunea la reţea şi încercaţi din nou."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Elementul selectat va fi mutat în %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Elementele selectate vor fi mutate în %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Eliminare..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Mutare"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Nu s-a putut muta în spaţiul de stocare personal."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Nu s-a putut muta în spaţiul de stocare normal."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mesaj"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Foldere"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dată (recente)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d selectate"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Ştergere videoclipuri"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Ştergeţi videoclipul"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Mutare"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitudine"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitudine"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "După ce înregistraţi videoclipuri utilizând camera, se vor afişa videoclipurile."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Anul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Oprire după toate"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetare actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetare globală"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezoluţie"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Şterg."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Ştergere toate"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Doar datele audio sunt acceptate de acest fişier. Se redă conţinut audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Doar datele video sunt acceptate de acest fişier. Se redă conţinut video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Redenumire"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Căşti"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descărcare"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Oprit"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Pornit"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 videoclip va fi şters."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Caracter nevalid"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nu există rezultate ale căutării"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Selectare"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Ultima modificare"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Efectuat"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dată"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitudine"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nume"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nume (de la A la Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videoclipuri"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "S-a depăşit numărul maxim de ataşări (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Selectare totală"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Spaţiu stocare dispozitiv"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Card SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partajare prin"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A apărut o eroare de reţea. Încercaţi din nou."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Redare auto. urm."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Se procesează..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "A fost atins numărul maxim de caractere."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ştergere"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Ştergere toate"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Nici un rezultat al căutării"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Selectare element"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Selectare elemente"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Anulare"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "EFECTUAT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANULARE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ŞTERGERE"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Locaţie stocare"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Selectare videoclip"
+
diff --git a/res/po/ru_RU.po b/res/po/ru_RU.po
index 84ae19a..0d87e58 100755
--- a/res/po/ru_RU.po
+++ b/res/po/ru_RU.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Уже существует"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Загрузить"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Стереогарнитура Bluetooth отключена"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Будет загружена 1 папка."
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "Поддерживается только запрет на пересылку для файлов DRM"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Будет загружено 1 видео."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "Новый тег"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Будут загружены все папки."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Исходный"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Будут загружены все видео."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "Воспроизвести в профиле “Без звука”?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Будет загружено папок: %d."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Невозможно воспроизвести файл DRM"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Будет загружено видео: %d."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "Нельзя отправить. Этот элемент заблокирован для пересылки."
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Мобильные данные включены. Подключитесь к сети Wi-Fi или включите мобильные данные и повторите попытку."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Неподдерживаемая DRM-версия DivX"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Личное"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Закладка"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "б"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "Готово"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Гб"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Избранное"
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "КБ"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
-msgstr "Сведения"
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Местоположение"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Разрешение"
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "МБ"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Добавить закладку"
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Неизвестно"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "ОК"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Сообщение"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 папка"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "Имя"
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 видео"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Все"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "На AllShare"
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "С устройства"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Обрезать и сохранить"
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "С Dropbox"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Обрезать исходное видео"
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Последнее изменение"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Учетная запись"
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Содержимое для просмотра"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Добавить ссылку"
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Поиск"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "Добавить метку"
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Отправить"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Список закладок заполнен.\nУдалите некоторые закладки"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 папка будет удалена."
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Отключен от сервера"
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Удаление..."
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Тайм-аут шлюза"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Здесь будут отображаться видеозаписи, сделанные с помощью камеры."
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Внутренняя ошибка сервера"
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "Видеозаписей: %d"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "Лицензия просрочена"
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Видео"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "Загрузка..."
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Нет видео"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "Нет файлов"
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Свойства"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Недостаточно памяти"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Папка"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Сохранить как"
+msgid "IDS_VIDEO_OPT_LIST"
+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_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Недав. добавл."
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "Обрезка видео..."
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Недавно просмотренные"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "Невозможно подключиться"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Переименовать"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "Сбой воспроизведения. От сервера получен недопустимый пакет"
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Размер"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX аналоговый вывод"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Сортировать по"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX кабель HDMI"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Название"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "Это устройство не авторизовано для воспроизведения защищенного видео DivX®"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Тип"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Обрезать"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Вид"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Видеоплеер"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Все видео будут удалены."
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "Нет медиафайлов"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Папки (%d) будут удалены."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "Невозможно воспроизвести видео. Ошибка"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Видео (%d) будут удалены."
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "Размер файла"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Эта папка будет удалена."
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Настроить"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "Папки: %d"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Обмен видео"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Настройки"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Список видео"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Невозможно воспроизвести видео"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "Сохранять пропорции"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Выравнивание"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Установить как"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Размер шрифта"
-msgid "IDS_VPL_OPT_SUBTITLES"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Параметры повторения"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
msgstr "Субтитры"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "Невозможно найти файл"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Все папки будут удалены."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "Невозможно воспроизвести видео. Недопустимые потоковые данные"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "По центру"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Неподдерживаемый формат аудио"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Крупный"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Неподдерживаемый тип файла"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Слева"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Неподдерживаемый формат"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Средний"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Неподдерживаемый формат видео"
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Справа"
-msgid "IDS_VPL_OPT_RESOLUTION"
-msgstr "Разрешение"
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Мелкий"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Имя файла уже используется"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Удалить из приватного режима"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Добавить в приватный режим"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Пустая запись."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "Воспроизведение видео во время вызова невозможно"
+msgstr "Воспроизведение видео во время вызова невозможно."
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "Обычный"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Голос"
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Файл недоступен в автономном режиме. Проверьте подключение к сети и повторите попытку"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Фильм"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Выбранный элемент будет перемещен в %s."
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1 кан."
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Выбранные элементы будут перемещены в %s."
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "7.1-канальный звуковой эффект доступен только в режиме наушников"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Удаление..."
-msgid "IDS_VPL_BODY_LATITUDE"
-msgstr "Широта"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Перемещение..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Не удалось переместить в личное хранилище."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Не удалось переместить в обычное хранилище."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Сообщение"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Папки"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Эл. почта"
-msgid "IDS_VPL_BODY_LONGITUDE"
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Дата (последние)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Выбрано: %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Удалить видео"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Удалить видеозапись"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Переместить"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
msgstr "Долгота"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Здесь будут отображаться видео, снятые с помощью камеры."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Отмена"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Останов. после всех"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повторить текущее"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторять все"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Удалить"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Удалить все"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Только звук, поддерживаемый этим файлом. Текущий воспроизводимый аудиофайл."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Только видео, поддерживаемое этим файлом. Текущий воспроизводимый видеофайл."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Переименовать"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Наушники"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Загрузить"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Выключено"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Включено"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 видеозапись будет удалена."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Недопустимый символ"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Нет результатов поиска"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Выбрать"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Последнее изменение"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Дата"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Имя"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Имя (от А до Я)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Видео"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Превышено максимальное число вложений (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Выбрать все"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Память устройства"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Карта памяти SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Отправить через"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Произошла ошибка сети. Повторите попытку."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Автопереход"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Обработка..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Достигнуто максимальное число символов."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Удалить"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Удалить все"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Нет результатов"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Выберите элемент"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Выберите элементы"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Отмена"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ОТМЕНА"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "УДАЛИТЬ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Место хранения"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Выберите видео"
+
diff --git a/res/po/sk.po b/res/po/sk.po
new file mode 100755
index 0000000..069711c
--- /dev/null
+++ b/res/po/sk.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Stiahnuť"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Stiahne sa 1 priečinok."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Stiahne sa 1 video."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Stiahnu sa všetky priečinky."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Stiahnu sa všetky videá."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Vykoná sa stiahnutie %d priečinkov."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Vykoná sa stiahnutie %d videí."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobilné dátové pripojenie je vypnuté. Pripojte sa namiesto toho k sieti Wi-Fi alebo zapnite mobilné dátové pripojenie a skúste to znova."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Súkromné"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "GPS"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Neznáme"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 priečinok"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Všetky"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Zo zariadenia"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Zo služby Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Naposledy upravené"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Obsah na zobrazenie"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Vyhľadávanie"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Zdieľať"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Odstráni sa 1 priečinok."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Odstraňuje sa..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Po nahratí videí použitím fotoaparátu sa zobrazia tu."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "Počet videí: %d"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Žiadne videá"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Priečinok"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Zoznam"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Naposl. pridané"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Nedávno zobrazené"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Premenovať"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Veľkosť"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Zoradiť podľa"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Názov"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Typ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Zobraziť ako"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Všetky videá sa odstránia."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d priečinky sa odstránia."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Odstránia sa videá v počte %d."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Tento priečinok sa odstráni."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "Počet priečinkov: %d"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nastavenia"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nedá sa prehrať video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Zarovnanie"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Veľkosť písma"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Nastavenie opakovania"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Všetky priečinky sa odstránia."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Stred"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Veľké"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vľavo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Stredné"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Vpravo"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Malé"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Názov súboru sa už používa."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Odstrániť z priečinka Súkromné"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Premiestniť do priečinka Súkromné"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Prázdna položka."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formát"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Počas hovoru sa nedá prehrávať video."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Tento súbor nie je k dispozícii v režime offline. Skontrolujte sieťové pripojenie a skúste to znova."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Vybratá položka sa premiestni do priečinka %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Vybraté položky sa premiestnia do priečinka %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Odstraňovanie..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Presúvanie..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Nepodarilo sa premiestniť do osobného úložného priestoru."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Nepodarilo sa premiestniť do normálneho úložného priestoru."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Správa"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Priečinky"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Dátum (najnovšie)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Vybraté: %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Odstrániť videá"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Odstrániť video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Premiestniť"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Zemepisná dĺžka"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Zemepisná šírka"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Po nahratí videí použitím fotoaparátu sa zobrazia videá."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Zruš."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zastaviť po všetkých"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Opakovať aktuálne"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Opakovať všetko"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rozlíšenie"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Vymaz."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Odstrániť všetko"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Tento súbor podporuje iba zvukové údaje. Teraz sa prehráva zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Tento súbor podporuje iba obrazové údaje. Teraz sa prehráva video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Premenovať"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slúchadlá"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Stiahnuť"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Vyp."
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Zap."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video sa odstráni."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Neplatný znak"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Žiadne výsledky vyhľadávania"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Vyberte"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Naposledy upravené"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Hotovo"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dátum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Zemepisná šírka"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Meno"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Názov (A – Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videá"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Prekročil sa maximálny počet príloh (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Vybrať všetko"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Úložisko zariadenia"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Karta SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Zdieľať cez"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Vyskytla sa chyba siete. Skúste to znova."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Aut. preh. ďalšiu"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Prebieha spracovanie..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Dosiahol sa maximálny počet znakov."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Odstrániť"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Odstrániť všetko"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Žiadny výsledok hľadania"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Vybrať položku"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Vybrať položky"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Zrušiť"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ZRUŠIŤ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ODSTRÁNIŤ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Umiest. úlož. priestoru"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Vyberte video"
+
diff --git a/res/po/sl.po b/res/po/sl.po
new file mode 100755
index 0000000..03d9c6b
--- /dev/null
+++ b/res/po/sl.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Prenos"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Prenesena bo 1 mapa."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Prenesen bo 1 videoposnetek."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Prenesene bodo vse mape."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Preneseni bodo vsi videoposnetki."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Prenesenih bo toliko map: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Prenesenih bo toliko videoposnetkov: %d."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Funkcija Prenos podatkov prek mobilnega omrežja je izklopljena. Namesto tega se povežite z omrežjem Wi-Fi, ali pa vklopite funkcijo Prenos podatkov prek mobilnega omrežja in poskusite znova."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Zasebno"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Neznano"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "V redu"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mapa"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Vse"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Iz naprave"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Iz storitve Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Zadnjič spremenjeno"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Vsebina za prikaz"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Iskanje"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Skupna raba"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Izbrisana bo 1 mapa."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Brisanje ..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Ko boste s kamero posneli videoposnetke, bodo prikazani tukaj."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videoposnetkov"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Ni videoposnetkov"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mapa"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Seznam"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nedavno dodano"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Pred kratkim prikazano"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Velikost"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Razvrsti po"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Naslov"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Vrsta"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Prikaži kot"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Vsi videoposnetki bodo izbrisani."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d map bo izbrisanih."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videoposnetkov bo izbrisanih."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ta mapa bo izbrisana."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d map"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nastavitve"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videa ni mogoče predvajati"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Poravnava"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Velikost pisave"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Nastavitev ponavljanja"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Podnapisi (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Vse mape bodo izbrisane."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Sredina"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velika"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Levo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Srednja"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Desno"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Majhna"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Ime datoteke je že v uporabi."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Odstrani iz zasebne"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Premaknite v mapo Zasebno"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Prazen vnos."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ni mogoče predvajati videa med klicem."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Ta datoteka ni na voljo brez povezave. Preverite omrežno povezavo in poskusite znova."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Izbrani element bo premaknjen v mapo %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Izbrani elementi bodo premaknjeni v mapo %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Odstranjujem ..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Premikam"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Ni uspelo premakniti v osebno shrambo."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Ni uspelo premakniti v običajno shrambo."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Sporoč."
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mape"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pošta"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (najnovejši)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d izbranih"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Izbrišite videoposnetke"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Izbrišite video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Premakni"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Zemljepisna dolžina"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Zemljepisna širina"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Ko boste s kamero posneli videoposnetke, bodo prikazani."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Prekliči"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Ustavi po vseh"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ponovi trenutno"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ponovi vse"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Ločljivost"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Izbris"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Izbriši vse"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Ta datoteka podpira samo zvočne podatke. Zvok se predvaja."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Ta datoteka podpira samo video podatke. Video se predvaja."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slušalke"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Prenos"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Izključeno"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Vključeno"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video bo izbrisan."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Neveljaven znak"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Ni rezultatov iskanja"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Izberite"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Zadnjič spremenjeno"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Končano"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Zemljepisna širina"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ime"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Ime (A–Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videoposnetki"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Največje dovoljeno število prilog (%d) je preseženo."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Izberite vse"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Shramba naprave"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Kartica SD"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Deli z drugimi prek"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Prišlo je do napake omrežja. Poskusite znova."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Sam. pred. nasl."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Obdelujem..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Doseženo je največje dovoljeno število znakov."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Izbriši vse"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Ni rezultatov iskanja"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Izberi predmet"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Izberi elemente"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Prekliči"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "KONČANO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "PREKLIČI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "IZBRIŠI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Mesto shranjevanja"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Izberite videoposnetek"
+
diff --git a/res/po/sr.po b/res/po/sr.po
new file mode 100755
index 0000000..3a8f03a
--- /dev/null
+++ b/res/po/sr.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Preuzmi"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "Jedan folder će biti izbrisan."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "Jedan video zapis će biti preuzet."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Svi folderi će biti preuzeti."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Svi video zapisi će biti preuzeti."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Biće preuzet sledeći broj foldera: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Biće preuzet sledeći broj video zapisa: %d."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Prenos podataka putem mobilne telefonije je isključen. Umesto toga, poveži se na Wi-Fi mrežu ili uključi Prenos podataka putem mobilne telefonije i pokušaj ponovo."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privatni"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Nepoznato"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 folder(a)"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Sve"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "U uređaju"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "U Dropbox-u"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Poslednja izmena"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Sadržaj za prikazivanje"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Pretraga"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Podeli"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "Biće izbrisan 1 folder."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Brisanje..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Nakon snimanja video zapisa kamerom, oni će se prikazati ovde."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d video zapisa"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video zapis"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Nema video zapisa"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Folder"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nedavno dodato"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Nedavno prikazano"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Veličina"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortiraj po"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Naslov"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tip"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Prikaži kao"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Svi video zapisi će biti izbrisani."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Biće izbrisano %d foldera."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d video zapisi biće izbrisani."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ovaj folder će biti izbrisan."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d foldera"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Podešavanja"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nemoguća reprodukcija videa"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Poravnanje"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Veličina slova"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Podešavanje ponavljanja"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titlovi"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Biće izbrisani svi folderi."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Središnje"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velika"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Levo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Srednji"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Desno"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mala"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Naziv fajla već u upotrebi."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Ukloni iz režima Privatno"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Premesti u folder Privatno"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Unos je prazan."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Nemoguće reprodukovati video tokom poziva."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Ovaj fajl nije dostupan dok si offline. Proveri mrežnu vezu i pokušaj ponovo."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Izabrana stavka će biti premeštena u %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Izabrane stavke će biti premeštene u %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Uklanjanje..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Premeštanje"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Neuspešno premeštanje u ličnu memoriju."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Neuspešno premeštanje u običnu memoriju."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Poruka"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Folderi"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pošta"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (najnovije)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Izabrano: %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Izbrisati video zapise"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Izbriši video zapis"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Premesti"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Geografska dužina"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Geografska širina"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Nakon što snimiš video zapise pomoću kamere, oni će se prikazati."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Otkaži"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zaustavi nakon svega"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ponovi aktuelno"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ponovi sve"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolucija"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Izbriši sve"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Ovaj fajl podržava samo zvučne podatke. Sada se reprodukuje zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Ovaj fajl podržava samo video podatke. Sada se reprodukuje video zapis."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slušalice"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Preuzmi"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Isključeno"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Uključeno"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "Jedan video zapis će se izbrisati."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Neispravan karakter"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Nema rezultata pretrage"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Izaberi"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Poslednja izmena"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gotovo"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Geografska širina"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ime"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Ime (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Video zapisi"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Prekoračen je maksimalan broj priloga (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Izaberi sve"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Skladišna lokacija uređaja"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD kartica"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Podeli putem"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Došlo je do greške na mreži. Pokušaj ponovo."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Auto. pusti sled."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Obrada..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Dostignut je maksimalan broj karaktera."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Izbriši sve"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Nema rezultata pretrage"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Izaberi objekat"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Izaberi stavke"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Otkaži"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "OTKAŽI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "IZBRIŠI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Skladišna lokacija"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Izaberi video zapis"
+
diff --git a/res/po/sv.po b/res/po/sv.po
new file mode 100755
index 0000000..ca730fe
--- /dev/null
+++ b/res/po/sv.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Hämta"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 mapp hämtas."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video hämtas."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Alla mappar hämtas."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Alla videor hämtas."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d mappar hämtas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d videor hämtas."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobildata har slagits av. Anslut till ett Wi-Fi-nätverk istället eller slå på Mobildata och försök igen."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Privat"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Plats"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Okänd"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 mapp"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Alla"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Från enhet"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Från Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Senast ändrad"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Innehåll att visa"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Sök"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Dela"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 mapp tas bort."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Tar bort ..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "När du har spelat in videor med kameran visas de här."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d videor"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Videoklipp"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Inga videor"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Mapp"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Lista"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Nyligen tillagda"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Senast visade"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Byt namn"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Storlek"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sortera efter"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Rubrik"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Typ"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Visa som"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Alla videor kommer att raderas."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d mappar kommer att raderas."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videoklipp kommer att raderas."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Mappen kommer att tas bort."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d mappar"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Inställningar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan inte spela upp video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Justering"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Teckenstorlek"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Upprepa inställning"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Textning (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Alla mappar kommer att raderas."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrerat"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stor"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vänster"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Höger"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Liten"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Filnamnet används redan."
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Ta bort från Privat"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Flytta till Privat"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Posten är tom."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan inte spela upp videoklipp medan samtal pågår."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Den här filen är inte tillgänglig offline. Kontrollera din nätverksanslutning och försök igen."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Det valda objektet kommer att flyttas till %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "De valda objekten kommer att flyttas till %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Tar bort..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Flyttar..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Misslyckades med att flytta till privat lagringsutrymme."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Misslyckades med att flytta till vanligt lagringsutrymme."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Medd."
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Mappar"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-post"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Datum (senaste)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d valda"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Ta bort videor"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Ta bort video"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Flytta"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "När du har spelat in videoklipp med kameran kommer videoklippen att visas."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Avbryt"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stoppa efter alla"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Upprepa nuvarande"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Upprepa alla"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Upplösning"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Radera"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Ta bort alla"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Endast ljuddata stöds av den här filen. Spelar nu upp ljudet."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Endast videodata stöds av den här filen. Spelar nu upp videon."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Byt namn"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Hörlurar"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Hämta"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Av"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "På"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video kommer att tas bort."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Ogiltigt tecken"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Inga sökresultat"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Välj"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Senast ändrad"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Klar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Namn"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Namn (A till Ö)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videoklipp"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Max tillåtna antal bilagor (%d) har överskridits."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Välj alla"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Enhetslagring"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Dela via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ett nätverksfel har inträffat. Försök igen."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Spela nästa auto."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Bearbetar..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Högsta antal tecken har uppnåtts."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ta bort"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Ta bort alla"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Inget sökresultat"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Välj objekt"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Välj objekt"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "KLAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "AVBRYT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "TA BORT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Lagringsplats"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Välj videoklipp"
+
diff --git a/res/po/tr_TR.po b/res/po/tr_TR.po
index beec85b..afc3ae5 100755
--- a/res/po/tr_TR.po
+++ b/res/po/tr_TR.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "Zaten var"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "İndir"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "Bluetooth stereo kulaklık takılı değil"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 klasör indirilecek."
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "DRM dosyası iletme türü hariç desteklenmiyor"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 video indirilecek."
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "Yeni im"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Tüm klasörler indirilecek."
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "Orijinal"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Tüm videolar indirilecek."
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "Sessiz modda oynatılsın mı?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d klasör indirilecek."
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "DRM dosyası çalınamıyor"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d video indirilecek."
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "Gönderilemiyor. Bu öğe iletmeye karşı kilitli."
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobil veri kapatıldı. Bunun yerine Wi-Fi ağına bağlanın veya Mobil veriyi etkinleştirip tekrar deneyin."
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "Desteklenmeyen DivX DRM sürümü"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Özel"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "Yer imi"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Konum"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Bilinmeyen"
+
+msgid "IDS_VIDEO_BUTTON_OK"
msgstr "Tamam"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "Sık kullanılanlar"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 klasör"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Hepsi"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Cihazdan"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox'tan"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Son değiştirilme"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Görüntülenecek içerik"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Ara"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 klasör silinecek."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Siliniyor..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kamerayı kullanarak video çektiğinizde videolar burada görüntülenir."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d video"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Video yok"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgid "IDS_VIDEO_OPT_DETAILS"
msgstr "Ayrıntılar"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "Çözünürlük"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Klasör"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "Yer imi ekle"
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Listele"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Son eklenenler"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "Mesaj"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Son görüntülenenler"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "İsim"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Yeniden adlandır"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Boyut"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Sıralama ölçütü"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "AllShare üzerinde"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Başlık"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "Yeni videoyu kırp"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tür"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "Orijinal videoyu kırp"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Farklı görüntüle"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "Hesap"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Tüm videolar silinecek."
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "Kısayol ekle"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d klasör silinecek."
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "İm ekle"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d video silinecek."
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "Yer işaretleri listesi dolu. Bazılarını silin"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "%d klasör silinecek."
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "Sunucu bağlantısı kesildi"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d klasörleri"
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "Ağ geçidi zaman aşımı"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ayarlar"
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "Dahili sunucu hatası"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Video oynatılamıyor"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "Lisans süresi doldu"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Hizalama"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "Yükleniyor..."
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Yazı boyutu"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "Dosya yok"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ayarı tekrarla"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "Bellek yetersiz"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Altyazılar (CC)"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "Farklı kaydet"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Tüm klasörler silinecek."
-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_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Merkez"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "Video kırpılıyor..."
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Büyük"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "Bağlantı başarısız"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Sol"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "Oynatılamıyor. Sunucudan geçersiz paket"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Orta"
-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_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Sağ"
-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_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Küçük"
-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_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Dosya adı kullanılıyor"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "Kes"
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Özelden Kaldır"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "Video oynatıcı"
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Özel'e taşı"
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "Hiç ortam dosyası yok"
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Girdi yok."
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "Video oynatılamıyor. Hata oluştu"
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Biçim"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "Dosya boyutu"
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Görüşme sırasında video oynatılamıyor."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "DropBox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Bu dosya çevrim dışı durumda kullanılamaz. Ağ bağlantısını kontrol edin ve tekrar deneyin."
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "Kes"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Seçilen öğe %s öğesine taşınacak."
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "Video paylaş"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Seçilen öğeler %s öğesine taşınacak."
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "Video listesi"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Çıkartılıyor..."
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "En-boy oranını koru"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Taşıyor..."
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "Yap"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Kişisel belleğe taşınamadı."
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "Altyazılar"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Normal belleğe taşınamadı."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mesaj"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "Dosya bulunamıyor"
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Klasörler"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "Video oynatılamıyor. Geçersiz veri akışı."
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-posta"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Tarih (en yeni)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d seçildi"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Videoları sil"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Videoyu sil"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Taşı"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Boylam"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Enlem"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "Desteklenmeyen ses biçimi"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Kamera ile video çektikten sonra, videolar gösterilecektir"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "Desteklenmeyen dosya türü"
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "İptal"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "Desteklenmeyen biçim"
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Tümünden sonra drdr"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "Desteklenmeyen video biçimi"
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Geçerli ortm tkrarla"
-msgid "IDS_VPL_OPT_RESOLUTION"
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Tümünü tekrarla"
+
+msgid "IDS_VIDEO_BODY_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_VIDEO_BUTTON_DELETE"
+msgstr "Sil"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Tümünü sil"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Bu dosya sadece ses verilerini destekliyor. Şu anda ses oynatılıyor."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Bu dosya sadece video verilerini destekliyor. Şu anda video oynatılıyor."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Yeniden adlandır"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kulaklıklar"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "İndir"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Kapalı"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Açık"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "Normal"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 video silinecek."
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "Ses"
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Geçersiz karakter"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "Film"
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Hiç arama sonucu bulunamadı"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1ch"
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Seç"
-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_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Son değiştirilme"
-msgid "IDS_VPL_BODY_LATITUDE"
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Tamam"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Tarih"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
msgstr "Enlem"
-msgid "IDS_VPL_BODY_LONGITUDE"
-msgstr "Boylam"
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "İsim"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Ad (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videolar"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Maksimum ek sayısı (%d) aşıldı."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Tümünü seç"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Cihaz hafızası"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD kart"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Paylaşma şekli"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Bir ağ hatası oluştu. Tekrar deneyin."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Sonrakini oto oynat"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Uygulanıyor..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Maksimum karakter sayısına ulaşıldı."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Tümünü sil"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Arama sonucu yok"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Öğe seç"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Öğeleri seç"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "İptal"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "BİTTİ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "İPTAL"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "SİL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Saklama yeri"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Video seçin"
diff --git a/res/po/uk.po b/res/po/uk.po
new file mode 100755
index 0000000..68cb263
--- /dev/null
+++ b/res/po/uk.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Завантажити"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 папку буде завантажено."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 відео буде завантажено."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Усі папки буде завантажено."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Усі відео буде завантажено."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d папок буде завантажено."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d відео буде завантажено."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Використання мобільних даних вимкнено. Натомість підключіться до мережі Wi-Fi або ввімкніть використання мобільних даних і спробуйте ще раз."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Особистий"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "Б"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "ГБ"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "КБ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Розташування"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "МБ"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Невідомо"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 папка"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 відео"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Всі"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Із пристрою"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Із Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Дата останнього змінення"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Вміст для відображення"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Пошук"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Надати спільний доступ"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 папку буде видалено."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Видалення..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Після запису відео за допомогою камери їх буде відображено тут."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "Кількість відео: %d"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Відео"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Немає відео"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Деталі"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Папка"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Список"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Нещодавно додані"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Останні переглянуті"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Перейменувати"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "Розмір"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Вигляд"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Назва"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Тип"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Переглянути як"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Усі відео буде видалено."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "Буде видалено папок: %d."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "Буде видалено відео: %d"
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Цю папку буде видалено."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "Папок: %d"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Налаштування"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Неможливо відтворити відео"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Вирівнювання"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Розмір шрифту"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Установка повторення"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитри (приховані)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Усі папки буде видалено."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Центр"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Великий"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Вліво"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Середній"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Вправо"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Маленький"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Ім’я файла вже використовується"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Видалити з особистого режиму"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Перемістити до особистої папки"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Запис порожній."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Неможливо відтворити відео під час виклику."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Цей файл недоступний у режимі без зв’язку. Перевірте підключення до мережі та спробуйте ще раз"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Вибраний об'єкт буде переміщено до папки %s."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Вибрані об'єкти буде переміщено до папки %s."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Видалення..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Переміщення..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Не вдалося перемістити до особистого місця збереження."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Не вдалося перемістити до стандартного місця збереження."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Повідом."
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Папки"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Дата (остання)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "Вибрано %d"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Видалити відео"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Видалити відео"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Перемістити"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Довгота"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Збережені відео відображатимуться в цьому розділі після їх записування за допомогою камери."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Скасувати"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Зупинити після усіх"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повт. поточний запис"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторити всі"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Роздільна здатність"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Видал."
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Видалити всі"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Цей файл підтримує лише аудіодані. Наразі відтворюється аудіо."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Цей файл підтримує лише відеодані. Наразі відтворюється відео."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Перейменувати"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Навушники"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Завантаження"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "Вимкнено"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Увімкнено"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 відео буде видалено."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Хибний символ"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Пошук не дав результатів"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Вибрати"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Дата останньої зміни"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Дата"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Iм'я"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Ім’я (А–Я)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Відео"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Досягнуто максимальної кількості вкладень: (%d)."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Вибрати всі"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Місце збереження на пристрої"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "Карта пам’яті"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Надіслати через"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Сталася помилка мережі. Спробуйте ще раз."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Відтвор. наступне"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Обробка..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Досягнуто максимальної кількості символів."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Видалити"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Видалити всі"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Немає результату"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Вибір об'єкта"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Виберіть об’єкти"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Скасувати"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "СКАСУВАТИ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "ВИДАЛИТИ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Місце збереження"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Вибір відео"
+
diff --git a/res/po/uz.po b/res/po/uz.po
new file mode 100755
index 0000000..704caba
--- /dev/null
+++ b/res/po/uz.po
@@ -0,0 +1,390 @@
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "Yuklab olish"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "1 ta jild yuklab olinadi."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "1 ta video yuklab olinadi."
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "Barcha jildlar yuklab olinadi."
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "Barcha videolar yuklab olinadi."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "%d ta jild yuklab olinadi."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "%d ta video yuklab olinadi."
+
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "Mobil ma’lumot o‘chirilgan. Uning o‘rniga Wi-Fi tarmoqqa ulaning yoki Mobil ma’lumotni yoqing va qayta urinib ko‘ring."
+
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "Maxfiy"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Gb"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Joylashuv"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mb"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "Noma’lum"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 jild"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1ta video"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "Barchasi"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "Qurilmadan"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "Dropbox-dan"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Oxirgi o‘zgartirilgan"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "Ko‘rsatiladigan tarkib"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "Qidirish"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Ulashish"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1ta jild joy yo‘q qilinadi."
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "Yo‘q qilinmoqda..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "Kamera yordamida videoga olganingizdan so‘ng, ular bu yerda ko‘rsatiladi."
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d video"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "Video"
+
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "Videolar yo‘q"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Tafsilotlar"
+
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "Jild"
+
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "Ro‘yxat"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "Oxir/qo‘shilgan"
+
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "Oxirgi ko‘rb chiqilgan"
+
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "Nom o‘zgartirish"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "O‘lcham"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "Quyidagi bo‘y. saral"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Sarlavha"
+
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "Tur"
+
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "Quyidagi sifatida ko‘rib chiqish"
+
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "Barcha videolar yo‘q qilinadi."
+
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d ta jild o'chiriladi."
+
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d videolar o'chiriladi."
+
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "Ushbu jild o'chiriladi."
+
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d jild"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Parametrlar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videoni o‘ynatib bo‘lmaydi"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Tenglashtirish"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Shrift o‘lchami"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Takrorlash parametri"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrlar (CC)"
+
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "Barcha jildlar o'chiriladi."
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Markaz"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Katta"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Chap"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "O‘rta"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "O‘ng"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Kichik"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "Fayl nomi avvaldan foydalanilmoqda"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "Maxfiydan olib tashlash"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "Maxfiyga ko‘chirish"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "Kiritish bo‘sh."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Qo‘ng‘iroq mobaynida video o‘ynatib bo‘lmaydi."
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "Offlayn rejimda fayldan foydalanib bo‘lmaydi. Tarmoq ulanishini tekshiring va qayta urinib ko‘ring"
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "Tanlangan element %sga ko‘chiriladi."
+
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "Tanlangan elementlar %sga ko‘chiriladi."
+
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "Olib tashlanmoqda..."
+
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "Ko‘chirilmoqda..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "Shaxsiy xotiraga ko‘chirib bo‘lmadi."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "Normal xotiraga ko‘chirib bo‘lmadi."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Xabar"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "Jildlar"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pochta"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "Sana (eng oxirgi)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d tanlangan"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "Videolarni yo‘q qilish"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "Videoni yo‘q qilish"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "Ko‘chirish"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Uzunlik"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Kenglik"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "Kamera yordamida videolar yozib olingandan so‘ng videolar ko‘rsatiladi."
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Bek/q."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Baridan keyin to‘xta"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Joriyni takrorlash"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Barini takrorlash"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolyutsiya"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "Yo‘q/q"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "Barchasi o'chirish"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Faqat audio ma’lumot ushbu fayl tomonidan qo‘llab-quvvatlanadi. Hozirda o‘ynayotgan audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Faqat video ma’lumot ushbu fayl tomonidan qo‘llab-quvvatlanadi. Hozirda o‘ynayotgan video."
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Nom o‘zgartirish"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Quloqliklar"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Yuklab olish"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "O‘ch."
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "Yoq."
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1ta video yo‘q qilinadi."
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "Noto‘g‘ri belgi"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "Qidirish natijalari yo‘q"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "Tanlash"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "Oxirgi o‘zgartirilgan"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Sana"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "Kenglik"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ism"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "Nom (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "Videolar"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "Teglar soni maksimal miqdordan (%d) oshib ketdi."
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "Barchasini tanlash"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Qurilma xotirasi"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD-karta"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Quyidagi orqali ulashish"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Tarmoq xatosi yuz berdi. Qayta urinib ko‘ring."
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "Key. avto-o‘ynat."
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "Bajarilmoqda..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "Belgilar soni maksimal miqdorga yetdi."
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Yo‘q qilish"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "Barchasi o'chirish"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "Qidiruv natijalari yo‘q"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "Element tanlang"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "Elementlarni tanlang"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Bekor qilish"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "BAJARILDI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "BEKOR QILISH"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "O‘CHIRISH"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Xotira joylashuvi"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "Videoi tanlash"
+
diff --git a/res/po/zh_CN.po b/res/po/zh_CN.po
index 3c73f77..878ee80 100755
--- a/res/po/zh_CN.po
+++ b/res/po/zh_CN.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "已经存在"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "下载"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "蓝牙立体声耳机未连接"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "将下载 1 个文件夹。"
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "不支持除转寄锁定类型之外的 DRM 文件"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "将下载 1 个视频。"
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "新标签"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "将下载所有文件夹。"
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "原作"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "将下载所有视频。"
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "在安静模式下播放?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "将下载 %d 个文件夹。"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "无法播放DRM文件"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "将下载 %d 个视频。"
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "无法发送。此项目禁止转发"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "移动数据已关闭。改为连接至 Wi-Fi 网络或打开移动数据并重试。"
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "不支持的DivX® DRM版本"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "私人"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "书签"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "完成"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "位置"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "未知"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "确定"
+
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1个文件夹"
+
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 个视频"
+
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "全部"
+
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "从设备"
+
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "从 Dropbox"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "上次修改"
+
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "要显示的内容"
+
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "搜索"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "共享"
+
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "将删除 1 个文件夹。"
+
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "正在删除..."
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "在您使用照相机录制视频后,其将显示在此处。"
+
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d 个视频"
+
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "视频"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "收藏"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "无视频"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgid "IDS_VIDEO_OPT_DETAILS"
msgstr "详情"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "分辨率"
+msgid "IDS_VIDEO_OPT_FOLDER"
+msgstr "文件夹"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "添加书签"
+msgid "IDS_VIDEO_OPT_LIST"
+msgstr "列表"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "娱乐共享"
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "最近添加"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "信息"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "最近浏览"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "名称"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "重命名"
+
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "大小"
+
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "排序方式"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "在AllShare上"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "标题"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "修剪作为新视频"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "类型"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "修剪原始视频"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "查看方式"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "帐户"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "将删除所有视频。"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "添加快捷键"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d个文件夹将被删除。"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "添加标签"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "将删除 %d 个视频。"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "书签列表满。删除部分书签"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "该文件夹将被删除"
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "已从服务器断开"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d 个文件夹"
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "网关超时"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "设定"
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "内部服务器无效"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "无法播放视频"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "许可已过期"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "校准"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "裝载中…"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "字体大小"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "无文件"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "重复设定"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "内存不足"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "另存为"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+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_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "居中"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "正在剪切视频…"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "无法连接"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "左"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "无法播放。服务器无效信息包"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中等"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "未经授权的视频输出。请使用模拟输出查看该DivX®保护视频"
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "右"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "未经授权的视频输出。请使用HDMI查看该DivX®保护视频"
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "您的设备没有被授权播放这个DivX®加密的视频."
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "文件名已被使用"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "剪切"
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "从私密模式移除"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "视频播放器"
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "移动至私密模式"
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "没有媒体文件"
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "空记录。"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "无法播放视频。出现错误"
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "格式"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "文件大小"
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通话中无法播放视频。"
+
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "离线时该文件不可用。检查网络连接并重试。"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "剪切"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "选定项目将移动至 %s。"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "共享视频"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "选定项目将移动至 %s。"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "视频列表"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "正在移除..."
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "保持屏幕高宽比例"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "移动中..."
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "设定为"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "移至个人存储失败"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "说明字幕"
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "移至普通存储失败"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "信息"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "无法找到文件"
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "文件夹"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "无法播放视频。无效视频流数据"
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "电子邮件"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "日期(最近)"
+
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d 已选择"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "删除视频"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "删除视频"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "移动"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "经度"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "纬度"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "不支持的音频格式"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "在您使用照相机录制视频后,将显示视频。"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "不支持的文件类型"
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "取消"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "不支持格式"
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "播放全部后停止"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "不支持的视频格式"
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "重复当前"
-msgid "IDS_VPL_OPT_RESOLUTION"
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "重复全部"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
msgstr "分辨率"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "通话中无法播放视频"
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "删除"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "全部删除"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "该文件仅支持音频数据。正在播放音频。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "该文件仅支持视频数据。正在播放视频。"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "重命名"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "耳机"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "下载"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "关"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "开"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "正常"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "将删除 1 个视频。"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "语音"
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "无效字符"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "电影"
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "无搜索结果"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1ch"
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "选择"
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "7.1 声道声音效果只适用于耳机模式"
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "上次修改"
-msgid "IDS_VPL_BODY_LATITUDE"
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日期"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
msgstr "纬度"
-msgid "IDS_VPL_BODY_LONGITUDE"
-msgstr "经度"
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名称"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "名称 (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "视频"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "已超过最大附件数 (%d)"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "全选"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "设备存储"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD 卡"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "共享通过"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "网络出错。请重试。"
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "自动播放下一个"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "处理中..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "已达到最大字符数"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "删除"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "全部删除"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "无搜索结果"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "选择项目"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "选择项目"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完成"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "删除"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "存储位置"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "选择视频"
diff --git a/res/po/zh_HK.po b/res/po/zh_HK.po
index 5f840aa..feafbf6 100755
--- a/res/po/zh_HK.po
+++ b/res/po/zh_HK.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "已存在"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "下載"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "藍牙立體聲耳機已中斷連接"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "將下載 1 個資料夾。"
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "不支援 DRM 檔案,轉寄鎖定類型除外"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "將下載 1 個影片。"
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "新標籤"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "將下載所有資料夾。"
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "原圖"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "將下載所有影片。"
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "以靜音模式播放?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "將下載 %d 個資料夾。"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Unable to play DRM file"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "將下載 %d 個影片。"
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "無法發送。此項目已轉寄鎖定"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "流動數據已關閉。改為連接至 Wi-Fi 網絡或開啟流動數據並重試。"
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "不支援的 DivX DRM 版本"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "私人資料夾"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "書籤"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "完成"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "我的最愛"
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
-msgstr "詳情"
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "位置"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "解像度"
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "加入書籤"
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "未知"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "確定"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "訊息"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 個資料夾"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "名稱"
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 個影片"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "在 AllShare"
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "全部"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "修剪為新影片"
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "從裝置"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "修剪原始影片"
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "從 Dropbox"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "帳戶"
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "上次修改"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "加入捷徑"
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "要顯示的內容"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "加入標籤"
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "搜尋"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "書籤清單已滿。請刪除一些書籤"
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "分享"
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "伺服器連接中斷"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "1 個資料夾將被刪除。"
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "網關逾時"
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "正在刪除..."
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "內部伺服器錯誤"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "使用相機錄製影片後,將顯示於此。"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "許可已過期"
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d 個影片"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "正在載入..."
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "影片"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "無檔案"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "無影片"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "記憶體不足"
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "詳細資料"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "另存為"
+msgid "IDS_VIDEO_OPT_FOLDER"
+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_VIDEO_OPT_LIST"
+msgstr "清單"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "正在修剪影片..."
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "最近加入"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "無法連接"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "最近檢視"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "無法播放。來自伺服器的分組數據無效"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "重新命名"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "未經授權的影片輸出。請使用模擬輸出觀看此段受 DivX 保護的影片"
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "大小"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "未經授權的影片輸出。請使用 HDMI 觀看此段受 DivX 保護的影片"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "排序方式"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "裝置未獲授權,無法播放此DivX®保護的影片"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "標題"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "修剪"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "類型"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "影片播放器"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "檢視方式"
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "無媒體檔案"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "所有影片將被刪除。"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "無法播放影片。發生錯誤"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "%d 個資料夾將被刪除。"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "檔案大小"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d 個影片將被刪除。"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "修剪"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "此資料夾將被刪除。"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "共享影片"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d 個資料夾"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "影片清單"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "設定"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "保持屏幕寬高比例"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "無法播放影片"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "設定為"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "校準"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "字幕"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "字體大小"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "無法尋找檔案"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "重複設定"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "無法播放影片。無效串流數據"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕 (CC)"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "不支援的音效格式"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "所有資料夾將被刪除。"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "不支援的檔案類型"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "置中"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "不支援格式"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "不支援的影片格式"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "靠左"
-msgid "IDS_VPL_OPT_RESOLUTION"
-msgstr "解像度"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "靠右"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "檔案名稱已被使用"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "從私人資料夾中移除"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "移動至私人資料夾"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "空白記錄。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "格式"
msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "通話期間無法播放影片"
+msgstr "通話期間無法播放影片。"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "正常"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "語音"
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "離線時無法使用此檔案。檢查網絡連線並重試一次。"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "電影"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "選擇的項目將被移至 %s。"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1 聲道"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "選擇的項目將被移至 %s。"
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "7.1 聲道音效只適用於耳機模式"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "正在移除..."
-msgid "IDS_VPL_BODY_LATITUDE"
-msgstr "緯度"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "正在移動..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "無法移至個人儲存空間。"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "無法移至一般儲存空間。"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "訊息"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "資料夾"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "電子郵件"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "日期(最近)"
-msgid "IDS_VPL_BODY_LONGITUDE"
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d 已選擇"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "刪除影片"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "刪除影片"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "移動"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
msgstr "經度"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "使用相機錄製影片後,將顯示影片。"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "全部播放後停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "重複目前的"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "重複全部"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "刪除"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "全部刪除"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "此檔案僅支援音訊數據。現正播放音訊。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "此檔案僅支援影片數據。現正播放影片。"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "重新命名"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "耳機"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "下載"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "關"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "開"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "1 個影片將被刪除。"
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "無效字元"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "無搜尋結果"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "選擇"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "上次修改"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日期"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "名稱 (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "影片"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "已超過附件數量上限 (%d)。"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "選擇全部"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "裝置記憶體"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD 卡"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "分享透過"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "發生網絡錯誤。請重試。"
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "自動播放下一個"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "正在處理..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "已達字元數量上限。"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "刪除"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "全部刪除"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "無搜尋結果"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "選擇項目"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "選擇項目"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完成"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "刪除"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "儲存裝置位置"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "選擇影片"
+
diff --git a/res/po/zh_TW.po b/res/po/zh_TW.po
index 8237fde..a59c2e2 100755
--- a/res/po/zh_TW.po
+++ b/res/po/zh_TW.po
@@ -1,198 +1,390 @@
-msgid "IDS_VPL_BODY_ALREADY_EXISTS"
-msgstr "已存在"
+msgid "IDS_VIDEO_OPT_DOWNLOAD"
+msgstr "下載"
-msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
-msgstr "藍牙立體聲耳機已中斷連線"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DOWNLOADED"
+msgstr "將下載 1 個資料夾。"
-msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
-msgstr "不支援除了轉寄鎖定類型外的 DRM 檔案"
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DOWNLOADED"
+msgstr "將下載 1 個影片。"
-msgid "IDS_VPL_BODY_NEW_TAG"
-msgstr "新標籤"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "將下載所有資料夾。"
-msgid "IDS_VPL_BODY_ORIGINAL"
-msgstr "原圖"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "將下載所有影片。"
-msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
-msgstr "在靜音模式下播放嗎?"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DOWNLOADED"
+msgstr "將下載 %d 個資料夾。"
-msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
-msgstr "Unable to play DRM file"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DOWNLOADED"
+msgstr "將下載 %d 個影片。"
-msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
-msgstr "無法傳送。此項目已鎖定轉寄"
+msgid "IDS_VIDEO_TPOP_MOBILE_DATA_TURNED_OFF_CONNECT_TO_WI_FI_NETWORK_INSTEAD_OR_TURN_ON_MOBILE_DATA_AND_TRY_AGAIN"
+msgstr "行動數據已關閉。請連接 Wi-Fi 網路,或開啟行動數據並重試。"
-msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
-msgstr "不支援的 DivX DRM 版本"
+msgid "IDS_GALLERY_OPT_PRIVATE_M_CONTENT"
+msgstr "隱私"
-msgid "IDS_VPL_BUTTON_BOOKMARK"
-msgstr "書籤"
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
-msgid "IDS_VPL_BUTTON_DONE"
-msgstr "完成"
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
-msgid "IDS_VPL_HEADER_FAVOURITE"
-msgstr "我的最愛"
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
-msgid "IDS_VPL_MBODY_DETAILS_ABB"
-msgstr "詳細"
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "位置"
-msgid "IDS_VPL_MBODY_RESOLUTION"
-msgstr "解析度"
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
-msgid "IDS_VPL_OPT_ADD_BOOKMARK"
-msgstr "新增書籤"
+msgid "IDS_VIDEO_BODY_UNKNOWN"
+msgstr "未知"
-msgid "IDS_VPL_OPT_ALLSHARE"
-msgstr "AllShare"
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "確認"
-msgid "IDS_VPL_OPT_MESSAGE"
-msgstr "訊息"
+msgid "IDS_VIDEO_HEADER_1_FOLDER"
+msgstr "1 個資料夾"
-msgid "IDS_VPL_OPT_NAME"
-msgstr "名稱"
+msgid "IDS_VIDEO_HEADER_1_VIDEO"
+msgstr "1 個影片"
-msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
-msgstr "On AllShare"
+msgid "IDS_VIDEO_HEADER_ALL"
+msgstr "全部"
-msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
-msgstr "剪輯為新影片"
+msgid "IDS_VIDEO_HEADER_FROM_DEVICE"
+msgstr "自裝置"
-msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
-msgstr "剪輯原始影片"
+msgid "IDS_VIDEO_HEADER_FROM_DROPBOX"
+msgstr "自 Dropbox"
-msgid "IDS_VPL_POP_ACCOUNT"
-msgstr "帳戶"
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "最後一次修改"
-msgid "IDS_VPL_POP_ADD_SHORTCUT"
-msgstr "加入捷徑"
+msgid "IDS_VIDEO_OPT_CONTENT_TO_DISPLAY"
+msgstr "要顯示的內容"
-msgid "IDS_VPL_POP_ADD_TAG"
-msgstr "加入標籤"
+msgid "IDS_VIDEO_OPT_SEARCH"
+msgstr "搜尋"
-msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
-msgstr "書籤清單已滿。請刪除部分書籤"
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "分享"
-msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
-msgstr "伺服器連線中斷"
+msgid "IDS_VIDEO_POP_1_FOLDER_WILL_BE_DELETED"
+msgstr "將刪除 1 個資料夾。"
-msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
-msgstr "閘道逾時"
+msgid "IDS_VIDEO_TPOP_DELETING_ING"
+msgstr "正在刪除..."
-msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
-msgstr "內部伺服器錯誤"
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_THEY_WILL_BE_SHOWN_HERE"
+msgstr "使用相機錄製影片後,將顯示於此。"
-msgid "IDS_VPL_POP_LICENCE_EXPIRED"
-msgstr "授權已到期"
+msgid "IDS_VIDEO_HEADER_PD_VIDEOS"
+msgstr "%d 個影片"
-msgid "IDS_VPL_POP_LOADING_ING"
-msgstr "正在載入..."
+msgid "IDS_VIDEO_HEADER_VIDEO"
+msgstr "影片"
-msgid "IDS_VPL_POP_NO_FILES"
-msgstr "無檔案"
+msgid "IDS_VIDEO_NPBODY_NO_VIDEOS"
+msgstr "無影片"
-msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
-msgstr "記憶體不足"
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "詳細資料"
-msgid "IDS_VPL_POP_SAVE_AS"
-msgstr "另存為"
+msgid "IDS_VIDEO_OPT_FOLDER"
+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_VIDEO_OPT_LIST"
+msgstr "清單"
-msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
-msgstr "正在剪輯影片..."
+msgid "IDS_VIDEO_OPT_RECENTLY_ADDED_ABB"
+msgstr "最近新增"
-msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
-msgstr "無法連線"
+msgid "IDS_VIDEO_OPT_RECENTLY_VIEWED_ABB"
+msgstr "最近瀏覽"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
-msgstr "無法播放。來自伺服器的封包無效"
+msgid "IDS_VIDEO_OPT_RENAME"
+msgstr "重新命名"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "未經授權的影片輸出。請使用模擬輸出觀賞受DivX保護的影片"
+msgid "IDS_VIDEO_OPT_SIZE"
+msgstr "大小"
-msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
-msgstr "未經授權的影片輸出。請使用HDMI觀賞受DivX保護的影片"
+msgid "IDS_VIDEO_OPT_SORT_BY"
+msgstr "排序依"
-msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
-msgstr "您的設備沒有被授權播放這個DivX®加密的視頻。"
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "標題"
-msgid "IDS_VPL_SK3_TRIM"
-msgstr "修剪"
+msgid "IDS_VIDEO_OPT_TYPE"
+msgstr "類型"
-msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
-msgstr "視訊播放器"
+msgid "IDS_VIDEO_OPT_VIEW_AS"
+msgstr "檢視方式"
-msgid "IDS_VPL_POP_NO_MEDIA_FILE"
-msgstr "無媒體文件"
+msgid "IDS_VIDEO_POP_ALL_VIDEOS_WILL_BE_DELETED"
+msgstr "所有影片將會被刪除。"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
-msgstr "無法播放影片。發生錯誤"
+msgid "IDS_VIDEO_POP_PD_FOLDERS_WILL_BE_DELETED"
+msgstr "將刪除 %d 個資料夾。"
-msgid "IDS_VPL_BODY_FILE_SIZE"
-msgstr "檔案大小"
+msgid "IDS_VIDEO_POP_PD_VIDEOS_WILL_BE_DELETED"
+msgstr "%d 個影片將被刪除。"
-msgid "IDS_VPL_BUTTON_TRIM"
-msgstr "剪輯"
+msgid "IDS_VIDEO_POP_THIS_FOLDER_WILL_BE_DELETED"
+msgstr "此資料夾將被刪除。"
-msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
-msgstr "分享影片"
+msgid "IDS_VIDEO_HEADER_PD_FOLDERS"
+msgstr "%d 個資料夾"
-msgid "IDS_VPL_HEADER_VIDEO_LIST"
-msgstr "影片清單"
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "設定"
-msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
-msgstr "保持螢幕顯示比例"
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "無法播放影片"
-msgid "IDS_VPL_OPT_SET_AS"
-msgstr "設定為"
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "校準"
-msgid "IDS_VPL_OPT_SUBTITLES"
-msgstr "字幕"
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "字型大小"
-msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
-msgstr "無法找到檔案"
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "重複設定"
-msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
-msgstr "無法播放影片。無效的串流數據"
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕 (CC)"
-msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
-msgstr "不支援的音訊格式"
+msgid "IDS_VIDEO_POP_ALL_FOLDERS_WILL_BE_DELETED"
+msgstr "將刪除所有資料夾。"
-msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
-msgstr "不支援的檔案類型"
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "置中"
-msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
-msgstr "不支援格式"
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
-msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
-msgstr "不支援的視訊格式"
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "靠左對齊"
-msgid "IDS_VPL_OPT_RESOLUTION"
-msgstr "解析度"
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中等"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "靠右對齊"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
+
+msgid "IDS_VIDEO_TPOP_FILE_NAME_ALREADY_IN_USE"
+msgstr "檔案名稱已被使用"
+
+msgid "IDS_GALLERY_OPT_REMOVE_FROM_PRIVATE"
+msgstr "從隱私資料夾中移除"
+
+msgid "IDS_GALLERY_OPT_MOVE_TO_PRIVATE"
+msgstr "移動至隱私資料夾"
+
+msgid "IDS_IV_POP_ENTRY_IS_EMPTY"
+msgstr "項目為空。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "格式"
msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
-msgstr "無法在通話期間播放影片"
+msgstr "無法在通話期間播放影片。"
-msgid "IDS_VPL_OPT_NORMAL"
-msgstr "正常"
+msgid "IDS_CLOUD_BODY_DROPBOX_ABB"
+msgstr "Dropbox"
-msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT"
-msgstr "語音"
+msgid "IDS_VIDEO_POP_THIS_FILE_IS_UNAVAILABLE_WHILE_OFFLINE_CHECK_NETWORK_CONNECTION_AND_TRY_AGAIN"
+msgstr "離線時無法使用此檔案。檢查網路連線並重試一次。"
-msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT"
-msgstr "電影"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEM_WILL_BE_MOVED_TO_PS"
+msgstr "選取的項目將被移至 %s。"
-msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT"
-msgstr "7.1 聲道"
+msgid "IDS_VIDEO_POP_THE_SELECTED_ITEMS_WILL_BE_MOVED_TO_PS"
+msgstr "選取的項目將被移至 %s。"
-msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
-msgstr "7.1 聲道音效只適用於耳機模式"
+msgid "IDS_VIDEO_POP_REMOVING_ING"
+msgstr "正在移除..."
-msgid "IDS_VPL_BODY_LATITUDE"
-msgstr "緯度"
+msgid "IDS_VIDEO_POP_MOVING_ING"
+msgstr "正在移動..."
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_PERSONAL_STORAGE"
+msgstr "無法移至個人儲存空間。"
+
+msgid "IDS_VIDEO_POP_FAILED_TO_MOVE_TO_NORMAL_STORAGE"
+msgstr "無法移至一般儲存空間。"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "訊息"
+
+msgid "IDS_VIDEO_OPT_FOLDERS_ABB"
+msgstr "資料夾"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "電子郵件"
+
+msgid "IDS_VIDEO_OPT_DATE_HMOST_RECENT_ABB"
+msgstr "日期 (最近的)"
-msgid "IDS_VPL_BODY_LONGITUDE"
+msgid "IDS_VIDEO_HEADER_PD_SELECTED"
+msgstr "%d已選擇"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEOS"
+msgstr "刪除影片"
+
+msgid "IDS_VIDEO_HEADER_DELETE_VIDEO"
+msgstr "刪除影片"
+
+msgid "IDS_VIDEO_BUTTON_MOVE_ABB"
+msgstr "移動"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
msgstr "經度"
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VIDEO_BODY_AFTER_YOU_RECORD_VIDEOS_USING_THE_CAMERA_VIDEOS_WILL_BE_SHOWN"
+msgstr "使用相機錄製影片後,將顯示影片。"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "全部播放後停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "重複目前影片"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "重複全部"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_VIDEO_BUTTON_DELETE"
+msgstr "刪除"
+
+msgid "IDS_ST_OPT_DELETE_ALL"
+msgstr "全部刪除"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "此檔案僅支援音訊資料。現正播放音訊。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "此檔案僅支援影片資料。現正播放影片。"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "重新命名"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "耳機"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "下載"
+
+msgid "IDS_TPLATFORM_BODY_OFF"
+msgstr "關"
+
+msgid "IDS_TPLATFORM_BODY_ON"
+msgstr "開"
+
+msgid "IDS_VIDEO_POP_1_VIDEO_WILL_BE_DELETED"
+msgstr "將刪除 1 個影片。"
+
+msgid "IDS_SWALL_HEADER_INVALID_CHARACTER"
+msgstr "字元無效"
+
+msgid "IDS_VIDEO_BODY_NO_SEARCH_RESULTS"
+msgstr "無搜尋結果"
+
+msgid "IDS_GALLERY_HEADER_SELECT"
+msgstr "選擇"
+
+msgid "IDS_VIDEO_BODY_LAST_MODIFIED_M_DATE_ABB"
+msgstr "上次修改"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日期"
+
+msgid "IDS_VIDEO_HEADER_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VIDEO_OPT_NAME_HA_Z_ABB"
+msgstr "名稱 (A-Z)"
+
+msgid "IDS_VIDEO_OPT_VIDEOS"
+msgstr "影片"
+
+msgid "IDS_VIDEO_TPOP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPD_EXCEEDED"
+msgstr "已超過最多附件數目 (%d)。"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ALL"
+msgstr "選擇全部"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "裝置儲存空間"
+
+msgid "IDS_VIDEO_SBODY_SD_CARD"
+msgstr "SD 卡"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "分享方式"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "發生網路錯誤。請重試。"
+
+msgid "IDS_VPL_OPT_AUTO_PLAY_NEXT_ABB"
+msgstr "自動播放下一個"
+
+msgid "IDS_VPL_POP_PROCESSING_ING"
+msgstr "正在處理..."
+
+msgid "IDS_MEMO_TPOP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"
+msgstr "已達字元數量上限。"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "刪除"
+
+msgid "IDS_MUSIC_OPT_DELETE_ALL"
+msgstr "全部刪除"
+
+msgid "IDS_PB_BODY_NO_SEARCH_RESULT"
+msgstr "無搜尋結果"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEM"
+msgstr "選擇項目"
+
+msgid "IDS_VIDEO_HEADER_SELECT_ITEMS"
+msgstr "選擇項目"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完成"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DELETE_ABB"
+msgstr "刪除"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "儲存裝置位置"
+
+msgid "IDS_GALLERY_HEADER_SELECT_VIDEO"
+msgstr "選擇影片"
+
diff --git a/res/shared/res/video.edc b/res/shared/res/video.edc
new file mode 100755
index 0000000..390caeb
--- /dev/null
+++ b/res/shared/res/video.edc
@@ -0,0 +1,30 @@
+collections {
+ group {
+ name: "effect";
+
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 21 108 148 255;
+ }
+ }
+ part {
+ name: "naviframe";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel2.relative: 1.0 0.0;
+ align: 0.5 0.0;
+ min: 0 96;
+ fixed: 0 1;
+ color: 21 108 148 255;
+ }
+ }
+ }
+ }
+}
diff --git a/src/common/mp-drm-ctrl.c b/src/common/mp-drm-ctrl.c
new file mode 100644
index 0000000..0aa926a
--- /dev/null
+++ b/src/common/mp-drm-ctrl.c
@@ -0,0 +1,779 @@
+
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*/
+#ifdef ENABLE_DRM_FEATURE
+
+#include <glib.h>
+#ifdef ENABLE_DRM_FEATURE
+#include <drm_client.h>
+#include <drm_client_types.h>
+#endif
+/*#include <drm_trusted_client.h>*/
+/*#include <drm_trusted_client_types.h>*/
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-string-define.h"
+#include "mp-drm-ctrl.h"
+#include "mp-external-ug.h"
+
+/*static DRM_DECRYPT_HANDLE pDrmConsumeHandle = NULL;*/
+/*static int CheckConsumption = VIDEO_DRM_CONSUMPTION_STATE_DISABLE;*/
+#define ACCUMULATED_DATE 86400
+#define RO_MESSAGE_LEN 1024
+#define MOUNTH_COUNT 12
+#define DAY_COUNT 30
+#define HOUR_COUNT 24
+
+static bool bCheckIntervalConstraint = FALSE;
+static bool bCanPlayDrmContents = FALSE;
+
+static drm_file_type_e nDrmFileType = DRM_TYPE_UNDEFINED;
+static st_MpConstraintsInfo pMpConstraintsInfo;
+
+static char *g_szMediaUri = NULL;
+
+
+
+
+void mp_drm_check_remain_ro(void *pUserData, char *szTitle);
+
+
+bool mp_drm_is_itpossible_to_play_drm_content(void)
+{
+ return bCanPlayDrmContents;
+}
+
+bool mp_drm_is_drm_file(char *szPath)
+{
+
+ if (!szPath) {
+ VideoLogInfo("[ERR] It is not existed file url.");
+ 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) {
+ VideoLogError("[ERR]Fail to get whether drm file or not : %d",
+ nRet);
+ return FALSE;
+ }
+
+ if (is_drm != DRM_TRUE) {
+ VideoLogError("It's not drm file.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_drm_is_oma_file_type(char *szPath)
+{
+ if (!szPath) {
+ VideoLogInfo("[ERR] It is not existed file url.");
+ return FALSE;
+ }
+
+ drm_file_type_e nDrmType = DRM_TYPE_UNDEFINED;
+
+ int nRet = drm_get_file_type(szPath, &nDrmType);
+ if (nRet != DRM_RETURN_SUCCESS) {
+ VideoLogWarning("[ERR] Fail to get file type : %d", nRet);
+ return FALSE;
+ }
+
+ if (nDrmType != DRM_TYPE_OMA_V1 && nDrmType != DRM_TYPE_OMA_V2) {
+ VideoLogInfo("It's not OMA drm file : %d", nDrmType);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_drm_check_license(char *szPath)
+{
+ if (!szPath) {
+ VideoLogInfo
+ ("[ERR] szPath is not existed for checking drm license.");
+ return FALSE;
+ }
+
+ drm_license_status_e nLicenseStatus = DRM_LICENSE_STATUS_UNDEFINED;
+ int nRet =
+ drm_get_license_status(szPath, DRM_PERMISSION_TYPE_PLAY,
+ &nLicenseStatus);
+
+ if (nRet != DRM_RETURN_SUCCESS) {
+ VideoLogWarning("[ERR]Fail to get license info : %d", nRet);
+ return FALSE;
+ }
+
+ if (nLicenseStatus != DRM_LICENSE_STATUS_VALID) {
+ VideoLogInfo("Invalid license status : %d", nLicenseStatus);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_drm_check_expiration(char *szPath, bool bExpired)
+{
+ if (!szPath) {
+ VideoLogError("[ERR] szPath is not existed.");
+ return FALSE;
+ }
+
+ if (mp_drm_is_drm_file(szPath)) {
+ VideoLogError("It's not drm file.");
+ return FALSE;
+ }
+
+ drm_file_info_s st_DrmFileInfo;
+ memset(&st_DrmFileInfo, 0x0, sizeof(drm_file_info_s));
+
+ int nRet = drm_get_file_info(szPath, &st_DrmFileInfo);
+ if (nRet == DRM_RETURN_SUCCESS) {
+ if (st_DrmFileInfo.oma_info.method ==
+ DRM_METHOD_TYPE_COMBINED_DELIVERY
+ || st_DrmFileInfo.oma_info.method ==
+ DRM_METHOD_TYPE_FORWARD_LOCK) {
+ VideoLogInfo
+ ("st_DrmFileInfo.oma_info.method == DRM_METHOD_TYPE_COMBINED_DELIVERY || st_DrmFileInfo.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK");
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool mp_drm_check_foward_lock(char *szPath)
+{
+ if (!szPath) {
+ VideoLogInfo("[ERR] szPath is not existed.");
+ return FALSE;
+ }
+
+ if (mp_drm_is_drm_file(szPath)) {
+ VideoLogInfo("It's not drm file.");
+ return FALSE;
+ }
+
+ drm_file_info_s st_DrmFileInfo;
+ memset(&st_DrmFileInfo, 0x0, sizeof(drm_file_info_s));
+
+ int nRet = drm_get_file_info(szPath, &st_DrmFileInfo);
+ if (nRet == DRM_RETURN_SUCCESS) {
+ if (st_DrmFileInfo.oma_info.method ==
+ DRM_METHOD_TYPE_FORWARD_LOCK) {
+ VideoLogInfo
+ ("st_DrmFileInfo.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK");
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool mp_drm_is_initialized(char *szPath)
+{
+ if (!szPath) {
+ VideoLogError
+ ("[ERR] szPath is not existed for checking drm license.");
+ return FALSE;
+ }
+
+ return mp_drm_check_license(szPath);
+}
+
+bool mp_drm_get_left_ro_info(char *szPath,
+ st_MpConstraintsInfo *pLeftRoInfo,
+ bool *pbHasValidRo)
+{
+ if (!szPath) {
+ VideoLogError("[ERR]szPath is not existed.");
+ return FALSE;
+ }
+
+ if (!pLeftRoInfo) {
+ VideoLogError("[ERR]pLeftRoInfo is not existed.");
+ return FALSE;
+ }
+
+ if (!mp_drm_check_license(szPath)) {
+ VideoLogInfo("[ERR]Invalid drm file.");
+ *pbHasValidRo = FALSE;
+ return FALSE;
+ } else {
+ VideoLogInfo("Valid drm file.");
+ *pbHasValidRo = TRUE;
+ }
+
+ static drm_constraint_info_s st_pDrmConstraintInfo;
+
+ memset(pLeftRoInfo, 0x0, sizeof(st_MpConstraintsInfo));
+ memset(&st_pDrmConstraintInfo, 0x0, sizeof(drm_constraint_info_s));
+
+ int nRes =
+ drm_get_constraint_info(szPath, DRM_PERMISSION_TYPE_PLAY,
+ &st_pDrmConstraintInfo);
+ if (nRes == DRM_RETURN_SUCCESS) {
+ if (st_pDrmConstraintInfo.const_type.is_unlimited) {
+ VideoLogInfo("UNLIMITED");
+ pLeftRoInfo->constraints = MP_DRM_CONSTRAINT_UNLIMITED;
+ return true;
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_count) {
+ VideoLogInfo("DRM_COUNT [%d]",
+ st_pDrmConstraintInfo.remaining_count);
+ pLeftRoInfo->constraints |= MP_DRM_CONSTRAINT_COUNT;
+ pLeftRoInfo->remaining_count =
+ st_pDrmConstraintInfo.remaining_count;
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_datetime) {
+ pLeftRoInfo->constraints |= MP_DRM_CONSTRAINT_DATE_TIME;
+ VideoLogInfo("%d.%d.%d %d:%d~%d.%d.%d %d:%d",
+ st_pDrmConstraintInfo.start_time.tm_mday,
+ st_pDrmConstraintInfo.start_time.tm_mon + 1,
+ st_pDrmConstraintInfo.start_time.tm_year + 1900,
+ st_pDrmConstraintInfo.start_time.tm_hour,
+ st_pDrmConstraintInfo.start_time.tm_min,
+ st_pDrmConstraintInfo.end_time.tm_mday,
+ st_pDrmConstraintInfo.end_time.tm_mon + 1,
+ st_pDrmConstraintInfo.end_time.tm_year + 1900,
+ st_pDrmConstraintInfo.end_time.tm_hour,
+ st_pDrmConstraintInfo.end_time.tm_min);
+
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ struct tm *ptm = NULL;
+ ptm = localtime(&tv.tv_sec);
+
+ if (ptm->tm_year >= st_pDrmConstraintInfo.start_time.tm_year
+ && ptm->tm_mon >= st_pDrmConstraintInfo.start_time.tm_mon
+ && ptm->tm_mday >=
+ st_pDrmConstraintInfo.start_time.tm_mday
+ && ptm->tm_hour >=
+ st_pDrmConstraintInfo.start_time.tm_hour
+ && ptm->tm_min >= st_pDrmConstraintInfo.start_time.tm_min
+ && ptm->tm_mon <= st_pDrmConstraintInfo.end_time.tm_mon
+ && ptm->tm_mday <= st_pDrmConstraintInfo.end_time.tm_mday
+ && ptm->tm_hour <= st_pDrmConstraintInfo.end_time.tm_hour
+ && ptm->tm_min <= st_pDrmConstraintInfo.end_time.tm_min) {
+ /* not expired*/
+ pLeftRoInfo->date_time_expired = false;
+ } else {
+ pLeftRoInfo->date_time_expired = true;
+ }
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_interval) {
+ pLeftRoInfo->constraints |= MP_DRM_CONSTRAINT_INTERVAL;
+ VideoLogInfo("Remain... %d.%d.%d %d:%d",
+ st_pDrmConstraintInfo.interval_time.tm_mon,
+ st_pDrmConstraintInfo.interval_time.tm_mday,
+ st_pDrmConstraintInfo.interval_time.tm_year,
+ st_pDrmConstraintInfo.interval_time.tm_hour,
+ st_pDrmConstraintInfo.interval_time.tm_min);
+
+ pLeftRoInfo->remaining_interval_sec =
+ st_pDrmConstraintInfo.interval_time.tm_sec +
+ st_pDrmConstraintInfo.interval_time.tm_min * 60 +
+ st_pDrmConstraintInfo.interval_time.tm_hour * 3600;
+ pLeftRoInfo->remaining_interval_sec +=
+ (st_pDrmConstraintInfo.interval_time.tm_mday +
+ st_pDrmConstraintInfo.interval_time.tm_mon * 30 +
+ st_pDrmConstraintInfo.interval_time.tm_year * 365) *
+ (3600 * 24);
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_timedcount) {
+ VideoLogInfo("%d left (%d sec)",
+ st_pDrmConstraintInfo.timed_remaining_count,
+ st_pDrmConstraintInfo.timed_count_timer);
+ pLeftRoInfo->constraints |= MP_DRM_CONSTRAINT_TIMED_COUNT;
+ pLeftRoInfo->remaining_timed_count =
+ st_pDrmConstraintInfo.timed_remaining_count;
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_accumulated) {
+ VideoLogInfo("DRM_ACCUMULATED [%d]",
+ st_pDrmConstraintInfo.
+ accumulated_remaining_seconds);
+ pLeftRoInfo->constraints |= MP_DRM_CONSTRAINT_ACCUMLATED_TIME;
+ pLeftRoInfo->remaining_acc_sec =
+ st_pDrmConstraintInfo.accumulated_remaining_seconds;
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_individual) {
+ VideoLogInfo("DRM_INDIVISUAL_ID [%s]",
+ st_pDrmConstraintInfo.individual_id);
+ }
+
+ if (st_pDrmConstraintInfo.const_type.is_system) {
+ VideoLogInfo("DRM_SYSTEM [ID:%s, type:%d]",
+ st_pDrmConstraintInfo.system_id,
+ st_pDrmConstraintInfo.system_identity_type);
+ }
+ } else {
+ VideoLogWarning("drm_get_constraint_info().. 0x%x", nRes);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_drm_get_content_info(char *szPath,
+ MpVideoDrmContentInfoType nFirstInfoType,
+ ...)
+{
+ /* return info shoud be free */
+ VideoLogInfo("");
+
+ drm_content_info_s st_pDrmContenInfo;
+ memset(&st_pDrmContenInfo, 0x0, sizeof(drm_content_info_s));
+
+ int nRes = drm_get_content_info(szPath, &st_pDrmContenInfo);
+ if (nRes != DRM_RETURN_SUCCESS) {
+ VideoLogWarning("[Err] drm_get_content_info().. [0x%x]", nRes);
+ return FALSE;
+ }
+
+ va_list var_args;
+ MpVideoDrmContentInfoType nAttrInfoType;
+
+ nAttrInfoType = nFirstInfoType;
+ va_start(var_args, nFirstInfoType);
+ char **ret_val = NULL;
+ char *value = NULL;
+
+ while (nAttrInfoType > DRM_CONTENT_INFO_NULL) {
+ ret_val = va_arg((var_args), char **);
+
+ switch (nAttrInfoType) {
+ case DRM_CONTENT_INFO_AUTHOR:
+ value = st_pDrmContenInfo.author;
+ break;
+
+ case DRM_CONTENT_INFO_RIGHTS_URL:
+ value = st_pDrmContenInfo.rights_url;
+ break;
+
+ case DRM_CONTENT_INFO_DESCRIPTION:
+ value = st_pDrmContenInfo.description;
+ break;
+
+ default:
+ VideoLogInfo("Not defined [%d]", nAttrInfoType);
+ value = NULL;
+ break;
+ }
+
+ /* output */
+ *ret_val = g_strdup(value);
+
+ nAttrInfoType = va_arg(var_args, MpVideoDrmContentInfoType);
+ }
+
+ va_end(var_args);
+
+ return TRUE;
+}
+
+static void mp_drm_popup_unlock_drm_yes_button_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ mp_util_delete_popup_handle();
+
+ if (bCanPlayDrmContents) {
+ mp_drm_check_remain_ro(pUserData, NULL);
+ } else {
+ char *szRightsUrl = NULL;
+ bool bRet =
+ mp_drm_get_content_info(g_szMediaUri,
+ DRM_CONTENT_INFO_RIGHTS_URL,
+ &szRightsUrl, -1);
+
+ if (bRet && szRightsUrl) {
+ VideoSecureLogInfo("szRightsUrl : %s", szRightsUrl);
+
+ if (!mp_external_ug_launch_browser(szRightsUrl)) {
+ VideoLogInfo("[ERR] Fail to launch browser!!!");
+ }
+
+ free(szRightsUrl);
+ szRightsUrl = NULL;
+ } else {
+ VideoLogInfo("[ERR] Fail to get right url.");
+ }
+ }
+}
+
+static void mp_drm_popup_unlock_drm_no_button_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ mp_util_delete_popup_handle();
+}
+
+void mp_drm_check_remain_ro(void *pUserData, char *szTitle)
+{
+ if (szTitle) {
+ VideoLogWarning("[ERR] No exist szTitle");
+ szTitle = "NO TITLE";
+ }
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ char *szFormat = NULL;
+ char *szMessage = NULL;
+
+ if (pMpConstraintsInfo.constraints & MP_DRM_CONSTRAINT_COUNT
+ && pMpConstraintsInfo.remaining_count <= 2) {
+ int nRemain = pMpConstraintsInfo.remaining_count - 1;
+ if (nRemain == 1) {
+ szFormat =
+ MP_VPL_DRM_PS_CAN_USE_1_MORE_TIME_GET_ANOTHER_LICENCE_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ } else if (nRemain == 0) {
+ szFormat =
+ MP_VPL_DRM_PS_CANNOT_USE_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ }
+ } else if (pMpConstraintsInfo.
+ constraints & MP_DRM_CONSTRAINT_ACCUMLATED_TIME) {
+ if (pMpConstraintsInfo.remaining_acc_sec / ACCUMULATED_DATE <= 1) {
+ szFormat =
+ MP_VPL_DRM_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ }
+ }
+
+ if (szMessage) {
+ bCanPlayDrmContents = FALSE;
+ mp_util_yes_no_popup(pUserData, NULL, szMessage,
+ mp_drm_popup_unlock_drm_yes_button_cb,
+ mp_drm_popup_unlock_drm_no_button_cb);
+ free(szMessage);
+ }
+}
+
+bool mp_drm_check_left_ro(char *szPath, char *szTitle, void *pUserData)
+{
+ if (!szPath) {
+ VideoLogWarning
+ ("[ERR]szPath is not existed for checking drm license.");
+ return FALSE;
+ }
+
+ if (!szTitle) {
+ VideoLogWarning("szTitle is not existed.");
+ return FALSE;
+ }
+
+ if (!pUserData) {
+ VideoLogWarning("pUserData is not existed.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ bool bHasValidRo = FALSE;
+ bool bWapLaunch = FALSE;
+ bool bExpired = FALSE;
+
+ char *szFormat = NULL;
+ char *szMessage = NULL;
+
+ bCanPlayDrmContents = FALSE;
+
+ memset(&pMpConstraintsInfo, 0, sizeof(st_MpConstraintsInfo));
+
+ if (!mp_drm_get_left_ro_info
+ (szPath, &pMpConstraintsInfo, &bHasValidRo)) {
+ VideoLogWarning("Fail to get left ro info.");
+ return FALSE;
+ }
+
+ if (bHasValidRo) {
+ while (pMpConstraintsInfo.constraints) {
+ if (pMpConstraintsInfo.constraints & MP_DRM_CONSTRAINT_COUNT) {
+ if (pMpConstraintsInfo.remaining_count == 2) {
+ szFormat = MP_VPL_DRM_PS_2_MORE_TIME_START_NOW_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ } else if (pMpConstraintsInfo.remaining_count == 1) {
+ szFormat = MP_VPL_DRM_PS_1_MORE_TIME_START_NOW_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ } else if (pMpConstraintsInfo.remaining_count == 0) {
+ bWapLaunch = TRUE;
+ break;
+ }
+ }
+
+ if (pMpConstraintsInfo.
+ constraints & MP_DRM_CONSTRAINT_DATE_TIME) {
+ if (pMpConstraintsInfo.date_time_expired) {
+ bWapLaunch = TRUE;
+ break;
+ }
+ }
+
+ if (pMpConstraintsInfo.
+ constraints & MP_DRM_CONSTRAINT_INTERVAL) {
+ if (pMpConstraintsInfo.remaining_interval_sec == 0) {
+ bWapLaunch = TRUE;
+ break;
+ } else if (!bCheckIntervalConstraint) {
+ bCheckIntervalConstraint = TRUE;
+ int nDays =
+ pMpConstraintsInfo.remaining_interval_sec /
+ ACCUMULATED_DATE + 1;
+ szFormat = MP_VPL_DRM_PS_FOR_PD_DAYS_START_NOW_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle, nDays);
+ }
+ }
+
+ if (pMpConstraintsInfo.
+ constraints & MP_DRM_CONSTRAINT_TIMED_COUNT) {
+ if (pMpConstraintsInfo.remaining_timed_count == 2) {
+ szFormat = MP_VPL_DRM_PS_2_MORE_TIME_START_NOW_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ } else if (pMpConstraintsInfo.remaining_timed_count == 1) {
+ szFormat = MP_VPL_DRM_PS_1_MORE_TIME_START_NOW_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ } else if (pMpConstraintsInfo.remaining_timed_count == 0) {
+ bWapLaunch = TRUE;
+ break;
+ }
+ }
+
+ if (pMpConstraintsInfo.
+ constraints & MP_DRM_CONSTRAINT_ACCUMLATED_TIME) {
+ if (pMpConstraintsInfo.remaining_acc_sec == 0) {
+ bWapLaunch = TRUE;
+ break;
+ }
+ }
+
+ bCanPlayDrmContents = TRUE;
+ break;
+ }
+
+ if (pMpConstraintsInfo.constraints == MP_DRM_CONSTRAINT_UNLIMITED) {
+ bCanPlayDrmContents = TRUE;
+ }
+ }
+
+ if (!bHasValidRo
+ || (bWapLaunch && !mp_drm_check_expiration(szPath, bExpired))) {
+ VideoLogWarning("have no valid ro");
+
+ szFormat = MP_VPL_DRM_PS_CURRENTLY_LOCKED_UNLOCK_Q;
+ szMessage = g_strdup_printf(szFormat, szTitle);
+ mp_util_yes_no_popup(pUserData, NULL, szMessage,
+ mp_drm_popup_unlock_drm_yes_button_cb,
+ mp_drm_popup_unlock_drm_no_button_cb);
+
+ if (szMessage) {
+ free(szMessage);
+ szMessage = NULL;
+ }
+
+ return FALSE;
+ } else if (szMessage) {
+ VideoLogWarning("warning popup=[%s]", szMessage);
+
+ mp_util_yes_no_popup(pUserData, NULL, szMessage,
+ mp_drm_popup_unlock_drm_yes_button_cb,
+ mp_drm_popup_unlock_drm_no_button_cb);
+
+ if (szMessage) {
+ free(szMessage);
+ szMessage = NULL;
+ }
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* DivX DRM*/
+
+bool mp_drm_is_divx(char *szPath)
+{
+
+ 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) {
+ VideoLogError("[ERR]drm_is_drm_file : %d", nRet);
+ return FALSE;
+ }
+
+ if (is_drm != DRM_TRUE) {
+ VideoLogError("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) {
+ VideoLogError("[ERR]drm_get_file_type : %d", nRet);
+ return FALSE;
+ }
+
+ nDrmFileType = drm_type;
+
+ if (drm_type != DRM_TYPE_DIVX) {
+ VideoLogError("It's not DivX drm file : %d", drm_type);
+ return FALSE;
+ }
+
+ return TRUE;
+
+}
+
+bool mp_drm_check_divx_rental_expired(char *szPath, int *use_count,
+ int *total_count)
+{
+ VideoLogInfo("");
+
+ if (!szPath) {
+ VideoLogError("[ERR]");
+ return FALSE;
+ }
+
+ 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) {
+ VideoLogError("[ERR]drm_get_file_info : %d", nRet);
+ return FALSE;
+ }
+
+ VideoLogError("[TYPE]\n"
+ "unlimied : %d\n"
+ "is_count : %d\n"
+ "is_datetime : %d\n"
+ "is_interval : %d\n"
+ "is_timedcount : %d\n"
+ "is_accumulated : %d\n"
+ "is_individual : %d\n"
+ "is_system : %d\n"
+ "constraint_type : %d",
+ constraint_info.const_type.is_unlimited,
+ constraint_info.const_type.is_count,
+ constraint_info.const_type.is_datetime,
+ constraint_info.const_type.is_interval,
+ constraint_info.const_type.is_timedcount,
+ constraint_info.const_type.is_accumulated,
+ constraint_info.const_type.is_individual,
+ constraint_info.const_type.is_system,
+ constraint_info.const_type.constraint_type);
+
+ if (constraint_info.const_type.is_unlimited) {
+ VideoLogError("unlimited");
+ *use_count = DIVX_DRM_UNLIMIT_VALUE;
+ *total_count = DIVX_DRM_UNLIMIT_VALUE;
+ } else if (constraint_info.const_type.is_count) {
+
+ *use_count =
+ constraint_info.original_count -
+ constraint_info.remaining_count;
+ *total_count = constraint_info.original_count;
+
+ if (constraint_info.remaining_count <= 0) {
+ VideoLogError("[ERR]over");
+ return FALSE;
+ }
+ } else if (constraint_info.const_type.is_datetime) {
+ VideoLogError("[ERR]is_datetime");
+ } else if (constraint_info.const_type.is_interval) {
+ VideoLogError("[ERR]is_interval");
+ } else if (constraint_info.const_type.is_timedcount) {
+ VideoLogError("[ERR]is_timedcount");
+ } else if (constraint_info.const_type.is_accumulated) {
+ VideoLogError("[ERR]is_accumulated");
+ } else if (constraint_info.const_type.is_individual) {
+ VideoLogError("[ERR]is_individual");
+ } else if (constraint_info.const_type.is_system) {
+ VideoLogError("[ERR]is_system");
+ }
+
+ return TRUE;
+}
+
+void mp_drm_get_file_extension(char *szPath, char *szContentType,
+ int nContentTypeStrSize)
+{
+ if (!szContentType) {
+ VideoLogError("[ERR]");
+ return;
+ }
+
+ if (!szPath) {
+ VideoLogError("[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("nRet : [%d] contentType: %s", nRet,
+ content_info.mime_type);
+
+ strncpy(szContentType, content_info.mime_type,
+ nContentTypeStrSize - 1);
+}
+#endif
diff --git a/src/common/mp-rotate-ctrl.c b/src/common/mp-rotate-ctrl.c
new file mode 100644
index 0000000..487d4dd
--- /dev/null
+++ b/src/common/mp-rotate-ctrl.c
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-rotate-ctrl.h"
+#include "mp-video-list-view-main.h"
+
+
+static VideosRotateStatus_t nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+
+void mp_rotate_ctrl_changed_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("Rotate state before changing : %d",
+ nCurrentRotateStatus);
+
+ switch (elm_win_rotation_get((Evas_Object *) pObject)) {
+ case 0:
+ nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+ break;
+ case 90:
+ nCurrentRotateStatus = VIDEOS_ROTATE_90;
+ break;
+ case 180:
+ nCurrentRotateStatus = VIDEOS_ROTATE_180;
+ break;
+ case 270:
+ nCurrentRotateStatus = VIDEOS_ROTATE_270;
+ break;
+ default:
+ nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+ }
+
+ /* If check top view, when back to main view from item view.
+ preview could not be updated. So we could not keep new preview item.
+ */
+ mp_list_view_rotate_view(LIST_UPDATE_TYPE_VIEW);
+
+ /*if (MpVideoListViewIsTopView())
+ {
+ VideoLogInfo("top view is main list view");
+ mp_list_view_rotate_view(LIST_UPDATE_TYPE_VIEW);
+ } */
+
+}
+
+
+/*///////////////////////////////////////////////////////////////*/
+/* External APIs*/
+
+void mp_rotate_ctrl_init(void)
+{
+ VideoLogInfo("");
+
+ void *pWindowHandle = mp_util_get_main_window_handle();
+
+ if (pWindowHandle) {
+ if (elm_win_wm_rotation_supported_get(pWindowHandle)) {
+ /*int nRotateType[4] = { 0, 90, 180, 270 };*/
+ const int nRotateType[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(pWindowHandle,
+ nRotateType, 4);
+ }
+
+ nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+
+ /*evas_object_smart_callback_add(pWindowHandle, "wm,rotation,changed", mp_rotate_ctrl_changed_cb, NULL);*/
+ }
+}
+
+void mp_rotate_ctrl_destroy(void)
+{
+ VideoLogInfo("");
+ nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+ /*evas_object_smart_callback_del(mp_util_get_main_window_handle(), "wm,rotation,changed", mp_rotate_ctrl_changed_cb);*/
+}
+
+VideosRotateStatus_t mp_rotate_ctrl_get_current_state(void)
+{
+
+ bool bValid = true;
+
+#ifdef ENABLE_LANDSCAPE
+ bValid = true;
+#endif
+ if (!bValid) {
+ VideoLogInfo("don't support rotated operation.");
+ return 0;
+ }
+
+ VideoLogInfo("Current rotate status : %d", nCurrentRotateStatus);
+
+ return nCurrentRotateStatus;
+}
+
+bool mp_rotate_ctrl_check_landspace()
+{
+ bool bLandSpace = FALSE;
+ if (nCurrentRotateStatus == VIDEOS_ROTATE_90
+ || nCurrentRotateStatus == VIDEOS_ROTATE_270) {
+ bLandSpace = TRUE;
+ }
+ return bLandSpace;
+}
+
+bool mp_rotate_ctrl_check_landspace_by_win(Evas_Object *pWin)
+{
+ if (!pWin) {
+ VideoLogError("win is NULL.");
+ return FALSE;
+ }
+ bool bLandSpace = FALSE;
+ int bROtation = elm_win_rotation_get(pWin);
+ if (bROtation == 90 || bROtation == 270) {
+ bLandSpace = TRUE;
+ }
+ return bLandSpace;
+}
+
+void mp_rotate_ctrl_set_state(int nAngle)
+{
+ switch (nAngle) {
+ case 0:
+ nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+ break;
+ case 90:
+ nCurrentRotateStatus = VIDEOS_ROTATE_90;
+ break;
+ case 180:
+ nCurrentRotateStatus = VIDEOS_ROTATE_180;
+ break;
+ case 270:
+ nCurrentRotateStatus = VIDEOS_ROTATE_270;
+ break;
+ default:
+ nCurrentRotateStatus = VIDEOS_ROTATE_NONE;
+ }
+
+ VideoLogInfo("CHANGE ROTATE : %d", nCurrentRotateStatus);
+}
diff --git a/src/common/mp-util-config.c b/src/common/mp-util-config.c
new file mode 100644
index 0000000..087cc58
--- /dev/null
+++ b/src/common/mp-util-config.c
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app_preference.h>
+#include "mp-util.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "mp-drm-ctrl.h"
+#endif
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-util-config.h"
+
+#define PREF_MP_MULTI_PLAY_FLAG "preference/org.tizen.videos/multi_play"
+#define MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS "preference/org.tizen.videos/preview_url_videos"
+
+
+bool mp_util_config_set_multi_play_status(bool bMultiPlay)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(PREF_MP_MULTI_PLAY_FLAG, bMultiPlay);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET PREF_MP_MULTI_PLAY_FLAG is fail [0x%x]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_config_get_multi_play_status(bool *bMultiPlay)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(PREF_MP_MULTI_PLAY_FLAG, &nVal);
+ if (nErr != 0) {
+ VideoLogError
+ ("GET PREF_MP_MULTI_PLAY_FLAG is fail [0x%x]",
+ nErr);
+ return FALSE;
+ }
+
+ *bMultiPlay = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+bool mp_util_config_set_preview(char *szPreviewUrl)
+{
+ VideoSecureLogInfo("szPreviewUrl : %s", szPreviewUrl);
+
+ bool bRet = FALSE;
+
+ if (szPreviewUrl) {
+ if (preference_set_string
+ (MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ szPreviewUrl)) {
+ VideoLogError("Fail to write szPreviewUrl.");
+ bRet = FALSE;
+ } else {
+ bRet = TRUE;
+ }
+ } else {
+ if (preference_set_string(MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS, "")) {
+ VideoLogError("Fail to write szPreviewUrl.");
+ bRet = FALSE;
+ } else {
+ bRet = TRUE;
+ }
+ }
+
+ return bRet;
+}
+
+char *mp_util_config_get_preview(void)
+{
+ char *pTmpVideoUrl = NULL;
+ int nErr = 0;
+
+ nErr = preference_get_string(MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS, &pTmpVideoUrl);
+ if (nErr != 0 || !pTmpVideoUrl) {
+ VideoLogError("fail to retrive url [0x%x]",nErr);
+ return NULL;
+ }
+
+ if (strlen(pTmpVideoUrl) < 1) {
+ free(pTmpVideoUrl);
+ pTmpVideoUrl = NULL;
+ }
+
+ return pTmpVideoUrl;
+}
+
+bool mp_util_config_preview_key_changed_cb(preference_changed_cb callback,
+ void *pUserData)
+{
+ int nErr = 0;
+ nErr = preference_set_changed_cb(MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ callback, pUserData);
+ if (nErr != 0) {
+ VideoLogError("failed to register callback [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_config_ignore_preview_key_changed_cb()
+{
+ int nErr = 0;
+ nErr = preference_unset_changed_cb(MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS);
+ if (nErr != 0) {
+ VideoLogError("failed to unregister [0x%x]", nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
diff --git a/src/common/mp-util-media-service.c b/src/common/mp-util-media-service.c
new file mode 100644
index 0000000..2c27adf
--- /dev/null
+++ b/src/common/mp-util-media-service.c
@@ -0,0 +1,3772 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <stdbool.h>
+#include <Elementary.h>
+#include <media_content.h>
+
+#include <metadata_extractor.h>
+#include <image_util.h>
+#include <image_util_internal.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-type-define.h"
+#include "vp-file-util.h"
+#include "vp-util.h"
+
+#define CAMERA_FOLDER_PATH "/opt/usr/media/Camera"
+
+
+static Eina_List *VideoFolderList = NULL;
+static Eina_List *VideoItemList = NULL;
+static Eina_List *RecentPlayedItemList = NULL;
+static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
+static int nTotalVideoTypeFiles = 0;
+static int nNumberOfVideoItemByType = 0;
+//media_content_noti_h g_pCloud_h; /* Notify handle for cloud content updating in DB */
+
+
+bool mp_util_svc_is_3gp_file(char *szFileUri)
+{
+
+ 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 {
+ VideoLogError("No exist extension.");
+ nRet = FALSE;
+ }
+ }
+ else
+ {
+ VideoLogError("No exist file uri.");
+ nRet = FALSE;
+ }
+
+ return nRet;
+}
+
+static bool mp_util_svc_iterate_for_get_video_item_cb(media_info_h pVideoItem, void *pUserData)
+{
+
+ 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);
+ MP_FREE_STRING(szTmpStr);
+ }
+
+ return FALSE;
+}
+
+static bool mp_util_svc_iterate_for_video_item_list_view_cb(media_info_h pMediaItem, void *pUserData)
+{
+ media_info_h pAssignMediaItem = NULL;
+ media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
+ if (!pMediaItem) {
+ return TRUE;
+ }
+ media_info_get_media_type(pMediaItem, &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) {
+ VideoLogError("Fail to get file path of media item.");
+ return TRUE;
+ }
+ strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1);
+
+ free(szTmpItemFilePath);
+ szTmpItemFilePath = NULL;
+
+ nTotalVideoTypeFiles++;
+
+ switch (nWhatFileType) {
+ case MP_MEDIA_VIDEO_FILE_TYPE:
+ if (mp_util_svc_is_3gp_file(szItemFilePath) == TRUE) {
+ return TRUE;
+ }
+ break;
+
+ case MP_MEDIA_CAMERA_FILE_TYPE:
+ if (mp_util_svc_is_3gp_file(szItemFilePath) == FALSE) {
+ return TRUE;
+ }
+ break;
+
+ case MP_MEDIA_ALL_FILE_TYPE:
+ break;
+ }
+
+ nNumberOfVideoItemByType++;
+
+ media_info_clone(&pAssignMediaItem, pMediaItem);
+ Eina_List **pList = (Eina_List **)pUserData;
+ *pList = eina_list_append(*pList, pAssignMediaItem);
+ }
+
+ return TRUE;
+}
+
+static bool mp_util_svc_iterate_cb(media_info_h pMediaItem, void *pUserData)
+{
+ media_info_h pAssignMediaItem = NULL;
+ media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
+ if (!pMediaItem) {
+ return FALSE;
+ }
+ media_info_get_media_type(pMediaItem, &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++;
+ }
+
+ return TRUE;
+}
+
+static bool mp_util_svc_iterate_for_get_folder_cb(media_folder_h pFolderItem, void *pUserData)
+{
+ 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);
+
+ if (szTmpStr) {
+ free(szTmpStr);
+ szTmpStr = NULL;
+ }
+ }
+
+ return TRUE;
+}
+
+static int mp_util_svc_sort_for_folder_list_cb(const void *pFolder1, const void *pFolder2)
+{
+ media_folder_h pFolderType1 = (media_folder_h)pFolder1;
+ media_folder_h pFolderType2 = (media_folder_h)pFolder2;
+
+ char *folderName1 = NULL;
+ char *folderName2 = NULL;
+
+ int nRet = 0;
+
+ media_folder_get_name(pFolderType1, &folderName1);
+ media_folder_get_name(pFolderType2, &folderName2);
+
+ if (!folderName1) {
+ MP_FREE_STRING(folderName2);
+ return (1);
+ }
+
+ if (!folderName2) {
+ MP_FREE_STRING(folderName1);
+ return (-1);
+ }
+
+ nRet = strcmp(folderName1, folderName2);
+
+ MP_FREE_STRING(folderName1);
+ MP_FREE_STRING(folderName2);
+
+ return nRet;
+}
+
+static bool mp_util_svc_iterate_for_folder_list_cb(media_folder_h pFolderItem, void *pUserData)
+{
+ media_folder_h pAssignFolderItem = NULL;
+ Eina_Compare_Cb pCmpFunc = (Eina_Compare_Cb)mp_util_svc_sort_for_folder_list_cb;
+
+ media_folder_clone(&pAssignFolderItem, pFolderItem);
+ Eina_List **pList = (Eina_List **)pUserData;
+ *pList = eina_list_append(*pList, pAssignFolderItem);
+ *pList = eina_list_sort(*pList, eina_list_count(*pList), pCmpFunc);
+
+ return TRUE;
+}
+
+static bool mp_util_svc_iterate_for_personal_folder_list_cb(media_folder_h pFolderItem, void *pUserData)
+{
+ media_folder_h pAssignFolderItem = NULL;
+ media_folder_clone(&pAssignFolderItem, pFolderItem);
+ Eina_List **pList = (Eina_List **)pUserData;
+ Eina_Compare_Cb pCmpFunc = (Eina_Compare_Cb)mp_util_svc_sort_for_folder_list_cb;
+
+ char *szFolderPath = NULL;
+ if (pAssignFolderItem) {
+ media_folder_get_path(pAssignFolderItem, &szFolderPath);
+
+ if (szFolderPath) {
+ if (!strcmp(szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR)) {
+ //Skip "/opt/storage/PersonalStorage" folder
+ MP_FREE_STRING(szFolderPath);
+
+ media_folder_destroy(pAssignFolderItem);
+ pAssignFolderItem = NULL;
+
+ return TRUE;
+ }
+ MP_FREE_STRING(szFolderPath);
+ }
+ }
+
+ *pList = eina_list_append(*pList, pAssignFolderItem);
+ *pList = eina_list_sort(*pList, eina_list_count(*pList), pCmpFunc);
+
+ return TRUE;
+}
+
+//
+// Internal function
+//
+bool mp_util_svc_get_file_directory_name(char *szFilePath, char *szFileName, char *szDirectoryName, char *szDirectoryPath)
+{
+ if (!szFilePath) {
+ VideoLogError("[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';
+ }
+
+ if (szDirectoryPath) {
+ memcpy(szDirectoryPath, &szFilePath[0], nLoopCount);
+ *(szDirectoryPath + nLoopCount + 1) = '\0';
+ }
+
+ if (szDirectoryName) {
+ nCount = 0;
+ for (--nLoopCount; nLoopCount >= 0; nLoopCount--)
+ {
+ nCount++;
+ if (szFilePath[nLoopCount] == '/') {
+ memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount);
+ *(szDirectoryName + nCount) = '\0';
+
+ return TRUE;
+ }
+ }
+ }
+
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+//
+// External function
+//
+
+void mp_util_svc_init_session(void)
+{
+ 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 mp_util_svc_finish_session(void)
+{
+ //mp_util_svc_unset_update_db_cb_func();
+
+ 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 mp_util_svc_destory_video_item_list(void)
+{
+ if (!VideoItemList) {
+ VideoLogError("VideoItemList is empty already.");
+ return FALSE;
+ }
+
+ media_info_h pTmpVideoItem = NULL;
+ EINA_LIST_FREE(VideoItemList, pTmpVideoItem) {
+ if (pTmpVideoItem) {
+ media_info_destroy(pTmpVideoItem);
+ }
+ }
+ nNumberOfVideoItemByType = 0;
+ VideoItemList = NULL;
+
+ return TRUE;
+}
+
+bool mp_util_svc_extract_video_list_from_folder(char *szFolderPath, int nSortType, int nItemType)
+{
+ if (VideoItemList) {
+ VideoLogError("Already exist video list.");
+ return FALSE;
+ }
+
+ if (!szFolderPath) {
+ VideoLogError("[ERR]");
+ return FALSE;
+ }
+
+ 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_RECENTLY_VIEWED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_ADDED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_DISPLAY_NAME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_SIZE:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_SIZE, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_TYPE:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_MIME_TYPE, STR_LEN_MAX - 1);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ }
+
+ switch (nItemType) {
+ case MP_LIST_VIEW_ALL:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and FOLDER_PATH = \"%s\" and FOLDER_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\"", szFolderPath);
+ }
+ break;
+
+ case MP_LIST_VIEW_PHONE:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and FOLDER_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\"", szFolderPath);
+ }
+ break;
+
+ case MP_LIST_VIEW_CLOUD:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and MEDIA_STORAGE_TYPE = 101 and FOLDER_PATH = \"%s\" and FOLDER_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_STORAGE_TYPE = 101 and FOLDER_PATH = \"%s\"", szFolderPath);
+ }
+ break;
+
+ default:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and FOLDER_PATH = \"%s\" and FOLDER_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\"", szFolderPath);
+ }
+ break;
+ }
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_folder_foreach_folder_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_folder_cb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail media_folder_foreach_folder_from_db().");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (!m_FolderHandle) {
+ VideoLogError("Fail to get folder handle.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ memset(szTmpStr, 0, STR_LEN_MAX);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101)");
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+
+ return FALSE;
+ }
+
+ if (media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to get folder id.");
+ media_filter_destroy(m_FilterHandle);
+
+ MP_FREE_STRING(szFolderID);
+ return FALSE;
+ }
+
+ if (media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, mp_util_svc_iterate_cb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+
+ MP_FREE_STRING(szFolderID);
+ return FALSE;
+ }
+
+ if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to destroy media filter handle.");
+ }
+
+ MP_FREE_STRING(szFolderID);
+
+ return TRUE;
+}
+
+char *mp_util_get_folder_thumbnail(int nVideoFolderIndex, int nSortType)
+{
+ if (!VideoFolderList) {
+ VideoLogError("[ERR]");
+ return NULL;
+ }
+
+ media_folder_h m_FolderHandle = NULL;
+ m_FolderHandle = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
+ if (!m_FolderHandle) {
+ VideoLogError("Fail to get folder handle.");
+ return NULL;
+ }
+
+ media_info_h pVideoItem = NULL;
+ char *szThumbnailPath = NULL;
+ filter_h m_FilterHandle = NULL;
+ media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ char *szFolderID = NULL;
+ char szOrderObj[STR_LEN_MAX] = {0,};
+ char szTmpStr[STR_LEN_MAX] = {0,};
+
+ switch (nSortType) {
+ case MP_MEDIA_SORT_BY_NONE:
+ case MP_MEDIA_SORT_BY_RECENTLY_VIEWED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_ADDED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_DISPLAY_NAME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_SIZE:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_SIZE, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_TYPE:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_MIME_TYPE, STR_LEN_MAX - 1);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ }
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return NULL;
+ }
+
+ memset(szTmpStr, 0, STR_LEN_MAX);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121)");
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return NULL;
+ }
+
+ if (media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+
+ return NULL;
+ }
+
+ if (media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to get folder id.");
+ media_filter_destroy(m_FilterHandle);
+
+ MP_FREE_STRING(szFolderID);
+ return NULL;
+ }
+
+ if (media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+
+ MP_FREE_STRING(szFolderID);
+ return NULL;
+ }
+
+ if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to destroy media filter handle.");
+ }
+
+ if (pVideoItem) {
+ media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath);
+ VideoSecureLogInfo("Video thumbnail file path : %s", szThumbnailPath);
+ media_info_destroy(pVideoItem);
+ }
+
+ MP_FREE_STRING(szFolderID);
+
+ return szThumbnailPath;
+}
+
+bool mp_util_svc_extract_video_list_by_item_type(int nSortType, int nItemType)
+{
+ if (VideoItemList) {
+ VideoLogError("Already exist video list.");
+ return FALSE;
+ }
+
+ nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
+
+ 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,};
+
+ nNumberOfVideoItemByType = 0;
+
+ switch (nSortType) {
+ case MP_MEDIA_SORT_BY_NONE:
+ case MP_MEDIA_SORT_BY_RECENTLY_VIEWED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_ADDED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_DISPLAY_NAME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_SIZE:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_SIZE, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_TYPE:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_MIME_TYPE, STR_LEN_MAX - 1);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ }
+
+ switch (nItemType) {
+ case MP_LIST_VIEW_ALL:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) and MEDIA_PATH not like \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121)");
+ }
+ break;
+
+ case MP_LIST_VIEW_PHONE:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH not like \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1)");
+ }
+
+ break;
+
+ case MP_LIST_VIEW_CLOUD:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and MEDIA_STORAGE_TYPE = 101 and MEDIA_PATH not like \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and MEDIA_STORAGE_TYPE = 101");
+ }
+
+ break;
+
+ default:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) and MEDIA_PATH not like \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121)");
+ }
+ break;
+ }
+ VideoLogInfo("MEDIA_PATH not like %s", szTmpStr);
+
+ 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, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_video_item_list_view_cb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_extract_video_list_from_favorite(int nSortType)
+{
+ if (VideoItemList) {
+ VideoLogInfo("Already exist video list.");
+ return FALSE;
+ }
+
+ 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_RECENTLY_VIEWED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_ADDED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_DISPLAY_NAME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_SIZE:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_SIZE, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_TYPE:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_MIME_TYPE, STR_LEN_MAX - 1);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ }
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_FAVOURITE = 1 and MEDIA_PATH NOT LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ else
+ {
+ 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) {
+ VideoLogError("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) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_video_item_list_view_cb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool mp_util_svc_index_list_for_search_view(const char *keyword, void **index_list)
+{
+ media_info_h pVideoItem = NULL;
+ Eina_List *pIterateList = NULL;
+ int index = 0;
+
+ if (!VideoItemList) {
+ VideoLogError("VideoItemList IS null");
+ return FALSE;
+ }
+
+ if (!keyword) {
+ VideoLogError("keyword IS null");
+ return FALSE;
+ }
+
+ EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) {
+ if (pVideoItem) {
+ char *szTitle = NULL;
+ media_info_get_display_name(pVideoItem, &szTitle);
+
+ if (szTitle && mp_util_str_str_same_case(szTitle, keyword)) {
+ *index_list = eina_list_append(*index_list, (const void*)index);
+ }
+ MP_FREE_STRING(szTitle);
+ }
+ index ++;
+ }
+ return TRUE;
+}
+
+bool mp_util_svc_index_list_for_cloud_view(void **index_list, int *nListSize)
+{
+// media_info_h pVideoItem = NULL;
+// Eina_List *pIterateList = NULL;
+// int index = 0;
+// int size = 0;
+// if (!VideoItemList) {
+// VideoLogError("VideoItemList IS null");
+// return FALSE;
+// }
+// EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
+// {
+// if (pVideoItem)
+// {
+// media_content_storage_ex_e storage_type = MEDIA_CONTENT_STORAGE_INTERNAL_EX;
+// media_info_get_storage_type_ex(pVideoItem, &storage_type);
+// if (storage_type == MEDIA_CONTENT_STORAGE_DROPBOX_EX) {
+// *index_list = eina_list_append(*index_list, (const void*)index);
+// size ++;
+// }
+// }
+// index ++;
+// }
+// *nListSize = size;
+// return TRUE;
+ return FALSE;
+}
+
+
+bool mp_util_svc_extract_video_list_for_search_view(const char *keyword, int nItemType)
+{
+ if (VideoItemList) {
+ VideoLogError("Already exist video list.");
+ return FALSE;
+ }
+
+ 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_DISPLAY_NAME, STR_LEN_MAX - 1);
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ switch (nItemType) {
+ case MP_LIST_VIEW_ALL:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) and MEDIA_DISPLAY_NAME like \"%%%s%%\" and MEDIA_PATH NOT LIKE \"%s%%\"", keyword, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) and MEDIA_DISPLAY_NAME like \"%%%s%%\"", keyword);
+ }
+ break;
+
+ case MP_LIST_VIEW_PHONE:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_DISPLAY_NAME like \"%%%s%%\" and MEDIA_PATH NOT LIKE \"%s%%\"", keyword, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_DISPLAY_NAME like \"%%%s%%\"", keyword);
+ }
+ break;
+
+ case MP_LIST_VIEW_CLOUD:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and MEDIA_STORAGE_TYPE = 101 and MEDIA_DISPLAY_NAME like \"%%%s%%\" and MEDIA_PATH NOT LIKE \"%s%%\"", keyword, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and MEDIA_STORAGE_TYPE = 101 and MEDIA_DISPLAY_NAME like \"%%%s%%\"", keyword);
+ }
+ break;
+
+ default:
+ if (!mp_util_get_personal_status()) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) and MEDIA_DISPLAY_NAME like \"%%%s%%\" and MEDIA_PATH NOT LIKE \"%s%%\"", keyword, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) and MEDIA_DISPLAY_NAME like \"%%%s%%\"", keyword);
+ }
+ break;
+ }
+
+ //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) {
+ VideoLogError("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) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_video_item_list_view_cb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+void mp_util_svc_destory_video_list(void)
+{
+
+ if (VideoFolderList) {
+ mp_util_svc_destory_video_folder_list();
+ VideoFolderList = NULL;
+ }
+
+ if (VideoItemList) {
+ mp_util_svc_destory_video_item_list();
+ VideoItemList = NULL;
+ }
+
+ if (RecentPlayedItemList) {
+ mp_util_svc_destory_last_played_item_list();
+ RecentPlayedItemList = NULL;
+ }
+
+ nTotalVideoTypeFiles = 0;
+ nNumberOfVideoItemByType = 0;
+}
+
+bool mp_util_svc_remove_item_by_url_with_list(char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("[ERR]");
+ return FALSE;
+ }
+
+ if (!VideoItemList) {
+ VideoLogError("pList is empty already.");
+ return FALSE;
+ }
+
+ VideoSecureLogInfo("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)) {
+ char *szMediaID = NULL;
+ media_info_get_media_id(pItem, &szMediaID);
+ media_info_delete_from_db(szMediaID);
+ mp_util_delete_wall_file(szMediaID);
+ VideoItemList = eina_list_remove(VideoItemList, pItem);
+ media_info_destroy(pItem);
+
+ nNumberOfVideoItemByType--;
+
+ if (szMediaID) {
+ free(szMediaID);
+ }
+
+ if (szGetFilePath) {
+ free(szGetFilePath);
+ }
+
+ return TRUE;
+ }
+ } else {
+ VideoLogError("No exist %s in media info Database module.", szFilePath);
+ return FALSE;
+ }
+ }
+ }
+ }
+
+ if (szGetFilePath) {
+ free(szGetFilePath);
+ }
+ return FALSE;
+}
+
+bool mp_util_svc_remove_item_by_list_index(int nVideoItemIndex)
+{
+
+ if (!VideoItemList) {
+ VideoLogError("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);
+ mp_util_delete_wall_file(szMediaID);
+ VideoItemList = eina_list_remove(VideoItemList, pItem);
+ free(szMediaID);
+ media_info_destroy(pItem);
+ nNumberOfVideoItemByType--;
+ } else {
+ VideoLogError("No exist media ID in index %d of list.", nVideoItemIndex);
+ return FALSE;
+ }
+ } else {
+ VideoLogError("Fail to remove item in media svc and list.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_remove_item_from_db_by_list_index(int nVideoItemIndex)
+{
+
+ if (!VideoItemList) {
+ VideoLogError("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) {
+ mp_util_delete_wall_file(szMediaID);
+ media_info_delete_from_db(szMediaID);
+ free(szMediaID);
+ } else {
+ VideoLogError("No exist media ID in index %d of list.", nVideoItemIndex);
+ return FALSE;
+ }
+ } else {
+ VideoLogError("Fail to remove item in media svc and list.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_get_video_id_by_video_url(const char *szPath, char **szVideoID)
+{
+ 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) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ bRet = FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle,
+ mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ bRet = FALSE;
+ }
+
+ if (pVideoItem) {
+ char *szMediaID = NULL;
+ media_info_get_media_id(pVideoItem, &szMediaID);
+ *szVideoID = szMediaID;
+ media_info_destroy(pVideoItem);
+ bRet = TRUE;
+ } else {
+ bRet = FALSE;
+ }
+
+ return bRet;
+}
+
+unsigned int mp_util_svc_get_video_last_play_time_by_video_url(const char *szPath)
+{
+ if (!szPath) {
+ VideoLogError("No exist video path.");
+ return 0;
+ }
+
+ VideoLogInfo("szPath : %s", szPath);
+
+ int nLastPlayedTime = 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) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szPath);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("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_played_position(pVideoMetaHandle, &nLastPlayedTime);
+ VideoLogInfo("Last Played Time : %d", nLastPlayedTime);
+ video_meta_destroy(pVideoMetaHandle);
+ }
+ media_info_destroy(pVideoItem);
+ }
+
+ return (unsigned int)nLastPlayedTime;
+}
+
+unsigned int mp_util_svc_get_video_duration_by_video_url(const char *szPath)
+{
+ if (!szPath) {
+ VideoLogError("No exist video path.");
+ return 0;
+ }
+
+ VideoSecureLogInfo("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) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szPath);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("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);
+ video_meta_destroy(pVideoMetaHandle);
+ }
+ media_info_destroy(pVideoItem);
+ }
+
+ return (unsigned int)nDurationTime;
+}
+
+int mp_util_svc_get_video_file_size_by_video_url(const char *szPath)
+{
+ if (!szPath) {
+ VideoLogError("No exist video path.");
+ return 0;
+ }
+
+ VideoSecureLogInfo("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) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szPath);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ if (pVideoItem) {
+ media_info_get_size(pVideoItem, &nSize);
+ media_info_destroy(pVideoItem);
+ }
+
+ return nSize;
+}
+
+char *mp_util_svc_get_video_Thumbnail_by_video_url(const char *szMediaUri)
+{
+ if (!szMediaUri) {
+ VideoLogError("No exist video path.");
+ return NULL;
+ }
+
+ 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) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ memset(szTmpStr, 0, STR_LEN_MAX);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szMediaUri);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ if (pVideoItem) {
+ media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath);
+ VideoSecureLogInfo("Video thumbnail file path : %s", szThumbnailPath);
+ media_info_destroy(pVideoItem);
+ }
+
+ return szThumbnailPath;
+}
+
+int mp_util_svc_get_video_width_by_video_url(const char *szMediaUri)
+{
+ if (!szMediaUri) {
+ VideoLogError("No exist video path.");
+ return 0;
+ }
+
+ VideoSecureLogInfo("szPath : %s", szMediaUri);
+
+ media_info_h pVideoItem = NULL;
+ filter_h m_FilterHandle = NULL;
+ char szTmpStr[STR_LEN_MAX] = {0,};
+ int nWidth = 0;
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ memset(szTmpStr, 0, STR_LEN_MAX);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szMediaUri);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("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) {
+ VideoLogError("Fail to get pVideoMetaHandle.");
+ } else {
+ if (pVideoMetaHandle) {
+ video_meta_get_width(pVideoMetaHandle, &nWidth);
+ video_meta_destroy(pVideoMetaHandle);
+ } else {
+ VideoLogError("No exist pVideoMetaHandle");
+ }
+ }
+ }
+
+ return nWidth;
+}
+
+int mp_util_svc_get_video_height_by_video_url(const char *szMediaUri)
+{
+ if (!szMediaUri) {
+ VideoLogError("No exist video path.");
+ return 0;
+ }
+
+ media_info_h pVideoItem = NULL;
+ filter_h m_FilterHandle = NULL;
+ char szTmpStr[STR_LEN_MAX] = {0,};
+ int nHeight = 0;
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ memset(szTmpStr, 0, STR_LEN_MAX);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szMediaUri);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("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) {
+ VideoLogError("Fail to get pVideoMetaHandle.");
+ } else {
+ if (pVideoMetaHandle) {
+ video_meta_get_height(pVideoMetaHandle, &nHeight);
+ video_meta_destroy(pVideoMetaHandle);
+ } else {
+ VideoLogError("No exist pVideoMetaHandle");
+ }
+ }
+ }
+
+ return nHeight;
+}
+
+void mp_util_svc_set_video_last_played_time_by_url(char *szMediaUri, unsigned int nPosition)
+{
+ if (!szMediaUri) {
+ VideoLogError("No exist media uri.");
+ return;
+ }
+
+ VideoSecureLogInfo("szMediaUri : %s, nLastPlayedTime : %d", szMediaUri, nPosition);
+
+ int nLastPlayedTime = (int)nPosition;
+ 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) {
+ VideoLogError("Fail to create media filter handle.");
+ return;
+ }
+
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szMediaUri);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("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) {
+ VideoLogError("Fail to get pVideoMetaHandle.");
+ } else {
+ if (pVideoMetaHandle) {
+ video_meta_set_played_position(pVideoMetaHandle, nLastPlayedTime);
+ video_meta_update_to_db(pVideoMetaHandle);
+ video_meta_destroy(pVideoMetaHandle);
+ } else {
+ VideoLogError("No exist pVideoMetaHandle");
+ }
+ }
+ media_info_destroy(pVideoItem);
+ }
+}
+
+bool mp_util_svc_get_video_current_url_pre_next_item(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri, bool bLoop)
+{
+
+ if (!szCurrMediaUri) {
+ VideoLogError("[ERR] No exist current file path.");
+ return FALSE;
+ }
+
+ if (!VideoItemList) {
+ VideoLogError("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) {
+ VideoLogError("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) {
+ VideoSecureLogInfo("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;
+ }
+
+ VideoSecureLogInfo("PreMediaUri-NextMediaUri:%s-%s", szPreMediaUri, szNextMediaUri);
+
+ return TRUE;
+ }
+ free(szVideoItemFilePath);
+ szVideoItemFilePath = NULL;
+ }
+
+ ++nCount;
+ }
+
+ return FALSE;
+}
+
+char *mp_util_svc_get_video_url(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("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);
+ VideoSecureLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath);
+ }
+
+ return szVideoItemFilePath;
+}
+
+char *mp_util_svc_get_video_thumbnail(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("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);
+ }
+
+ VideoSecureLogInfo("pThumbIconUri = %s", szVideoItemThumbnailPath);
+
+ return szVideoItemThumbnailPath;
+}
+
+char *mp_util_svc_get_video_title(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ char *szTitle = NULL;
+
+ if (!szTitle) {
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+ if (pVideoItem) {
+ media_info_get_display_name(pVideoItem, &szTitle);
+ }
+ }
+
+ return szTitle;
+}
+
+int mp_util_svc_get_video_duration_time(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("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) {
+ if (video_meta_get_duration(pVideoMetaHandle, &nDurationTime) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("fail to get duration of video metadata");
+ }
+
+ video_meta_destroy(pVideoMetaHandle);
+ }
+ }
+
+ return nDurationTime;
+}
+
+int mp_util_svc_get_video_last_played_pos(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ int 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_position(pVideoMetaHandle, &nLastPlayedTime);
+
+ VideoLogInfo("nIndexGenlist : %d==%d", nLastPlayedTime, nVideoItemIndex);
+ video_meta_destroy(pVideoMetaHandle);
+ }
+ }
+
+ return (int)nLastPlayedTime;
+}
+
+unsigned long long mp_util_svc_get_video_item_size(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ 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);
+ }
+
+ return nSize;
+
+}
+
+int mp_util_svc_get_video_item_width(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ 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) {
+ VideoLogError("Fail to get pVideoMetaHandle.");
+ } else {
+ if (pVideoMetaHandle) {
+
+ video_meta_get_width(pVideoMetaHandle, &nWidth);
+ video_meta_destroy(pVideoMetaHandle);
+ } else {
+ VideoLogError("No exist pVideoMetaHandle");
+ }
+ }
+ }
+
+ return nWidth;
+}
+
+int mp_util_svc_get_video_item_height(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ 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) {
+ VideoLogError("Fail to get pVideoMetaHandle.");
+ } else {
+ if (pVideoMetaHandle) {
+
+ video_meta_get_height(pVideoMetaHandle, &nHeight);
+ video_meta_destroy(pVideoMetaHandle);
+ } else {
+ VideoLogError("No exist pVideoMetaHandle");
+ }
+ }
+ }
+
+ return nHeight;
+}
+
+time_t mp_util_svc_get_video_item_data_time(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ time_t nDateTime = 0;
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+ if (pVideoItem) {
+ if (media_info_get_modified_time(pVideoItem, &nDateTime) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_modified_time fail");
+ return 0;
+ }
+ VideoLogError("Video date time : %d", nDateTime);
+ }
+
+ return nDateTime;
+}
+
+char *mp_util_svc_get_video_item_extension(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ return NULL;
+}
+
+double mp_util_svc_get_video_item_longitude(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ double nLongitude = 0;
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+ if (pVideoItem) {
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_get_longitude(pVideoItem, &nLongitude);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_longitude failed : [%d]!!!", nRet);
+ return 0;
+ }
+ }
+
+ return nLongitude;
+}
+
+double mp_util_svc_get_video_item_latitude(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ double dLatitude = 0;
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+ if (pVideoItem) {
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_get_latitude(pVideoItem, &dLatitude);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_latitude failed : [%d]!!!", nRet);
+ return 0;
+ }
+ }
+
+ return dLatitude;
+}
+
+char *mp_util_svc_get_video_item_modified_time(const int nVideoItemIndex)
+{
+ if (!VideoItemList){
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ time_t pModifiedTime;
+ struct tm sModifiedTime;
+ char szModifiedTime[STR_LEN_MAX] = {0,};
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+ if (pVideoItem) {
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_get_modified_time(pVideoItem, &pModifiedTime);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("media_info_get_modified_time failed : [%d]!!!", nRet);
+ return 0;
+ }
+ gmtime_r(&pModifiedTime, &sModifiedTime);
+ strftime(szModifiedTime, STR_LEN_MAX-1, "%d %b. %Y. %H:%M", &sModifiedTime);
+
+ return g_strdup(szModifiedTime);
+ }
+ return NULL;
+}
+
+int mp_util_svc_get_video_list_size_for_checking_index(void)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ return (int)eina_list_count(VideoItemList);
+}
+
+int mp_util_svc_get_number_of_video_item_by_type(void)
+{
+
+ return nNumberOfVideoItemByType;
+}
+
+int mp_util_svc_get_total_video_type_files(void)
+{
+
+ return (int)nTotalVideoTypeFiles;
+}
+
+void *mp_util_svc_get_video_item(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("Error number of list item.");
+ return NULL;
+ }
+
+ return (void*)eina_list_nth(VideoItemList, nVideoItemIndex);
+}
+
+void mp_util_svc_print_list_info(void)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return;
+ }
+
+ VideoLogInfo("List size : %d", mp_util_svc_get_number_of_video_item_by_type());
+
+ 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 mp_util_svc_find_video_item_index_by_url(const char *szPath)
+{
+ if (!VideoItemList || !szPath) {
+ VideoLogError("[ERR] No exist VideoItemList or szPath.");
+ return 99999;
+ }
+
+ unsigned int nCounter = 0;
+
+ Eina_List *pCurList = NULL;
+ media_info_h pVideoItem = NULL;
+
+ EINA_LIST_FOREACH(VideoItemList, pCurList, pVideoItem) {
+ if (pVideoItem) {
+ char *szUrl = NULL;
+ //media_info_get_display_name(pVideoItem, &szTitle);
+ media_info_get_file_path(pVideoItem, &szUrl);
+ if (szUrl && szPath) {
+ if (!g_strcmp0(szUrl , szPath))
+ {
+ VideoSecureLogDebug("Find same file url. index : %d", nCounter);
+ free(szUrl);
+ return nCounter;
+ }
+ }
+ MP_FREE_STRING(szUrl);
+ }
+
+ nCounter++;
+ }
+
+ return 99999;
+}
+
+bool mp_util_svc_extract_video_folder_list_by_type(int nSortType, int nItemType)
+{
+ filter_h m_FilterHandle = NULL;
+ char szTmpStr[STR_LEN_MAX] = {0,};
+
+ switch (nItemType) {
+ case MP_LIST_VIEW_ALL:
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121)");
+ break;
+
+ case MP_LIST_VIEW_PHONE:
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1)");
+
+ break;
+
+ case MP_LIST_VIEW_CLOUD:
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101) and MEDIA_STORAGE_TYPE = 101");
+
+ break;
+
+ default:
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121)");
+
+ break;
+ }
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_folder_foreach_folder_from_db(m_FilterHandle, mp_util_svc_iterate_for_folder_list_cb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail media_folder_foreach_folder_from_db().");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to destroy media filter handle.");
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_extract_personal_video_folder_list(int nSortType, bool bPersonal)
+{
+ filter_h m_FilterHandle = NULL;
+ char szTmpStr[STR_LEN_MAX] = {0,};
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ if (bPersonal == FALSE) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH NOT LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ else
+ {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_folder_foreach_folder_from_db(m_FilterHandle, mp_util_svc_iterate_for_personal_folder_list_cb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail media_folder_foreach_folder_from_db().");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to destroy media filter handle.");
+ }
+
+ return TRUE;
+}
+
+
+bool mp_util_svc_destory_video_folder_list(void)
+{
+ if (!VideoFolderList) {
+ VideoLogError("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 mp_util_svc_get_video_folder_size(void)
+{
+ if (!VideoFolderList) {
+ VideoLogError("Not exist video item list handle.");
+ return 0;
+ }
+
+ if (VideoFolderList) {
+ return (int)eina_list_count(VideoFolderList);
+ }
+
+ return 0;
+}
+
+char *mp_util_svc_get_video_folder_name(int nVideoFolderIndex)
+{
+ if (!VideoFolderList) {
+ VideoLogError("Not exist video folder list handle.");
+ return 0;
+ }
+
+ if (nVideoFolderIndex < 0 || nVideoFolderIndex >= mp_util_svc_get_video_folder_size()) {
+ VideoLogError("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) {
+ VideoLogError("szFolderName : %s", szFolderName);
+ return szFolderName;
+ }
+ }
+
+ return NULL;
+}
+
+char *mp_util_svc_get_video_folder_url(int nVideoFolderIndex)
+{
+ if (!VideoFolderList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoFolderIndex < 0 || nVideoFolderIndex >= mp_util_svc_get_video_folder_size()) {
+ VideoLogError("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) {
+ VideoSecureLogInfo("szFolderPath : %s", szFolderPath);
+ return szFolderPath;
+ }
+ }
+
+ return NULL;
+}
+
+char *mp_util_svc_get_video_folder_id(int nVideoFolderIndex)
+{
+ if (!VideoFolderList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoFolderIndex < 0 || nVideoFolderIndex >= mp_util_svc_get_video_folder_size()) {
+ VideoLogError("Error number of list item.");
+ return NULL;
+ }
+
+ char *szFolderId = NULL;
+ media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
+ if (pFolderItem) {
+ media_folder_get_folder_id(pFolderItem, &szFolderId);
+
+ if (szFolderId) {
+ VideoLogInfo("szFolderId : %s", szFolderId);
+ return szFolderId;
+ }
+ }
+
+ return NULL;
+}
+
+void mp_util_svc_register_thumbnail_update_func(int nVideoItemIndex, void *pUserCallbackFunc, void *pUserData)
+{
+ if (!pUserCallbackFunc) {
+ VideoLogError("[ERR]");
+ return;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("Error number of list item.");
+ return;
+ }
+
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+ if (media_info_create_thumbnail(pVideoItem, pUserCallbackFunc, pUserData) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning("media_info_create_thumbnail is Fail");
+ }
+}
+
+void mp_util_svc_cancel_thumbnail_update(int nVideoItemIndex)
+{
+ //VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("Error number of list item.");
+ return;
+ }
+
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+ if (pVideoItem) {
+ if (media_info_cancel_thumbnail(pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogWarning("media_info_cancel_thumbnail is Fail");
+ return;
+ }
+ }
+ else
+ {
+ VideoLogError("[ERR] pVideoItem is not existed.");
+ }
+}
+
+void mp_util_svc_update_thumbnail_info(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return;
+ }
+
+ char *szMediaUri = mp_util_svc_get_video_url(nVideoItemIndex);
+
+ if (!szMediaUri) {
+ VideoLogError("No exist video path.");
+ return;
+ }
+
+ VideoSecureLogInfo("szMediaUri : %s", szMediaUri);
+
+ media_info_h pUpdatedVideoItem = 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;
+ }
+
+ memset(szTmpStr, 0, STR_LEN_MAX);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szMediaUri);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ if (szMediaUri) {
+ free(szMediaUri);
+ szMediaUri = NULL;
+ }
+ return;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pUpdatedVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to get video item list with filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ if (szMediaUri) {
+ free(szMediaUri);
+ szMediaUri = NULL;
+ }
+ return;
+ }
+
+ if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to destroy media filter handle.");
+ if (szMediaUri) {
+ free(szMediaUri);
+ szMediaUri = NULL;
+ }
+ return;
+ }
+
+ if (pUpdatedVideoItem) {
+ char *szTmpStr = NULL;
+ media_info_get_thumbnail_path(pUpdatedVideoItem, &szTmpStr);
+ VideoSecureLogDebug("pUpdatedVideoItem - thumbnail path : %s", szTmpStr);
+ if (szTmpStr) {
+ free(szTmpStr);
+ szTmpStr = NULL;
+ }
+
+ media_info_get_display_name(pUpdatedVideoItem, &szTmpStr);
+ VideoSecureLogDebug("pUpdatedVideoItem - title : %s", szTmpStr);
+ if (szTmpStr) {
+ free(szTmpStr);
+ szTmpStr = NULL;
+ }
+
+ int nCounter = 0;
+ Eina_List *pCurList = NULL;
+ media_info_h pTmpVideoItem = NULL;
+ EINA_LIST_FOREACH(VideoItemList, pCurList, pTmpVideoItem) {
+ if (nCounter == nVideoItemIndex) {
+ VideoLogError("nCounter : %d", nCounter);
+ if (pTmpVideoItem)
+ {
+ media_info_destroy(pTmpVideoItem);
+ }
+ pCurList->data = pUpdatedVideoItem;
+ break;
+ }
+ ++nCounter;
+ }
+ }
+ else
+ {
+ VideoLogError("Fail to get video item from db..");
+ }
+
+ if (szMediaUri) {
+ free(szMediaUri);
+ szMediaUri = NULL;
+ }
+}
+
+char *mp_util_svc_get_video_id_by_index(const int nVideoItemIndex)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("Error number of list item.");
+ return NULL;
+ }
+
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+ char *szMediaId = NULL;
+ if (pVideoItem) {
+ int ret = media_info_get_media_id(pVideoItem, &szMediaId);
+ VideoLogInfo("VideoID : %s, %d", szMediaId, ret);
+ }
+
+ return szMediaId;
+}
+
+MpMediaStorageType mp_util_svc_get_folder_storage(const int nVideoFolderIndex)
+{
+
+ MpMediaStorageType storage_local = MP_MEDIA_TYPE_STORAGE_UNKNOWN;
+
+ if (!VideoFolderList) {
+ VideoLogError("Not exist video folder list handle.");
+ return storage_local;
+ }
+
+ if (nVideoFolderIndex < 0 || nVideoFolderIndex >= mp_util_svc_get_video_folder_size()) {
+ VideoLogError("Error number of list item.");
+ return storage_local;
+ }
+
+ media_content_storage_e storage_type = MEDIA_CONTENT_STORAGE_INTERNAL;
+ media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
+ if (media_folder_get_storage_type(pFolderItem, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("fail to get the folder storage type");
+ }
+ if (storage_type == MEDIA_CONTENT_STORAGE_INTERNAL)
+ {
+ storage_local = MP_MEDIA_TYPE_STORAGE_INTERNAL;
+ } else if (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL)
+ {
+ storage_local = MP_MEDIA_TYPE_STORAGE_EXTERNAL;
+ }
+
+ //char *szFolderName = NULL;
+// media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
+// media_content_storage_ex_e storage_type = MEDIA_CONTENT_STORAGE_INTERNAL_EX;
+// if (pFolderItem)
+// {
+// if (media_folder_get_storage_type_ex(pFolderItem, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
+// VideoLogError("fail to get the folder storage type");
+// }
+//
+// VideoSecureLogInfo("storage_type : %d", storage_type);
+// if (storage_type == MEDIA_CONTENT_STORAGE_INTERNAL_EX)
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_INTERNAL;
+// }
+// else if (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL_EX)
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_EXTERNAL;
+// }
+// else if (storage_type == MEDIA_CONTENT_STORAGE_DROPBOX_EX)
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_DROPBOX;
+// }
+// else
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_UNKNOWN;
+// }
+// }
+
+ return storage_local;
+}
+
+
+MpMediaStorageType mp_util_svc_get_video_storage(const int nVideoItemIndex)
+{
+ MpMediaStorageType storage_local = MP_MEDIA_TYPE_STORAGE_UNKNOWN;
+
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return storage_local;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("Error number of list item.");
+ return storage_local;
+ }
+
+ //media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+// media_content_storage_ex_e storage_type = MEDIA_CONTENT_STORAGE_DROPBOX_EX;
+
+// if (pVideoItem)
+// {
+// if (media_info_get_storage_type_ex(pVideoItem, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
+// VideoLogError("fail to get the content storage type");
+// }
+//
+// VideoSecureLogInfo("storage_type : %d", storage_type);
+// if (storage_type == MEDIA_CONTENT_STORAGE_INTERNAL_EX)
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_INTERNAL;
+// }
+// else if (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL_EX)
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_EXTERNAL;
+// }
+// else if (storage_type == MEDIA_CONTENT_STORAGE_DROPBOX_EX)
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_DROPBOX;
+// }
+// else
+// {
+// storage_local = MP_MEDIA_TYPE_STORAGE_UNKNOWN;
+// }
+// }
+
+ return storage_local;
+}
+
+bool mp_util_svc_is_cloud_storage(const int nVideoItemIndex)
+{
+ VideoLogInfo("disable cloud module.");
+ return FALSE;
+}
+
+bool mp_util_folder_is_cloud_storage(const int nFolderIndex)
+{
+ VideoLogInfo("disable cloud module.");
+ return FALSE;
+}
+
+
+int mp_util_svc_get_cloud_total_from_video_list(void)
+{
+ VideoLogInfo("disable cloud module.");
+ return 0;
+}
+
+bool mp_util_svc_insert_file_to_media_content_db(const char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("No existed file path.");
+ return FALSE;
+ }
+
+ media_info_h info = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ nRet = media_info_insert_to_db(szFilePath, &info);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to insert a download file into media-content database. : %d", nRet);
+ if (info) {
+ media_info_destroy(info);
+ info = NULL;
+ }
+ return FALSE;
+ }
+
+ if (info) {
+ media_info_destroy(info);
+ info = NULL;
+ }
+
+ return TRUE;
+}
+
+void mp_util_svc_update_database_cb(media_content_error_e nError, int nPid,
+ media_content_db_update_item_type_e nUpdateItem,
+ media_content_db_update_type_e nUpdateType,
+ media_content_type_e nMediaType,
+ char *szUuid, char *szPath, char *szMimeType, void *pUserData)
+{
+ if (nError) {
+ VideoLogError("error occured! : %d", nError);
+ return;
+ }
+
+ if (nPid == mp_util_get_pid()) {
+ VideoLogError("It is same processor");
+ return;
+ }
+
+ UpdateDatabaseCbFunc pUpdateDbCbFunc = pUserData;
+
+ if (nUpdateItem == MEDIA_ITEM_FILE) {
+
+ if (nMediaType != MEDIA_CONTENT_TYPE_VIDEO) {
+ VideoLogError("Updated contents are not video items.");
+ return;
+ }
+ }
+ else if (nUpdateItem == MEDIA_ITEM_DIRECTORY) {
+ VideoLogInfo("MEDIA_ITEM_DIRECTORY");
+ ///////////////////////////////////////////////////////////////////
+ // UPDATE ALL because It is not possible to extract video items. //
+ ///////////////////////////////////////////////////////////////////
+ }
+ else
+ {
+ VideoLogInfo("Nothing item type.");
+ }
+
+ if (nUpdateType == MEDIA_CONTENT_INSERT) {
+ VideoLogInfo("MEDIA_CONTENT_INSERT");
+ }
+ else if (nUpdateType == MEDIA_CONTENT_DELETE) {
+ VideoLogInfo("MEDIA_CONTENT_DELETE");
+ }
+ else if (nUpdateType == MEDIA_CONTENT_UPDATE) {
+ VideoLogInfo("MEDIA_CONTENT_UPDATE");
+ }
+ else
+ {
+ VideoLogInfo("Nothing update type.");
+ }
+
+ if (pUpdateDbCbFunc) {
+ VideoLogInfo("Update List View. = %d,%d", nUpdateItem, nUpdateType);
+ pUpdateDbCbFunc((void *)nUpdateType, 1.0, nUpdateType);
+ }
+}
+
+
+bool mp_util_svc_set_update_db_cb_func(UpdateDatabaseCbFunc pUpdateDbCbFunc)
+{
+ if (!pUpdateDbCbFunc) {
+ VideoLogError("No exsited pUpdateDbCbFunc.");
+ return FALSE;
+ }
+ bool bRet = TRUE;
+ mp_util_svc_unset_update_db_cb_func();
+
+ if (media_content_set_db_updated_cb((void*)mp_util_svc_update_database_cb, pUpdateDbCbFunc) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogInfo("Fail to registe update database callback function.");
+ bRet = FALSE;
+ }
+
+// if (media_content_set_db_updated_cloud_cb(&g_pCloud_h, (void*)mp_util_svc_update_database_cb, pUpdateDbCbFunc) != MEDIA_CONTENT_ERROR_NONE)
+// {
+// VideoLogInfo("Fail to registe update database callback function.");
+// bRet = FALSE;
+// }
+
+ return bRet;
+}
+
+
+void mp_util_svc_unset_update_db_cb_func(void)
+{
+
+ if (media_content_unset_db_updated_cb() != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogInfo("Fail to unregiste media_content_set_db_updated_cb.");
+ }
+// if (media_content_unset_db_updated_cloud_cb(g_pCloud_h) != MEDIA_CONTENT_ERROR_NONE)
+// {
+// VideoLogInfo("Fail to unregiste media_content_set_db_updated_cb.");
+// }
+ //g_pCloud_h = NULL;
+}
+
+///////////////////////////////////////////////////////
+// For livebox list
+
+static bool mp_util_svc_iterate_for_last_played_video_item_cb(media_info_h pMediaItem, void *pUserData)
+{
+ media_info_h pAssignMediaItem = NULL;
+ media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
+
+ if (!pMediaItem) {
+ return TRUE;
+ }
+
+ media_info_get_media_type(pMediaItem, &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) {
+ VideoLogError("Fail to get file path of media item.");
+ return TRUE;
+ }
+ strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1);
+
+ free(szTmpItemFilePath);
+ szTmpItemFilePath = NULL;
+
+ media_info_clone(&pAssignMediaItem, pMediaItem);
+ Eina_List **pList = (Eina_List **)pUserData;
+ *pList = eina_list_append(*pList, pAssignMediaItem);
+
+ if (eina_list_count(*pList) > RECENTLY_PLAYED_VIDEO_ITEM_MAX) {
+ VideoLogError("Break extract video item about recentl played item.");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_extract_last_played_item(void)
+{
+ if (RecentPlayedItemList) {
+ mp_util_svc_destory_last_played_item_list();
+ }
+
+ filter_h m_FilterHandle = NULL;
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ if (media_filter_set_condition(m_FilterHandle, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121)", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_DESC, MEDIA_LAST_PLAYED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_last_played_video_item_cb, &RecentPlayedItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_destory_last_played_item_list(void)
+{
+ if (!RecentPlayedItemList) {
+ VideoLogError("VideoItemList is empty already.");
+ return FALSE;
+ }
+
+ media_info_h pTmpRecentPlayedItem = NULL;
+ EINA_LIST_FREE(RecentPlayedItemList, pTmpRecentPlayedItem) {
+ if (pTmpRecentPlayedItem) {
+ media_info_destroy(pTmpRecentPlayedItem);
+ }
+ }
+
+ RecentPlayedItemList = NULL;
+
+ return TRUE;
+}
+
+char *mp_util_svc_get_last_played_video_item_thumbnail(const int nVideoItemIndex)
+{
+ if (!RecentPlayedItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return NULL;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex > (int)eina_list_count(RecentPlayedItemList)) {
+ VideoLogError("Error number of list item.");
+ return NULL;
+ }
+
+ char *szVideoItemThumbnailPath = NULL;
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(RecentPlayedItemList, nVideoItemIndex);
+
+ if (pVideoItem) {
+ media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath);
+ VideoSecureLogInfo("szVideoItemThumbnailFilePath : %s", szVideoItemThumbnailPath);
+ }
+
+ return szVideoItemThumbnailPath;
+}
+
+
+char *mp_util_svc_get_duration_str_time(int nVideoItemIndex)
+{
+ char szTmpStr[STR_LEN_MAX] = {0, };
+ char szTmpStrDurationTime[STR_LEN_MAX] = {0, };
+ char szTmpStrLastPlayedPos[STR_LEN_MAX] = {0, };
+
+ unsigned int nVideoInfoDuration = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ unsigned int nVideoInfoLastTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+
+ if (nVideoInfoDuration > 0) {
+
+ mp_util_convert_time(nVideoInfoDuration, szTmpStrDurationTime, FALSE);
+
+ if (nVideoInfoLastTime > 0) {
+ mp_util_convert_time(nVideoInfoLastTime, szTmpStrLastPlayedPos, TRUE);
+ snprintf(szTmpStr, STR_LEN_MAX, "<match>%s</match>/%s", szTmpStrLastPlayedPos, szTmpStrDurationTime);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "%s", szTmpStrDurationTime);
+ }
+ }
+ else
+ {
+ snprintf(szTmpStr, STR_LEN_MAX, "--:--:--");
+ }
+
+ return strdup(szTmpStr);
+}
+
+bool mp_util_svc_get_video_detail_by_video_url(const char *szPath,
+ int *nWidth, int *nHeight, char **szTitle, unsigned int *nDuration, unsigned int *nPlayedTime)
+{
+ if (!szPath) {
+ VideoLogError("No exist video path.");
+ return FALSE;
+ }
+
+ VideoSecureLogDebug("szPath : %s", szPath);
+
+ 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) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", szPath);
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("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) {
+ //last played time
+ int nLastPlayedTime = 0;
+ video_meta_get_played_position(pVideoMetaHandle, &nLastPlayedTime);
+ *nPlayedTime = (unsigned int)nLastPlayedTime;
+
+ //Duratiom time
+ int duration = 0;
+ video_meta_get_duration(pVideoMetaHandle, &duration);
+ *nDuration = (unsigned int)duration;
+
+ //get width
+ int width = 0;
+ video_meta_get_width(pVideoMetaHandle, &width);
+ *nWidth = width;
+
+ //get height
+ int height = 0;
+ video_meta_get_height(pVideoMetaHandle, &height);
+ *nHeight = height;
+
+ video_meta_destroy(pVideoMetaHandle);
+ }
+
+ //display name
+ char *szName = NULL;
+ media_info_get_display_name(pVideoItem, &szName);
+ *szTitle = szName;
+ media_info_destroy(pVideoItem);
+ }
+ VideoSecureLogDebug("Last Played Time : %s,%d:%d,%d,%d", *szTitle, *nPlayedTime, *nDuration, *nWidth, *nHeight);
+
+ return TRUE;
+}
+
+
+bool mp_util_svc_extract_video_list_from_folder_by_personal(char *szFolderPath, int nSortType, int nItemType, int nViewType)
+{
+ if (VideoItemList) {
+ VideoLogError("Already exist video list.");
+ return FALSE;
+ }
+
+ if (!szFolderPath) {
+ VideoLogError("[ERR]");
+ return FALSE;
+ }
+
+ 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_RECENTLY_VIEWED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_ADDED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_DISPLAY_NAME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_SIZE:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_SIZE, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_TYPE:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_MIME_TYPE, STR_LEN_MAX - 1);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ }
+
+ switch (nItemType) {
+ case MP_LIST_VIEW_ALL:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ break;
+
+ case MP_LIST_VIEW_PHONE:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ break;
+
+ case MP_LIST_VIEW_CLOUD:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ break;
+
+ default:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH NOT LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and FOLDER_PATH = \"%s\" and MEDIA_PATH LIKE \"%s%%\"", szFolderPath, VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ break;
+ }
+
+ if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to create media filter handle.");
+ return FALSE;
+ }
+
+ if (media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set filter condition.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_folder_foreach_folder_from_db(m_FilterHandle, mp_util_svc_iterate_for_get_folder_cb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail media_folder_foreach_folder_from_db().");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (!m_FolderHandle) {
+ VideoLogError("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) {
+ VideoLogError("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) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to get folder id.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, mp_util_svc_iterate_cb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+
+ if (szFolderID) {
+ free(szFolderID);
+ szFolderID = NULL;
+ }
+ return FALSE;
+ }
+
+ if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Fail to destroy media filter handle.");
+ }
+
+ if (szFolderID) {
+ free(szFolderID);
+ szFolderID = NULL;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_extract_video_list_by_personal(int nSortType, int nItemType, int nViewType)
+{
+ if (VideoItemList) {
+ VideoLogError("Already exist video list.");
+ return FALSE;
+ }
+
+ nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
+
+ 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,};
+
+ nTotalVideoTypeFiles = 0;
+ nNumberOfVideoItemByType = 0;
+
+ switch (nSortType) {
+ case MP_MEDIA_SORT_BY_NONE:
+ case MP_MEDIA_SORT_BY_RECENTLY_VIEWED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_ADDED_TIME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_DISPLAY_NAME, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_SIZE:
+ nOrderType = MEDIA_CONTENT_ORDER_DESC;
+ strncpy(szOrderObj, MEDIA_SIZE, STR_LEN_MAX - 1);
+ break;
+
+ case MP_MEDIA_SORT_BY_TYPE:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_MIME_TYPE, STR_LEN_MAX - 1);
+ break;
+
+ default:
+ nOrderType = MEDIA_CONTENT_ORDER_ASC;
+ strncpy(szOrderObj, MEDIA_LAST_PLAYED_TIME, STR_LEN_MAX - 1);
+ }
+
+ switch (nItemType) {
+ case MP_LIST_VIEW_ALL:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH NOT LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ break;
+
+ case MP_LIST_VIEW_PHONE:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH NOT LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and (MEDIA_STORAGE_TYPE = 0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+
+ break;
+
+ case MP_LIST_VIEW_CLOUD:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH NOT LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+
+ break;
+
+ default:
+ if (nViewType == 0) {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH NOT LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ } else {
+ snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1) and MEDIA_PATH LIKE \"%s%%\"", VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ break;
+ }
+ VideoLogInfo("MEDIA_PATH not like %s", szTmpStr);
+
+ 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, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to set order.");
+ media_filter_destroy(m_FilterHandle);
+ return FALSE;
+ }
+
+ if (media_info_foreach_media_from_db(m_FilterHandle, mp_util_svc_iterate_for_video_item_list_view_cb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("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) {
+ VideoLogError("Fail to destroy media filter handle.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_check_valid_personal(int nViewType)
+{
+ bool bRet = FALSE;
+ bool bDeviceVideo = FALSE;
+ char *pVideoFile = NULL;
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if ((nVideoListSize < 1) || (mp_util_get_personal_status() == FALSE)) {
+ return FALSE;
+ }
+
+ int nIndex = 0;
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++) {
+
+ bDeviceVideo = mp_util_svc_is_device_storage(nIndex);
+ if (!bDeviceVideo) {
+ continue;
+ }
+ pVideoFile = mp_util_svc_get_video_url(nIndex);
+ bRet = mp_util_check_video_personal_status((const char*)pVideoFile);
+ MP_FREE_STRING(pVideoFile);
+ if (nViewType == 0) {
+ if (!bRet) {
+ return TRUE;
+ }
+ } else {
+ if (bRet) {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+int mp_util_svc_move_from_db(const char *path)
+{
+ if (!path) {
+ return -1;
+ }
+ int res = MEDIA_CONTENT_ERROR_NONE;
+ res = media_content_scan_file(path);
+ return res;
+}
+
+
+void mp_util_svc_move_to_db(const int nVideoItemIndex, const char *szVideoPath)
+{
+ if (!VideoItemList) {
+ VideoLogError("Not exist video item list handle.");
+ return;
+ }
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("Error number of list item.");
+ return;
+ }
+
+ media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
+
+ if (pVideoItem) {
+ if (media_info_move_to_db(pVideoItem, szVideoPath) != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("Failed move to db");
+ }
+ }
+
+}
+
+bool mp_util_svc_remove_list_item_from_list(int nVideoItemIndex)
+{
+
+ if (!VideoItemList) {
+ VideoLogError("pList is empty already.");
+ return FALSE;
+ }
+
+ media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
+
+ if (pItem) {
+ VideoItemList = eina_list_remove(VideoItemList, pItem);
+ media_info_destroy(pItem);
+ nNumberOfVideoItemByType--;
+ }
+ else
+ {
+ VideoLogError("Fail to remove item in media svc and list.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_util_svc_remove_folder_list_item_from_list(int nVideoItemIndex)
+{
+ if (!VideoFolderList) {
+ VideoLogError("pList is empty already.");
+ return FALSE;
+ }
+
+ media_folder_h pItem = eina_list_nth(VideoFolderList, nVideoItemIndex);
+
+ if (pItem) {
+ VideoFolderList = eina_list_remove(VideoFolderList, pItem);
+ media_folder_destroy(pItem);
+ }
+ else
+ {
+ VideoLogError("Fail to remove item in media svc and list.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#ifdef ENABLE_DRM_FEATURE
+bool mp_util_svc_filter_drm_video_item_list(void)
+{
+ if (!VideoItemList) {
+ VideoLogError("VideoItemList is empty already.");
+ return FALSE;
+ }
+
+ char *szVideoItemFilePath = NULL;
+ int nVideoIndex = 0;
+ for (nVideoIndex = 0; nVideoIndex < nNumberOfVideoItemByType; nVideoIndex++) {
+
+ szVideoItemFilePath = mp_util_svc_get_video_url(nVideoIndex);
+ bool bDRMLock = FALSE;
+ mp_util_check_drm_lock((const char*)szVideoItemFilePath, &bDRMLock);
+
+ if (bDRMLock) {
+ mp_util_svc_remove_list_item_from_list(nVideoIndex);
+
+ nVideoIndex --;
+ }
+
+ if (szVideoItemFilePath) {
+ free(szVideoItemFilePath);
+ szVideoItemFilePath = NULL;
+ }
+
+
+ }
+
+ return TRUE;
+}
+#endif
+
+#ifdef ENABLE_DRM_FEATURE
+bool mp_util_svc_check_no_drm_video(void)
+{
+ if (!VideoItemList) {
+ VideoLogError("VideoItemList is empty already.");
+ return FALSE;
+ }
+ char *szVideoItemFilePath = NULL;
+ media_info_h pVideoItem = NULL;
+ Eina_List *pIterateList = NULL;
+ bool bDRMLock = FALSE;
+
+
+ EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) {
+ if (pVideoItem) {
+ media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
+ if (szVideoItemFilePath) {
+ mp_util_check_drm_lock((const char*)szVideoItemFilePath, &bDRMLock);
+ free(szVideoItemFilePath);
+ szVideoItemFilePath = NULL;
+ }
+ if (!bDRMLock) {
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+#endif
+
+bool mp_util_svc_is_device_storage(const int nVideoItemIndex)
+{
+ MpMediaStorageType storage_type = mp_util_svc_get_video_storage(nVideoItemIndex);
+ if ((storage_type == MP_MEDIA_TYPE_STORAGE_INTERNAL) || (storage_type == MP_MEDIA_TYPE_STORAGE_EXTERNAL)) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool mp_util_svc_is_personal_data(const int nVideoItemIndex)
+{
+ bool bPersonalVideo = FALSE;
+ char *szPath = mp_util_svc_get_video_url(nVideoItemIndex);
+ if (szPath) {
+ bPersonalVideo = mp_util_check_video_personal_status(szPath);
+ free(szPath);
+ szPath = NULL;
+ }
+
+ return bPersonalVideo;
+}
+
+bool mp_util_svc_scan_file(const char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("szFilePath is NULL.");
+ return FALSE;
+ }
+ media_content_scan_file(szFilePath);
+ return TRUE;
+}
+
+
+/*----------------sort video list-----------------------------*/
+
+static int __mp_util_svc_sort_by_type(const void *d1, const void *d2)
+{
+ if (d1 == NULL) {
+ return (1);
+ }
+ if (d2 == NULL) {
+ return (-1);
+ }
+
+ char *szMime_1 = NULL;
+ char *szMime_2 = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ int result = 0;
+
+ media_info_h pVideoItem_1 = (media_info_h)d1;
+ media_info_h pVideoItem_2 = (media_info_h)d2;
+
+ nRet = media_info_get_mime_type(pVideoItem_1, &szMime_1);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE || szMime_1 == NULL) {
+ VideoLogError("[ERR] Fail to get item title. - 0x%x", nRet);
+ MP_FREE_STRING(szMime_1);
+ return (1);
+ }
+ nRet = media_info_get_mime_type(pVideoItem_2, &szMime_2);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE || szMime_2 == NULL) {
+ VideoLogError("[ERR] Fail to get item title. - 0x%x", nRet);
+ MP_FREE_STRING(szMime_1);
+ MP_FREE_STRING(szMime_2);
+ return (-1);
+ }
+
+ result = strcasecmp(szMime_1, szMime_2);
+
+ MP_FREE_STRING(szMime_1);
+ MP_FREE_STRING(szMime_2);
+
+ if (result > 0) {
+ return (1);
+ } else {
+ return (-1);
+ }
+
+ return result;
+}
+
+static int __mp_util_svc_sort_by_name(const void *d1, const void *d2)
+{
+ if (d1 == NULL) {
+ return (1);
+ }
+ if (d2 == NULL) {
+ return (-1);
+ }
+
+ char *szTitle_1 = NULL;
+ char *szTitle_2 = NULL;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ int result = 0;
+
+ media_info_h pVideoItem_1 = (media_info_h)d1;
+ media_info_h pVideoItem_2 = (media_info_h)d2;
+ nRet = media_info_get_display_name(pVideoItem_1, &szTitle_1);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE || szTitle_1 == NULL) {
+ VideoLogError("[ERR] Fail to get item title. - 0x%x", nRet);
+ MP_FREE_STRING(szTitle_1);
+ return (1);
+ }
+
+ nRet = media_info_get_display_name(pVideoItem_2, &szTitle_2);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE || szTitle_2 == NULL) {
+ MP_FREE_STRING(szTitle_1);
+ MP_FREE_STRING(szTitle_2);
+ VideoLogError("[ERR] Fail to get item title. - 0x%x", nRet);
+ return (-1);
+ }
+
+ result = strcasecmp(szTitle_1, szTitle_2);
+
+ MP_FREE_STRING(szTitle_1);
+ MP_FREE_STRING(szTitle_2);
+
+ if (result > 0) {
+ return (1);
+ } else {
+ return (-1);
+ }
+ return result;
+}
+
+static int __mp_util_svc_sort_by_size(const void *d1, const void *d2)
+{
+ if (d1 == NULL) {
+ return (1);
+ }
+ if (d2 == NULL) {
+ return (-1);
+ }
+
+ unsigned long long nFileSize1 = 0;
+ unsigned long long nFileSize2 = 0;
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ int result = 0;
+
+ media_info_h pVideoItem_1 = (media_info_h)d1;
+ media_info_h pVideoItem_2 = (media_info_h)d2;
+
+
+ nRet = media_info_get_size(pVideoItem_1, &nFileSize1);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogInfo("[ERR] Fail to get item size. - 0x%x", nRet);
+ return (1);
+ }
+
+
+ nRet = media_info_get_size(pVideoItem_2, &nFileSize2);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogInfo("[ERR] Fail to get item size. - 0x%x", nRet);
+ return (-1);
+ }
+
+ if (nFileSize1 < nFileSize2) {
+ result = 1;
+ } else if (nFileSize1 > nFileSize2) {
+ result = -1;
+ } else {
+ result = -1;
+ }
+
+ return result;
+}
+/*
+static int __mp_util_svc_sort_by_date(const void *d1, const void *d2)
+{
+ if (d1 == NULL) {
+ return (1);
+ }
+ if (d2 == NULL) {
+ return (-1);
+ }
+
+ time_t nTime_1 = 0;
+ time_t nTime_2 = 0;
+
+ int nRet = MEDIA_CONTENT_ERROR_NONE;
+ int result = 0;
+
+ media_info_h pVideoItem_1 = (media_info_h)d1;
+ media_info_h pVideoItem_2 = (media_info_h)d2;
+
+
+ nRet = media_info_get_modified_time(pVideoItem_1, &nTime_1);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("[ERR] Fail to get item date. - 0x%x", nRet);
+ return (1);
+ }
+
+ nRet = media_info_get_modified_time(pVideoItem_2, &nTime_2);
+ if (nRet != MEDIA_CONTENT_ERROR_NONE) {
+ VideoLogError("[ERR] Fail to get item date. - 0x%x", nRet);
+ return (-1);
+ }
+
+ if (nTime_1 < nTime_2) {
+ result = -1;
+ } else if (nTime_1 > nTime_2) {
+ result = 1;
+ } else {
+ result = -1;
+ }
+
+ return result;
+}
+*/
+void mp_util_svc_ctrl_sort_list(int SortType)
+{
+ if (!VideoItemList) {
+ VideoLogWarning("VideoItemList is NULL.");
+ return;
+ }
+
+ Eina_Compare_Cb sort_func = NULL;
+
+ switch (SortType) {
+ case MP_MEDIA_SORT_BY_RECENTLY_VIEWED:
+// sort_func = __mp_util_svc_sort_by_recently_viewed;
+// break;
+ case MP_MEDIA_SORT_BY_RECENTLY_ADDED:
+// sort_func = __mp_util_svc_sort_by_recently_added;
+// break;
+ case MP_MEDIA_SORT_BY_NAME:
+ sort_func = __mp_util_svc_sort_by_name;
+ break;
+ case MP_MEDIA_SORT_BY_SIZE:
+ sort_func = __mp_util_svc_sort_by_size;
+ break;
+ case MP_MEDIA_SORT_BY_TYPE:
+ sort_func = __mp_util_svc_sort_by_type;
+ break;
+ default:
+ sort_func = __mp_util_svc_sort_by_name;
+ break;
+ }
+ int nVideoTotal = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogWarning("nVideoTotal is %d.", nVideoTotal);
+ VideoItemList = eina_list_sort(VideoItemList, nVideoTotal, sort_func);
+}
+
+bool mp_util_svc_get_frame_by_position(const char *szFilePath, const char *szDestImage, int nPosition, int nWidth, int nHeight)
+{
+ if (!szFilePath || !szDestImage) {
+ VideoLogInfo("[ERR] No exist szFilePath or szDestImage.");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata;
+ int nRet = 0;
+ void *pFrame = NULL;
+ int nFrameSize = 0;
+ char *szVal = NULL;
+ int nRotate = 0;
+ unsigned char *pRotBuf = NULL;
+
+ if (metadata_extractor_create(&pMetadata) != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogInfo("[ERR] - metadata_extractor_create()");
+ goto Execption;
+ }
+
+ if (metadata_extractor_set_path(pMetadata, szFilePath) != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogInfo("[ERR] - metadata_extractor_set_path()");
+ goto Execption;
+ }
+
+ if (metadata_extractor_get_metadata(pMetadata, METADATA_ROTATE, &szVal) != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogInfo("[ERR] - metadata_extractor_get_metadata()");
+ goto Execption;
+ }
+
+ if (szVal == NULL) {
+ nRotate = 0;
+ }
+ else {
+ nRotate = atoi(szVal);
+ MP_FREE_STRING(szVal);
+ }
+
+ if (metadata_extractor_get_frame_at_time(pMetadata, nPosition, TRUE, &pFrame, &nFrameSize) != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogInfo("[ERR] - metadata_extractor_get_frame_at_time()");
+ goto Execption;
+ }
+
+ if (pFrame == NULL) {
+ VideoLogInfo("pFrame is NULL");
+ goto Execption;
+ }
+
+ if (nRotate != 0) {
+ image_util_rotation_e nRot = IMAGE_UTIL_ROTATION_NONE;
+ if (nRotate == 90) {
+ nRot = IMAGE_UTIL_ROTATION_90;
+ }
+ else if (nRotate == 180) {
+ nRot = IMAGE_UTIL_ROTATION_180;
+ }
+ else if (nRotate == 270) {
+ nRot = IMAGE_UTIL_ROTATION_270;
+ }
+
+ if (nRot != IMAGE_UTIL_ROTATION_NONE) {
+ unsigned int nResizBufSize = 0;
+ int nSrcW = nWidth;
+ int nSrcH = nHeight;
+ if (image_util_calculate_buffer_size(nWidth, nHeight, IMAGE_UTIL_COLORSPACE_RGB888, &nResizBufSize) != IMAGE_UTIL_ERROR_NONE) {
+ VideoLogInfo("image_util_calculate_buffer_size is fail : [0x%x]", nRet);
+ goto Execption;
+ }
+
+ pRotBuf = calloc(1,sizeof(unsigned char) * nResizBufSize);
+ if (pRotBuf == NULL) {
+ VideoLogInfo("pRotBuf alloc fail");
+ goto Execption;
+ }
+ else {
+ VideoLogInfo("ResizeBuf Size : %d", nResizBufSize);
+ if (vp_util_image_rotate(pRotBuf, &nWidth, &nHeight, nRot, pFrame, nSrcW, nSrcH, IMAGE_UTIL_COLORSPACE_RGB888) != IMAGE_UTIL_ERROR_NONE) {
+ VideoLogInfo("vp_util_image_rotate is fail : [0x%x]", nRet);
+ goto Execption;
+ }
+ }
+ }
+ }
+ if (pRotBuf) {
+ if (image_util_encode_jpeg(pRotBuf, nWidth, nHeight, IMAGE_UTIL_COLORSPACE_RGB888, 100, szDestImage)!= IMAGE_UTIL_ERROR_NONE) {
+ VideoLogInfo("image_util_encode_jpeg is fail : [0x%x]", nRet);
+ goto Execption;
+ }
+ } else {
+ if (image_util_encode_jpeg(pFrame, nWidth, nHeight, IMAGE_UTIL_COLORSPACE_RGB888, 100, szDestImage)!= IMAGE_UTIL_ERROR_NONE) {
+ VideoLogInfo("image_util_encode_jpeg is fail : [0x%x]", nRet);
+ goto Execption;
+ }
+ }
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ MP_FREE_STRING(pFrame);
+ MP_FREE_STRING(pRotBuf);
+
+ return TRUE;
+Execption:
+
+ MP_FREE_STRING(pFrame);
+ MP_FREE_STRING(pRotBuf);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+ return FALSE;
+}
+
+//static bool __mp_util_svc_check_invalid_video_id(void *pInvalidList, char *pVideoId)
+//{
+// if (!pInvalidList || !pVideoId)
+// {
+// return FALSE;
+// }
+// char *pVideoTmpId = NULL;
+// Eina_List *pIterateList = NULL;
+//
+// EINA_LIST_FOREACH(pInvalidList, pIterateList, pVideoTmpId)
+// {
+// if (pVideoId)
+// {
+// if (g_strcmp0(pVideoTmpId, pVideoId) == 0)
+// {
+// return TRUE;
+// }
+// }
+// }
+//
+// return FALSE;
+//}
+
+int mp_util_svc_get_wall_video_index(void *pInvalidList)
+{
+// media_info_h pVideoItem = NULL;
+// Eina_List *pIterateList = NULL;
+// int nVideoIndex = 0;
+// if (!VideoItemList) {
+// VideoLogError("VideoItemList IS null");
+// return -1;
+// }
+// char *szWallDir = NULL;
+// char *szWallFile = NULL;
+// char *szMediaId = NULL;
+
+// EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
+// {
+// if (pVideoItem)
+// {
+// media_content_storage_ex_e storage_type = MEDIA_CONTENT_STORAGE_INTERNAL_EX;
+// media_info_get_storage_type_ex(pVideoItem, &storage_type);
+// if ((storage_type == MEDIA_CONTENT_STORAGE_INTERNAL_EX) || (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL_EX)) {
+// media_info_get_media_id(pVideoItem, &szMediaId);
+// if (szMediaId)
+// {
+// szWallDir = g_strdup_printf("%s/%s", MP_VIDEO_WALL_DIR, szMediaId);
+// szWallFile = g_strdup_printf(MP_VIDEO_WALL_FRAME_FILE_PREFIX, szWallDir);
+// if (!__mp_util_svc_check_invalid_video_id(pInvalidList, szMediaId))
+// {
+// if (szWallFile && !vp_file_exists(szWallFile))
+// {
+// MP_FREE_STRING(szWallFile);
+// MP_FREE_STRING(szMediaId);
+// return nVideoIndex;
+// }
+// }
+// MP_FREE_STRING(szMediaId);
+// }
+// MP_FREE_STRING(szWallFile);
+// }
+// ++nVideoIndex;
+// }
+// }
+ return -1;
+}
+
+bool mp_util_svc_check_valid_media_id(char *pMediaId, int style, int *nMediaIndex)
+{
+ if (!pMediaId) {
+ return FALSE;
+ }
+
+ Eina_List *pIterateList = NULL;
+ char *szMediaId = NULL;
+ int nIndex = 0;
+
+ if (style == MEDIA_TYPE_FILE) {
+ if (!VideoItemList) {
+ return FALSE;
+ }
+ media_info_h pVideoItem = NULL;
+ nIndex = 0;
+
+ EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) {
+ if (pVideoItem) {
+ media_info_get_media_id(pVideoItem, &szMediaId);
+
+ if (szMediaId && (g_strcmp0(szMediaId, pMediaId) == 0))
+ {
+ MP_FREE_STRING(szMediaId);
+ *nMediaIndex = nIndex;
+ return TRUE;
+ }
+ nIndex++;
+ MP_FREE_STRING(szMediaId);
+ }
+ }
+ }
+ else if (style == MEDIA_TYPE_DIRECTORY) {
+ if (!VideoFolderList) {
+ return FALSE;
+ }
+ nIndex = 0;
+ media_folder_h pFolderItem = NULL;
+
+ EINA_LIST_FOREACH(VideoFolderList, pIterateList, pFolderItem) {
+ if (pFolderItem) {
+ media_folder_get_folder_id(pFolderItem, &szMediaId);
+ if (g_strcmp0(szMediaId, pMediaId) == 0)
+ {
+ MP_FREE_STRING(szMediaId);
+ *nMediaIndex = nIndex;
+
+ return TRUE;
+ }
+ MP_FREE_STRING(szMediaId);
+ nIndex++;
+ }
+ }
+
+ }
+
+ return FALSE;
+}
+
+
diff --git a/src/common/mp-util-preference.c b/src/common/mp-util-preference.c
new file mode 100644
index 0000000..fb0e5b1
--- /dev/null
+++ b/src/common/mp-util-preference.c
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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-preference.h"
+#include "vp-play-log.h"
+
+/* keys */
+#define MP_UTIL_PREFERENCE_KEY_MULTI_PLAY_FLAG "preference/org.tizen.videos/multi_play"
+#define MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS "preference/org.tizen.videos/preview_url_videos"
+
+/* storage */
+bool mp_util_preference_set_multi_play_status(bool set)
+{
+ int nErr = 0;
+ nErr = preference_set_boolean(MP_UTIL_PREFERENCE_KEY_MULTI_PLAY_FLAG,
+ set);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET MP_UTIL_PREFERENCE_KEY_MULTI_PLAY_FLAG is fail [0x%x]",
+ nErr);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool mp_util_preference_get_multi_play_status(bool *bMultiPlay)
+{
+ int nErr = 0;
+ bool nVal = false;
+
+ nErr = preference_get_boolean(MP_UTIL_PREFERENCE_KEY_MULTI_PLAY_FLAG,
+ &nVal);
+ if (nErr != 0) {
+ VideoLogError
+ ("GET MP_UTIL_PREFERENCE_KEY_MULTI_PLAY_FLAG is fail [0x%x]",
+ nErr);
+ return FALSE;
+ }
+
+ *bMultiPlay = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+char *mp_util_preference_get_preview(void)
+{
+ char *szPreview = NULL;
+ int nErr = 0;
+
+ nErr = preference_get_string(MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ &szPreview);
+ if (nErr != 0) {
+ VideoLogError("fail to retrieve preview url [0x%x]", nErr);
+ }
+ VideoSecureLogInfo("szPreviewUrl : %s", szPreview);
+
+ if (szPreview) {
+ if (strlen(szPreview) < 1) {
+ free(szPreview);
+ szPreview = NULL;
+ }
+ }
+ return szPreview;
+}
+
+bool mp_util_preference_set_preview(char *szPreview)
+{
+ VideoSecureLogInfo("szPreviewUrl : %s", szPreview);
+
+ bool bRet = FALSE;
+
+ if (szPreview) {
+ if (preference_set_string
+ (MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ szPreview)) {
+ VideoLogError("Fail to write url.");
+ bRet = FALSE;
+ } else {
+ bRet = TRUE;
+ }
+ } else {
+ if (preference_set_string
+ (MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS,
+ "")) {
+ VideoLogError("Fail to write url.");
+ bRet = FALSE;
+ } else {
+ bRet = TRUE;
+ }
+ }
+
+ return bRet;
+}
+
+bool mp_util_preference_set_preview_change(preference_changed_cb callback,
+ void *pUserData)
+{
+
+ bool bRet = FALSE;
+ int nErr = 0;
+
+ nErr = preference_set_changed_cb
+ (MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS, callback,
+ pUserData);
+ if (nErr != 0) {
+ VideoLogError("Failed to register callback [0x%x]", nErr);
+ } else {
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+bool mp_util_preference_unset_preview_change()
+{
+ bool bRet = FALSE;
+ int nErr = 0;
+
+ nErr = preference_unset_changed_cb
+ (MP_UTIL_PREFERENCE_KEY_PREVIEW_URL_VIDEOS);
+ if (nErr != 0) {
+ VideoLogError("failed to unregister [0x%x]", nErr);
+ } else {
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+void mp_util_preference_init()
+{
+ /*if add preference key. it is necessary to init new preference here.*/
+}
diff --git a/src/common/mp-util.c b/src/common/mp-util.c
new file mode 100644
index 0000000..c0039e3
--- /dev/null
+++ b/src/common/mp-util.c
@@ -0,0 +1,2676 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <glib.h>
+#include <errno.h>
+#include <vconf.h>
+#include <unistd.h>
+#include <E_DBus.h>
+#include <signal.h>
+#include <Ecore_X.h>
+#include <stdbool.h>
+#include <shortcut.h>
+#include <media_key.h>
+#include <vconf-keys.h>
+#include <Elementary.h>
+#include <appcore-common.h>
+
+#include <notification.h>
+#include <media_content.h>
+#include <metadata_extractor.h>
+#include <app_preference.h>
+
+#include <sys/statvfs.h>
+
+#include <runtime_info.h>
+/*#include <telephony_network.h>*/
+#include <net_connection.h>
+#include <telephony.h>
+#include <wifi-direct.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-info-ctrl.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "vp-drm.h"
+#endif
+#include "vp-util.h"
+#include "vp-file-util.h"
+
+enum VIDEO_PLAYER_FILE_SIZE_TYPE {
+ SIZE_BYTE = 0,
+ SIZE_KB,
+ SIZE_MB,
+ SIZE_GB
+};
+
+
+#define MP_UTIL_PHONE_PATH "/opt/usr/media"
+#define MP_UTIL_SD_PATH "/opt/storage/sdcard"
+#define MP_UTIL_USB_PATH "/opt/storage/usb"
+#define MP_UTIL_MEDIA_DIR "/opt/usr/media/Videos"
+
+#define MP_UTIL_FILE_PREFIX "file://"
+
+#define FILE_SIZE_LEN_MAX 64
+#define BASIC_SIZE 1024 /*used for file size check*/
+
+#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)
+
+#define PREF_MP_UTIL_MAIN_TAB_TYPE "preference/org.tizen.videos/main_display_tab"
+
+
+static Ecore_X_Window pMainXwindow = 0;
+static Ecore_X_Display *pX11DisplayHandle = NULL;
+static Evas_Object *pPopUpHandle = NULL;
+static Evas_Object *pMainWindowHandle = NULL;
+static Evas_Object *pMainConformant = NULL;
+
+mpColorThemeChangedCb g_fThemeChangedCb = NULL;
+
+void mp_util_set_color_theme_changed_cb(mpColorThemeChangedCb fChanged)
+{
+ g_fThemeChangedCb = fChanged;
+}
+
+void mp_util_create_main_theme(void)
+{
+ mp_util_free_main_theme();
+
+ elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME);
+}
+
+void mp_util_free_main_theme(void)
+{
+ const Eina_List *pExtensionThemeList = NULL;
+ Eina_List *l = NULL;
+ char *pItem = NULL;
+
+ pExtensionThemeList = elm_theme_extension_list_get(NULL);
+
+ if (pExtensionThemeList) {
+ EINA_LIST_FOREACH((Eina_List *) pExtensionThemeList, l, pItem) {
+ if (pItem != NULL && strcmp(pItem, VIDEO_CUSTOM_THEME) == 0) {
+ elm_theme_extension_del(NULL, VIDEO_CUSTOM_THEME);
+ }
+ }
+ }
+}
+
+int mp_util_get_main_tab_type()
+{
+ int nType = 0;
+
+ if (preference_get_int(PREF_MP_UTIL_MAIN_TAB_TYPE, &nType) !=
+ PREFERENCE_ERROR_NONE) {
+ VideoLogError("[ERR] PREF_MP_UTIL_MAIN_TAB_TYPE fail!!!");
+ }
+
+ return nType;
+}
+
+void mp_util_set_main_tab_type(int nType)
+{
+ if (preference_set_int(PREF_MP_UTIL_MAIN_TAB_TYPE, nType) != PREFERENCE_ERROR_NONE) {
+ VideoLogError("[ERR] PREF_MP_UTIL_MAIN_TAB_TYPE fail!!!");
+ }
+}
+
+void mp_util_reset_for_relauching(void)
+{
+ pX11DisplayHandle = NULL;
+ pPopUpHandle = NULL;
+ pMainXwindow = 0;
+ pMainWindowHandle = NULL;
+ pMainConformant = NULL;
+}
+
+void mp_util_show_indicator(void)
+{
+ if (!pMainConformant || !pMainWindowHandle) {
+ VideoLogError
+ ("[ERR] No exist pMainConformant, pMainWindowHandle.");
+ return;
+ }
+
+ elm_win_indicator_mode_set((Evas_Object *) pMainWindowHandle,
+ ELM_WIN_INDICATOR_SHOW);
+ elm_win_indicator_opacity_set((Evas_Object *) pMainWindowHandle,
+ ELM_WIN_INDICATOR_OPAQUE);
+ elm_object_signal_emit((Evas_Object *) pMainConformant,
+ "elm,state,indicator,nooverlap", "");
+ evas_object_data_set((Evas_Object *) pMainConformant, "overlap",
+ NULL);
+}
+
+void mp_util_hide_indicator(void)
+{
+ if (!pMainConformant || !pMainWindowHandle) {
+ VideoLogError
+ ("[ERR] No exist pMainConformant, pMainWindowHandle.");
+ return;
+ }
+
+ elm_win_indicator_mode_set((Evas_Object *) pMainWindowHandle,
+ ELM_WIN_INDICATOR_SHOW);
+ elm_win_indicator_opacity_set((Evas_Object *) pMainWindowHandle,
+ ELM_WIN_INDICATOR_TRANSPARENT);
+ elm_object_signal_emit((Evas_Object *) pMainConformant,
+ "elm,state,indicator,overlap", "");
+ evas_object_data_set((Evas_Object *) pMainConformant, "overlap",
+ (void *) EINA_TRUE);
+}
+
+void mp_util_set_main_window_handle(void *pWindowHandle)
+{
+ pMainXwindow = elm_win_xwindow_get(pWindowHandle);
+ pMainWindowHandle = pWindowHandle;
+}
+
+void mp_util_set_main_conformat(void *pConformant)
+{
+ pMainConformant = pConformant;
+}
+
+void *mp_util_get_main_conformat(void)
+{
+
+ if (!pMainConformant) {
+ VideoLogError("[ERR] No exist pMainConformant.");
+ return NULL;
+ }
+
+ return pMainConformant;
+}
+
+unsigned int mp_util_get_main_window_xid(void)
+{
+ if (!pMainXwindow) {
+ VideoLogError("[ERR] No exist main window XID.");
+ return 0;
+ }
+
+ return pMainXwindow;
+}
+
+void *mp_util_get_main_window_handle(void)
+{
+
+ if (!pMainWindowHandle) {
+ VideoLogError("[ERR] No exist main window handle.");
+ return NULL;
+ }
+
+ return pMainWindowHandle;
+}
+
+void *mp_util_create_title_icon_btn(void *pParent, const char *icon_path,
+ Evas_Smart_Cb pFunc, void *pUserData)
+{
+ if (!pParent || !icon_path) {
+ VideoLogError("invalid parent and icon path");
+ return NULL;
+ }
+ Evas_Object *pIcon = NULL;
+ Evas_Object *pTitleBtn = NULL;
+
+ pIcon = elm_image_add((Evas_Object *) pParent);
+ elm_image_file_set(pIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ, icon_path);
+ evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_BOTH, 1,
+ 1);
+
+ pTitleBtn = elm_button_add((Evas_Object *) pParent);
+ elm_object_style_set(pTitleBtn, "naviframe/title_icon");
+ elm_object_part_content_set(pTitleBtn, "icon", pIcon);
+ evas_object_smart_callback_add(pTitleBtn, "clicked", pFunc,
+ pUserData);
+
+ return pTitleBtn;
+}
+
+/*///////////////////////////////////////*/
+/* Popup utility*/
+void mp_util_delete_popup_handle(void)
+{
+
+ if (pPopUpHandle) {
+ evas_object_del(pPopUpHandle);
+ pPopUpHandle = NULL;
+ } else {
+ VideoLogInfo("No exist popup.");
+ }
+}
+
+static void __mp_util_popup_back_cb(void *data, Evas_Object *pObj,
+ void *event_info)
+{
+ mp_util_delete_popup_handle();
+}
+
+bool mp_util_notify_popup(void *pUserData, char *szTitle,
+ char *szContents, void *PopupButtonCallbackFunc)
+{
+ if (!szContents) {
+ VideoLogError("No have popup message is null.");
+ return FALSE;
+ }
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ PopupButtonCallbackFunc, NULL);
+ evas_object_smart_callback_add(pPopUpHandle, "block,clicked",
+ __mp_util_popup_back_cb,
+ (void *) pUserData);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(pPopUpHandle, szContents);
+ if (szTitle && (szTitle == VIDEOS_COMMON_HEADER_ERROR)) {
+ elm_object_domain_translatable_part_text_set(pPopUpHandle,
+ "title,text",
+ MP_SYS_STRING,
+ szTitle);
+ }
+ elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+ if (PopupButtonCallbackFunc) {
+ evas_object_smart_callback_add(pPopUpHandle, "timeout",
+ PopupButtonCallbackFunc,
+ pUserData);
+ } else {
+ evas_object_smart_callback_add(pPopUpHandle, "timeout",
+ __mp_util_popup_back_cb,
+ pUserData);
+ }
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool mp_util_info_popup(char *szLabel, Evas_Smart_Cb response_cb,
+ Evas_Event_Cb focus_cb, void *pUserData,
+ const char *szDomain)
+{
+ VideoLogInfo("");
+
+ if (!szLabel) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return FALSE;
+ }
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ response_cb, pUserData);
+
+ Evas_Object *obj_ok = elm_button_add(pPopUpHandle);
+ elm_object_style_set(obj_ok, "popup");
+ elm_object_domain_translatable_text_set(obj_ok, MP_SYS_STRING,
+ VIDEOS_COMMON_BUTTON_OK_IDS);
+ elm_object_part_content_set(pPopUpHandle, "button1", obj_ok);
+ evas_object_smart_callback_add(obj_ok, "clicked", response_cb,
+ pPopUpHandle);
+
+ if (szLabel) {
+ /*elm_object_part_text_set(popup, "title,text", title);*/
+
+ elm_object_domain_translatable_text_set(pPopUpHandle, szDomain,
+ szLabel);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool mp_util_info_second_popup(Evas_Object *pParent, char *szLabel,
+ Evas_Smart_Cb response_cb,
+ Evas_Event_Cb focus_cb, void *pUserData,
+ const char *szDomain)
+{
+ VideoLogInfo("");
+
+ if (!szLabel) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return FALSE;
+ }
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(pParent);
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ response_cb, pUserData);
+
+ Evas_Object *obj_ok = elm_button_add(pPopUpHandle);
+ elm_object_style_set(obj_ok, "popup");
+ elm_object_domain_translatable_text_set(obj_ok, MP_SYS_STRING,
+ VIDEOS_COMMON_BUTTON_OK_IDS);
+ elm_object_part_content_set(pPopUpHandle, "button1", obj_ok);
+ evas_object_smart_callback_add(obj_ok, "clicked", response_cb,
+ pPopUpHandle);
+
+ if (szLabel) {
+ elm_object_domain_translatable_text_set(pPopUpHandle, szDomain,
+ szLabel);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+void mp_util_text_and_check_popup(Evas_Smart_Cb response_cb,
+ void *cancel_cb, void *ok_cb,
+ void *check_changed_cb, char *szLabel,
+ void *pUserData)
+{
+ if (!szLabel) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return;
+ }
+ Evas_Object *pCheck = NULL;
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pLabel = NULL;
+ Evas_Object *pBtn1 = NULL;
+ Evas_Object *pBtn2 = NULL;
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ response_cb, pUserData);
+
+ pLabel = elm_label_add(pPopUpHandle);
+ elm_label_line_wrap_set(pLabel, ELM_WRAP_MIXED);
+ elm_object_text_set(pLabel, szLabel);
+ evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(pLabel, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_show(pLabel);
+
+ pLayout = elm_layout_add(pPopUpHandle);
+ elm_layout_file_set(pLayout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_checkview");
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ pCheck = elm_check_add(pPopUpHandle);
+ elm_object_style_set(pCheck, "multiline");
+ /*elm_object_domain_translatable_text_set(pCheck, VIDEOS_STRING, MP_PERSONAL_DONT_ASK_AGAIN);*/
+ evas_object_smart_callback_add(pCheck, "changed", check_changed_cb,
+ pUserData);
+ elm_check_state_set(pCheck, FALSE);
+ elm_object_text_set(pCheck, MP_PERSONAL_DONT_ASK_AGAIN);
+ evas_object_size_hint_align_set(pCheck, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pCheck, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pCheck);
+
+ elm_object_part_content_set(pLayout, "elm.swallow.content", pLabel);
+ elm_object_part_content_set(pLayout, "elm.swallow.end", pCheck);
+
+ evas_object_show(pLayout);
+ elm_object_content_set(pPopUpHandle, pLayout);
+
+ pBtn1 = elm_button_add(pPopUpHandle);
+ elm_object_style_set(pBtn1, "popup");
+ elm_object_text_set(pBtn1, VIDEOS_COMMON_BUTTON_CANCEL);
+ elm_object_part_content_set(pPopUpHandle, "button1", pBtn1);
+ evas_object_smart_callback_add(pBtn1, "clicked", cancel_cb,
+ pPopUpHandle);
+
+ pBtn2 = elm_button_add(pPopUpHandle);
+ elm_object_style_set(pBtn2, "popup");
+ elm_object_text_set(pBtn2, VIDEOS_COMMON_BUTTON_OK);
+ elm_object_part_content_set(pPopUpHandle, "button2", pBtn2);
+ evas_object_smart_callback_add(pBtn2, "clicked", ok_cb, pPopUpHandle);
+ evas_object_show(pPopUpHandle);
+}
+
+void *mp_util_get_current_popup_object()
+{
+ return (void *) pPopUpHandle;
+}
+
+bool mp_util_loading_popup(MpLoadingPopUpType style, char *szLabel,
+ Evas_Smart_Cb response_cb, void *pUserData)
+{
+ VideoLogInfo("");
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pCancelButton = NULL;
+
+ if (!szLabel) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return FALSE;
+ }
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ response_cb, pUserData);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ Evas_Object *progressbar = NULL;
+
+ progressbar = elm_progressbar_add(pPopUpHandle);
+ elm_object_style_set(progressbar, "process_large");
+ 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);
+
+ pLayout = elm_layout_add(pPopUpHandle);
+ elm_layout_file_set(pLayout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_processing_1button");
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ elm_object_part_content_set(pLayout, "elm.swallow.content",
+ progressbar);
+ elm_object_part_text_set(pLayout, "elm.text", szLabel);
+
+ elm_object_content_set(pPopUpHandle, pLayout);
+ if (style == POPUP_PROCESSING_ONE_BUTTON) {
+ pCancelButton = elm_button_add(pPopUpHandle);
+ elm_object_style_set(pCancelButton, "popup");
+ elm_object_domain_translatable_text_set(pCancelButton,
+ VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_part_content_set(pPopUpHandle, "button1",
+ pCancelButton);
+ evas_object_smart_callback_add(pCancelButton, "clicked",
+ response_cb, pPopUpHandle);
+ evas_object_show(pCancelButton);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool mp_util_loading_left_text_popup(MpLoadingPopUpType style,
+ char *szLabel,
+ Evas_Smart_Cb response_cb,
+ void *pUserData)
+{
+ VideoLogInfo("");
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pCancelButton = NULL;
+
+ if (!szLabel) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return FALSE;
+ }
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ response_cb, pUserData);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ Evas_Object *progressbar = NULL;
+
+ progressbar = elm_progressbar_add(pPopUpHandle);
+ elm_object_style_set(progressbar, "process_large");
+ 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);
+
+ pLayout = elm_layout_add(pPopUpHandle);
+ elm_layout_file_set(pLayout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_processingview_1button");
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ elm_object_part_content_set(pLayout, "elm.swallow.content",
+ progressbar);
+ elm_object_part_text_set(pLayout, "elm.text", szLabel);
+
+ elm_object_content_set(pPopUpHandle, pLayout);
+ if (style == POPUP_PROCESSING_ONE_BUTTON) {
+ pCancelButton = elm_button_add(pPopUpHandle);
+ elm_object_style_set(pCancelButton, "popup");
+ elm_object_domain_translatable_text_set(pCancelButton,
+ VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_part_content_set(pPopUpHandle, "button1",
+ pCancelButton);
+ evas_object_smart_callback_add(pCancelButton, "clicked",
+ response_cb, pPopUpHandle);
+ evas_object_show(pCancelButton);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool mp_util_yes_no_popup(void *pUserData, char *szTitle,
+ char *szContents,
+ void *PopupYesButtonCallbackFunc,
+ void *PopupNoButtonCallbackFunc)
+{
+
+ if (!szTitle || !szContents) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return FALSE;
+ }
+
+ Evas_Object *pButton = NULL;
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ PopupNoButtonCallbackFunc, NULL);
+
+ 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");
+ elm_object_domain_translatable_text_set(pButton, MP_SYS_STRING,
+ VIDEOS_COMMON_BUTTON_YES_IDS);
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if (PopupYesButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupYesButtonCallbackFunc,
+ pUserData);
+ }
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, MP_SYS_STRING,
+ VIDEOS_COMMON_BUTTON_NO_IDS);
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+ if (PopupNoButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupNoButtonCallbackFunc,
+ pUserData);
+ }
+ /*elm_popup_timeout_set(pPopUpHandle, 3.0);*/
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool mp_util_remove_all_videos_question_popup(void *pUserData,
+ MpListViewAsType viewType,
+ void
+ *PopupDeleteButtonCallbackFunc,
+ void
+ *PopupCancelButtonCallbackFunc,
+ void
+ *PopupHWMouseBackUpCbFunc,
+ void *PopupHWKeyBackCbFunc)
+{
+ Evas_Object *pButton = NULL;
+
+ char *tmpTitle = NULL;
+ char *tmpStr = NULL;
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ PopupCancelButtonCallbackFunc, NULL);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ tmpTitle = g_strdup_printf(VIDEOS_DELETEPOP_HEADER_DELETE);
+ elm_object_part_text_set(pPopUpHandle, "title,text", tmpTitle);
+
+ if (viewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogInfo("All folders are selected to delete");
+ tmpStr =
+ g_strdup_printf
+ (VIDEOS_DELETEPOP_MSG_ALL_FOLDERS_WILL_BE_DELETED);
+ } else {
+ VideoLogInfo("All videos are selected to delete");
+ tmpStr =
+ g_strdup_printf
+ (VIDEOS_DELETEPOP_MSG_ALL_VIDEOS_WILL_BE_DELETED);
+ }
+
+ elm_object_part_text_set(pPopUpHandle, "default", tmpStr);
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL);
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if (PopupCancelButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupCancelButtonCallbackFunc,
+ pUserData);
+ }
+
+ pButton = elm_button_add(pPopUpHandle);
+
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_DELETEPOP_BUTTON_DELETE_ALL);
+
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+ if (PopupDeleteButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupDeleteButtonCallbackFunc,
+ pUserData);
+ }
+
+ if (PopupHWMouseBackUpCbFunc) {
+ evas_object_event_callback_add(pPopUpHandle,
+ EVAS_CALLBACK_MOUSE_UP,
+ PopupHWMouseBackUpCbFunc,
+ pUserData);
+ }
+
+ if (PopupHWKeyBackCbFunc) {
+ /*evas_object_event_callback_add(pPopUpHandle, EVAS_CALLBACK_KEY_DOWN, PopupHWKeyBackCbFunc, pUserData);*/
+ }
+ /*elm_popup_timeout_set(pPopUpHandle, 3.0);*/
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+
+bool mp_util_remove_question_popup(void *pUserData,
+ MpListViewAsType viewType,
+ void *PopupDeleteButtonCallbackFunc,
+ void *PopupCancelButtonCallbackFunc,
+ void *PopupHWMouseBackUpCbFunc,
+ void *PopupHWKeyBackCbFunc)
+{
+ Evas_Object *pButton = NULL;
+
+ int nSelected = (int) pUserData;
+ char *tmpTitle = NULL;
+ char *tmpStr = NULL;
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ PopupCancelButtonCallbackFunc, NULL);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ tmpTitle = g_strdup_printf(VIDEOS_DELETEPOP_HEADER_DELETE);
+ elm_object_part_text_set(pPopUpHandle, "title,text", tmpTitle);
+
+ if (nSelected < -1) { /* select videos*/
+ if (viewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogInfo("%d folders are selected to delete", -nSelected);
+ tmpStr =
+ g_strdup_printf
+ (VIDEOS_DELETEPOP_MSG_PD_FOLDERS_WILL_BE_DELETED,
+ -nSelected);
+ } else {
+ VideoLogInfo("%d videos are selected to delete", -nSelected);
+ tmpStr =
+ g_strdup_printf
+ (VIDEOS_DELETEPOP_MSG_PD_VIDEOS_WILL_BE_DELETED,
+ -nSelected);
+ }
+ } else {
+ /* select a video*/
+ if (viewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogInfo("The folder is selected to delete. Index: %d.",
+ nSelected);
+ tmpStr =
+ g_strdup_printf
+ (VIDEOS_DELETEPOP_MSG_THIS_FOLDER_WILL_BE_DELETED_IDS);
+ } else {
+ VideoLogInfo("The video is selected to delete. Index: %d.",
+ nSelected);
+ tmpStr =
+ g_strdup_printf
+ (VIDEOS_DELETEPOP_MSG_ONE_VIDEO_WILL_BE_DELETED);
+ }
+ }
+ elm_object_part_text_set(pPopUpHandle, "default", tmpStr);
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL);
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if (PopupCancelButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupCancelButtonCallbackFunc,
+ pUserData);
+ }
+
+ pButton = elm_button_add(pPopUpHandle);
+
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_DELETEPOP_BUTTON_DELETE);
+
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+ if (PopupDeleteButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupDeleteButtonCallbackFunc,
+ pUserData);
+ }
+
+ if (PopupHWMouseBackUpCbFunc) {
+ evas_object_event_callback_add(pPopUpHandle,
+ EVAS_CALLBACK_MOUSE_UP,
+ PopupHWMouseBackUpCbFunc,
+ pUserData);
+ }
+
+ if (PopupHWKeyBackCbFunc) {
+ /*evas_object_event_callback_add(pPopUpHandle, EVAS_CALLBACK_KEY_DOWN, PopupHWKeyBackCbFunc, pUserData);*/
+ }
+ /*elm_popup_timeout_set(pPopUpHandle, 3.0);*/
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool mp_util_remove_folder_question_popup(void *pUserData,
+ void *PopupDeleteButtonCallbackFunc,
+ void *PopupCancelButtonCallbackFunc,
+ void *PopupHWMouseBackUpCbFunc,
+ void *PopupHWKeyBackCbFunc)
+{
+ Evas_Object *pButton = NULL;
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ PopupCancelButtonCallbackFunc, NULL);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ elm_object_part_text_set(pPopUpHandle, "title,text", VIDEOS_DELETEPOP_HEADER_DELETE);
+ elm_object_domain_translatable_text_set(pPopUpHandle, VIDEOS_STRING, VIDEOS_DELETEPOP_MSG_THIS_FOLDER_WILL_BE_DELETED_IDS);
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_style_set(pButton, "popup_button/default");
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if (PopupCancelButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupCancelButtonCallbackFunc,
+ pUserData);
+ }
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_DELETEPOP_BUTTON_DELETE);
+ elm_object_style_set(pButton, "popup_button/default");
+ elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+ if (PopupDeleteButtonCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupDeleteButtonCallbackFunc,
+ pUserData);
+ }
+
+ if (PopupHWMouseBackUpCbFunc) {
+ evas_object_event_callback_add(pPopUpHandle,
+ EVAS_CALLBACK_MOUSE_UP,
+ PopupHWMouseBackUpCbFunc,
+ pUserData);
+ }
+
+ if (PopupHWKeyBackCbFunc) {
+ /*evas_object_event_callback_add(pPopUpHandle, EVAS_CALLBACK_KEY_DOWN, PopupHWKeyBackCbFunc, pUserData);*/
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+
+bool mp_util_download_question_popup(void *pUserData, char *szTitle,
+ char *szContents,
+ void *PopupCancelBtnCallbackFunc,
+ void *PopupDownloadBtnCallbackFunc)
+{
+ Evas_Object *pButton = NULL;
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ if (szContents)
+ elm_object_text_set(pPopUpHandle, szContents);
+
+ if (szTitle)
+ elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if (PopupCancelBtnCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupCancelBtnCallbackFunc,
+ pUserData);
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ PopupCancelBtnCallbackFunc, NULL);
+ }
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_DELETEPOP_BUTTON_DELETE);
+ elm_object_style_set(pButton, "popup");
+ elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+ if (PopupDownloadBtnCallbackFunc) {
+ evas_object_smart_callback_add(pButton, "clicked",
+ PopupDownloadBtnCallbackFunc,
+ pUserData);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+void mp_util_set_label_for_detail(Evas_Object *pBox, char *szString)
+{
+
+ Evas_Object *pLabel = NULL;
+ if (!pBox) {
+ VideoLogError("error pBox");
+ return;
+ }
+ 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_line_wrap_set(pLabel, EINA_TRUE);
+ elm_label_wrap_width_set(pLabel,
+ VIDEO_POPUP_DETAIL_ITEM_W *
+ elm_config_scale_get());
+ evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_min_set(pLabel, VIDEO_POPUP_DETAIL_ITEM_W,
+ 35 * elm_config_scale_get());
+
+ elm_box_pack_end(pBox, pLabel);
+ evas_object_show(pLabel);
+
+/*
+ pLabel = elm_entry_add(pPopUpHandle);
+ elm_entry_editable_set(pLabel, EINA_FALSE);
+ elm_object_focus_set(pLabel, EINA_FALSE);
+ elm_object_disabled_set(pLabel, EINA_TRUE);
+
+ elm_object_text_set(pLabel, szString);
+ evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(pLabel, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(pBox, pLabel);
+ evas_object_show(pLabel);
+*/
+}
+
+bool mp_util_progress_popup(char *szLabel)
+{
+ VideoLogInfo("");
+
+ if (!szLabel) {
+ VideoLogError("No have popup message or pUserData is null.");
+ return FALSE;
+ }
+
+ mp_util_delete_popup_handle();
+
+ pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(pPopUpHandle, EEXT_CALLBACK_BACK,
+ __mp_util_popup_back_cb, NULL);
+
+ 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);
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+void mp_util_status_bar_noti_popup_show(const char *szStr)
+{
+ if (!szStr) {
+ VideoLogInfo("szStr is NULL.");
+ return;
+ }
+
+ int nRet = notification_status_message_post(szStr);
+
+ if (nRet != 0) {
+ VideoLogInfo("notification_status_message_post() : [0x%x]", nRet);
+ }
+}
+
+void *mp_util_create_button_icon(void *pParent, const char *szIconPath,
+ bool bSizeUp, bool bSizeDown,
+ int nAspectWidth, int nAspectHeight,
+ void *pUserData, char *szButtonStyle,
+ void *func)
+{
+ 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, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ szIconPath);
+ evas_object_size_hint_aspect_set(pIcon,
+ EVAS_ASPECT_CONTROL_NEITHER,
+ nAspectWidth, nAspectHeight);
+ }
+
+ 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 *mp_util_create_style_button(void *pParent, const char *szButtonText,
+ const void *pUserData,
+ char *szButtonStyle, void *func)
+{
+ 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;
+}
+
+bool mp_util_call_off(void)
+{
+ telephony_call_state_e state = TELEPHONY_CALL_STATE_IDLE;
+ telephony_handle_list_s tel_list;
+ int tel_valid = telephony_init(&tel_list);
+ if (tel_valid != TELEPHONY_ERROR_NONE) {
+ VideoLogError("telephony is not initialized. ERROR Code is %d",tel_valid);
+ return TRUE;
+ }
+
+ telephony_h *newhandle = tel_list.handle;
+ int s = telephony_call_get_voice_call_state(*newhandle , &state );
+ telephony_deinit(&tel_list);
+
+ if (s == TELEPHONY_ERROR_NONE) {
+ if (state == TELEPHONY_CALL_STATE_IDLE) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ } else {
+ VideoLogError("ERROR: state error is %d",s);
+ }
+ return TRUE;
+}
+
+bool mp_util_check_local_file_exist(char *uri)
+{
+ if (!uri) {
+ VideoLogError("[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;
+ }
+}
+
+char *mp_util_get_file_size(unsigned long long size)
+{
+ int nCount = 0;
+
+ char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
+ if (!pTmp) {
+ return NULL;
+ }
+
+ double nSize_t = 0;
+
+ if (size >= (BASIC_SIZE)) {
+ nSize_t = (double) size / BASIC_SIZE;
+ nCount++;
+ }
+
+ while (nSize_t >= (BASIC_SIZE)) {
+ nSize_t /= BASIC_SIZE;
+ nCount++;
+ }
+
+ if (nCount == SIZE_BYTE) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX, "%0.1lf%s", nSize_t,
+ VIDEOS_DETAILVIEW_BODY_B);
+ } else if (nCount == SIZE_KB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX, "%0.1lf%s", nSize_t,
+ VIDEOS_DETAILVIEW_BODY_KB);
+ } else if (nCount == SIZE_MB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX, "%0.1lf%s", nSize_t,
+ VIDEOS_DETAILVIEW_BODY_MB);
+ } else if (nCount == SIZE_GB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX, "%0.1lf%s", nSize_t,
+ VIDEOS_DETAILVIEW_BODY_GB);
+ } else {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX, "%zu%s", 0,
+ VIDEOS_DETAILVIEW_BODY_MB);
+ }
+
+ return pTmp;
+}
+
+bool mp_util_get_file_title_from_file_path(char *szFilepath,
+ char *szTitle,
+ int nLengthTitle)
+{
+ if (!szFilepath || !szTitle) {
+ VideoLogError("[ERR]");
+ return FALSE;
+ }
+
+ char *szTitleName = NULL;
+ char *szExt = NULL;
+
+ 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;
+}
+
+char *mp_util_get_file_name_from_file_path(const char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("File Path is NULL");
+ return NULL;
+ }
+ char *szFile = NULL;
+ char *szTitleName = NULL;
+ int nLength = 0;
+
+ nLength = strlen(szFilePath);
+
+ if (nLength <= 0) {
+ VideoLogError("Invalid buffer length");
+ return NULL;
+ }
+
+ szTitleName = strrchr(szFilePath, '/');
+
+ if (szTitleName) {
+ szTitleName++;
+ } else {
+ szTitleName = (char *) szFilePath;
+ }
+ if (!szTitleName) {
+ VideoLogError("Invalid buffer");
+ return NULL;
+
+ }
+ szFile = calloc(1, strlen(szTitleName) + 1);
+ if (szFile) {
+ strncpy(szFile, szTitleName, strlen(szTitleName));
+ }
+
+ return szFile;
+}
+
+char *mp_util_get_display_name_from_path_and_title(const char *szFilePath,
+ const char *szTitle)
+{
+ if (!szFilePath || !szTitle) {
+ VideoLogError("File Path is NULL");
+ return NULL;
+ }
+ char *szDisplayName = NULL;
+ char *szExt = NULL;
+ int nLength = 0;
+
+ szExt = strrchr(szFilePath, '.');
+ if (szExt) {
+ nLength = strlen(szTitle) + strlen(szExt) + 1;
+ } else {
+ nLength = strlen(szTitle) + 1;
+ }
+
+ szDisplayName = calloc(1, nLength);
+ if (szDisplayName) {
+ if (szExt) {
+ snprintf(szDisplayName, nLength, "%s%s", szTitle,
+ szExt);
+ } else {
+ snprintf(szDisplayName, nLength, "%s", szTitle);
+ }
+ }
+ return szDisplayName;
+}
+
+bool mp_util_get_icon_path_from_thumbnail(const char *szMediaURL,
+ char **szIconURL)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ if (strlen(szMediaURL) < 1) {
+ VideoLogError("szMediaURL is invalid Length");
+ return FALSE;
+ }
+
+ *szIconURL = NULL;
+ char *szExt = strrchr(szMediaURL, '.');
+ int nLen = 0;
+ if (szExt) {
+ nLen = strlen(szExt);
+ }
+
+ if (nLen == 4) {
+ if (vp_file_exists(szMediaURL)) {
+ VideoLogWarning("Success finding icon file. - %s",
+ szMediaURL);
+ *szIconURL = strdup(szMediaURL);
+ }
+ return TRUE;
+ }
+
+ int nCount = 0;
+ int nStrLength = 0;
+ int nOutputLen = 0;
+
+ char szExtWildkey[3][5] = { ".jpg", ".png", ".bmp" };
+ char *szCheckFilePath = NULL;
+
+ nOutputLen = strlen(szMediaURL) + 5;
+ szCheckFilePath = calloc(1, sizeof(char)*nOutputLen);
+ if (szCheckFilePath) {
+ nStrLength = strlen(szMediaURL);
+
+ for (nCount = 0; nCount < 3; nCount++) {
+ memset(szCheckFilePath, 0, nOutputLen);
+ strncpy(szCheckFilePath, szMediaURL, nStrLength);
+ strncat(szCheckFilePath, szExtWildkey[nCount], 5);
+
+ VideoLogWarning("%s", szCheckFilePath);
+
+ if (vp_file_exists(szCheckFilePath)) {
+ VideoLogWarning("Success finding icon file. - %d, %s", nCount,
+ szCheckFilePath);
+ *szIconURL = strdup(szCheckFilePath);
+ break;
+ }
+ }
+ }
+ if (szCheckFilePath) {
+ free(szCheckFilePath);
+ szCheckFilePath = NULL;
+ }
+
+ return TRUE;
+}
+
+void mp_util_convert_time(int nVideoTime, char *szRetTime,
+ bool bIsHideHour)
+{
+ if (!szRetTime) {
+ VideoLogError("[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, "00:%02d:%02d", nMin,
+ nSec);
+ }
+ } else {
+ snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour,
+ nMin, nSec);
+ }
+
+ szRetTime[strlen(szRetTime)] = '\0';
+}
+
+void mp_util_convert_sec_time(int nVideoTime, char *szRetTime,
+ bool bIsHideHour)
+{
+ if (!szRetTime) {
+ VideoLogError("[ERR] No exist szRetTime pointer.");
+ return;
+ } else {
+ memset(szRetTime, 0, STR_LEN_MAX);
+ }
+
+ if (nVideoTime <= 0) {
+ VideoLogInfo("nVideoTime : %d", nVideoTime);
+ }
+
+ int nTime = nVideoTime;
+ 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';
+
+}
+
+int mp_util_get_pid(void)
+{
+ return syscall(__NR_gettid);
+}
+
+const char *mp_util_str_str_same_case(const char *str, const char *subStr)
+{
+ if (!str || !subStr) {
+ return NULL;
+ }
+
+ int len = strlen(subStr);
+ const char *strcpy = str;
+ if (len == 0) {
+ return NULL;
+ }
+
+ while (*strcpy) {
+ if (strncasecmp(strcpy, subStr, len) == 0) {
+ return strcpy;
+ }
+ ++strcpy;
+ }
+ return NULL;
+}
+
+void mp_util_toast_popup_clicked_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *event_info)
+{
+ evas_object_del(pObject);
+}
+
+void mp_util_toast_popup_timeout_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *event_info)
+{
+ evas_object_del(pObject);
+}
+
+bool mp_util_ticker_toast_popup(const char *text, bool info_style,
+ bool bottom)
+{
+ if (!text) {
+ return false;
+ }
+
+ /*************************************************************************************
+ * app control infomaiton
+ * Key Value Description
+ * 0 "default", "info" Tickernoti style, (default: "default")
+ * 1 "text" Text to use for the tickernoti description
+ * 2 "0", "1" Orientation of tickernoti. (0: top, 1:bottom, default: top)
+ * 3 "1", "2", �� ,"999" Timeout (1: 1 second, default: -1 means infinite)
+ *************************************************************************************/
+ /*
+ int nRet = 0;
+
+ nRet = notification_status_message_post(text);
+ if (nRet != NOTIFICATION_ERROR_NONE) {
+ VideoLogError("# tickernoti [%s] error : [%d]#", text, nRet);
+ return false;
+ }
+ */
+ Evas_Object *pToastPopup = NULL;
+ Evas_Object *pWindow = mp_util_get_main_window_handle();
+
+ pToastPopup = elm_popup_add(pWindow);
+ elm_popup_align_set(pToastPopup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+ evas_object_size_hint_weight_set(pToastPopup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ eext_object_event_callback_add(pToastPopup, EEXT_CALLBACK_BACK,
+ eext_popup_back_cb, NULL);
+ elm_object_text_set(pToastPopup, text);
+ evas_object_smart_callback_add(pToastPopup, "block,clicked",
+ mp_util_toast_popup_clicked_cb,
+ pWindow);
+ elm_popup_timeout_set(pToastPopup, 2.0);
+ evas_object_smart_callback_add(pToastPopup, "timeout",
+ mp_util_toast_popup_timeout_cb, NULL);
+
+ evas_object_show(pToastPopup);
+
+ return true;
+}
+
+bool mp_util_ticker_toast_with_timeout_cb_popup(const char *text,
+ Evas_Smart_Cb
+ timeout_func)
+{
+ if (!text) {
+ return false;
+ }
+
+ Evas_Object *pToastPopup = NULL;
+ Evas_Object *pWindow = mp_util_get_main_window_handle();
+
+ pToastPopup = elm_popup_add(pWindow);
+ elm_popup_align_set(pToastPopup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+ evas_object_size_hint_weight_set(pToastPopup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ eext_object_event_callback_add(pToastPopup, EEXT_CALLBACK_BACK,
+ eext_popup_back_cb, NULL);
+ elm_object_text_set(pToastPopup, text);
+ evas_object_smart_callback_add(pToastPopup, "block,clicked",
+ mp_util_toast_popup_clicked_cb,
+ pWindow);
+ elm_popup_timeout_set(pToastPopup, 2.0);
+ evas_object_smart_callback_add(pToastPopup, "timeout", timeout_func,
+ NULL);
+
+ evas_object_show(pToastPopup);
+
+ return true;
+}
+
+bool mp_util_get_network_result()
+{
+ connection_h connection = NULL;
+ connection_type_e net_state;
+ bool bSuccessful = true;
+ int err = 0;
+
+ err = connection_create(&connection);
+ if (err != CONNECTION_ERROR_NONE) {
+ VideoLogWarning("connection_create error. err is [%d]", err);
+ bSuccessful = false;
+ }
+
+ if (connection) {
+ err = connection_get_type(connection, &net_state);
+ connection_destroy(connection);
+
+ if (err != CONNECTION_ERROR_NONE) {
+ VideoLogWarning("connection_get_type error. err is [%d]",
+ err);
+ bSuccessful = false;
+ }
+ VideoLogInfo("net_state is [%d]", net_state);
+
+ if (net_state == CONNECTION_TYPE_DISCONNECTED) {
+ bSuccessful = false;
+ }
+ }
+
+ return bSuccessful;
+}
+
+char *mp_util_get_dir_by_path(const char *file_path)
+{
+ if (!file_path) {
+ return NULL;
+ }
+ char *result = NULL;
+ char *dir_path = NULL;
+ int location_index = 0;
+ const char *location = NULL;;
+ const char *head_dir = NULL;
+ dir_path = vp_dir_get(file_path);
+
+ if (!dir_path)
+ return NULL;
+
+ if (!strncmp(dir_path, MP_UTIL_PHONE_PATH, strlen(MP_UTIL_PHONE_PATH))) {
+ head_dir = MP_UTIL_PHONE_PATH;
+ location = VIDEOS_FOLDERVIEW_BODY_DEVICE_MEMORY;
+ } else if (!strncmp(dir_path, MP_UTIL_SD_PATH, strlen(MP_UTIL_SD_PATH))) {
+ head_dir = MP_UTIL_SD_PATH;
+ location = VIDEOS_FOLDERVIEW_BODY_SD_CARD;
+ } else if (!strncmp
+ (dir_path, MP_UTIL_USB_PATH, strlen(MP_UTIL_USB_PATH))) {
+ head_dir = MP_UTIL_USB_PATH;
+ location = VIDEOS_FOLDERVIEW_BODY_USB_MEMORY;
+ } else {
+ result = strdup(dir_path);
+ }
+
+ if (head_dir) {
+ location_index = strlen(head_dir) + 1;
+ }
+ if (location) {
+ MP_FREE_STRING(result);
+ result =
+ g_strdup_printf("/%s/%s", location,
+ (file_path + location_index));
+ }
+ VideoLogInfo("dir_path=%s, resul=%s", dir_path, result);
+
+ MP_FREE_STRING(dir_path);
+
+ return result;
+}
+
+char *mp_util_get_folder_icon_path(int nVideoFolderIndex)
+{
+ char *result = strdup(VIDEO_LIST_VIEW_ICON_FOLDER_PHONE);
+ char *dir_path = NULL;
+
+ char *file_path = mp_util_svc_get_video_folder_url(nVideoFolderIndex);
+ if (!file_path) {
+ VideoSecureLogError("file_path is NULL");
+ return result;
+ }
+ MpMediaStorageType storage_type =
+ mp_util_svc_get_folder_storage(nVideoFolderIndex);
+
+ if (storage_type == MP_MEDIA_TYPE_STORAGE_INTERNAL) {
+ if (result) {
+ free(result);
+ result = NULL;
+ }
+
+ result = strdup(VIDEO_LIST_VIEW_ICON_FOLDER_PHONE);
+ } else if (storage_type == MP_MEDIA_TYPE_STORAGE_EXTERNAL) {
+ dir_path = vp_dir_get(file_path);
+
+ if (!dir_path) {
+ MP_FREE_STRING(file_path);
+ VideoSecureLogError("dir_path is NULL");
+ return result;
+ }
+
+ if (!strncmp(dir_path, MP_UTIL_SD_PATH, strlen(MP_UTIL_SD_PATH))) {
+ if (result) {
+ free(result);
+ result = NULL;
+ }
+
+ result = strdup(VIDEO_LIST_VIEW_ICON_FOLDER_SDCARD);
+ } else if (!strncmp
+ (dir_path, MP_UTIL_USB_PATH, strlen(MP_UTIL_USB_PATH))) {
+ if (result) {
+ free(result);
+ result = NULL;
+ }
+
+ result = strdup(VIDEO_LIST_VIEW_ICON_FOLDER_EXTERNAL);
+
+ }
+ } else if (storage_type == MP_MEDIA_TYPE_STORAGE_DROPBOX) {
+ if (result) {
+ free(result);
+ result = NULL;
+ }
+
+ result = strdup(VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX);
+ } else {
+ if (result) {
+ free(result);
+ result = NULL;
+ }
+
+ result = strdup(VIDEO_LIST_VIEW_ICON_FOLDER_PHONE);
+ }
+
+ MP_FREE_STRING(dir_path);
+ MP_FREE_STRING(file_path);
+
+ return result;
+}
+
+bool mp_util_get_personal_status(void)
+{
+ int bOpened = FALSE;
+
+#ifndef ENABLE_PERSONAL
+ return bOpened;
+#endif
+ int nErr = 0;
+ nErr = vconf_get_bool(MP_UTIL_VCONF_KEY_PERSONAL_TAG, &bOpened);
+ if (nErr != 0) {
+ VideoLogError("MP_UTIL_VCONF_KEY_PERSONAL_TAG is fail [0x%x]",
+ nErr);
+ bOpened = FALSE;
+ }
+ VideoLogInfo("mp_util_get_personal_status = %d", bOpened);
+
+ return (bool) bOpened;
+}
+
+bool mp_util_check_video_personal_status(const char *szPreviewUrl)
+{
+ Eina_Bool bRet = EINA_FALSE;
+#ifndef ENABLE_PERSONAL
+ return bRet;
+#endif
+ if (szPreviewUrl) {
+ bRet =
+ eina_str_has_prefix(szPreviewUrl,
+ VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ VideoSecureLogInfo("eina_str_has_prefix=%s:%d", szPreviewUrl,
+ (int) bRet);
+ return (bool) bRet;
+}
+
+static int __mp_util_is_file_exist(const char *fullpath)
+{
+ if (!fullpath) {
+ return -1;
+ }
+ struct stat stFileInfo;
+
+ int intStat;
+
+ intStat = stat(fullpath, &stFileInfo);
+ if (intStat == 0) {
+ return 0;
+ }
+
+ return -1;
+}
+
+int mp_util_rename_file(const char *old_path, const char *new_path,
+ char **szNewestPath)
+{
+ int nCount = 0;
+ char *szNewPath = NULL;
+ char *szExt = NULL;
+ char *szNewPathTmp = NULL;
+
+ if (!old_path || !new_path) {
+ VideoLogError("Error path");
+ return -1;
+ }
+
+ if (!vp_file_exists(old_path)) {
+ VideoLogInfo("Error : file does not exist");
+ return -1;
+ }
+
+ if (mp_util_set_dest_file(VIDEO_DOWNLOAD_FILE_DIR) == -1) {
+ VideoLogInfo("mp_util_set_dest_file failed");
+ return -1;
+ }
+ szNewPath = g_strdup(new_path);
+ szExt = strrchr(new_path, '.');
+
+ if (szExt) {
+ int nStrlen = strlen(new_path) - strlen(szExt);
+ szNewPathTmp = g_strndup(new_path, nStrlen);
+ } else {
+ szNewPathTmp = g_strdup(new_path);
+ }
+
+ /*rename new file when name is existed*/
+ while (__mp_util_is_file_exist(szNewPath) == 0) {
+ nCount++;
+ MP_FREE_STRING(szNewPath);
+ if (szExt) {
+ szNewPath =
+ g_strdup_printf("%s_%d%s", szNewPathTmp, nCount, szExt);
+ } else {
+ szNewPath = g_strdup_printf("%s_%d", szNewPathTmp, nCount);
+ }
+ }
+ VideoSecureLogInfo("%s:%s", old_path, szNewPath);
+ MP_FREE_STRING(szNewPathTmp);
+ *szNewestPath = g_strdup(szNewPath);
+
+ if (!vp_file_mv(old_path, szNewPath)) {
+ VideoLogError("move false %d", errno);
+ MP_FREE_STRING(szNewPath);
+ return -1;
+ }
+ MP_FREE_STRING(szNewPath);
+
+ return 0;
+}
+
+int mp_util_set_dest_file(const char *pDestPath)
+{
+ if (!pDestPath) {
+ VideoLogError("pDestPath is NULL");
+ return -1;
+ }
+
+ int nRet = 0;
+
+ if (!vp_file_exists(pDestPath)) {
+ if (!vp_mkpath(pDestPath)) {
+ VideoLogError("Make directory Fail : %s", pDestPath);
+ nRet = -1;
+ } else {
+ nRet = 0;
+ }
+ }
+
+ return nRet;
+}
+
+
+#ifdef ENABLE_DRM_FEATURE
+bool mp_util_check_drm_lock(const char *szMediaURL, bool *bLock)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ bool bIsDrm = FALSE;
+
+ *bLock = FALSE;
+
+ if (vp_drm_is_drm_file(szMediaURL, &bIsDrm)) {
+ if (bIsDrm) {
+ bool bIsFWLock = FALSE;
+ bool bIsDivX = FALSE;
+ bool bIsPlayReadyDRM = FALSE;
+
+ if (vp_drm_is_check_forward_lock(szMediaURL, &bIsFWLock)) {
+ if (bIsFWLock) {
+ *bLock = TRUE;
+ }
+ }
+ if (vp_drm_is_divx_drm_file(szMediaURL, &bIsDivX)) {
+ if (bIsDivX) {
+ *bLock = TRUE;
+ }
+ }
+
+ if (vp_drm_is_playready_drm_file
+ (szMediaURL, &bIsPlayReadyDRM)) {
+ if (bIsPlayReadyDRM) {
+ *bLock = TRUE;
+ }
+ }
+ }
+ }
+
+ return TRUE;
+}
+#endif
+
+char *mp_util_get_title_from_path(char *szFilePath)
+{
+ if (!szFilePath || strlen(szFilePath) <= 0) {
+ VideoLogError("File Path is NULL");
+ return NULL;
+ }
+
+ char *szTitle = NULL;
+ const char *filename = vp_file_get(szFilePath);
+ if (!filename) {
+ return NULL;
+ }
+ szTitle = vp_strip_ext(filename);
+
+ return szTitle;
+}
+
+int mp_util_rename_the_same_file(const char *old_path,
+ char **szNewestPath)
+{
+ int nCount = 0;
+ char *szNewPath = NULL;
+ char *szExt = NULL;
+ char *szNewPathTmp = NULL;
+
+ if (!old_path) {
+ VideoLogError("Error path");
+ return -1;
+ }
+
+ szNewPath = g_strdup(old_path);
+ szExt = strrchr(old_path, '.');
+
+ if (szExt) {
+ int nStrlen = strlen(old_path) - strlen(szExt);
+ szNewPathTmp = g_strndup(old_path, nStrlen);
+ } else {
+ szNewPathTmp = g_strdup(old_path);
+ }
+
+ /*rename new file when name is existed*/
+ while (__mp_util_is_file_exist(szNewPath) == 0) {
+ nCount++;
+ MP_FREE_STRING(szNewPath);
+ if (szExt) {
+ szNewPath =
+ g_strdup_printf("%s_%d%s", szNewPathTmp, nCount, szExt);
+ } else {
+ szNewPath = g_strdup_printf("%s_%d", szNewPathTmp, nCount);
+ }
+ }
+ VideoSecureLogInfo("%s", szNewPath);
+ MP_FREE_STRING(szNewPathTmp);
+ *szNewestPath = g_strdup(szNewPath);
+
+ MP_FREE_STRING(szNewPath);
+
+ return 0;
+}
+
+bool mp_util_check_video_file(const char *szFullPath)
+{
+ bool bVideo = FALSE;
+ char *szExt = NULL;
+ if (!szFullPath) {
+ VideoLogError("INVALID PATH");
+ return FALSE;
+ }
+ char *szPath = g_strdup(szFullPath);
+ szExt = mp_info_ctrl_get_file_extension(szPath);
+
+ MP_FREE_STRING(szPath);
+
+ if (!szExt) {
+ return FALSE;
+ }
+ if (!strcasecmp("AVI", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("ASF", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("MP4", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("MPEG", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("MKV", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("SDP", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("WMV", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("3GP", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("3GPP", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("3G2", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("FLV", szExt)) {
+ bVideo = TRUE;
+ } else if (!strcasecmp("DIVX", szExt)) {
+ bVideo = TRUE;
+ } else {
+ bVideo = FALSE;
+ }
+ VideoLogInfo("format = %s:%d", szExt, bVideo);
+ MP_FREE_STRING(szExt);
+ return bVideo;
+}
+
+bool mp_util_check_empty_dir(const char *szDir)
+{
+ if (!szDir) {
+ VideoLogError("INVALID PATH");
+ return FALSE;
+ }
+ int nRet = vp_is_dir_empty(szDir);
+ if (nRet == 1) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool mp_util_get_subtitle_path(const char *szMediaURL, char **szSubtitle)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ if (strlen(szMediaURL) < 1) {
+ VideoLogError("szMediaURL is invalid Length");
+ return FALSE;
+ }
+
+ struct stat buf;
+ int nCount = 0;
+ int nStrLength = 0;
+ int nOutputLen = 0;
+
+ char *szExt = NULL;
+ char szExtWildkey[6][5] = {".srt", ".sub", ".smi", ".SRT", ".SUB",
+ ".SMI" };
+ char *szCheckFilePath = NULL;
+
+ *szSubtitle = NULL;
+
+ nOutputLen = strlen(szMediaURL) + 5;
+ szCheckFilePath = calloc(1, sizeof(char)*nOutputLen);
+ if (!szCheckFilePath) {
+ VideoLogError("faile dto allocate memory");
+ return FALSE;
+ }
+
+ szExt = strrchr(szMediaURL, '.');
+ if (szExt) {
+ nStrLength = strlen(szMediaURL) - strlen(szExt);
+ } else {
+ nStrLength = strlen(szMediaURL);
+ }
+
+ for (nCount = 0; nCount < 6; nCount++) {
+ memset(szCheckFilePath, 0, nOutputLen);
+ strncpy(szCheckFilePath, szMediaURL, nStrLength);
+ strncat(szCheckFilePath, szExtWildkey[nCount], 5);
+ if (!stat(szCheckFilePath, &buf)) {
+ VideoLogWarning("Success finding subtitle file. - %d, %s",
+ nCount, szCheckFilePath);
+ *szSubtitle = g_strdup(szCheckFilePath);
+ break;
+ }
+ }
+
+ MP_FREE_STRING(szCheckFilePath);
+
+ return TRUE;
+}
+
+bool mp_util_get_file_size_by_path(const char *szMediaURL,
+ unsigned long long *nSize)
+{
+ if (!szMediaURL) {
+ VideoLogError("szMediaURL is NULL");
+ return FALSE;
+ }
+
+ if (strlen(szMediaURL) < 1) {
+ VideoLogError("szMediaURL is invalid Length");
+ return FALSE;
+ }
+ struct stat src_info;
+ if (stat(szMediaURL, &src_info)) {
+ VideoLogInfo("error");
+ return FALSE;
+ } else {
+ *nSize = (unsigned long long) src_info.st_size;
+ }
+ return TRUE;
+}
+
+Evas_Object *mp_util_create_preload_image(Evas_Object *parent,
+ const char *path,
+ int nIconWidth)
+{
+ if (!parent || !path) {
+ VideoLogError("Invalid parent");
+ return NULL;
+ }
+
+ Evas_Object *thumb = NULL;
+ int nWidth = 0;
+ int nHeight = 0;
+
+ thumb = elm_image_add(parent);
+
+ elm_image_preload_disabled_set(thumb, EINA_FALSE);
+ elm_image_smooth_set(thumb, EINA_FALSE);
+
+ elm_image_prescale_set(thumb, nIconWidth);
+
+
+ elm_image_file_set(thumb, path, NULL);
+
+ elm_image_object_size_get(thumb, &nWidth, &nHeight);
+
+ if (nWidth > nHeight) {
+ elm_image_aspect_fixed_set(thumb, EINA_FALSE);
+ }
+
+ return thumb;
+}
+
+Evas_Object *mp_util_create_wall_preload_image(Evas_Object *parent,
+ int nIconWidth)
+{
+ if (!parent) {
+ VideoLogError("Invalid parent");
+ return NULL;
+ }
+
+ Evas_Object *thumb = NULL;
+
+ thumb = elm_image_add(parent);
+
+ elm_image_preload_disabled_set(thumb, EINA_FALSE);
+ elm_image_smooth_set(thumb, EINA_FALSE);
+
+ elm_image_prescale_set(thumb, nIconWidth);
+
+ return thumb;
+}
+
+bool mp_util_get_image_size(Evas_Object *pParent, const char *szMediaURL,
+ int *nWidth, int *nHeight)
+{
+ if (!szMediaURL || !pParent) {
+ VideoLogError("szMediaURL or pParent is NULL");
+ return FALSE;
+ }
+
+ int nWidth_t = 0;
+ int nHeight_t = 0;
+
+ Evas *pObject = evas_object_evas_get(pParent);
+ if (!pObject) {
+ return FALSE;
+ }
+ Evas_Object *pImage = evas_object_image_add(pObject);
+ if (!pImage) {
+ return FALSE;
+ }
+ evas_object_image_file_set(pImage, szMediaURL, NULL);
+ evas_object_image_size_get(pImage, &nWidth_t, &nHeight_t);
+
+ VideoLogInfo("Image Width %d, Height %d", nWidth_t, nHeight_t);
+ *nWidth = nWidth_t;
+ *nHeight = nHeight_t;
+ MP_DEL_OBJ(pImage);
+
+ return TRUE;
+}
+
+char *mp_util_get_preview_image_path(const char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("[ERR] No exist szFilePath.");
+ return NULL;
+ }
+
+ char *szVideoID = NULL;
+ char *szFileName = NULL;
+ int nPosition = 0;
+
+ nPosition =
+ mp_util_svc_get_video_last_play_time_by_video_url(szFilePath);
+ if (nPosition == 0) {
+ szFileName =
+ mp_util_svc_get_video_Thumbnail_by_video_url(szFilePath);
+ return szFileName;
+ }
+
+ if (!mp_util_svc_get_video_id_by_video_url(szFilePath, &szVideoID)) {
+ VideoLogError("mp_util_svc_get_video_id_by_video_url is Fail");
+ MP_FREE_STRING(szVideoID);
+ szFileName =
+ mp_util_svc_get_video_Thumbnail_by_video_url(szFilePath);
+ return szFileName;
+ }
+
+ szFileName =
+ g_strdup_printf("%s/%s.jpg", VIDEO_THUMB_DATA_DIR, szVideoID);
+ if (!vp_file_exists(szFileName)) {
+ MP_FREE_STRING(szVideoID);
+ MP_FREE_STRING(szFileName);
+ szFileName =
+ mp_util_svc_get_video_Thumbnail_by_video_url(szFilePath);
+ return szFileName;
+ }
+
+ MP_FREE_STRING(szVideoID);
+
+ return szFileName;
+}
+
+bool mp_util_save_preview_image(const char *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("[ERR] No exist szFilePath.");
+ return FALSE;
+ }
+
+ char *szVideoID = NULL;
+ char *szFileName = NULL;
+ unsigned int nPosition = 0;
+ int nWidth = 0;
+ int nHeight = 0;
+ unsigned int nDuration = 0;
+ char *szTitle = NULL;
+ mp_util_svc_get_video_detail_by_video_url(szFilePath, &nWidth,
+ &nHeight, &szTitle,
+ &nDuration, &nPosition);
+ MP_FREE_STRING(szTitle);
+
+ if (nPosition == 0) {
+ return FALSE;
+ }
+
+ if (!mp_util_svc_get_video_id_by_video_url(szFilePath, &szVideoID)) {
+ MP_FREE_STRING(szVideoID);
+ VideoLogError("mp_util_svc_get_video_id_by_video_url is Fail");
+ return FALSE;
+ }
+
+ if (!vp_is_dir(VIDEO_THUMB_DATA_DIR)) {
+ if (!vp_mkpath(VIDEO_THUMB_DATA_DIR)) {
+ MP_FREE_STRING(szVideoID);
+ return FALSE;
+ }
+ }
+
+ szFileName =
+ g_strdup_printf("%s/%s.jpg", VIDEO_THUMB_DATA_DIR, szVideoID);
+
+ mp_util_svc_get_frame_by_position(szFilePath, szFileName, nPosition,
+ nWidth, nHeight);
+ VideoLogInfo("szFileName %s", szFileName);
+
+ MP_FREE_STRING(szVideoID);
+ MP_FREE_STRING(szFileName);
+
+ return TRUE;
+}
+
+static void
+__mp_util_progress_resize_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ int w = 0;
+ int h = 0;
+
+ if (!data) {
+ VideoLogError("data = NULL !!!");
+ return;
+ }
+
+ evas_object_geometry_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &w, &h);
+ evas_object_resize((Evas_Object *) data, w, h);
+}
+
+
+static void
+__mp_util_progress_del_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ if (!obj) {
+ VideoLogError("obj = NULL !!!");
+ return;
+ }
+
+ evas_object_event_callback_del(mp_util_get_main_window_handle(),
+ EVAS_CALLBACK_RESIZE,
+ __mp_util_progress_resize_cb);
+ evas_object_event_callback_del(obj, EVAS_CALLBACK_RESIZE,
+ __mp_util_progress_del_cb);
+}
+
+
+Evas_Object *mp_util_create_embedded_progress()
+{
+ Evas_Object *progressbar = NULL;
+ Evas_Object *layout = NULL;
+
+ int w = 0;
+ int h = 0;
+
+ layout = elm_layout_add(mp_util_get_main_window_handle());
+ Eina_Bool r = FALSE;
+ r = elm_layout_file_set(layout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_embeded_processing");
+ if (!r) {
+ evas_object_del(layout);
+ VideoLogError("layout = NULL !!!");
+ return NULL;
+ }
+ 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_geometry_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &w, &h);
+
+ evas_object_resize(layout, w, h);
+
+ evas_object_event_callback_add(mp_util_get_main_window_handle(),
+ EVAS_CALLBACK_RESIZE,
+ __mp_util_progress_resize_cb,
+ (const void *) layout);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ __mp_util_progress_del_cb,
+ (const void *) layout);
+
+ evas_object_show(layout);
+
+ progressbar = elm_progressbar_add(layout);
+ elm_object_style_set(progressbar, "process_large");
+ 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);
+ evas_object_show(progressbar);
+
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ progressbar);
+
+ evas_object_propagate_events_set(layout, EINA_FALSE);
+
+ return layout;
+}
+
+void mp_util_destroy_embedded_progress(Evas_Object *pProgress)
+{
+ if (!pProgress) {
+ VideoLogError("pProgress == NULL");
+ return;
+ }
+
+ evas_object_del(pProgress);
+ pProgress = NULL;
+}
+
+bool mp_util_meta_get_width_and_height(const char *szFilePath,
+ int *nWidth, int *nHeight)
+{
+ if (!szFilePath) {
+ VideoLogError("szFilePath is NULL");
+ return FALSE;
+ }
+
+ metadata_extractor_h pMetadata = NULL;
+ char *szWidth = NULL;
+ char *szHeight = NULL;
+
+ int nRet = METADATA_EXTRACTOR_ERROR_NONE;
+
+ nRet = metadata_extractor_create(&pMetadata);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_create is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet = metadata_extractor_set_path(pMetadata, szFilePath);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_set_path is fail : 0x%x", nRet);
+ goto Exception;
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_VIDEO_WIDTH,
+ &szWidth);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+
+ nRet =
+ metadata_extractor_get_metadata(pMetadata, METADATA_VIDEO_HEIGHT,
+ &szHeight);
+ if (nRet != METADATA_EXTRACTOR_ERROR_NONE) {
+ VideoLogError("metadata_extractor_get_metadata is fail : 0x%x",
+ nRet);
+ goto Exception;
+ }
+ if (szWidth) {
+ *nWidth = atoi(szWidth);
+ } else {
+ *nWidth = 0;
+ }
+
+ if (szHeight) {
+ *nHeight = atoi(szHeight);
+ } else {
+ *nHeight = 0;
+ }
+
+ MP_FREE_STRING(szWidth);
+ MP_FREE_STRING(szHeight);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return TRUE;
+Exception:
+
+ MP_FREE_STRING(szWidth);
+ MP_FREE_STRING(szHeight);
+
+ if (pMetadata) {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return FALSE;
+}
+
+bool mp_util_delete_wall_file(char *szVideoId)
+{
+ if (!szVideoId) {
+ return FALSE;
+ }
+ char *szWallDir = NULL;
+ bool bRet = TRUE;
+ szWallDir = g_strdup_printf("%s/%s", MP_VIDEO_WALL_DIR, szVideoId);
+ if (vp_is_dir(szWallDir)) {
+ bRet = vp_file_recursive_rm(szWallDir);
+ }
+
+ VideoSecureLogInfo("delete video folder= %s:%d", szWallDir, bRet);
+ MP_FREE_STRING(szWallDir);
+ return TRUE;
+}
+
+Evas_Object *mp_util_create_gengrid(Evas_Object *parent, int nWidth,
+ int nHeight, bool bHorizontal)
+{
+ Evas_Object *pGengrid = elm_gengrid_add(parent);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid is not existed.");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_gengrid_item_size_set(pGengrid, nWidth, nHeight);
+ elm_gengrid_align_set(pGengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pGengrid, bHorizontal);
+
+ return pGengrid;
+}
+
+Evas_Object *mp_util_create_folder_icon(void *pParent,
+ const char *icon_path)
+{
+ if (!pParent || !icon_path) {
+ VideoLogError("invalid parent and icon path");
+ return NULL;
+ }
+
+ Evas_Object *pIcon = elm_image_add(pParent);
+ elm_image_file_set(pIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ (const char *) icon_path);
+ evas_object_size_hint_align_set(pIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ if (!g_strcmp0(VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX, icon_path)) {
+ evas_object_color_set(pIcon, 50, 129, 194, 255);
+ } else {
+ evas_object_color_set(pIcon, 255, 255, 255, 255);
+ }
+ evas_object_show(pIcon);
+
+ return pIcon;
+}
+
+bool mp_util_create_folder_sub_icon(void *pLayout, int nVideoFolderIndex)
+{
+ if (!pLayout) {
+ VideoLogError("invalid parent");
+ return FALSE;
+ }
+
+ Evas_Object *pTempLayout = (Evas_Object *) pLayout;
+ Evas_Object *pIcon = elm_image_add(pLayout);
+ Evas_Object *pSubIcon = elm_image_add(pLayout);
+
+ MpMediaStorageType storageType =
+ mp_util_svc_get_folder_storage(nVideoFolderIndex);
+
+ if (storageType == MP_MEDIA_TYPE_STORAGE_INTERNAL) {
+ elm_image_file_set(pIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_PHONE);
+ elm_image_file_set(pSubIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_PHONE_EF);
+ } else if (storageType == MP_MEDIA_TYPE_STORAGE_DROPBOX) {
+ elm_image_file_set(pIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX);
+ elm_image_file_set(pSubIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX_EF);
+ } else if (storageType == MP_MEDIA_TYPE_STORAGE_EXTERNAL) {
+ } else {
+ VideoLogInfo("Unknown Storage type or not folder item.");
+ return FALSE;
+ }
+
+ evas_object_size_hint_align_set(pIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pSubIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pSubIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ elm_layout_content_set(pTempLayout, "elm.folder.icon", pIcon);
+ elm_layout_content_set(pTempLayout, "elm.folder.icon.ef", pSubIcon);
+
+ evas_object_show(pIcon);
+ evas_object_show(pSubIcon);
+
+ /* if (!pLayout)*/
+ /* return FALSE;*/
+
+ return TRUE;
+}
+
+bool mp_util_create_video_sub_icon(void *pLayout, int nVideoItemIndex)
+{
+ if (!pLayout) {
+ VideoLogError("invalid parent");
+ return FALSE;
+ }
+
+ Evas_Object *pTempLayout = (Evas_Object *) pLayout;
+ Evas_Object *pIcon = elm_image_add(pLayout);
+ Evas_Object *pSubIcon = elm_image_add(pLayout);
+
+ MpMediaStorageType storageType =
+ mp_util_svc_get_video_storage(nVideoItemIndex);
+
+ if (storageType == MP_MEDIA_TYPE_STORAGE_DROPBOX) {
+ elm_image_file_set(pIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX);
+ elm_image_file_set(pSubIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_DROPBOX_EF);
+ } else if (storageType == MP_MEDIA_TYPE_STORAGE_EXTERNAL) {
+ } else {
+ VideoLogInfo
+ ("Unknown storage or internal storage item. nVideoItemIndex: %d.",
+ nVideoItemIndex);
+ return FALSE;
+ }
+
+ evas_object_size_hint_align_set(pIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pSubIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pSubIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ elm_layout_content_set(pTempLayout, "elm.folder.icon", pIcon);
+ elm_layout_content_set(pTempLayout, "elm.folder.icon.ef", pSubIcon);
+
+ evas_object_show(pIcon);
+ evas_object_show(pSubIcon);
+ /*Prevent fix*/
+ /*if (!pLayout)
+ return FALSE;
+ */
+ return TRUE;
+}
+
+unsigned long long mp_util_get_disk_available_space(const char
+ *szFilePath)
+{
+ if (!szFilePath) {
+ VideoLogError("szFilePath is NULL");
+ return 0;
+ }
+ int nRet = 0;
+ struct statvfs info;
+ if (szFilePath
+ && 0 == strncmp(szFilePath, MP_UTIL_SD_PATH,
+ strlen(MP_UTIL_SD_PATH))) {
+ if (-1 == statvfs(MP_UTIL_SD_PATH, &info)) {
+ return 0;
+ }
+ } else {
+ if (vp_is_dir(szFilePath)) {
+ nRet = statvfs(szFilePath, &info);
+ VideoLogInfo("this is folder");
+ } else {
+ nRet = statvfs(MP_UTIL_MEDIA_DIR, &info);
+ }
+ if (nRet < 0) {
+ return 0;
+ }
+ }
+
+ return (info.f_bsize) * info.f_bavail;
+}
+
+void mp_util_virtual_keypad_disabled_set(Eina_Bool bDisabled)
+{
+ if (!pMainConformant) {
+ VideoLogError("[ERR] No exist pMainConformant.");
+ return;
+ }
+
+ if (bDisabled) {
+ VideoLogInfo("Virtual keypad will not compress the layout.");
+ elm_object_signal_emit(pMainConformant,
+ "elm,state,clipboard,disable", "");
+ elm_object_signal_emit(pMainConformant,
+ "elm,state,virtualkeypad,disable", "");
+ } else {
+ VideoLogInfo("Virtual keypad will compress the layout.");
+ elm_object_signal_emit(pMainConformant,
+ "elm,state,clipboard,enable", "");
+ elm_object_signal_emit(pMainConformant,
+ "elm,state,virtualkeypad,enable", "");
+ }
+}
+
+int mp_util_set_translate_str(Evas_Object *obj, const char *str)
+{
+ if (!obj || !str) {
+ VideoLogError("[ERR] Invalid input data.");
+ return -1;
+ }
+
+ char *domain = NULL;
+
+ if (strstr(str, "IDS_COM")) {
+ domain = "sys_string";
+ }
+
+ elm_object_domain_translatable_text_set(obj, domain, str);
+
+ return 0;
+}
diff --git a/src/common/mp-video-info-ctrl.c b/src/common/mp-video-info-ctrl.c
new file mode 100644
index 0000000..527d8ef
--- /dev/null
+++ b/src/common/mp-video-info-ctrl.c
@@ -0,0 +1,458 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <metadata_extractor.h>
+#include <mime_type.h>
+
+#include <unicode/udat.h>
+#include <unicode/ustring.h>
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udatpg.h>
+#include <unicode/utmscale.h>
+#include <system_settings.h>
+
+#include "mp-util.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "mp-drm-ctrl.h"
+#endif
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-video-string-define.h"
+#include "utils_i18n.h"
+
+enum VIDEO_PLAYER_FILE_SIZE_TYPE
+{
+ SIZE_BYTE = 0,
+ SIZE_KB,
+ SIZE_MB,
+ SIZE_GB
+};
+
+bool mp_info_ctrl_get_gps(char *szUriPath, double *dLongitude, double *dLatitude)
+{
+ if (!szUriPath) {
+ VideoLogInfo("[ERR] No exist szUriPath.");
+ return FALSE;
+ }
+#ifdef ENABLE_DRM_FEATURE
+ if (mp_drm_is_drm_file(szUriPath)) {
+ VideoLogInfo("It's drm file.");
+ return FALSE;
+ }
+#endif
+ metadata_extractor_h pMetadata;
+
+ char *szTmp = NULL;
+
+ *dLatitude = 0.0;
+ *dLongitude = 0.0;
+
+ if (metadata_extractor_create(&pMetadata) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_create()");
+ goto Execption;
+ }
+
+ if (metadata_extractor_set_path(pMetadata, szUriPath) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_set_path()");
+ goto Execption;
+ }
+
+ if (metadata_extractor_get_metadata(pMetadata, METADATA_LATITUDE, &szTmp) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_get_metadata() - METADATA_LATITUDE");
+ goto Execption;
+ }
+ else
+ {
+ if (szTmp)
+ {
+ VideoLogInfo("METADATA_LATITUDE : %s", szTmp);
+ *dLatitude = atof(szTmp);
+
+ free(szTmp);
+ szTmp = NULL;
+ }
+ else
+ {
+ *dLatitude = 0.0;
+ }
+
+
+ }
+
+ if (metadata_extractor_get_metadata(pMetadata, METADATA_LONGITUDE, &szTmp) != METADATA_EXTRACTOR_ERROR_NONE)
+ {
+ VideoLogInfo("[ERR] - metadata_extractor_get_metadata() - METADATA_LONGITUDE");
+ if (szTmp)
+ {
+ free(szTmp);
+ szTmp = NULL;
+ }
+ *dLongitude = 0.0;
+ goto Execption;
+ }
+ else
+ {
+ if (szTmp)
+ {
+ VideoLogInfo("METADATA_LONGITUDE : %s", szTmp);
+ *dLongitude = atof(szTmp);
+ free(szTmp);
+ szTmp = NULL;
+ }
+ else
+ {
+ *dLongitude = 0.0;
+ }
+ }
+
+ if (pMetadata)
+ {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+
+ return TRUE;
+
+Execption:
+ if (pMetadata)
+ {
+ metadata_extractor_destroy(pMetadata);
+ pMetadata = NULL;
+ }
+ return FALSE;
+}
+
+bool mp_info_ctrl_get_resolution(char *szWidthResolution, char *szHeightResolution, void *pUserData)
+{
+ if (!pUserData)
+ {
+ VideoLogError("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ // TO-DO : It is possible to get resolution size from media service.
+
+ return TRUE;
+}
+
+static char *mp_info_ctrl_converting_string(const char *szLocale, const char *szCustomSkeleton, const char *szTimezone, UDate st_Date)
+{
+#define UG_ICU_ARR_LENGTH 256
+
+ // Copy a byte string encoded in the default codepage to a ustring.
+ // Copies at most n characters. The result will be null terminated if the length of src is less than n.
+ // Performs a host byte to UChar conversion.
+
+ i18n_uchar ucustomSkeleton[UG_ICU_ARR_LENGTH] = {0,};
+
+ if (i18n_ustring_copy_ua_n(ucustomSkeleton, szCustomSkeleton, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogError("i18n_ustring_copy_au_n() error.");
+ return NULL;
+ }
+
+ i18n_uchar utimezone[UG_ICU_ARR_LENGTH] = {0,};
+
+ if (i18n_ustring_copy_ua_n(utimezone, szTimezone, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogError("i18n_ustring_copy_au_n() error.");
+ return NULL;
+ }
+
+ i18n_error_code_e status = I18N_ERROR_NONE;
+ i18n_udatepg_h generator;
+ i18n_udate_format_h formatter;
+
+ i18n_uchar bestPattern[UG_ICU_ARR_LENGTH] = {0,};
+ i18n_uchar formatted[UG_ICU_ARR_LENGTH] = {0,};
+ char formattedString[UG_ICU_ARR_LENGTH] = {0,};
+ int32_t bestPatternLength, formattedLength;
+
+ status = i18n_ucalendar_set_default_timezone(utimezone);
+ if (status != I18N_ERROR_NONE) {
+ VideoLogError("i18n_timezone_set_default() is failed.");
+ return NULL;
+ }
+
+ status = i18n_ulocale_set_default(getenv("LC_TIME"));
+ if (status != I18N_ERROR_NONE) {
+ VideoLogError("i18n_timezone_set_default() is failed.");
+ return NULL;
+ }
+
+ status = i18n_udatepg_create(szLocale, &generator);
+ if (generator == NULL || status != I18N_ERROR_NONE) {
+ return NULL;
+ }
+
+ status = i18n_udatepg_get_best_pattern(generator, ucustomSkeleton, i18n_ustring_get_length(ucustomSkeleton), bestPattern, UG_ICU_ARR_LENGTH, &bestPatternLength);
+ if (bestPatternLength <= 0 || status != I18N_ERROR_NONE) {
+ i18n_udatepg_destroy(generator);
+ return NULL;
+ }
+
+
+ char buffer[UG_ICU_ARR_LENGTH] = {0,};
+
+ i18n_ustring_copy_au(buffer, bestPattern);
+ VideoLogInfo("bestPattern = %s", buffer);
+
+ int i = 0;
+ int len = strlen(buffer);
+ for (i = 0; i < len; i++) {
+ if (buffer[i] == 'K')// K is 0~11, it is used at japan icu
+ {
+ buffer[i] = 'h';// h is 1~12
+ }
+ }
+
+ VideoLogInfo("buffer = %s", buffer);
+
+ i18n_uchar ubestpattern[UG_ICU_ARR_LENGTH] = {0,};
+ if (i18n_ustring_copy_ua_n(ubestpattern, buffer, UG_ICU_ARR_LENGTH) == NULL) {
+ i18n_udatepg_destroy(generator);
+ VideoLogError("i18n_ustring_copy_au_n() error.");
+ return NULL;
+ }
+
+ status = i18n_udate_create(I18N_UDATE_MEDIUM, I18N_UDATE_MEDIUM, szLocale, NULL, -1, ubestpattern, -1, &formatter);
+ if (formatter == NULL || status != I18N_ERROR_NONE) {
+ i18n_udatepg_destroy(generator);
+ return NULL;
+ }
+
+ status = i18n_udate_format_date(formatter, st_Date, formatted, UG_ICU_ARR_LENGTH, NULL, &formattedLength);
+ if (formattedLength <= 0 || status != I18N_ERROR_NONE) {
+ i18n_udatepg_destroy(generator);
+ i18n_udate_destroy(formatter);
+ return NULL;
+ }
+
+ i18n_ustring_copy_au(formattedString, formatted);
+ status = i18n_udatepg_destroy(generator);
+ status = i18n_udate_destroy(formatter);
+
+ if (strlen(formattedString) == 0) {
+ return NULL;
+ }
+
+ return strdup(formattedString);
+}
+
+char *mp_info_ctrl_get_data_of_file(time_t mtime)
+{
+#define UG_DATE_FORMAT_12 "yMMMdhms"
+#define UG_DATE_FORMAT_24 "yMMMdHms"
+
+ VideoLogInfo("");
+
+ char *szSkeleton = NULL;
+
+ bool hours_24 = false;
+ int ret = -1;
+
+ ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &hours_24);
+ if (ret != SYSTEM_SETTINGS_ERROR_NONE)
+ {
+ VideoLogError("Cannot get 24 hours format");
+ return NULL;
+ }
+
+ if (hours_24 == true)
+ {
+ szSkeleton = UG_DATE_FORMAT_24;
+ }
+ else
+ {
+ szSkeleton = UG_DATE_FORMAT_12;
+ }
+
+ char *szLocale = NULL; // eg en_US.UTF-8
+ int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &szLocale);
+ if ((retcode != SYSTEM_SETTINGS_ERROR_NONE) || (szLocale == NULL))
+ {
+ VideoLogInfo("Cannot get region format.");
+ szLocale = strdup("en_US"); // Default value.
+ }
+ else
+ {
+ char *find = strstr(szLocale, "UTF-8");
+ if (find)
+ {
+ int diff = find - szLocale;
+ if (diff > 0)
+ {
+ szLocale[diff-1] = '\0';
+ }
+ }
+ }
+
+ char *szTimezone = NULL;
+ retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &szTimezone);
+ if ((retcode != SYSTEM_SETTINGS_ERROR_NONE) || (szTimezone == NULL))
+ {
+ VideoLogError("Cannot get time zone.");
+ MP_FREE_STRING(szLocale);
+ return strdup("N/A");
+ }
+
+ VideoLogInfo("Locale : %s TimeZone : %s TimeFormat : %s", szLocale, szSkeleton, szTimezone);
+
+ char *szDatestr = NULL;
+ szDatestr = mp_info_ctrl_converting_string(szLocale, szSkeleton, szTimezone, (UDate)mtime * 1000);
+ if (!szDatestr)
+ {
+ VideoLogError("Cannot get time string.");
+ MP_FREE_STRING(szLocale);
+ MP_FREE_STRING(szTimezone);
+ return strdup("N/A");
+ }
+
+ VideoLogInfo("ICU Date : %s", szDatestr);
+
+ MP_FREE_STRING(szLocale);
+ MP_FREE_STRING(szTimezone);
+
+ return szDatestr;
+}
+
+#ifdef ENABLE_DRM_FEATURE
+static char *mp_info_ctrl_get_drm_file_extension(char *szPath)
+{
+#define EXT_SIZE 128
+#define EXT_SPLITTER '.'
+
+ if (!szPath) {
+ VideoLogInfo("[ERR] No exist szPath.");
+ return NULL;
+ }
+
+ char szDrmContentType[STR_LEN_MAX] = {0,};
+
+ mp_drm_get_file_extension(szPath, szDrmContentType, STR_LEN_MAX);
+ VideoLogInfo("szDrmContentType : %s", szDrmContentType);
+
+ char **dTempExt = NULL;
+ char *szExt = NULL;
+ char *pFileExtention = NULL;
+
+ int nArrayLen = 0;
+ int nErr = -1;
+
+ nErr = mime_type_get_file_extension(szDrmContentType, &dTempExt, &nArrayLen);
+
+ if (nErr == MIME_TYPE_ERROR_NONE && nArrayLen > 0) {
+ if (dTempExt[0] != NULL)
+ {
+ szExt = strrchr(dTempExt[0], EXT_SPLITTER);
+ }
+
+ if (szExt != NULL && szExt + 1 != NULL)
+ {
+ pFileExtention = strdup(szExt + 1);
+ }
+ }
+
+ int i = 0;
+ for (; i < nArrayLen; i++)
+ {
+ MP_FREE_STRING(dTempExt[i]);
+ }
+
+ MP_FREE_STRING(dTempExt);
+
+ return pFileExtention;
+}
+#endif
+
+char *mp_info_ctrl_get_file_extension(char *szPath)
+{
+ if (!szPath) {
+ VideoLogError("Cannot get file extension. path is NULL");
+ return strdup("Unknown");
+ }
+#ifdef ENABLE_DRM_FEATURE
+ if (mp_drm_is_drm_file(szPath)) {
+
+ char *szFileExtension = mp_info_ctrl_get_drm_file_extension(szPath);
+ if (szFileExtension) {
+ VideoLogInfo("Drm file extension. - %s", szFileExtension);
+ return szFileExtension;
+ } else {
+ VideoLogInfo("No have file extension.");
+ return strdup("Unknown");
+ }
+ } else
+#endif
+ {
+ char *szExt = NULL;
+ szExt = strrchr(szPath, '.');
+
+ if ((szExt != NULL) && ((szExt+1) != NULL)) {
+ return strdup(szExt + 1);
+ }
+ }
+
+ return strdup("Unknown");
+}
+
+bool mp_info_ctrl_get_file_info(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize)
+{
+ if (!szUriPath) {
+ VideoLogInfo("[ERR] No exist szUriPath.");
+ return FALSE;
+ }
+
+ struct stat statbuf;
+
+ if (stat(szUriPath, &statbuf) == -1) {
+ VideoLogInfo("%s file is NULL", szUriPath);
+ return FALSE;
+ }
+
+ memset(szFileDate, 0, nFileDateSize);
+ memset(szFileExtension, 0, nFileExtensionSize);
+ memset(szFileSize, 0, nFilesizeSize);
+
+ char *szTmpDateOfFile = mp_info_ctrl_get_data_of_file(statbuf.st_mtime);
+ char *szTmpFileExtension = mp_info_ctrl_get_file_extension(szUriPath);
+ char *szTmpFileSize = mp_util_get_file_size((unsigned long long)statbuf.st_size);
+
+ if (szTmpDateOfFile) {
+ VideoLogInfo("szTmpDateOfFile : %s", szTmpDateOfFile);
+ strncpy(szFileDate, szTmpDateOfFile, nFileDateSize);
+ free(szTmpDateOfFile);
+ }
+
+ if (szTmpFileExtension) {
+ VideoLogInfo("szTmpFileExtension : %s", szTmpFileExtension);
+ strncpy(szFileExtension, szTmpFileExtension, nFileExtensionSize);
+ free(szTmpFileExtension);
+ }
+
+ if (szTmpFileSize) {
+ VideoLogInfo("szTmpFileSize : %s", szTmpFileSize);
+ strncpy(szFileSize, szTmpFileSize, nFilesizeSize);
+ free(szTmpFileSize);
+ }
+
+ return TRUE;
+}
diff --git a/src/common/mp-video-sound-manager.c b/src/common/mp-video-sound-manager.c
new file mode 100644
index 0000000..01fdc2a
--- /dev/null
+++ b/src/common/mp-video-sound-manager.c
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <sound_manager.h>
+#include "mp-video-sound-manager.h"
+#include "mp-video-log.h"
+
+
+static void
+__mp_sound_mgr_error_print(int nError)
+{
+ switch (nError)
+ {
+ case SOUND_MANAGER_ERROR_NONE: /**< Successful */
+ {
+ VideoLogWarning("SOUND_MANAGER_ERROR_NONE");
+ }
+ break;
+
+ case SOUND_MANAGER_ERROR_OUT_OF_MEMORY: /**< Out of memory */
+ {
+ VideoLogWarning("SOUND_MANAGER_ERROR_OUT_OF_MEMORY");
+ }
+ break;
+
+ case SOUND_MANAGER_ERROR_INVALID_PARAMETER: /**< Invalid parameter */
+ {
+ VideoLogWarning("SOUND_MANAGER_ERROR_INVALID_PARAMETER");
+ }
+ break;
+
+ case SOUND_MANAGER_ERROR_INVALID_OPERATION: /**< Invalid operation */
+ {
+ VideoLogWarning("SOUND_MANAGER_ERROR_INVALID_OPERATION");
+ }
+ break;
+
+ case SOUND_MANAGER_ERROR_NO_PLAYING_SOUND: /**< No playing sound */
+ {
+ VideoLogWarning("SOUND_MANAGER_ERROR_NO_PLAYING_SOUND");
+ }
+ break;
+
+// case SOUND_MANAGER_ERROR_NO_OPERATION: /**< No operation */
+// {
+// VideoLogWarning("SOUND_MANAGER_ERROR_NO_OPERATION");
+// }
+// break;
+
+ case SOUND_MANAGER_ERROR_INTERNAL: /**< Internal error*/
+ {
+ VideoLogWarning("SOUND_MANAGER_ERROR_NO_OPERATION");
+ }
+ break;
+
+ default:
+ {
+ VideoLogWarning("unknow error : [%d]", nError);
+ }
+ break;
+ }
+}
+
+
+void
+mp_sound_mgr_init()
+{
+ int nResult = 0;
+// nResult = sound_manager_set_safety_volume(SOUND_SAFETY_VOL_TYPE_APP_VIDEO);
+ if (nResult != SOUND_MANAGER_ERROR_NONE)
+ {
+ VideoLogError("sound_manager_set_safety_volume failed!!!");
+ __mp_sound_mgr_error_print(nResult);
+
+ return;
+ }
+
+ nResult = sound_manager_set_current_sound_type(SOUND_TYPE_MEDIA);
+ if (nResult != SOUND_MANAGER_ERROR_NONE)
+ {
+ VideoLogError("sound_manager_set_current_sound_type failed!!!");
+ __mp_sound_mgr_error_print(nResult);
+
+ return;
+ }
+}
+
+
+void
+mp_sound_mgr_deinit()
+{
+ int nResult = 0;
+ //nResult = sound_manager_unset_safety_volume();
+ if (nResult != SOUND_MANAGER_ERROR_NONE)
+ {
+ VideoLogError("sound_manager_unset_safety_volume failed!!!");
+ __mp_sound_mgr_error_print(nResult);
+
+ return;
+ }
+
+ nResult = sound_manager_unset_current_sound_type();
+ if (nResult != SOUND_MANAGER_ERROR_NONE)
+ {
+ VideoLogError("sound_manager_unset_current_sound_type failed!!!");
+ __mp_sound_mgr_error_print(nResult);
+
+ return;
+ }
+}
+
diff --git a/src/common/mp-video-streaming-ctrl.c b/src/common/mp-video-streaming-ctrl.c
new file mode 100644
index 0000000..f48801d
--- /dev/null
+++ b/src/common/mp-video-streaming-ctrl.c
@@ -0,0 +1,337 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <string.h>
+#include <net_connection.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.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 Ecore_Pipe *pEcorePipeHandleForPause = NULL;
+static Ecore_Pipe *pEcorePipeHandleForResume = NULL;
+
+static Eina_Bool bIsInitCallbackFunc = FALSE;
+
+static Ecore_Timer *pNetworkTimeoutTimer = NULL;
+
+static connection_h gConnection = NULL;
+
+/*
+ * Callback function.
+ */
+
+static void mp_streaming_ctrl_exit_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *) pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+static int mp_streaming_ctrl_resume_cb(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 mp_streaming_ctrl_popup_cb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ pNetworkTimeoutTimer = NULL;
+ return EINA_FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *) pUserData;
+
+ mp_util_notify_popup(pAppData, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_CONNECTION_FAIL,
+ mp_streaming_ctrl_exit_cb);
+
+ pNetworkTimeoutTimer = NULL;
+ return EINA_FALSE;
+}
+
+static int mp_streaming_ctrl_pause_cb(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,
+ mp_streaming_ctrl_popup_cb,
+ pAppData);
+
+ return 0;
+}
+
+static void mp_streaming_ctrl_network_status_cb(connection_type_e type, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ switch (type) {
+ case CONNECTION_TYPE_DISCONNECTED:
+ 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 CONNECTION_TYPE_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 CONNECTION_TYPE_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;
+ }
+}
+
+static void mp_streaming_ctrl_pipe_init(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)
+ mp_streaming_ctrl_pause_cb,
+ (void *) pAppData);
+
+ if (pEcorePipeHandleForResume) {
+ ecore_pipe_del(pEcorePipeHandleForResume);
+ pEcorePipeHandleForResume = NULL;
+ }
+
+ pEcorePipeHandleForResume = ecore_pipe_add((Ecore_Pipe_Cb)
+ mp_streaming_ctrl_resume_cb,
+ (void *) pAppData);
+
+}
+
+void mp_streaming_ctrl_destroy(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (gConnection) {
+ if (connection_unset_type_changed_cb(gConnection) != CONNECTION_ERROR_NONE) {
+ VideoLogError("failed to unregister network status callback");
+ }
+
+ if (connection_destroy(gConnection) != CONNECTION_ERROR_NONE) {
+ VideoLogError("failed to destroy connection handle");
+ }
+ gConnection = NULL;
+ }
+
+ 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 mp_streaming_ctrl_init(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ char szTmp[STR_LEN_MAX] = {0,};
+ bool bNetworkState = FALSE;
+ int ret = 0;
+ connection_type_e con_type;
+
+ if (bIsInitCallbackFunc == EINA_FALSE) {
+ mp_streaming_ctrl_pipe_init(pUserData);
+
+ ret = connection_create(&gConnection);
+ if (ret != CONNECTION_ERROR_NONE) {
+ VideoLogInfo("Fail to create connection handle [%d]\n", ret);
+ }
+
+ if (gConnection) {
+ ret = connection_set_type_changed_cb(gConnection,
+ mp_streaming_ctrl_network_status_cb,
+ (void *)pUserData);
+ if (ret != CONNECTION_ERROR_NONE) {
+ VideoLogWarning("Fail to register network status callback [%d]\n", ret);
+ }
+ }
+
+ bIsInitCallbackFunc = EINA_TRUE;
+ }
+
+ if (pNetworkTimeoutTimer) {
+ ecore_timer_del(pNetworkTimeoutTimer);
+ pNetworkTimeoutTimer = NULL;
+ }
+
+ ret = connection_get_type(gConnection, &con_type);
+ if (ret != CONNECTION_ERROR_NONE) {
+ ERROR_TRACE("Fail to get network state [%d]\n", ret);
+ connection_destroy(connection);
+ return bNetworkState;
+ }
+
+ switch (con_type) {
+ case CONNECTION_TYPE_DISCONNECTED:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF");
+ pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT,
+ mp_streaming_ctrl_popup_cb,
+ pAppData);
+ bNetworkState = FALSE;
+ break;
+
+ case CONNECTION_TYPE_WIFI:
+ nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ ret = connection_get_wifi_state(gConnection, &wifi_state);
+ if (ret == CONNECTION_ERROR_NONE && wifi_state == CONNECTION_WIFI_STATE_CONNECTED) {
+ bNetworkState = TRUE;
+ }
+ break;
+
+ case CONNECTION_TYPE_CELLULAR:
+ nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ ret = connection_get_cellular_state(gConnection, &cellular_state);
+ if (ret == CONNECTION_ERROR_NONE && cellular_state == CONNECTION_CELLULAR_STATE_CONNECTED) {
+ bNetworkState = TRUE;
+ }
+ break;
+ default:
+ VideoLogInfo("connection type is not supported: %d", con_type);
+ }
+
+ return bNetworkState;
+}
diff --git a/src/common/mp-video-util-db-controller.c b/src/common/mp-video-util-db-controller.c
new file mode 100644
index 0000000..25eeff0
--- /dev/null
+++ b/src/common/mp-video-util-db-controller.c
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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"
+#ifdef ENABLE_DRM_FEATURE
+#include "mp-drm-ctrl.h"
+#endif
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-util-db-controller.h"
+
+/*used after mediadb update*/
+static MpDbUpdateCbFunc g_pDbUpdateFun[MP_DB_UPDATE_LEV_MAX] = {NULL, NULL,
+ NULL, NULL,
+ NULL };
+/*used before mediadb update*/
+static MpDbUpdateCbFunc g_pDbBackupFun[MP_DB_UPDATE_LEV_MAX] = {NULL, NULL,
+ NULL, NULL,
+ NULL };
+
+bool mp_util_db_set_update_fun(MpDbUpdateViewLev nLev,
+ MpDbUpdateCbFunc pUpdateFun)
+{
+ if ((nLev < MP_DB_UPDATE_LEV_0) || (nLev >= MP_DB_UPDATE_LEV_MAX)) {
+ VideoLogError("invalid lev = %d", nLev);
+ return FALSE;
+ }
+ g_pDbUpdateFun[nLev] = pUpdateFun;
+ return TRUE;
+}
+
+void mp_util_db_reset_update_fun_up_self(MpDbUpdateViewLev nLev)
+{
+ MpDbUpdateViewLev nIndex = nLev;
+ while (nIndex < MP_DB_UPDATE_LEV_MAX) {
+ g_pDbUpdateFun[nIndex] = NULL;
+ nIndex++;
+ }
+}
+
+void mp_util_db_reset_update_fun_except_lev0(void)
+{
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_1] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_2] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_3] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_4] = NULL;
+}
+
+void mp_util_db_reset_all_update_fun(void)
+{
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_0] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_1] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_2] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_3] = NULL;
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_4] = NULL;
+}
+
+bool mp_util_db_run_update_fun(MpDbUpdateViewLev nLev, void *pUserData)
+{
+ if ((nLev < MP_DB_UPDATE_LEV_0) || (nLev >= MP_DB_UPDATE_LEV_MAX)) {
+ VideoLogError("invalid lev = %d", nLev);
+ return FALSE;
+ }
+ VideoLogInfo("update lev = %d", nLev);
+
+ if (g_pDbUpdateFun[nLev]) {
+ g_pDbUpdateFun[nLev](pUserData);
+ }
+ return FALSE;
+}
+
+
+bool mp_util_db_run_all_update_fun(void *pUserData0, void *pUserData1,
+ void *pUserData2, void *pUserData3,
+ void *pUserData4)
+{
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_0]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_0](pUserData0);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_1]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_1](pUserData1);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_2]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_2](pUserData2);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_3]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_3](pUserData3);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_4]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_4](pUserData4);
+ }
+ VideoLogInfo("update successfully");
+
+ return TRUE;
+}
+
+bool mp_util_db_run_update_fun_except_lev0(void *pUserData1,
+ void *pUserData2,
+ void *pUserData3,
+ void *pUserData4)
+{
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_1]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_1](pUserData1);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_2]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_2](pUserData2);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_3]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_3](pUserData3);
+ }
+ if (g_pDbUpdateFun[MP_DB_UPDATE_LEV_4]) {
+ g_pDbUpdateFun[MP_DB_UPDATE_LEV_4](pUserData4);
+ }
+ VideoLogInfo("update successfully");
+
+ return TRUE;
+}
+
+
+void mp_util_db_reset_backup_fun_up_self(MpDbUpdateViewLev nLev)
+{
+ MpDbUpdateViewLev nIndex = nLev;
+ while (nIndex < MP_DB_UPDATE_LEV_MAX) {
+ g_pDbBackupFun[nIndex] = NULL;
+ nIndex++;
+ }
+}
+
+void mp_util_db_reset_backup_fun_except_lev0(void)
+{
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_1] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_2] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_3] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_4] = NULL;
+}
+
+void mp_util_db_reset_all_backup_fun(void)
+{
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_0] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_1] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_2] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_3] = NULL;
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_4] = NULL;
+}
+
+
+bool mp_util_db_set_backup_fun(MpDbUpdateViewLev nLev,
+ MpDbUpdateCbFunc pUpdateFun)
+{
+ if ((nLev < MP_DB_UPDATE_LEV_0) || (nLev >= MP_DB_UPDATE_LEV_MAX)) {
+ VideoLogError("invalid lev = %d", nLev);
+ return FALSE;
+ }
+ g_pDbBackupFun[nLev] = pUpdateFun;
+ return TRUE;
+}
+
+bool mp_util_db_run_backup_fun_except_lev0(void *pUserData1,
+ void *pUserData2,
+ void *pUserData3,
+ void *pUserData4)
+{
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_1]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_1](pUserData1);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_2]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_2](pUserData2);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_3]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_3](pUserData3);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_4]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_4](pUserData4);
+ }
+ VideoLogInfo("backup successfully");
+
+ return TRUE;
+}
+
+bool mp_util_db_run_all_backup_fun(void *pUserData0, void *pUserData1,
+ void *pUserData2, void *pUserData3,
+ void *pUserData4)
+{
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_0]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_0](pUserData0);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_1]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_1](pUserData1);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_2]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_2](pUserData2);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_3]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_3](pUserData3);
+ }
+ if (g_pDbBackupFun[MP_DB_UPDATE_LEV_4]) {
+ g_pDbBackupFun[MP_DB_UPDATE_LEV_4](pUserData4);
+ }
+ VideoLogInfo("backup successfully");
+
+ return TRUE;
+}
diff --git a/src/feature/mp-launching-video-displayer.c b/src/feature/mp-launching-video-displayer.c
new file mode 100755
index 0000000..3fa1466
--- /dev/null
+++ b/src/feature/mp-launching-video-displayer.c
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <Eina.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "vp-play-view.h"
+#include "mp-video-value-define.h"
+#include "mp-launching-video-displayer.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-config.h"
+
+/*"g_pLaunchTimer" use for check launch time between twice click.
+ If click two videos between 1 sec. Only play the first video.*/
+/* it will be auto free after 1 sec. it will auto free alse after
+ video process is killed.*/
+/* if this timer is not free. not create it again.*/
+static Ecore_Timer *g_pLaunchTimer = NULL;
+
+static void __mp_launch_video_reply_cb(app_control_h pRequest,
+ app_control_h pReply,
+ app_control_result_e nResult,
+ void *pUserData)
+{
+
+ if (pRequest) {
+ char *appId;
+ app_control_get_app_id(pRequest, &appId);
+ VideoLogWarning("Request : %s", appId);
+ if (appId) {
+ free(appId);
+ appId = NULL;
+ }
+ }
+
+ if (pReply) {
+ char *appId;
+ app_control_get_app_id(pReply, &appId);
+ VideoLogWarning("Reply : %s", appId);
+ if (appId) {
+ free(appId);
+ appId = NULL;
+ }
+ }
+}
+
+static Eina_Bool __mp_launch_video_timer_cb(void *pUserData)
+{
+ g_pLaunchTimer = NULL;
+
+ return FALSE;
+}
+
+/*////////////////////////////////////////////////////////////////////////*/
+/* External APIs*/
+/*used together with mp_launch_video_play. if first to check, then to play,
+use below API*/
+bool mp_launch_video_allow_check(void)
+{
+ if (g_pLaunchTimer) {
+ bool bMultiPlay = FALSE;
+ mp_util_config_get_multi_play_status(&bMultiPlay);
+ if (bMultiPlay) {
+ return TRUE;
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void mp_launch_video_play(char *szMediaUrl, MpPlayerType nPlayerType,
+ char *szDeviceID)
+{
+
+ if (!szMediaUrl) {
+ VideoLogError("[ERR] No existed szMediaUrl.");
+ return;
+ }
+ bool bMultiPlay = FALSE;
+ mp_util_config_get_multi_play_status(&bMultiPlay);
+
+ if (!bMultiPlay) {
+ if (!g_pLaunchTimer) {
+ g_pLaunchTimer =
+ ecore_timer_add(1.0, __mp_launch_video_timer_cb,
+ NULL);
+ } else {
+ VideoLogWarning("need more than 1.0 sec between twice click");
+ return;
+ }
+ }
+
+ app_control_h pService = NULL;
+
+ VideoSecureLogInfo("start play:%s,%d,%s,%d", szMediaUrl, nPlayerType,
+ szDeviceID, bMultiPlay);
+
+ int nRet = 0;
+ nRet = app_control_create(&pService);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_create is fail [0x%x]", nRet);
+ }
+
+ nRet =
+ app_control_set_operation(pService, APP_CONTROL_OPERATION_VIEW);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_set_operation is fail [0x%x]", nRet);
+ }
+
+ nRet = app_control_set_uri(pService, szMediaUrl);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_set_uri is fail [0x%x]", nRet);
+ }
+
+ if (nPlayerType == MP_PLAYER_TYPE_VIDEO) {
+ nRet =
+ app_control_add_extra_data(pService, "launching_application",
+ "list");
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]",
+ nRet);
+ }
+ }
+
+ if (szDeviceID) {
+ VideoLogWarning("== Device ID : %s ==", szDeviceID);
+ nRet =
+ app_control_add_extra_data(pService, "Device id", szDeviceID);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]",
+ nRet);
+ }
+ }
+#ifdef VS_FEATURE_FOLDER_VIEW /**/
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogInfo("folder view");
+ nRet =
+ app_control_add_extra_data(pService, "video_list_type",
+ "folder");
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]",
+ nRet);
+ }
+ }
+#endif /**/
+ nRet = app_control_add_extra_data(pService, "path", szMediaUrl);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_add_extra_data is fail [0x%x]", nRet);
+ }
+
+ nRet = app_control_set_app_id(pService, "org.tizen.video-player");
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_set_app_id is fail [0x%x]", nRet);
+ }
+
+ nRet =
+ app_control_send_launch_request(pService,
+ __mp_launch_video_reply_cb, NULL);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ if (nRet == APP_CONTROL_ERROR_INVALID_PARAMETER) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_INVALID_PARAMETER [0x%x]",
+ nRet);
+ } else if (nRet == APP_CONTROL_ERROR_OUT_OF_MEMORY) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_OUT_OF_MEMORY [0x%x]",
+ nRet);
+ } else if (nRet == APP_CONTROL_ERROR_APP_NOT_FOUND) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_APP_NOT_FOUND [0x%x]",
+ nRet);
+ } else if (nRet == APP_CONTROL_ERROR_KEY_NOT_FOUND) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_KEY_NOT_FOUND [0x%x]",
+ nRet);
+ } else if (nRet == APP_CONTROL_ERROR_KEY_REJECTED) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_KEY_REJECTED [0x%x]",
+ nRet);
+ } else if (nRet == APP_CONTROL_ERROR_INVALID_DATA_TYPE) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_INVALID_DATA_TYPE [0x%x]",
+ nRet);
+ } else if (nRet == APP_CONTROL_ERROR_LAUNCH_REJECTED) {
+ VideoLogError
+ ("app_control_send_launch_request is fail APP_CONTROL_ERROR_LAUNCH_REJECTED [0x%x]",
+ nRet);
+ }
+ }
+
+ if (pService) {
+ app_control_destroy(pService);
+ pService = NULL;
+ }
+
+}
+
+void mp_launch_video_stop(void)
+{
+ VideoLogInfo("");
+ /*if needed, to do*/
+}
diff --git a/src/feature/mp-util-move.c b/src/feature/mp-util-move.c
new file mode 100644
index 0000000..62f0b57
--- /dev/null
+++ b/src/feature/mp-util-move.c
@@ -0,0 +1,838 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <stdio.h>
+#include <glib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+#include <ftw.h>
+#include <Ecore_Evas.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-util-move.h"
+#include "vp-file-util.h"
+
+#define MSG_REPORT_PERIOD (1)
+#define DEF_ALLLOC_SIZE 16384 /*((4)*(1024))*/
+#define DIR_MODE_BIT (01777)
+#define FILE_MODE_BIT (S_IRWXU | S_IRWXG | S_IRWXO)
+#define PER_HANDLE_MAX_SIZE (10*1024*1204)
+#define PER_HANDLE_MIN_SIZE (1024*1024)
+#define MP_VISUAL_FOLDER_SIZE 16
+
+typedef struct __MpUtilDirListInfo MpUtilDirListInfo;
+
+struct __MpUtilDirListInfo {
+ char *ftw_path;
+ unsigned long long size;
+ int type;
+};
+
+GSList *g_copy_list = NULL;
+bool g_do_cancel = FALSE;
+unsigned long long g_total_size = 0;
+
+static char *__mp_util_move_change_root_name(const char *name, const char *old_root, const char *new_root)
+{
+ char *new_name = NULL;
+
+ if (name && old_root && new_root) {
+ int old_len = strlen(old_root);
+ int new_len = strlen(new_root);
+ int name_len = strlen(name);
+ const char *base = NULL;
+ char *name_tmp = NULL;
+
+ if ((strstr(name, old_root) == NULL)
+ || (name_len <= old_len)
+ || ((name[old_len] == '/' && name[old_len + 1] == '\0'))
+ || FALSE) {
+ return NULL;
+ }
+
+ base = name + old_len;
+ if (name[old_len] == '/') {
+ base += 1;
+ }
+
+ name_tmp = g_strdup(new_root);
+ if (name_tmp) {
+ if (name_tmp[new_len - 1] == '/') {
+ new_name = g_strdup_printf("%s%s", name_tmp, base);
+ } else {
+ new_name = g_strdup_printf("%s/%s", name_tmp, base);
+ }
+ }
+ MP_FREE_STRING(name_tmp);
+ }
+ return new_name;
+}
+
+bool mp_util_move_cancel_check(void)
+{
+ return g_do_cancel;
+}
+
+void mp_util_move_set_cancel_state(bool bCancel)
+{
+ g_do_cancel = bCancel;
+}
+static int __mp_util_move_get_remain_space(const char *path, unsigned long long *size)
+{
+ struct statfs dst_fs;
+
+ if (!path || !size) {
+ return -EINVAL;
+ }
+
+ if (statfs(path, &dst_fs) == 0) {
+ *size = ((unsigned long long)(dst_fs.f_bsize) * (unsigned long long)(dst_fs.f_bavail));
+ } else {
+ return -errno;
+ }
+
+ return 0;
+}
+
+inline bool __mp_util_move_check_exist(const char *path)
+{
+ if (path && (access(path, F_OK) == 0)) {
+ return true;
+ }
+ return false;
+}
+
+static int __mp_util_move_directory_hierarchies(const char *pathname, const struct stat *statptr, int type)
+{
+ MpUtilDirListInfo *info = NULL;
+ MpUtilDirListInfo *info_title = NULL;
+ VideoSecureLogInfo("pathname is [%s]\t type is [%d]\t", pathname, type);
+ switch (type) {
+ case FTW_F:
+ if (mp_util_check_video_file(pathname)) {
+ struct stat src_info;
+ if (stat(pathname, &src_info)) {
+ VideoLogInfo("error");
+ } else {
+ info = calloc(sizeof(MpUtilDirListInfo), 1);
+ if (!info) {
+ VideoSecureLogInfo("failed to allocate memory");
+ return -1;
+ }
+
+ info->ftw_path = g_strdup(pathname);
+ info->type = type;
+ info->size = (unsigned long long)src_info.st_size;
+ g_copy_list = g_slist_append(g_copy_list, info);
+ //append subtitle
+ char *szSubTitle = NULL;
+ mp_util_get_subtitle_path(pathname, &szSubTitle);
+ if (szSubTitle) {
+ if (stat(szSubTitle, &src_info)) {
+ VideoLogInfo("error");
+ } else {
+ info_title = calloc(sizeof(MpUtilDirListInfo), 1);
+ if (info_title) {
+ info_title->ftw_path = g_strdup(szSubTitle);
+ info_title->type = type;
+ info_title->size = (unsigned long long)src_info.st_size;
+ g_copy_list = g_slist_append(g_copy_list, info_title);
+ }
+ }
+ MP_FREE_STRING(szSubTitle);
+ }
+ }
+ }
+ break;
+ case FTW_D:
+ info = calloc(sizeof(MpUtilDirListInfo), 1);
+ if (!info) {
+ VideoSecureLogInfo("failed to allocate memory");
+ return -1;
+ }
+ info->ftw_path = g_strdup(pathname);
+ info->type = type;
+ info->size = MP_VISUAL_FOLDER_SIZE;
+ g_copy_list = g_slist_append(g_copy_list, info);
+
+ break;
+ default:
+ VideoSecureLogInfo("Default pathname is [%s]", pathname);
+ }
+
+ return 0;
+}
+
+static void __mp_util_move_free_directory_hierarchies(GSList **glist)
+{
+ if (*glist == NULL)
+ return;
+ GSList *list = *glist;
+ while (list) {
+ MpUtilDirListInfo *info = NULL;
+ info = (MpUtilDirListInfo *)list->data;
+ g_free(info->ftw_path);
+ g_free(info);
+ list = g_slist_next(list);
+ }
+ g_slist_free(*glist);
+ *glist = NULL;
+}
+
+static int __mp_util_move_copy_reg_file(const char *szSrcPath, struct stat *src_statp, const char *szDstPath, unsigned long buf_size, mp_util_copy_cb msg_cb,
+ void *msg_data)
+{
+ FILE *src_f = NULL;
+ FILE *dst_f = NULL;
+ void *buf = NULL;
+ unsigned long alloc_size = DEF_ALLLOC_SIZE;
+ ssize_t r_size = 0;
+ mode_t src_mode = 0;
+
+ if (!szSrcPath) {
+ VideoLogError("error srcPath");
+ return -1;
+ }
+ if (!szDstPath) {
+ VideoLogError("error dstPath");
+ return -1;
+ }
+
+ if (src_statp) {
+ src_mode = src_statp->st_mode;
+ } else {
+ struct stat src_info;
+ if (stat(szSrcPath, &src_info)) {
+ VideoLogError("Fail to stat src file : %d", errno);
+ return -1;
+ }
+ src_mode = src_info.st_mode;
+ }
+
+
+ if (!S_ISREG(src_mode)) {
+ VideoLogError("src[%s] is not regular file", szSrcPath);
+ return -1;
+ }
+
+ src_f = fopen(szSrcPath, "rb");
+ if (!src_f) {
+ VideoLogError("Fail to open src file : %d", errno);
+ return -1;
+ }
+
+ dst_f = fopen(szDstPath, "wb");
+ if (!dst_f) {
+ VideoLogError("Fail to open dst file : %d", errno);
+
+ goto ERROR_CLOSE_FD;
+ }
+ if (buf_size == 0) {
+ struct stat dst_info;
+ if (stat(szDstPath, &dst_info)) {
+ VideoLogError("Fail to stat dst file", szDstPath);
+ goto ERROR_CLOSE_FD;
+ }
+ }
+ /* if (dst_info.st_blksize > 0) {
+ alloc_size = dst_info.st_blksize;
+ }
+ } else {
+ alloc_size = buf_size;
+ }*/
+ alloc_size = DEF_ALLLOC_SIZE;
+
+ buf = malloc(alloc_size);
+ if (!buf) {
+ VideoLogError("fail to alloc buf, alloc_size : %lu", alloc_size);
+ goto ERROR_CLOSE_FD;
+ }
+
+ int count = 0;
+ ssize_t msg_size = 0;
+
+ int dynamic_size = 0;
+ if (g_total_size > PER_HANDLE_MAX_SIZE) {
+ dynamic_size = 64;
+ } else if (g_total_size <= PER_HANDLE_MAX_SIZE && g_total_size > PER_HANDLE_MIN_SIZE) {
+ dynamic_size = 8;
+ } else {
+ dynamic_size = 1;
+ }
+
+ int dst_fd = fileno(dst_f);
+ ssize_t total = 0;
+ while ((r_size = fread(buf, 1, alloc_size, src_f)) > 0)
+ {
+ total = r_size;
+ void *buf_p = buf;
+
+ count++;
+ while (total > 0) {
+ ssize_t w_size = 0;
+ w_size = fwrite(buf_p, 1, total, dst_f);
+ if (ferror(dst_f) != 0 || (r_size != w_size)) {
+ VideoLogError("fail to write:%d,%d", dst_f, errno);
+ goto ERROR_CLOSE_FD;
+ }
+
+ buf_p += w_size;
+ total -= w_size;
+ }
+ if (mp_util_move_cancel_check()) {
+ goto CANCEL_CLOSE_FD;
+ }
+ if ((count == dynamic_size) && msg_cb) {
+ msg_size += r_size;
+ if (msg_cb) {
+ msg_cb(MP_VIDEO_UPDATE, msg_size, 0, msg_data);
+ }
+ msg_size = 0;
+ } else {
+ msg_size += r_size;
+ }
+ int ret = posix_fadvise(dst_fd, 0, msg_size, POSIX_FADV_DONTNEED);
+ if (ret != 0) {
+ VideoLogInfo(" >>>>posix_fadvise ret=%d", ret);
+ }
+ count = count % dynamic_size;
+
+ }
+
+ if (msg_size > 0 && msg_cb) {
+ msg_size += r_size;
+ if (msg_cb) {
+ msg_cb(MP_VIDEO_UPDATE, msg_size, 0, msg_data);
+ }
+
+ msg_size = 0;
+ }
+
+ free(buf);
+ buf = NULL;
+
+ fclose(src_f);
+ fclose(dst_f);
+
+ if (!vp_file_unlink(szSrcPath)) {
+ VideoLogInfo("remove failed.");
+ }
+
+ return 0;
+
+ERROR_CLOSE_FD:
+
+ if (src_f) {
+ fclose(src_f);
+ src_f = NULL;
+ }
+ if (dst_f) {
+ fclose(dst_f);
+ dst_f = NULL;
+ if (!vp_file_unlink(szDstPath)) {
+ VideoLogInfo("remove failed.");
+ }
+ }
+ if (buf) {
+ free(buf);
+ buf = NULL;
+ }
+ return -1;
+
+
+CANCEL_CLOSE_FD:
+ if (buf) {
+ free(buf);
+ buf = NULL;
+ }
+ if (src_f) {
+ fclose(src_f);
+ src_f = NULL;
+ }
+ if (dst_f) {
+ fclose(dst_f);
+ dst_f = NULL;
+ if (!vp_file_unlink(szDstPath)) {
+ VideoLogInfo("remove failed.");
+ }
+ }
+
+ return 1;
+}
+
+static int __mp_util_move_copy_directory(const char *szSrcPath, struct stat *src_statp, const char *szDstPath, mp_util_copy_cb msg_cb, void *msg_data)
+{
+ int ret = -1;
+ mode_t src_mode = 0;
+ int err = 0;
+ if (!szSrcPath) {
+ VideoLogError("error srcPath");
+ return -1;
+ }
+ if (!szDstPath) {
+ VideoLogError("error dstPath");
+ return -1;
+ }
+
+ if (src_statp) {
+ src_mode = src_statp->st_mode;
+ } else {
+ struct stat src_info;
+ if (stat(szSrcPath, &src_info)) {
+ VideoLogError("Fail to stat src file : %d", errno);
+ return -1;
+ }
+ src_mode = src_info.st_mode;
+ }
+
+ if (access(szDstPath, F_OK)) {
+ if (mkdir(szDstPath, (src_mode & DIR_MODE_BIT))) {
+ VideoLogError("Fail to make directory=%d", errno);
+ return -1;
+ } else {
+ if (msg_cb) {
+ msg_cb(MP_VIDEO_UPDATE, MP_VISUAL_FOLDER_SIZE, 0, msg_data);
+ }
+ }
+ } else {
+ VideoSecureLogInfo("directory[%s] is already existed", szDstPath);
+ }
+
+ char *new_dir = NULL;
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ ret = ftw(szSrcPath, __mp_util_move_directory_hierarchies, 16);
+ if (ret == 0) {
+ MpUtilDirListInfo *ent = NULL;
+ GSList *list = NULL;
+ list = g_copy_list;
+ while (list) {
+ if (mp_util_move_cancel_check()) {
+ goto DO_CANCEL;
+ }
+ ent = (MpUtilDirListInfo *)list->data;
+ VideoSecureLogInfo("name is [%s] type is [%d]", ent->ftw_path, ent->type);
+ if (ent->type == FTW_D) {
+ if (ent->ftw_path == NULL || strlen(ent->ftw_path) == 0) {
+ list = g_slist_next(list);
+ continue;
+ }
+ if (g_strcmp0(ent->ftw_path, szSrcPath) == 0) {
+ list = g_slist_next(list);
+ continue;
+ }
+ MP_FREE_STRING(new_dir);
+ new_dir = __mp_util_move_change_root_name(ent->ftw_path, szSrcPath, szDstPath);
+ VideoSecureLogInfo("copy dir %s to %s", ent->ftw_path, new_dir);
+ if (new_dir) {
+ if (!__mp_util_move_check_exist(new_dir)) {
+ struct stat info;
+ if (stat(ent->ftw_path, &info) == 0) {
+ if (mkdir(new_dir, (info.st_mode & DIR_MODE_BIT))) {
+ /* fts_set(fts, ent, FTS_SKIP); */
+ VideoSecureLogError("Fail to make directory");
+ MP_FREE_STRING(new_dir);
+ goto ERROR_CLOSE_FD;
+ } else {
+ if (msg_cb) {
+ msg_cb(MP_VIDEO_UPDATE, 0, 0, msg_data);
+ }
+ }
+ } else {
+ VideoSecureLogError("Fail to stat ");
+ /* fts_set(fts, ent, FTS_SKIP); */
+ MP_FREE_STRING(new_dir);
+ goto ERROR_CLOSE_FD;
+ }
+ } else {
+ struct stat new_dst_info;
+ if (stat(new_dir, &new_dst_info) == 0) {
+ if (S_ISDIR(new_dst_info.st_mode)) {
+ if (msg_cb) {
+ msg_cb(MP_VIDEO_UPDATE, 0, 0, msg_data);
+ }
+ } else {
+ VideoSecureLogInfo("[%s] is already existed, and this one is not directory", new_dir);
+ /*set FTS_SKIP to skip children of current*/
+ /*fts_set(fts, ent, FTS_SKIP);*/
+ MP_FREE_STRING(new_dir);
+ goto ERROR_CLOSE_FD;
+ }
+ } else {
+ VideoLogError("Fail to stat %d", errno);
+ /*fts_set(fts, ent, FTS_SKIP);*/
+ MP_FREE_STRING(new_dir);
+ goto ERROR_CLOSE_FD;
+ }
+ }
+ MP_FREE_STRING(new_dir);
+ } else {
+ goto ERROR_CLOSE_FD;
+ }
+ } else if (ent->type == FTW_F) {
+ if (ent->ftw_path == NULL || strlen(ent->ftw_path) == 0) {
+ list = g_slist_next(list);
+ continue;
+ }
+ char *new_file = __mp_util_move_change_root_name(ent->ftw_path, szSrcPath, szDstPath);
+ if (new_file) {
+ err = __mp_util_move_copy_reg_file(ent->ftw_path, NULL, new_file, 0, msg_cb, msg_data);
+ if (err == 0) {
+ mp_util_svc_scan_file(new_file);
+ mp_util_svc_scan_file(ent->ftw_path);
+ }
+ MP_FREE_STRING(new_file);
+ if (err > 0) {
+ goto DO_CANCEL;
+ } else if (err < 0) {
+ goto ERROR_CLOSE_FD;
+ }
+ } else {
+ goto ERROR_CLOSE_FD;
+ }
+ }
+ list = g_slist_next(list);
+ }
+
+ } else {
+ goto ERROR_CLOSE_FD;
+ }
+ MP_FREE_STRING(new_dir);
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ if (mp_util_check_empty_dir(szSrcPath))
+ {
+ rmdir(szSrcPath);
+ }
+ return 0;
+
+ERROR_CLOSE_FD:
+ MP_FREE_STRING(new_dir);
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ return -1;
+
+DO_CANCEL:
+ MP_FREE_STRING(new_dir);
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ return 1;
+}
+
+
+int __mp_util_move_copy_internal(const char *szSrcPath, const char *szDstPath, mp_util_copy_cb msg_func, void *msg_data)
+{
+ int err = 0;
+ char *src_basename = NULL;
+ char *new_dst = NULL;
+ int base_size = 0;
+ int root_size = 0;
+ int with_slash = 1;
+ int alloc_size = 1; /*for null*/
+ struct stat src_info;
+ char *szNewestPath = NULL;
+
+ if (!szSrcPath || strlen(szSrcPath) <= 1) {
+ VideoLogError("src is NULL");
+ return -1;
+ }
+
+ if (!szDstPath) {
+ VideoLogError("dst is NULL");
+ return -1;
+ }
+
+ if (access(szDstPath, R_OK | W_OK)) {
+ VideoLogError("dst_dir no permission");
+ return -1;
+ }
+
+ if (stat(szSrcPath, &src_info)) {
+ VideoLogError("Fail to stat src ", szSrcPath);
+ return -1;
+ }
+
+ if (S_ISDIR(src_info.st_mode)) {
+ if (g_strcmp0(szDstPath, szSrcPath) == 0) {
+ VideoLogError("dst is child of src");
+ return -1;
+ }
+ }
+ src_basename = g_path_get_basename(szSrcPath);
+ if (!src_basename) {
+ VideoLogError("fail to get basename from src");
+ return -1;
+ }
+
+ base_size = strlen(src_basename);
+ root_size = strlen(szDstPath);
+
+ if (szDstPath[root_size - 1] != '/') {
+ alloc_size += 1;
+ with_slash = 0;
+ }
+
+ alloc_size += (base_size + root_size);
+
+ new_dst = malloc(sizeof(char) * (alloc_size));
+ if (!new_dst) {
+ VideoLogError("fail to alloc new dst");
+ goto ERROR_FREE_MEM;
+ }
+
+ if (with_slash) {
+ snprintf(new_dst, alloc_size, "%s%s", szDstPath, src_basename);
+ } else {
+ snprintf(new_dst, alloc_size, "%s/%s", szDstPath, src_basename);
+ }
+ MP_FREE_STRING(src_basename);
+
+ if (mp_util_move_cancel_check()) {
+ goto CANCEL_FREE_MEM;
+ }
+
+ mp_util_rename_the_same_file(new_dst, &szNewestPath);
+ MP_FREE_STRING(new_dst);
+
+ if (access(szNewestPath, F_OK)) {
+ if (S_ISDIR(src_info.st_mode)) {
+ err = __mp_util_move_copy_directory(szSrcPath, &src_info, szNewestPath, msg_func, msg_data);
+ if (err == 0) {
+ mp_util_svc_scan_file(szSrcPath);
+ mp_util_svc_scan_file(szNewestPath);
+ }
+ } else if (S_ISREG(src_info.st_mode)) {
+ /*just copy*/
+ err = __mp_util_move_copy_reg_file(szSrcPath, &src_info, szNewestPath, 0, msg_func, msg_data);
+ if (err == 0) {
+ mp_util_svc_scan_file(szSrcPath);
+ mp_util_svc_scan_file(szNewestPath);
+ }
+ } else {
+ VideoSecureLogInfo("item[%s] is not file or directory", szSrcPath);
+ goto ERROR_FREE_MEM;
+ }
+ } else {
+ VideoLogInfo("fail to alloc new dst");
+ goto ERROR_FREE_MEM;
+ }
+ MP_FREE_STRING(szNewestPath);
+
+ if (err > 0) {
+ goto CANCEL_FREE_MEM;
+ } else if (err < 0) {
+ goto ERROR_FREE_MEM;
+ }
+
+ return 0;
+
+ERROR_FREE_MEM:
+ VideoLogError("Copy error");
+ MP_FREE_STRING(src_basename);
+ MP_FREE_STRING(szNewestPath);
+ MP_FREE_STRING(new_dst);
+
+ return -1;
+
+CANCEL_FREE_MEM:
+
+ VideoLogError("Copy cancelled");
+ MP_FREE_STRING(src_basename);
+ MP_FREE_STRING(szNewestPath);
+ MP_FREE_STRING(new_dst);
+
+ return 1;
+}
+
+bool mp_util_move_get_total_dir_size(const char *szDir, unsigned long long *size)
+{
+ int ret = -1;
+ if (!szDir) {
+ return FALSE;
+ }
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ unsigned long long nSizeTmp = 0;
+ ret = ftw(szDir, __mp_util_move_directory_hierarchies, 16);
+ if (ret == 0) {
+ MpUtilDirListInfo *ent = NULL;
+ GSList *list = NULL;
+ list = g_copy_list;
+ while (list) {
+ ent = (MpUtilDirListInfo *)list->data;
+ if (ent->type == FTW_D) {
+ nSizeTmp += MP_VISUAL_FOLDER_SIZE;
+ } else if (ent->type == FTW_F) {
+ VideoLogInfo("==%lld", ent->size);
+ nSizeTmp += ent->size;
+ }
+ list = g_slist_next(list);
+ }
+ } else {
+ *size = nSizeTmp;
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ return FALSE;;
+ }
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ *size = nSizeTmp;
+ return TRUE;
+}
+
+int mp_util_move_push(const char *szSrcPath, const char *szDstPath, mp_util_copy_cb cbFun, void *userData, unsigned long long nTotalSize)
+{
+ VideoLogInfo("start");
+
+ //double s_start = 0.0;
+ //double s_stop = 0.0;
+ int nRet = 0;
+ unsigned long long r_size = 0;
+ int errcode = 0;
+ //init static data
+ g_do_cancel = FALSE;
+ if (g_copy_list)
+ {
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ }
+ //s_start = _MpUtilCopyGetTime();
+
+ errcode = __mp_util_move_get_remain_space(szDstPath, &r_size);
+ if (errcode < 0) {
+ nRet = -1;
+ VideoLogError("error code = %d", errcode);
+
+ goto ERROR_END_THREAD;
+ }
+
+ if (r_size == 0) {
+ VideoLogError("error space = %d", errcode);
+ nRet = -1;
+ goto ERROR_END_THREAD;
+ }
+
+ g_total_size = nTotalSize;
+
+ //s_stop = _MpUtilCopyGetTime();
+
+ /* copy items */
+ nRet = __mp_util_move_copy_internal(szSrcPath, szDstPath, cbFun, userData);
+
+ return nRet;
+ERROR_END_THREAD:
+
+ VideoLogInfo("The end of MpUtilCopyFunc");
+ return nRet;
+}
+
+static int __mp_util_move_delete_internal(const char *szSrcPath, void *msg_data)
+{
+ if (!szSrcPath)
+ {
+ VideoLogError("szSrcPath is NULL");
+ return -1;
+ }
+ int ret = 0;
+ if (g_copy_list)
+ {
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ }
+ ret = ftw(szSrcPath, __mp_util_move_directory_hierarchies, 16);
+ if (ret == 0) {
+ MpUtilDirListInfo *ent = NULL;
+ GSList *list = NULL;
+ list = g_copy_list;
+ while (list) {
+ if (mp_util_move_cancel_check()) {
+ goto DO_CANCEL;
+ }
+ ent = (MpUtilDirListInfo *)list->data;
+ VideoSecureLogInfo("name is [%s] type is [%d]", ent->ftw_path, ent->type);
+ if (ent->type == FTW_D) {
+ list = g_slist_next(list);
+ continue;
+ } else if (ent->type == FTW_F) {
+ if (ent->ftw_path == NULL || strlen(ent->ftw_path) == 0) {
+ list = g_slist_next(list);
+ continue;
+ }
+ if (!vp_file_unlink(ent->ftw_path)) {
+ VideoLogInfo("remove failed.");
+ goto ERROR_CLOSE_FD;
+ }
+ mp_util_svc_scan_file(ent->ftw_path);
+ }
+ list = g_slist_next(list);
+ }
+
+ } else {
+ goto ERROR_CLOSE_FD;
+ }
+
+ return 0;
+
+ERROR_CLOSE_FD:
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ return -1;
+
+DO_CANCEL:
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ return 1;
+}
+
+int mp_util_move_delete_video_folder(const char *szFolderPath, void *userData)
+{
+ VideoLogInfo("start");
+ if (!szFolderPath)
+ {
+ VideoLogError("szSrcPath is NULL");
+ return -1;
+ }
+
+ int nRet = 0;
+ g_do_cancel = FALSE;
+ if (g_copy_list)
+ {
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+ }
+
+ /* copy items */
+ nRet = __mp_util_move_delete_internal(szFolderPath, userData);
+ __mp_util_move_free_directory_hierarchies(&g_copy_list);
+ g_copy_list = NULL;
+
+ return nRet;
+}
+
diff --git a/src/feature/mp-video-url-downloader-ctrl.c b/src/feature/mp-video-url-downloader-ctrl.c
new file mode 100644
index 0000000..66aa87b
--- /dev/null
+++ b/src/feature/mp-video-url-downloader-ctrl.c
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Ecore_Evas.h>
+#include <Elementary.h>
+#include <download.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-string-define.h"
+#include "mp-video-url-downloader-ctrl.h"
+#include "vp-file-util.h"
+
+
+static url_download_h pUrlDownloaderHandle = NULL;
+static bool bIsCompletedDownload = FALSE;
+static char szDownloadedPath[STR_LEN_MAX] = { 0, };
+
+static char *szDownloadedUrl = NULL;
+static char *szDownloadedDestDir = NULL;
+static CompleteDownloadCbFunc UserCompleteCbFunc = NULL;
+
+
+#define DMR_BASE_DIRECTORY VIDEO_BOOKMARK_DIR"/dmr_icon"
+
+void mp_download_url_ctrl_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (szDownloadedUrl) {
+ free(szDownloadedUrl);
+ szDownloadedUrl = NULL;
+ }
+
+ if (szDownloadedDestDir) {
+ free(szDownloadedDestDir);
+ szDownloadedDestDir = NULL;
+ }
+
+ if (pUrlDownloaderHandle) {
+ url_download_destroy(pUrlDownloaderHandle);
+ pUrlDownloaderHandle = NULL;
+ }
+
+ bIsCompletedDownload = FALSE;
+ UserCompleteCbFunc = NULL;
+
+ memset(szDownloadedPath, 0, STR_LEN_MAX);
+}
+
+static void mp_download_url_ctrl_complete_cb(url_download_h
+ _UrlDownloaderHandle,
+ const char *szPath,
+ void *pUserData)
+{
+ if (!_UrlDownloaderHandle) {
+ VideoLogInfo("[ERR]No have _UrlDownloaderHandle");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (szDownloadedUrl) {
+ free(szDownloadedUrl);
+ szDownloadedUrl = NULL;
+ }
+
+ if (szDownloadedDestDir) {
+ free(szDownloadedDestDir);
+ szDownloadedDestDir = NULL;
+ }
+
+ memset(szDownloadedPath, 0, STR_LEN_MAX);
+
+ strncpy(szDownloadedPath, szPath, STR_LEN_MAX - 1);
+ url_download_get_url(_UrlDownloaderHandle, &szDownloadedUrl);
+ url_download_get_destination(_UrlDownloaderHandle,
+ &szDownloadedDestDir);
+
+ UserCompleteCbFunc(szDownloadedPath);
+
+ mp_download_url_ctrl_destroy();
+}
+
+static void mp_download_url_ctrl_stop_cb(url_download_h
+ _UrlDownloaderHandle,
+ url_download_error_e nError,
+ void *pUserData)
+{
+ if (!_UrlDownloaderHandle) {
+ VideoLogInfo("[ERR]No have _UrlDownloaderHandle");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ url_download_stop(_UrlDownloaderHandle);
+
+ mp_download_url_ctrl_destroy();
+}
+
+void mp_download_url_ctrl_start(void *pUserData, char *szUrl,
+ char *szIconPath,
+ CompleteDownloadCbFunc
+ pCompletedCallbackFunc)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]No have pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_download_url_ctrl_destroy();
+
+ UserCompleteCbFunc = pCompletedCallbackFunc;
+
+ int nRet = 0;
+ int nHandleId = 0;
+
+ if (!vp_is_dir(DMR_BASE_DIRECTORY)) {
+ if (!vp_mkpath(DMR_BASE_DIRECTORY)) {
+ VideoLogInfo("Fail to create directory.");
+ return;
+ }
+ }
+
+ nRet = url_download_create(&pUrlDownloaderHandle);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE || !pUrlDownloaderHandle) {
+ VideoLogInfo("Fail to create url downloader handle.");
+ return;
+ }
+
+ nRet = url_download_set_url(pUrlDownloaderHandle, szUrl);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE) {
+ VideoLogInfo("Fail to set url.");
+ return;
+ }
+
+ nRet =
+ url_download_set_destination(pUrlDownloaderHandle,
+ DMR_BASE_DIRECTORY);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE) {
+ VideoLogInfo("Fail to set destination.");
+ return;
+ }
+
+ nRet =
+ url_download_set_completed_cb(pUrlDownloaderHandle,
+ mp_download_url_ctrl_complete_cb,
+ pUserData);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE) {
+ VideoLogInfo("Fail to set completed callback.");
+ return;
+ }
+
+ nRet =
+ url_download_set_stopped_cb(pUrlDownloaderHandle,
+ mp_download_url_ctrl_stop_cb,
+ pUserData);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE) {
+ VideoLogInfo("Fail to set stopped callback.");
+ return;
+ }
+
+ nRet = url_download_start(pUrlDownloaderHandle, &nHandleId);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE) {
+ VideoLogInfo("Fail to start.");
+ return;
+ }
+}
+
+void mp_download_url_ctrl_stop(void)
+{
+ VideoLogInfo("");
+
+ if (!pUrlDownloaderHandle) {
+ VideoLogInfo("Don't exist pUrlDownloaderHandle.");
+ return;
+ }
+
+ int nRet = url_download_stop(pUrlDownloaderHandle);
+ if (nRet != URL_DOWNLOAD_ERROR_NONE) {
+ VideoLogInfo("Fail to stop.");
+ }
+}
diff --git a/src/mp-drm-ctrl.c b/src/mp-drm-ctrl.c
deleted file mode 100644
index 8c79577..0000000
--- a/src/mp-drm-ctrl.c
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <drm_client.h>
-#include <drm_client_types.h>
-
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-drm-ctrl.h"
-
-static int nCheckConsumption = VIDEO_DRM_CONSUMPTION_STATE_DISABLE;
-
-static drm_file_type_e nDrmFileType = DRM_TYPE_UNDEFINED;
-
-#define ACCUMULATED_DATE 86400 /* 24*60*60 */
-#define RO_MESSAGE_LEN 1024
-
-#define MOUNTH_COUNT 12
-#define DAY_COUNT 30
-#define HOUR_COUNT 24
-
-static bool bForwordLock = FALSE;
-/*
- * External function
- */
-void MpVideoDrmInit()
-{
- VideoLogInfo("");
-}
-
-bool MpVideoDrmGetForwardLookState()
-{
- VideoLogInfo("");
-
- return bForwordLock;
-}
-
-void MpVideoDrmSetConsumptionState(int nState)
-{
- VideoLogInfo("");
-
- nCheckConsumption = nState;
-}
-
-int MpVideoDrmGetConsumption()
-{
- VideoLogInfo("");
-
- return nCheckConsumption;
-}
-
-void MpVideoDrmStartConsumption(char *szPath)
-{
- VideoLogInfo("");
-
-
- if (MpVideoDrmGetConsumption()) {
-
- } else {
- VideoLogInfo("Disable consumption.");
- }
-}
-
-void MpVideoDrmPauseConsumption()
-{
- VideoLogInfo("");
-
- if (MpVideoDrmGetConsumption()) {
- } else {
- VideoLogInfo("Disable consumption.");
- }
-}
-
-void MpVideoDrmResumeConsumption()
-{
- VideoLogInfo("");
-
- if (MpVideoDrmGetConsumption()) {
- } else {
- VideoLogInfo("Disable consumption.");
- }
-}
-
-void MpVideoDrmStopConsumption()
-{
- VideoLogInfo("");
-
- if (MpVideoDrmGetConsumption()) {
- MpVideoDrmSetConsumptionState (VIDEO_DRM_CONSUMPTION_STATE_DISABLE);
- } else {
- VideoLogInfo("Disable consumption.");
- }
-}
-
-bool MpVideoDrmIsDrmFile(char *szPath)
-{
- VideoLogInfo("");
-
- if (!szPath) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
- int nRet = DRM_RETURN_SUCCESS;
- drm_bool_type_e is_drm = DRM_FALSE;
-
- nRet = drm_is_drm_file(szPath, &is_drm);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet);
- return FALSE;
- }
-
- if(is_drm != DRM_TRUE) {
- VideoLogInfo("It's not drm file.");
- return FALSE;
- }
-
-
- drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
-
- nRet = drm_get_file_type(szPath, &drm_type);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_get_file_type : %d", nRet);
- return FALSE;
- }
-
- nDrmFileType = drm_type;
-
- if(drm_type != DRM_TYPE_OMA_V1 && drm_type != DRM_TYPE_OMA_V2) {
- VideoLogInfo("It's not OMA drm file : %d", drm_type);
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpVideoDrmHasValidRo(char *szPath)
-{
- VideoLogInfo("");
-
- if (!szPath) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- int nRet = DRM_RETURN_SUCCESS;
- drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;
- nRet = drm_get_license_status(szPath, DRM_PERMISSION_TYPE_PLAY, &license_status);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_get_license_status : %d", nRet);
- return FALSE;
- }
-
- if(license_status != DRM_LICENSE_STATUS_VALID) {
- VideoLogInfo("Invalid license status : %d", license_status);
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpVideoDrmCheckForward(char *szPath)
-{
- VideoLogInfo("");
-
- if (!szPath) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- int nRet = DRM_RETURN_SUCCESS;
- drm_action_allowed_data_s action_data;
- drm_bool_type_e is_allow = DRM_FALSE;
- memset(&action_data, 0, sizeof(drm_action_allowed_data_s));
- snprintf(action_data.file_path , DRM_MAX_LEN_FILEPATH, "%s", szPath);
-
- nRet = drm_is_action_allowed(DRM_IS_FORWARDING_ALLOWED,&action_data, &is_allow);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_is_action_allowed : %d", nRet);
- bForwordLock = FALSE;
- return FALSE;
- }
-
- if(is_allow == DRM_TRUE) {
- bForwordLock = TRUE;
- return TRUE;
- }
-
- return FALSE;
-}
-
-MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char *szVideoTitle, char *szPath)
-{
- VideoLogInfo("");
- MpVideoDrmInfo *pResult = NULL;
- pResult = calloc(1, sizeof(MpVideoDrmInfo));
-
- if (!szVideoTitle) {
- VideoLogInfo("[ERR] No has video title.");
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL;
- return pResult;
- }
-
- if (!szPath) {
- VideoLogInfo("[ERR] No has path.");
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL;
- return pResult;
- }
-
-
-
- int nRet = DRM_RETURN_SUCCESS;
- drm_constraint_info_s constraint_info;
- memset(&constraint_info, 0, sizeof(drm_constraint_info_s));
- nRet = drm_get_constraint_info(szPath, DRM_PERMISSION_TYPE_PLAY, &constraint_info);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_get_file_info : %d", nRet);
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL;
- return pResult;
- }
-
- if(constraint_info.const_type.is_unlimited) {
- VideoLogInfo("Unlimited DRM Contents");
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
- return pResult;
- }
- else if(constraint_info.const_type.is_count) {
- if(constraint_info.remaining_count <= 0) {
- VideoLogInfo("Count expired : %d / %d",
- constraint_info.remaining_count,
- constraint_info.original_count);
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT;
- pResult->nData = constraint_info.remaining_count;
- return pResult;
- }
- else if(constraint_info.remaining_count == 1 ||
- constraint_info.remaining_count == 2) {
- VideoLogInfo("Count Small : %d / %d",
- constraint_info.remaining_count,
- constraint_info.original_count);
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT_SMALL;
- pResult->nData = constraint_info.remaining_count;
- return pResult;
- }
- else {
- VideoLogInfo("Count valid : %d / %d",
- constraint_info.remaining_count,
- constraint_info.original_count);
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
- pResult->nData = constraint_info.remaining_count;
- return pResult;
- }
- }
- else if(constraint_info.const_type.is_datetime) {
- VideoLogInfo("Start time: Year=%d,Month=%d,Day=%d,"
- "Hour=%d, minute=%d, Second=%d",
- constraint_info.start_time.tm_year,
- constraint_info.start_time.tm_mon,
- constraint_info.start_time.tm_mday,
- constraint_info.start_time.tm_hour,
- constraint_info.start_time.tm_min,
- constraint_info.start_time.tm_sec);
-
-
- VideoLogInfo("End time: Year=%d,Month=%d,Day=%d,"
- "Hour=%d, minute=%d, Second=%d",
- constraint_info.end_time.tm_year,
- constraint_info.end_time.tm_mon,
- constraint_info.end_time.tm_mday,
- constraint_info.end_time.tm_hour,
- constraint_info.end_time.tm_min,
- constraint_info.end_time.tm_sec);
-
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
- return pResult;
- }
- else if(constraint_info.const_type.is_interval) {
- VideoLogInfo("Interval time: Year=%d,Month=%d,Day=%d,"
- "Hour=%d, minute=%d, Second=%d",
- constraint_info.interval_time.tm_year,
- constraint_info.interval_time.tm_mon,
- constraint_info.interval_time.tm_mday,
- constraint_info.interval_time.tm_hour,
- constraint_info.interval_time.tm_min,
- constraint_info.interval_time.tm_sec);
-
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE;
- pResult->nData = ((constraint_info.interval_time.tm_year * MOUNTH_COUNT + constraint_info.interval_time.tm_mon) * DAY_COUNT + constraint_info.interval_time.tm_mday);
- return pResult;
-
- }
- else if(constraint_info.const_type.is_timedcount) {
- VideoLogInfo("DRM TimeCount "
- "(original : %d, remainnig : %d, count_timer: %d)",
- constraint_info.timed_original_count,
- constraint_info.timed_remaining_count,
- constraint_info.timed_count_timer);
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
- return pResult;
- }
- else if(constraint_info.const_type.is_accumulated) {
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_ACCUMULATED;
- return pResult;
- }
- else if(constraint_info.const_type.is_individual) {
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
- return pResult;
- }
- else if(constraint_info.const_type.is_system) {
- pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE;
- return pResult;
- }
-
- return pResult;
-}
-
-bool MpVideoDrmIsDivX(char *szPath)
-{
- VideoLogInfo("");
-
- if (!szPath) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
-
- int nRet = DRM_RETURN_SUCCESS;
- drm_bool_type_e is_drm = DRM_FALSE;
-
- nRet = drm_is_drm_file(szPath, &is_drm);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet);
- return FALSE;
- }
-
- if(is_drm != DRM_TRUE) {
- VideoLogInfo("It's not drm file.");
- return FALSE;
- }
-
- drm_file_type_e drm_type = DRM_TYPE_UNDEFINED;
-
- nRet = drm_get_file_type(szPath, &drm_type);
- if(nRet != DRM_RETURN_SUCCESS) {
- VideoLogInfo("[ERR]drm_get_file_type : %d", nRet);
- return FALSE;
- }
-
- nDrmFileType = drm_type;
-
- if(drm_type != DRM_TYPE_DIVX ) {
- VideoLogInfo("It's not DivX drm file : %d", drm_type);
- return FALSE;
- }
-
- return TRUE;
-
-}
-
-bool MpVideoDrmCheckDivX(char *szPath)
-{
- VideoLogInfo("");
-
- if (!szPath) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- return TRUE;
-}
-
-void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize)
-{
- if (!szContentType) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!szPath) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- memset(szContentType, 0, nContentTypeStrSize);
-
- drm_content_info_s content_info;
- int nRet = DRM_RETURN_SUCCESS;
- memset(&content_info, 0, sizeof(drm_content_info_s));
-
- nRet = drm_get_content_info(szPath,&content_info);
-
-
- VideoLogInfo("contentType: %s", content_info.mime_type);
-
- strncpy(szContentType, content_info.mime_type, nContentTypeStrSize - 1);
-}
diff --git a/src/mp-external-ug.c b/src/mp-external-ug.c
deleted file mode 100755
index a47a959..0000000
--- a/src/mp-external-ug.c
+++ /dev/null
@@ -1,628 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <app.h>
-#include <Elementary.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-external-ug.h"
-#include "mp-video-value-define.h"
-#include "mp-video-string-define.h"
-#include "mp-video-service-ctrl.h"
-
-
-#define UG_LIST_ITEMS_SIZE_MAX 32
-#define UG_SHARE_MENU_ITEM_MAX 6
-
-
-static ui_gadget_h pUiGadgetHandle = NULL;
-static Ecore_Event_Handler *pHardKeyEventHandler = NULL;
-static MpExternalUGType nCurUGType = MP_EXTERNAL_UG_NONE;
-static char **szUgItems = NULL;
-
-
-static Evas_Object *pUGPopupHandle = NULL;
-static Evas_Object *pUGGenList = NULL;
-
-
-typedef struct _External_Ug {
- MpExternalUGType nType;
- char *szUgName;
-} MpExternalUG;
-
-MpExternalUG st_MpExternalUG[] = {
- {MP_EXTERNAL_UG_MESSAGE, "msg-composer-efl" },
- {MP_EXTERNAL_UG_EMAIL, "email-composer-efl" },
- {MP_EXTERNAL_UG_MYFILE_DETAIL, "myfile-detail-efl" },
- {MP_EXTERNAL_UG_YOUTUBE, "youtube-efl" },
- {MP_EXTERNAL_UG_BLUETOOTH, "setting-bluetooth-efl" },
- {MP_EXTERNAL_UG_FTM, "fileshare-efl" },
- {MP_EXTERNAL_UG_FACEBOOK, "facebook-efl" },
-};
-
-
-
-
-/*
- * CALLBACK FUNCTION
- */
-
-static char *MpExternalUgGetLabelOfGenlistItemCb(const void *pUserData, Evas_Object *pObject, const char *pPart)
-{
- VideoLogInfo("");
-
- int nIndex = (int)pUserData;
-
- if(!strcmp(pPart, "elm.text"))
- {
- VideoLogInfo("Index : %d", nIndex);
- return strdup(szUgItems[nIndex]);
- }
-
- return NULL;
-}
-
-
-static Eina_Bool MpExternalUgHardkeyDownCb(void *pUserData, int nType,
- void *pEvent)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpExternalUGType nExternalUgState = MpExternalUgGetCurUgState();
-
- if (nExternalUgState <= MP_EXTERNAL_UG_NONE ||
- nExternalUgState >= MP_EXTERNAL_UG_MAX) {
- VideoLogInfo
- ("Return hardkey callback function because of no UG mode.");
- return EINA_FALSE;
- }
-
- Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
-
- if (!strcmp(pKeyEvent->keyname, KEY_END)) {
- VideoLogInfo("Bakc(End) key");
- MpExternalUgUnload();
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
- if (!strcmp(pKeyEvent->keyname, HOME_KEY)) {
- VideoLogInfo("Home key");
- MpExternalUgUnload();
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
-
- return EINA_FALSE;
-}
-
-void MpExternalUgLayoutCb(ui_gadget_h pUiGadget, enum ug_mode nMode, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- Evas_Object *pLayoutBase = NULL;
- Evas_Object *pWin = NULL;
-
- pLayoutBase = ug_get_layout(pUiGadget);
- if (!pLayoutBase) {
- ug_destroy(pUiGadget);
- VideoLogError("[ERR]");
- return;
- }
- pWin = ug_get_window();
-
- switch (nMode) {
- case UG_MODE_FULLVIEW:
- evas_object_size_hint_weight_set(pLayoutBase, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- elm_win_resize_object_add(pWin, pLayoutBase);
- evas_object_show(pLayoutBase);
- break;
-
- default:
- VideoLogInfo("[DEFAUT!!!!!!!!]");
- break;
- }
-}
-
-void MpExternalUgResultCb(ui_gadget_h pUiGadget, service_h pService, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-}
-
-void MpExternalUgDestroyCb(ui_gadget_h pUiGadget, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpExternalUgUnload();
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-}
-
-static void MpExternalUGDestroyPopupList(void)
-{
- VideoLogInfo("");
- int nCount = 0;
- if(szUgItems)
- {
- for(nCount = 0; nCount < MP_EXTERNAL_UG_MAX; nCount++)
- {
- if(szUgItems[nCount])
- {
- free(szUgItems[nCount]);
- szUgItems[nCount] = NULL;
- }
- }
- free(szUgItems);
- szUgItems = NULL;
- }
-
- if(pUGGenList)
- {
- evas_object_del(pUGGenList);
- pUGGenList = NULL;
- }
-
- if(pUGPopupHandle) {
- evas_object_del(pUGPopupHandle);
- pUGPopupHandle = NULL;
- }
-
- MpUtilSetAlphaOfMainWindow(TRUE);
-}
-
-
-static void MpExternalUGPopupCb(void *pUserData, Evas_Object *pObject,
- void *pEventInfo)
-{
- VideoLogInfo("");
-
- if(pUserData == NULL)
- {
- VideoLogInfo("[ERR]No have pUserData");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-
- MpExternalUGDestroyPopupList();
-}
-
-static void MpExternalUgResFn(service_h pRequest, service_h pReply, service_result_e nResult, void *pUserData)
-{
- if(!pUserData)
-{
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-}
-
-static void MpExternalUGAppSvcLoad(MpExternalUGType nExternalUGType, void *pUserData)
-{
-
- VideoLogInfo("");
-
- if (pUserData == NULL) {
- VideoLogInfo("[ERR]No have pUserData");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- service_h pServiceHandle = NULL;
- int ret_val = 0;
- char pkg_name[STR_LEN_MAX] = {0,};
-
- if(service_create(&pServiceHandle) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("[ERR]service_create(&pServiceHandle)");
- return;
- }
-
- switch(nExternalUGType)
- {
- case MP_EXTERNAL_UG_YOUTUBE:
- strncpy(pkg_name,"org.tizen.youtube",STR_LEN_MAX-1);
- break;
-
- case MP_EXTERNAL_UG_FACEBOOK:
- strncpy(pkg_name,"org.tizen.facebook",STR_LEN_MAX-1);
- break;
- default:
- break;
- }
-
- if(service_set_operation(pServiceHandle, SERVICE_OPERATION_SEND) != SERVICE_ERROR_NONE)
- {
- if(pServiceHandle)
- {
- service_destroy(pServiceHandle);
- }
-
- VideoLogInfo("[ERR]service_set_operation fail.");
- return;
- }
-
- if(nExternalUGType == MP_EXTERNAL_UG_YOUTUBE)
- {
- char xwin_id_str[12] = { 0, };
- Ecore_X_Window xwin_id = (Ecore_X_Window)MpUtilGetMainWindowXID();
- eina_convert_itoa(xwin_id, xwin_id_str);
- VideoLogInfo("For YoutTube XID : %s", xwin_id_str);
- service_add_extra_data(pServiceHandle, "XWINDOW_ID", xwin_id_str);
- }
-
- if(service_set_mime(pServiceHandle, "video/*") != SERVICE_ERROR_NONE)
- {
- if(pServiceHandle)
- {
- service_destroy(pServiceHandle);
- }
-
- VideoLogInfo("[ERR]service_set_mime fail.");
- return;
- }
-
- if(service_set_uri(pServiceHandle, pAppData->szMediaUri) != SERVICE_ERROR_NONE)
- {
- if(pServiceHandle)
- {
- service_destroy(pServiceHandle);
- }
-
- VideoLogInfo("[ERR]service_set_uri fail.");
- return;
- }
-
-
- if(service_set_package(pServiceHandle, pkg_name) != SERVICE_ERROR_NONE)
- {
- if(pServiceHandle)
- {
- service_destroy(pServiceHandle);
- }
-
- VideoLogInfo("[ERR]service_set_package fail : %d", ret_val);
- return;
- }
-
- if(service_send_launch_request(pServiceHandle, MpExternalUgResFn, pUserData) != SERVICE_ERROR_NONE)
- {
- if(pServiceHandle)
- {
- service_destroy(pServiceHandle);
- }
-
- VideoLogInfo("[ERR]service_send_launch_request fail : %d", ret_val);
- return;
- }
-
- service_destroy(pServiceHandle);
-}
-
-static void MpExternalUGSelectListItem(void *pUserData,Evas_Object *pObject,void *pEventInfo)
-{
- VideoLogInfo("");
-
- if(pUserData == NULL)
- {
- VideoLogInfo("[ERR]No have pUserData");
- return;
- }
-
- Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
-
- if(pItem)
- {
- int nIndex = 0;
- nIndex = (int)elm_object_item_data_get(pItem);
-
- VideoLogInfo("Select Controlbar item of popup : %d", nIndex);
-
- if(!strcmp(szUgItems[nIndex], MP_SHARE_MESSAGE))
- {
- MpExternalUgLoad(MP_EXTERNAL_UG_MESSAGE, pUserData);
- }
- else if(!strcmp(szUgItems[nIndex], MP_SHARE_EMAIL))
- {
- MpExternalUgLoad(MP_EXTERNAL_UG_EMAIL, pUserData);
- }
- else if(!strcmp(szUgItems[nIndex], MP_SHARE_BLUETOOTH))
- {
- MpExternalUgLoad(MP_EXTERNAL_UG_BLUETOOTH, pUserData);
- }
- else if(!strcmp(szUgItems[nIndex], MP_SHARE_FTM))
- {
- MpExternalUgLoad(MP_EXTERNAL_UG_FTM, pUserData);
- }
- else if(!strcmp(szUgItems[nIndex], MP_SHARE_FACEBOOK))
- {
- MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_FACEBOOK, pUserData);
- }
- else if(!strcmp(szUgItems[nIndex], MP_SHARE_YOUTUBE))
- {
- MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_YOUTUBE, pUserData);
- }
-
- }
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
-
- MpExternalUGDestroyPopupList();
-}
-
-/*
- * External Function
- */
-bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- struct ug_cbs cbs = { 0, };
- service_h pService; //bundle *pBundleHandle = NULL;
-
-
- cbs.layout_cb = MpExternalUgLayoutCb;
- cbs.result_cb = MpExternalUgResultCb;
- cbs.destroy_cb = MpExternalUgDestroyCb;
- cbs.priv = (void *)pAppData;
-
- service_create(&pService); //pBundleHandle = bundle_create();
-
- UG_INIT_EFL(pAppData->pMainWindow, UG_OPT_INDICATOR_ENABLE);
-
- if(pUiGadgetHandle)
- {
- MpExternalUgUnload();
- }
-
- switch (nExternalUGType)
- {
- case MP_EXTERNAL_UG_MESSAGE:
- VideoLogInfo("MP_EXTERNAL_UG_MESSAGE");
- //bundle_add(pBundleHandle, "ATTACHFILE", pAppData->szMediaUri);
- service_add_extra_data(pService, "ATTACHFILE", pAppData->szMediaUri);
- break;
-
- case MP_EXTERNAL_UG_EMAIL:
- VideoLogInfo("MP_EXTERNAL_UG_EMAIL");
- //bundle_add(pBundleHandle, "RUN_TYPE", "5");
- service_add_extra_data(pService, "RUN_TYPE", "5");
- //bundle_add(pBundleHandle, "ATTACHMENT", pAppData->szMediaUri);
- service_add_extra_data(pService, "ATTACHMENT", pAppData->szMediaUri);
- break;
-
- case MP_EXTERNAL_UG_MYFILE_DETAIL:
- VideoLogInfo("MP_EXTERNAL_UG_MYFILE_DETAIL");
- //bundle_add(pBundleHandle, "Path", pAppData->szMediaUri);
- service_add_extra_data(pService, "Path", pAppData->szMediaUri);
- break;
-
- case MP_EXTERNAL_UG_YOUTUBE:
- VideoLogInfo("MP_EXTERNAL_UG_YOUTUBE");
- //bundle_add(pBundleHandle, "feature", "video_upload");
- service_add_extra_data(pService, "feature", "video_upload");
- //bundle_add(pBundleHandle, "video", pAppData->szMediaUri);
- service_add_extra_data(pService, "video", pAppData->szMediaUri);
- break;
-
- case MP_EXTERNAL_UG_FACEBOOK:
- VideoLogInfo("MP_EXTERNAL_UG_FACEBOOK");
- //bundle_add(pBundleHandle, "feature", "video_upload");
- service_add_extra_data(pService, "feature", "video_upload");
- //bundle_add(pBundleHandle, "video", pAppData->szMediaUri);
- service_add_extra_data(pService, "video", pAppData->szMediaUri);
- break;
-
- case MP_EXTERNAL_UG_BLUETOOTH:
- VideoLogInfo("MP_EXTERNAL_UG_BLUETOOTH");
- //bundle_add(pBundleHandle, "launch-type", "send");
- service_add_extra_data(pService, "launch-type", "send");
- //bundle_add(pBundleHandle, "filecount", "1");
- service_add_extra_data(pService, "filecount", "1");
- //bundle_add(pBundleHandle, "files", pAppData->szMediaUri);
- service_add_extra_data(pService, "files", pAppData->szMediaUri);
- break;
-
- case MP_EXTERNAL_UG_FTM:
- VideoLogInfo("MP_EXTERNAL_UG_FTM");
- //bundle_add(pBundleHandle, "filecount", "1");
- service_add_extra_data(pService, "filecount", "1");
- //bundle_add(pBundleHandle, "files", pAppData->szMediaUri);
- service_add_extra_data(pService, "files", pAppData->szMediaUri);
- break;
-
- default:
- service_destroy(pService); //bundle_free(pBundleHandle);
- return FALSE;
- }
-
- pUiGadgetHandle = ug_create(NULL, st_MpExternalUG[nExternalUGType].szUgName, UG_MODE_FULLVIEW, pService, &cbs);
-
- nCurUGType = nExternalUGType;
-
- service_destroy(pService); //bundle_free(pBundleHandle);
-
- pHardKeyEventHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpExternalUgHardkeyDownCb, pUserData);
-
- /* !!!!!SET ROTATE STATE!!!!! */
-
- return TRUE;
-}
-
-void MpExternalUgUnload(void)
-{
- VideoLogInfo("");
-
- MpExternalUGDestroyPopupList();
-
- if (pHardKeyEventHandler) {
- ecore_event_handler_del(pHardKeyEventHandler);
- pHardKeyEventHandler = NULL;
- }
-
- if (pUiGadgetHandle) {
- ug_destroy(pUiGadgetHandle);
- pUiGadgetHandle = NULL;
- }
-
- nCurUGType = MP_EXTERNAL_UG_NONE;
-}
-
-void MpExternalUgDestroyAll(void)
-{
- VideoLogInfo("");
-
- MpExternalUGDestroyPopupList();
-
- ug_destroy_all();
-}
-
-int MpExternalUgGetCurUgState()
-{
- VideoLogInfo("");
-
- return (int)nCurUGType;
-}
-
-void MpExternalUgSetUgState(MpExternalUGType nExternalUGType)
-{
- VideoLogInfo("");
-
- nCurUGType = nExternalUGType;
-}
-
-bool MpExternalUgShow(void *pUserData, void *pParent)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- Evas_Object *pButton = NULL;
- Evas_Object *pBox = NULL;
-
- MpExternalUGDestroyPopupList();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pUGPopupHandle = elm_popup_add(pAppData->pMainWindow);
- elm_object_style_set(pUGPopupHandle, "menustyle");
- elm_object_part_text_set(pUGPopupHandle, "title,text", MP_COM_BUTTON_SHARE);
- evas_object_size_hint_weight_set(pUGPopupHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- pButton = elm_button_add(pUGPopupHandle);
- elm_object_style_set (pButton, "popup_button/default");
- elm_object_text_set(pButton, MP_COM_CLOSE);
- elm_object_part_content_set(pUGPopupHandle, "button1", pButton);
- evas_object_smart_callback_add(pButton, "clicked", MpExternalUGPopupCb, (void*)pAppData);
-
- Elm_Genlist_Item_Class *st_Share_Itc = NULL;
-
- st_Share_Itc = elm_genlist_item_class_new();
-
- st_Share_Itc->item_style = "1text";
- st_Share_Itc->func.text_get = (void *)MpExternalUgGetLabelOfGenlistItemCb;
- st_Share_Itc->func.content_get = NULL;
- st_Share_Itc->func.state_get = NULL;
- st_Share_Itc->func.del = NULL;
- /* Create genlist handle */
- pUGGenList = elm_genlist_add(pUGPopupHandle);
- evas_object_size_hint_weight_set(pUGGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(pUGGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- szUgItems = (char **)calloc(1, sizeof(char *) * MP_EXTERNAL_UG_MAX);
- int idx = 0;
- for(idx = 0; idx < MP_EXTERNAL_UG_MAX; idx++)
- {
- szUgItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char));
- }
-
- /* Set Sound alive string */
- strncpy(szUgItems[MP_EXTERNAL_UG_MESSAGE], MP_SHARE_MESSAGE, STR_LEN_MAX - 1);
- strncpy(szUgItems[MP_EXTERNAL_UG_EMAIL], MP_SHARE_EMAIL, STR_LEN_MAX - 1);
- strncpy(szUgItems[MP_EXTERNAL_UG_BLUETOOTH], MP_SHARE_BLUETOOTH, STR_LEN_MAX - 1);
- strncpy(szUgItems[MP_EXTERNAL_UG_FTM], MP_SHARE_FTM, STR_LEN_MAX - 1);
- strncpy(szUgItems[MP_EXTERNAL_UG_YOUTUBE], MP_SHARE_YOUTUBE, STR_LEN_MAX - 1);
- strncpy(szUgItems[MP_EXTERNAL_UG_FACEBOOK], MP_SHARE_FACEBOOK, STR_LEN_MAX - 1);
-
- elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_MESSAGE, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData);
- elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_EMAIL, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData);
- elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_BLUETOOTH, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData);
-
- elm_genlist_item_class_free(st_Share_Itc);
-
- pBox = elm_box_add(pUGPopupHandle);
- evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get());
-
- elm_box_pack_end(pBox, pUGGenList);
- elm_object_content_set(pUGPopupHandle, pBox);
-
-
- evas_object_show(pUGGenList);
- evas_object_show(pUGPopupHandle);
-
-
- return TRUE;
-}
-void MpExternalUgHide()
-{
- MpExternalUGDestroyPopupList();
-}
-
-
diff --git a/src/mp-util-media-service.c b/src/mp-util-media-service.c
deleted file mode 100755
index f5bcc4f..0000000
--- a/src/mp-util-media-service.c
+++ /dev/null
@@ -1,2497 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-
-#include <media_content.h>
-
-
-#include "mp-video-log.h"
-#include "mp-video-value-define.h"
-#include "mp-video-type-define.h"
-#include "mp-util-media-service.h"
-#include "mp-video-string-define.h"
-
-
-
-static Eina_List *VideoFolderList = NULL;
-static Eina_List *VideoItemList = NULL;
-static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
-static int nTotalVideoTypeFiles = 0;
-static int nNumberOfVideoItemByType = 0;
-
-
-bool MpUtilMediaSvcIs3gpFile(char* szFileUri)
-{
- VideoLogInfo("");
-
- int nRet = FALSE;
- char* szTmpUriPath = szFileUri;
-
- if(szTmpUriPath)
- {
- char *szExt = NULL;
- szExt = strrchr(szTmpUriPath, '.');
-
- if((szExt != NULL) && ((szExt+1) != NULL))
- {
- if(!strcmp(szExt+1, "3gp"))
- {
- nRet = TRUE;
- }
- else
- {
- nRet = FALSE;
- }
- }
- else
- {
- VideoLogInfo("No exist extension.");
- nRet = FALSE;
- }
- }
- else
- {
- VideoLogInfo("No exist file uri.");
- nRet = FALSE;
- }
-
- return nRet;
-}
-
-static bool MpUtilMediaSvcIterateForGetVideoItemCb(media_info_h pVideoItem, void *pUserData)
-{
- VideoLogInfo("");
-
- media_info_h *pAssignFolderItem = (media_info_h*)pUserData;
-
- if(pVideoItem != NULL)
- {
- char *szTmpStr = NULL;
- media_info_clone(pAssignFolderItem, pVideoItem);
- media_info_get_display_name(*pAssignFolderItem, &szTmpStr);
- VideoLogInfo("Display name : %s", szTmpStr);
-
- if(szTmpStr)
- {
- free(szTmpStr);
- }
- }
-
- return FALSE;
-}
-
-static bool MpUtilMediaSvcIterateForVideoItemListViewCb(media_info_h pMediaItem, void *pUserData)
-{
- VideoLogInfo("");
-
- media_info_h pAssignMediaItem = NULL;
- media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
-
- media_info_get_media_type(pMediaItem, &nMediaType);
- VideoLogInfo("nMediaType : %d", nMediaType);
-
- if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO)
- {
- char *szTmpItemFilePath = NULL;
- char szItemFilePath[STR_LEN_MAX] = {0};
-
- media_info_get_file_path(pMediaItem, &szTmpItemFilePath);
-
- if(szTmpItemFilePath == NULL)
- {
- VideoLogInfo("Fail to get file path of media item.");
- return FALSE;
- }
- strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1);
-
- free(szTmpItemFilePath);
- szTmpItemFilePath = NULL;
-
- VideoLogInfo("szItemFilePath : %s", szItemFilePath);
-
- nTotalVideoTypeFiles++;
-
- switch(nWhatFileType)
- {
- case MP_MEDIA_VIDEO_FILE_TYPE:
- if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == TRUE)
- {
- return TRUE;
- }
- break;
-
- case MP_MEDIA_CAMERA_FILE_TYPE:
- if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == FALSE)
- {
- return TRUE;
- }
- break;
-
- case MP_MEDIA_ALL_FILE_TYPE:
- break;
- }
-
- nNumberOfVideoItemByType++;
- VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
-
- media_info_clone(&pAssignMediaItem, pMediaItem);
- Eina_List **pList = (Eina_List **)pUserData;
- *pList = eina_list_append(*pList, pAssignMediaItem);
- }
-
- return TRUE;
-}
-
-static bool MpUtilMediaSvcIterateCb(media_info_h pMediaItem, void *pUserData)
-{
- VideoLogInfo("");
-
- media_info_h pAssignMediaItem = NULL;
- media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
-
- media_info_get_media_type(pMediaItem, &nMediaType);
- VideoLogInfo("nMediaType : %d", nMediaType);
-
- if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO)
- {
- media_info_clone(&pAssignMediaItem, pMediaItem);
- Eina_List **pList = (Eina_List **)pUserData;
- *pList = eina_list_append(*pList, pAssignMediaItem);
-
- nTotalVideoTypeFiles++;
- nNumberOfVideoItemByType++;
- VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
- }
-
- return TRUE;
-}
-
-static bool MpUtilMediaSvcIterateForGetFolderCb(media_folder_h pFolderItem, void *pUserData)
-{
- VideoLogInfo("");
-
- media_folder_h *pAssignFolderItem = (media_folder_h*)pUserData;
-
- if(pFolderItem != NULL)
- {
- char *szTmpStr = NULL;
- media_folder_clone(pAssignFolderItem, pFolderItem);
- media_folder_get_name(*pAssignFolderItem, &szTmpStr);
- VideoLogInfo("Folder name : %s", szTmpStr);
-
- if(szTmpStr)
- {
- free(szTmpStr);
- }
- }
-
- return FALSE;
-}
-
-static bool MpUtilMediaSvcIterateForFolderListCb(media_folder_h pFolderItem, void *pUserData)
-{
- VideoLogInfo("");
-
- media_folder_h pAssignFolderItem = NULL;
- media_folder_clone(&pAssignFolderItem, pFolderItem);
- Eina_List **pList = (Eina_List **)pUserData;
- *pList = eina_list_append(*pList, pAssignFolderItem);
-
- return TRUE;
-}
-
-static bool MpUtilMediaSvcIterateGetTagCb(media_tag_h pTagItem, void *pUserData)
-{
- VideoLogInfo("");
-
- media_tag_h *pAssignTagItem = (media_tag_h*)pUserData;
-
- if(!pTagItem)
- {
- char *szTmpStr = NULL;
- media_tag_clone(pAssignTagItem, pTagItem);
- media_tag_get_name(*pAssignTagItem, &szTmpStr);
- VideoLogInfo("szTagName : %s", szTmpStr);
-
- if(szTmpStr)
- {
- free(szTmpStr);
- }
- }
-
- return FALSE;
-}
-
-static bool MpUtilMediaSvcIterateGetVideoItemOfTagCb(media_info_h media, void *pUserData)
-{
- VideoLogInfo("");
-
- return TRUE;
-}
-
-//
-// Internal function
-//
-bool MpUtilMediaSvcGetFileDirectoryName(char *szFilePath, char *szFileName, char *szDirectoryName, char *szDirectoryPath)
-{
- VideoLogInfo("");
-
- if(!szFilePath)
- {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- int nCount = 0;
- int nLoopCount = 0;
-
- for(nLoopCount = strlen(szFilePath); nLoopCount >= 0; nLoopCount--)
- {
- if (szFilePath[nLoopCount] != '\0')
- {
- nCount++;
- }
-
- if(szFilePath[nLoopCount] == '/')
- {
- if(szFileName)
- {
- memcpy(szFileName, &szFilePath[nLoopCount + 1], --nCount);
- *(szFileName + nCount) = '\0';
- VideoLogInfo("File name = %s\n", szFileName);
- }
-
- if(szDirectoryPath)
- {
- memcpy(szDirectoryPath, &szFilePath[0], nLoopCount);
- *(szDirectoryPath + nLoopCount + 1) = '\0';
- VideoLogInfo("Directory path = %s", szDirectoryPath);
- }
-
- if(szDirectoryName)
- {
- nCount = 0;
- for(--nLoopCount; nLoopCount >= 0; nLoopCount--)
- {
- nCount++;
- if(szFilePath[nLoopCount] == '/')
- {
- memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount);
- *(szDirectoryName + nCount) = '\0';
- VideoLogInfo("Directory Name = %s", szDirectoryName);
-
- return TRUE;
- }
- }
- }
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-//
-// External function
-//
-
-void MpUtilMediaSvcInitSession(void)
-{
- VideoLogInfo("");
-
- if(media_content_connect() != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to connect to media content db.");
- }
- else
- {
- VideoLogInfo("Success to connect to media content db.");
- }
-}
-
-void MpUtilMediaSvcFinishSession(void)
-{
- VideoLogInfo("");
-
- if(media_content_disconnect() != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to disconnect from media content db.");
- return;
- }
-
-
- VideoLogInfo("Success to disconnect from media content db.");
- return;
-}
-
-bool MpUtilMediaSvcDestoryVideoItemList(void)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("VideoItemList is empty already.");
- return FALSE;
- }
-
- media_info_h pTmpVideoItem = NULL;
- EINA_LIST_FREE(VideoItemList, pTmpVideoItem)
- {
- if(pTmpVideoItem)
- {
- media_info_destroy(pTmpVideoItem);
- }
- }
-
- VideoItemList = NULL;
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcExtractVideoListFromFolder(char *szFolderPath, int nSortType)
-{
- if(VideoItemList)
- {
- VideoLogInfo("Already exist video list.");
- return FALSE;
- }
-
- if(!szFolderPath)
- {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- filter_h m_FilterHandle = NULL;
- media_folder_h m_FolderHandle = NULL;
- media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
-
- char *szFolderID = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
- char szOrderObj[STR_LEN_MAX] = {0};
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-
- switch(nSortType)
- {
- case MP_MEDIA_SORT_BY_NONE:
- case MP_MEDIA_SORT_BY_NAME_ASC:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_NAME_DESC:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_OLDEST:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- default:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- }
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and FOLDER_PATH = \"%s\"", szFolderPath);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetFolderCb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail media_folder_foreach_folder_from_db().");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(!m_FolderHandle)
- {
- VideoLogInfo("Fail to get folder handle.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get folder id.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- }
-
- if(szFolderID)
- {
- free(szFolderID);
- szFolderID = NULL;
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType)
-{
- if(VideoItemList)
- {
- VideoLogInfo("Already exist video list.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- filter_h m_FilterHandle = NULL;
- media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
- char szOrderObj[STR_LEN_MAX] = {0};
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-
- switch(nSortType)
- {
- case MP_MEDIA_SORT_BY_NONE:
- case MP_MEDIA_SORT_BY_NAME_ASC:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_NAME_DESC:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_OLDEST:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- default:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- }
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcExtractVideoListForListView(int nSortType)
-{
- if(VideoItemList)
- {
- VideoLogInfo("Already exist video list.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- filter_h m_FilterHandle = NULL;
- media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
- char szOrderObj[STR_LEN_MAX] = {0};
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-
- switch(nSortType)
- {
- case MP_MEDIA_SORT_BY_NONE:
- case MP_MEDIA_SORT_BY_NAME_ASC:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_NAME_DESC:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_OLDEST:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1);
- break;
-
- default:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- }
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType)
-{
- VideoLogInfo("");
-
- nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
-
- return MpUtilMediaSvcExtractVideoListForListView(nSortType);
-}
-
-bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType)
-{
- VideoLogInfo("");
-
- nWhatFileType = MP_MEDIA_CAMERA_FILE_TYPE;
-
- return MpUtilMediaSvcExtractVideoListForListView(nSortType);
-}
-
-bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName)
-{
- VideoLogInfo("");
-
- if(!szTagName)
- {
- VideoLogInfo("[ERR] No Exist tag name.");
- return FALSE;
- }
-
- if(VideoItemList)
- {
- VideoLogInfo("Already exist video list.");
- return FALSE;
- }
-
- VideoLogInfo("szTagName : %s", szTagName);
-
- int nTagID = 0;
- char szTmpStr[STR_LEN_MAX] = {0};
-
- media_tag_h pTagHandle = NULL;
- filter_h m_FilterHandle = NULL;
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- //snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%s\"", szTagName);//snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"\%%s\%\"", szTagName);
- snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%%%s%%\"", szTagName);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, TAG_NAME, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- if(media_tag_foreach_tag_from_db(m_FilterHandle, MpUtilMediaSvcIterateGetTagCb, &pTagHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail media_tag_foreach_tag_from_db().");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- if(!pTagHandle)
- {
- VideoLogInfo("Fail to get pTagHandle.");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- if(media_tag_get_tag_id(pTagHandle, &nTagID) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get tag ID.");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- VideoLogInfo("nTagID : %d", nTagID);
-
- memset(szTmpStr, 0, STR_LEN_MAX);
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
-
- if(media_tag_foreach_media_from_db(nTagID, m_FilterHandle, MpUtilMediaSvcIterateGetVideoItemOfTagCb, VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail media_tag_foreach_media_from_db().");
- if(m_FilterHandle)
- {
- media_filter_destroy(m_FilterHandle);
- m_FilterHandle = NULL;
- }
- return FALSE;
- }
- if(m_FilterHandle)
- {
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
- m_FilterHandle = NULL;
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType)
-{
- if(VideoItemList)
- {
- VideoLogInfo("Already exist video list.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- filter_h m_FilterHandle = NULL;
- media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
- char szOrderObj[STR_LEN_MAX] = {0};
- char szTmpStr[STR_LEN_MAX] = {0};
-
- nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-
- switch(nSortType)
- {
- case MP_MEDIA_SORT_BY_NONE:
- case MP_MEDIA_SORT_BY_NAME_ASC:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_NAME_DESC:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_OLDEST:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- default:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- }
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_FAVOURITE = 1");
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword)
-{
- if(VideoItemList)
- {
- VideoLogInfo("Already exist video list.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- filter_h m_FilterHandle = NULL;
- media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
- char szOrderObj[STR_LEN_MAX] = {0};
- char szTmpStr[STR_LEN_MAX] = {0};
-
- nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_TITLE like \"%%%s%%\"", keyword);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-void MpUtilMediaSvcDestoryVideoList(void)
-{
- VideoLogInfo("");
-
- if(VideoFolderList)
- {
- MpUtilMediaSvcDestoryVideoFolderList();
- VideoFolderList = NULL;
- }
-
- if(VideoItemList)
- {
- MpUtilMediaSvcDestoryVideoItemList();
- VideoItemList = NULL;
- }
-
- nTotalVideoTypeFiles = 0;
- nNumberOfVideoItemByType = 0;
-}
-
-bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath)
-{
- if(!szFilePath)
- {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- if(!VideoItemList)
- {
- VideoLogInfo("pList is empty already.");
- return FALSE;
- }
-
- VideoLogInfo("szFilePath : %s", szFilePath);
-
- char *szGetFilePath = NULL;
- media_info_h pItem = NULL;
- Eina_List *pIterateList = NULL;
- EINA_LIST_FOREACH(VideoItemList, pIterateList, pItem)
- {
- if(pItem)
- {
- if(media_info_get_file_path(pItem, &szGetFilePath) == MEDIA_CONTENT_ERROR_NONE)
- {
- if(szGetFilePath)
- {
- if(!strcmp(szGetFilePath, szFilePath))
- {
- VideoLogInfo("Find %s", szGetFilePath);
- char *szMediaID = NULL;
- media_info_get_media_id(pItem, &szMediaID);
- media_info_delete_from_db(szMediaID);
- VideoItemList = eina_list_remove(VideoItemList, pItem);
- media_info_destroy(pItem);
-
- nNumberOfVideoItemByType--;
- VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
-
- if(szMediaID)
- {
- free(szMediaID);
- }
-
- if(szGetFilePath)
- {
- free(szGetFilePath);
- }
-
- return TRUE;
- }
- }
- else
- {
- VideoLogInfo("No exist %s in media info Database module.", szFilePath);
- return FALSE;
- }
- }
- }
- }
- return FALSE;
-}
-
-bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex)
-{
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- if(!VideoItemList)
- {
- VideoLogInfo("pList is empty already.");
- return FALSE;
- }
-
- media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pItem)
- {
- char *szMediaID = NULL;
- media_info_get_media_id(pItem, &szMediaID);
- if(szMediaID)
- {
- media_info_delete_from_db(szMediaID);
- VideoItemList = eina_list_remove(VideoItemList, pItem);
- free(szMediaID);
- media_info_destroy(pItem);
- nNumberOfVideoItemByType--;
- VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
- }
- else
- {
- VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex);
- return FALSE;
- }
- }
- else
- {
- VideoLogInfo("Fail to remove item in media svc and list.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex)
-{
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- if(!VideoItemList)
- {
- VideoLogInfo("pList is empty already.");
- return FALSE;
- }
-
- media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pItem)
- {
- char *szMediaID = NULL;
- media_info_get_media_id(pItem, &szMediaID);
- if(szMediaID)
- {
- media_info_delete_from_db(szMediaID);
- free(szMediaID);
- nNumberOfVideoItemByType--;
- VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
- }
- else
- {
- VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex);
- return FALSE;
- }
- }
- else
- {
- VideoLogInfo("Fail to remove item in media svc and list.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID)
-{
- VideoLogInfo("");
-
- media_info_h pVideoItem = NULL;
- filter_h m_FilterHandle = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
- bool bRet = FALSE;
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- bRet = FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- bRet = FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- bRet = FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- bRet = FALSE;
- }
-
- if(pVideoItem)
- {
- char *szMediaID = NULL;
- media_info_get_media_id(pVideoItem, &szMediaID);
- if(szMediaID)
- {
- strncpy(szVideoID, szMediaID, STR_LEN_MAX-2);
- free(szMediaID);
- }
- media_info_destroy(pVideoItem);
- bRet = TRUE;
- }
- else
- {
- bRet = FALSE;
- }
-
- return bRet;
-}
-
-unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath)
-{
- if(!szPath)
- {
- VideoLogInfo("No exist video path.");
- return 0;
- }
-
- VideoLogInfo("szPath : %s", szPath);
-
- time_t LastPlayedTime = 0;
- media_info_h pVideoItem = NULL;
- filter_h m_FilterHandle = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- if(pVideoItem)
- {
- video_meta_h pVideoMetaHandle = NULL;
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
- {
- char *szTmpStr = NULL;
- video_meta_get_title(pVideoMetaHandle, &szTmpStr);
- if(szTmpStr)
- {
- VideoLogInfo("Title : %s", szTmpStr);
- free(szTmpStr);
- }
- else
- {
- VideoLogInfo("No exist title");
- }
-
- video_meta_get_played_time(pVideoMetaHandle, &LastPlayedTime);
- VideoLogInfo("Last Played Time : %d", LastPlayedTime);
- video_meta_destroy(pVideoMetaHandle);
- }
- media_info_destroy(pVideoItem);
- }
-
- return (unsigned int)LastPlayedTime;
-}
-
-unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath)
-{
- if(!szPath)
- {
- VideoLogInfo("No exist video path.");
- return 0;
- }
-
- VideoLogInfo("szPath : %s", szPath);
-
- int nDurationTime = 0;
- media_info_h pVideoItem = NULL;
- filter_h m_FilterHandle = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- if(pVideoItem)
- {
- video_meta_h pVideoMetaHandle = NULL;
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
- {
- video_meta_get_duration(pVideoMetaHandle, &nDurationTime);
- VideoLogInfo("Duration time : %d", nDurationTime);
- video_meta_destroy(pVideoMetaHandle);
- }
- media_info_destroy(pVideoItem);
- }
-
- return (unsigned int)nDurationTime;
-}
-
-int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath)
-{
- if(!szPath)
- {
- VideoLogInfo("No exist video path.");
- return 0;
- }
-
- VideoLogInfo("szPath : %s", szPath);
-
- unsigned long long nSize = 0;
- media_info_h pVideoItem = NULL;
- filter_h m_FilterHandle = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- if(pVideoItem)
- {
- media_info_get_size(pVideoItem, &nSize);
- VideoLogInfo("Video file size time : %d", nSize);
- media_info_destroy(pVideoItem);
- }
-
- return nSize;
-}
-
-char *MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri)
-{
- if(!szMediaUri)
- {
- VideoLogInfo("No exist video path.");
- return NULL;
- }
-
- VideoLogInfo("szPath : %s", szMediaUri);
-
- media_info_h pVideoItem = NULL;
- filter_h m_FilterHandle = NULL;
- char *szThumbnailPath = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- memset(szTmpStr, 0, STR_LEN_MAX);
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- if(pVideoItem)
- {
- media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath);
- VideoLogInfo("Video thumbnail file path : %s", szThumbnailPath);
- media_info_destroy(pVideoItem);
- }
-
- return szThumbnailPath;
-}
-
-void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime)
-{
- if(!szMediaUri)
- {
- VideoLogInfo("No exist media uri.");
- return;
- }
-
- VideoLogInfo("szMediaUri : %s, nLastPlayedTime : %d", szMediaUri, nLastPlayedTime);
-
- time_t LastPlayedTime = (time_t)nLastPlayedTime;
- media_info_h pVideoItem = NULL;
- filter_h m_FilterHandle = NULL;
- char szTmpStr[STR_LEN_MAX] = {0};
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri);
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return;
- }
-
- if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get video item list with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return;
- }
-
- video_meta_h pVideoMetaHandle = NULL;
-
- if(pVideoItem)
- {
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get pVideoMetaHandle.");
- }
- else
- {
- if(pVideoMetaHandle)
- {
- char *szTmpStr = NULL;
- video_meta_get_title(pVideoMetaHandle, &szTmpStr);
- if(szTmpStr)
- {
- VideoLogInfo("Title : %s", szTmpStr);
- free(szTmpStr);
- }
- else
- {
- VideoLogInfo("No exist title");
- }
-
- video_meta_set_played_time(pVideoMetaHandle, LastPlayedTime);
- video_meta_update_to_db(pVideoMetaHandle);
- video_meta_destroy(pVideoMetaHandle);
- VideoLogInfo("Last Played Time : %d", LastPlayedTime);
- }
- else
- {
- VideoLogInfo("No exist pVideoMetaHandle");
- }
- }
- media_info_destroy(pVideoItem);
- }
-}
-
-bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri, bool bLoop)
-{
- VideoLogInfo("");
-
- if(!szCurrMediaUri)
- {
- VideoLogInfo("[ERR] No exist current file path.");
- return FALSE;
- }
-
- if(!VideoItemList)
- {
- VideoLogInfo("No exist VideoItemList.");
- if(bLoop)
- {
- strncpy(szNextMediaUri, szCurrMediaUri, (sizeof(char) * STR_LEN_MAX) - 1);
- }
- return FALSE;
- }
-
- int nCount = 0;
- int nListSize = 0;
- media_info_h pVideoItem = NULL;
- Eina_List *pIterateList = NULL;
-
- memset(szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
- memset(szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
-
- nListSize = eina_list_count(VideoItemList);
-
- if(nListSize <= 1)
- {
- VideoLogInfo("Video list size == 1.");
- return FALSE;
- }
-
- EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
- {
- if(pVideoItem == NULL)
- {
- continue;
- }
-
- char *szVideoItemFilePath = NULL;
- media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
- if(szVideoItemFilePath)
- {
- VideoLogInfo("URL of the File item - %s (%d / %d)", szVideoItemFilePath, nCount, nListSize);
- if(!strcmp(szVideoItemFilePath, szCurrMediaUri))
- {
- free(szVideoItemFilePath);
- szVideoItemFilePath = NULL;
-
- pVideoItem = NULL;
- pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount - 1);
- if(pVideoItem)
- {
- media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
- strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
-
- free(szVideoItemFilePath);
- szVideoItemFilePath = NULL;
- }
- else if(bLoop)
- {
- media_info_h m_LastItem = (media_info_h)eina_list_nth(VideoItemList, nListSize - 1);
- VideoLogError("%p", m_LastItem);
- if(m_LastItem)
- {
- media_info_get_file_path(m_LastItem, &szVideoItemFilePath);
- strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
-
- free(szVideoItemFilePath);
- szVideoItemFilePath = NULL;
- }
- m_LastItem = NULL;
- }
-
- pVideoItem = NULL;
- pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount + 1);
- if(pVideoItem)
- {
- media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
- strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
-
- free(szVideoItemFilePath);
- szVideoItemFilePath = NULL;
- }
- else if(bLoop)
- {
- media_info_h m_FirstItem = (media_info_h)eina_list_nth(VideoItemList, 0);
- if(m_FirstItem)
- {
- media_info_get_file_path(m_FirstItem, &szVideoItemFilePath);
- strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
-
- free(szVideoItemFilePath);
- szVideoItemFilePath = NULL;
- }
- m_FirstItem = NULL;
- }
-
- VideoLogInfo("PreMediaUri:%s", szPreMediaUri);
- VideoLogInfo("NextMediaUri:%s", szNextMediaUri);
-
- return TRUE;
- }
- }
-
- ++nCount;
- }
-
- return FALSE;
-}
-
-char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
- {
- VideoLogInfo("Error number of list item.");
- return NULL;
- }
-
- char *szVideoItemFilePath = NULL;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pVideoItem)
- {
- media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
- VideoLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath);
- }
-
- return szVideoItemFilePath;
-}
-
-char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
- {
- VideoLogInfo("Error number of list item.");
- return NULL;
- }
-
- char *szVideoItemThumbnailPath = NULL;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pVideoItem)
- {
- media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath);
- VideoLogInfo("szVideoItemFilePath : %s", szVideoItemThumbnailPath);
- }
-
- return szVideoItemThumbnailPath;
-}
-
-char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
- {
- VideoLogInfo("Error number of list item.");
- return NULL;
- }
-
- char *szTitle = NULL;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pVideoItem)
- {
- media_info_get_display_name(pVideoItem, &szTitle);
- VideoLogInfo("szTitle : %s", szTitle);
- }
-
- return szTitle;
-}
-
-int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
- {
- VideoLogInfo("Error number of list item.");
- return 0;
- }
-
- int nDurationTime = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pVideoItem)
- {
- video_meta_h pVideoMetaHandle = NULL;
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
- {
- video_meta_get_duration(pVideoMetaHandle, &nDurationTime);
- VideoLogInfo("Duratiob time : %d", nDurationTime);
- video_meta_destroy(pVideoMetaHandle);
- }
- }
-
- return nDurationTime;
-}
-
-int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- time_t nLastPlayedTime = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
-
- if(pVideoItem)
- {
- video_meta_h pVideoMetaHandle = NULL;
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
- {
- video_meta_get_played_time(pVideoMetaHandle, &nLastPlayedTime);
- VideoLogInfo("Last Play time : %d", nLastPlayedTime);
- video_meta_destroy(pVideoMetaHandle);
- }
- }
-
- return (int)nLastPlayedTime;
-}
-
-int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- unsigned long long nSize = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
- if(pVideoItem)
- {
- media_info_get_size(pVideoItem, &nSize);
- VideoLogInfo("Video file size time : %d", nSize);
- }
-
- return nSize;
-}
-
-int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- int nWidth = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
- video_meta_h pVideoMetaHandle = NULL;
-
- if(pVideoItem)
- {
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get pVideoMetaHandle.");
- }
- else
- {
- if(pVideoMetaHandle)
- {
- char *szTmpStr = NULL;
- video_meta_get_title(pVideoMetaHandle, &szTmpStr);
- if(szTmpStr)
- {
- VideoLogInfo("Title : %s", szTmpStr);
- free(szTmpStr);
- }
- else
- {
- VideoLogInfo("No exist title");
- }
-
- video_meta_get_width(pVideoMetaHandle, &nWidth);
- video_meta_destroy(pVideoMetaHandle);
- VideoLogInfo("Video Width : %f", nWidth);
- }
- else
- {
- VideoLogInfo("No exist pVideoMetaHandle");
- }
- }
- }
-
- return nWidth;
-}
-
-int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- int nHeight = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
- video_meta_h pVideoMetaHandle = NULL;
-
- if(pVideoItem)
- {
- if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get pVideoMetaHandle.");
- }
- else
- {
- if(pVideoMetaHandle)
- {
- char *szTmpStr = NULL;
- video_meta_get_title(pVideoMetaHandle, &szTmpStr);
- if(szTmpStr)
- {
- VideoLogInfo("Title : %s", szTmpStr);
- free(szTmpStr);
- }
- else
- {
- VideoLogInfo("No exist title");
- }
-
- video_meta_get_height(pVideoMetaHandle, &nHeight);
- video_meta_destroy(pVideoMetaHandle);
- VideoLogInfo("Video Width : %f", nHeight);
- }
- else
- {
- VideoLogInfo("No exist pVideoMetaHandle");
- }
- }
- }
-
- return nHeight;
-}
-
-time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- time_t nDateTime = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
- if(pVideoItem)
- {
- media_info_get_modified_time(pVideoItem, &nDateTime);
- VideoLogInfo("Video date time : %d", nDateTime);
- }
-
- return nDateTime;
-}
-
-char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- return NULL;
-}
-
-double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- double nLongitude = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
- if(pVideoItem)
- {
- media_info_get_longitude(pVideoItem, &nLongitude);
- VideoLogInfo("nLongitude : %f", nLongitude);
- }
-
- return nLongitude;
-}
-
-double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
- double nLatitude = 0;
- media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
- if(pVideoItem)
- {
- media_info_get_latitude(pVideoItem, &nLatitude);
- VideoLogInfo("nLongitude : %f", nLatitude);
- }
-
- return nLatitude;
-}
-
-
-
-
-int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("");
-
- return (int)eina_list_count(VideoItemList);
-}
-
-int MpUtilMediaSvcGetNumberOfVideoItemByType(void)
-{
- VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
-
- return nNumberOfVideoItemByType;
-}
-
-int MpUtilMediaSvcGetTotalVideoTypeFiles(void)
-{
- VideoLogInfo("nTotalVideoTypeFiles : %d", nTotalVideoTypeFiles);
-
- return (int)nTotalVideoTypeFiles;
-}
-
-void* MpUtilMediaSvcGetVideoitem(const int nVideoItemIndex)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return NULL;
- }
-
- if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
- {
- VideoLogInfo("Error number of list item.");
- return NULL;
- }
-
- VideoLogInfo("");
-
- return (void*)eina_list_nth(VideoItemList, nVideoItemIndex);
-}
-
-void MpUtilMediaSvcPrintListInfo(void)
-{
- if(!VideoItemList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return;
- }
-
- VideoLogInfo("List size : %d", MpUtilMediaSvcGetNumberOfVideoItemByType());
-
- media_info_h pVideoItem = NULL;
- Eina_List *pIterateList = NULL;
- int nCounter = 0;
- EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
- {
- if(pVideoItem)
- {
- char *szTitle = NULL;
- media_info_get_display_name(pVideoItem, &szTitle);
- if(szTitle)
- {
- VideoLogInfo("%d - Print title of all list items : %s", nCounter, szTitle);
- free(szTitle);
- }
- else
- {
- VideoLogInfo("%d - Print title of all list items : NULL.", nCounter);
- }
- nCounter++;
- }
- }
-}
-
-int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath)
-{
- if(!VideoItemList || !szPath)
- {
- VideoLogInfo("[ERR] No exist VideoItemList or szPath.");
- return 99999;
- }
-
- VideoLogInfo("");
-
- unsigned int nCounter = 0;
-
- Eina_List *pCurList = NULL;
- media_info_h pVideoItem = NULL;
-
- EINA_LIST_FOREACH(VideoItemList, pCurList, pVideoItem)
- {
- if(pVideoItem)
- {
- char *szTitle = NULL;
- media_info_get_display_name(pVideoItem, &szTitle);
- VideoLogInfo("szTitle : %s", szTitle);
-
- if(!strcmp(szTitle , szPath))
- {
- VideoLogInfo("Find same file url. index : %d", nCounter);
- free(szTitle);
- return nCounter;
- }
- free(szTitle);
- }
-
- nCounter++;
- }
-
- return 99999;
-}
-
-bool MpUtilMediaSvcExtractVideoFolderList(int nSortType)
-{
- VideoLogInfo("");
-
- filter_h m_FilterHandle = NULL;
- media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
-
- char szTmpStr[STR_LEN_MAX] = {0};
- char szOrderObj[STR_LEN_MAX] = {0};
-
- switch(nSortType)
- {
- case MP_MEDIA_SORT_BY_NONE:
- case MP_MEDIA_SORT_BY_NAME_ASC:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_NAME_DESC:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
- nOrderType = MEDIA_CONTENT_ORDER_DESC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- case MP_MEDIA_SORT_BY_OLDEST:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
- break;
-
- default:
- nOrderType = MEDIA_CONTENT_ORDER_ASC;
- strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
- }
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
- if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForFolderListCb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail media_folder_foreach_folder_from_db().");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- }
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcDestoryVideoFolderList(void)
-{
- if(!VideoFolderList)
- {
- VideoLogInfo("VideoFolderList is empty already.");
- return FALSE;
- }
-
- media_folder_h pTmpFolderItem = NULL;
- EINA_LIST_FREE(VideoFolderList, pTmpFolderItem)
- {
- if(pTmpFolderItem)
- {
- media_folder_destroy(pTmpFolderItem);
- }
- }
-
- VideoFolderList = NULL;
-
- return TRUE;
-}
-
-int MpUtilMediaSvcGetVideoFolderListSize(void)
-{
- if(!VideoFolderList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("");
-
- if(VideoFolderList)
- {
- return (int)eina_list_count(VideoFolderList);
- }
-
- return 0;
-}
-
-char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex)
-{
- if(!VideoFolderList)
- {
- VideoLogInfo("Not exist video folder list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex);
-
- if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize())
- {
- VideoLogInfo("Error number of list item.");
- return NULL;
- }
-
- char *szFolderName = NULL;
- media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
- if(pFolderItem)
- {
- media_folder_get_name(pFolderItem, &szFolderName);
-
- if(szFolderName)
- {
- VideoLogInfo("szFolderName : %s", szFolderName);
- return szFolderName;
- }
- }
-
- return NULL;
-}
-
-char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex)
-{
- if(!VideoFolderList)
- {
- VideoLogInfo("Not exist video item list handle.");
- return 0;
- }
-
- VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex);
-
- if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize())
- {
- VideoLogInfo("Error number of list item.");
- return NULL;
- }
-
- char *szFolderPath = NULL;
- media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
- if(pFolderItem)
- {
- media_folder_get_path(pFolderItem, &szFolderPath);
-
- if(szFolderPath)
- {
- VideoLogInfo("szFolderPath : %s", szFolderPath);
- return szFolderPath;
- }
- }
-
- return NULL;
-}
-
-static bool MpUtilMediaSvcBookmarkItemCb(media_bookmark_h pBookmark, void *pUserData)
-{
- VideoLogInfo("");
-
- media_bookmark_h pAssignBookmark = NULL;
- media_bookmark_clone(&pAssignBookmark, pBookmark);
-
- GList **pList = (GList**)pUserData;
- *pList = g_list_append(*pList, pAssignBookmark);
-
- return TRUE;
-}
-
-bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list)
-{
- if(!vid)
- {
- VideoLogInfo("No exist vid.");
- return FALSE;
- }
-
- if(!list)
- {
- VideoLogInfo("No exist list.");
- return FALSE;
- }
-
- VideoLogInfo("vid : %s", vid);
-
- filter_h m_FilterHandle = NULL;
-
- if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to create media filter handle.");
- return FALSE;
- }
-
- if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to set order.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_info_foreach_bookmark_from_db(vid, m_FilterHandle, MpUtilMediaSvcBookmarkItemCb, list) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to get bookmark of video item with filter condition.");
- media_filter_destroy(m_FilterHandle);
- return FALSE;
- }
-
- if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("Fail to destroy media filter handle.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-void MpUtilMediaSvcBookmarkListClear(GList *pList)
-{
- VideoLogInfo("");
-
- if(pList == NULL)
- {
- VideoLogInfo("list == NULL\n");
- return;
- }
-
- media_bookmark_h pBookmarkItem = NULL;
-
- int nCount = 0;
- int i = 0;
-
- nCount = g_list_length(pList);
- for(i = 0; i < nCount; i++)
- {
- pBookmarkItem = (void *)g_list_nth_data(pList, i);
- if(pBookmarkItem)
- {
- media_bookmark_destroy(pBookmarkItem);
- pBookmarkItem = NULL;
- }
- }
-
- g_list_free(pList);
-}
-
-int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path)
-{
- VideoLogInfo("");
- int ret = 0;
-
- if(vid < 0 || path == NULL)
- {
- VideoLogInfo("Invalid Parameter : %d, %s", vid, path);
- return -1;
- }
-
- if(media_bookmark_insert_to_db(vid, position, path) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("minfo_add_bookmark ERR : %d", ret);
- return -1;
- }
-
- return 0;
-}
-
-int MpUtilMediaSvcBookmarkDelete(char *vid, int position)
-{
- VideoLogInfo("");
- bool ret = 0;
-
- int bookmarkid = 0;
- char *path = NULL;
-
- GList *list = NULL;
- media_bookmark_h data = NULL;
- Eina_List *l = NULL;
-
- ret = MpUtilMediaSvcBookmarkListGet(vid, &list);
- if(ret == FALSE)
- {
- return -1;
- }
-
- EINA_LIST_FOREACH((Eina_List *)list, l, data)
- {
- if(data)
- {
- time_t nMarkedTime;
- media_bookmark_get_marked_time(data, &nMarkedTime);
- if(position == nMarkedTime)
- {
- media_bookmark_get_bookmark_id(data, &bookmarkid);
- media_bookmark_get_thumbnail_path(data, &path);
- break;
- }
- }
- }
-
- MpUtilMediaSvcBookmarkListClear(list);
-
- if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("[ERR] media_bookmark_delete_from_db()");
- if(path)
- {
- free(path);
- path = NULL;
- }
- return -1;
- }
-
- if(path == NULL)
- {
- VideoLogError("Thumbnail path is NULL");
- return -1;
- }
-
- ecore_file_init();
- if(ecore_file_exists(path))
- {
- if(ecore_file_remove(path))
- {
- VideoLogInfo("Remove success :%s\n", path);
- }
- else
- {
- VideoLogInfo("Remove Failed :%s \n", path);
- }
- }
- else
- {
- VideoLogInfo("The file not eixst :%s\n", path);
- }
-
- ecore_file_shutdown();
-
- if(path)
- {
- free(path);
- path = NULL;
- }
-
- return 0;
-}
-
-int MpUtilMediaSvcBookmarkDeleteAll(char *vid)
-{
- VideoLogInfo("");
- bool ret = 0;
-
- int bookmarkid = 0;
-
- GList *list = NULL;
- media_bookmark_h data = NULL;
- Eina_List *l = NULL;
- char *szThumbnailPath = NULL;
-
- ret = MpUtilMediaSvcBookmarkListGet(vid, &list);
- if(ret == FALSE)
- {
- return -1;
- }
-
- EINA_LIST_FOREACH((Eina_List *)list, l, data)
- {
- if(data)
- {
- media_bookmark_get_bookmark_id(data, &bookmarkid);
- media_bookmark_get_thumbnail_path(data, &szThumbnailPath);
-
- if(szThumbnailPath)
- {
- ecore_file_init();
- if(ecore_file_exists(szThumbnailPath))
- {
- if(ecore_file_remove(szThumbnailPath))
- {
- VideoLogInfo("Remove success : %s", szThumbnailPath);
- }
- else
- {
- VideoLogInfo("Remove Failed : %s", szThumbnailPath);
- }
- }
- else
- {
- VideoLogInfo("The file not eixst :%s", szThumbnailPath);
- }
- ecore_file_shutdown();
- }
-
- if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE)
- {
- VideoLogInfo("[ERR]minfo_delete_bookmark");
- return -1;
- }
- }
- }
-
- MpUtilMediaSvcBookmarkListClear(list);
-
- return 0;
-}
-
-char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle)
-{
- char *szThumbnailPath = NULL;
-
- media_bookmark_get_thumbnail_path((media_bookmark_h)pBookmarkItemHandle, &szThumbnailPath);
-
- return szThumbnailPath;
-}
-
-int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle)
-{
- time_t nBookmarkTime;
-
- media_bookmark_get_marked_time((media_bookmark_h)pBookmarkItemHandle, &nBookmarkTime);
-
- return (int)nBookmarkTime;
-}
diff --git a/src/mp-util.c b/src/mp-util.c
deleted file mode 100755
index 07267f6..0000000
--- a/src/mp-util.c
+++ /dev/null
@@ -1,1649 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-// CAPI
-#include <app.h>
-#include <sound_manager.h>
-
-#include <aul.h>
-#include <glib.h>
-#include <errno.h>
-#include <vconf.h>
-#include <pmapi.h>
-#include <utilX.h>
-#include <unistd.h>
-#include <E_DBus.h>
-#include <signal.h>
-#include <Ecore_X.h>
-#include <ui-gadget.h>
-#include <Ecore_Evas.h>
-#include <vconf-keys.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "mp-util-media-service.h"
-#include "mp-video-type-define.h"
-#include "mp-video-value-define.h"
-#include "mp-video-string-define.h"
-//#include "mp-video-info-ctrl.h"
-
-#define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME "org.tizen.bluetooth"
-
-#define MP_UTIL_USER_AGENT_KEY "db/admin/uagent"
-//#define MP_UTIL_TEMP_USER_AGENT_VALUE "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
-#define MP_UTIL_TEMP_USER_AGENT_VALUE "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/1.0; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B"
-#define MP_UTIL_MMC_PATH "/opt/storage/sdcard"
-#define MP_UTIL_FILE_PREFIX "file://"
-
-#define MP_UTIL_ALLSHARE_CHANGE_NOTI "memory/allshare/status"
-#define MP_UTIL_ALLSHARE_NOTI_ON 1
-#define MP_UTIL_ALLSHARE_NOTI_OFF 0
-
-#define MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS "db/private/org.tizen.video-player/preview_url_videos"
-#define MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS "db/private/org.tizen.video-player/preview_url_records"
-
-static bool bAlphaSet = TRUE;
-
-static Ecore_X_Window pMainXwindow = 0;
-static Ecore_X_Display *pX11DisplayHandle = NULL;
-
-static Evas_Object *pPopUpHandle = NULL;
-static Evas_Object *pPopupWindow = NULL;
-
-static MpVideoRotateType nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
-
-/*
- * Callback function
- */
-
-static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData)
-{
- VideoLogInfo("");
-
- int nLowBatteryStatus = 0;
-
- if (!pUserData) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!vconf_get_int
- (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
- if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
- /* MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpUtilBatteryExitCb); */
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- return;
- }
- } else {
- VideoLogInfo("Fail to get vconf");
- }
-}
-
-static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData)
-{
- VideoLogInfo("");
-
- char szFilename[9] = { 0 };
-
- if (!pUserData || !pKeyNode) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- char *keyname = vconf_keynode_get_name(pKeyNode);
- if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) {
- int nMMCState = vconf_keynode_get_int(pKeyNode);
- if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) {
- strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1);
- VideoLogInfo("FILE NAME[%s]", szFilename);
- if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) {
- /* MpUtilNotifyPopUp(pAppData, "MMC card is ejected", NULL); */
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
- }
- } else {
- VideoLogInfo("Fail to get vconf");
- }
-}
-
-
-static void MpUtilSoundMgrVolumeChangeCb(sound_type_e nType, unsigned int nVolume, void *pUserData)
-{
- VideoLogInfo("");
-
- //char szFilename[9] = { 0 };
-
- if (!pUserData ) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- if(nType != (sound_type_e)VOLUME_KEY_TYPE_MEDIA)
- {
- return;
- }
-
- bool bMute = FALSE;
-
- if(nVolume == 0)
- {
- bMute = TRUE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute(pAppData, bMute);
-
-}
-/*
- * External function
- */
-
-void MpUtilExitVideoPlayer(void)
-{
- VideoLogInfo("");
-
- elm_exit();
-}
-
-static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject,
- void *pEvent)
-{
- VideoLogInfo("");
-
- MpUtilExitVideoPlayer();
-}
-
-void MpUtilResetForRelaunching(void)
-{
- VideoLogInfo("");
-
- pX11DisplayHandle = NULL;
- pPopUpHandle = NULL;
- pPopupWindow = NULL;
-}
-
-void MpUtilSetAlphaOfMainWindow(bool bSetAlpha)
-{
- VideoLogInfo("");
-
- if(bSetAlpha)
- {
- }
- else
- {
- }
- bAlphaSet = bSetAlpha;
-}
-
-void *MpUtilCreateMainWindow(const char *pStrName)
-{
- VideoLogInfo("");
-
- if (!pStrName) {
- VideoLogInfo("[ERR] No exist pStrName.");
- return NULL;
- }
-
- if (pMainXwindow) {
- evas_object_del((Evas_Object *)pMainXwindow);
- pMainXwindow = 0;
- }
-
- Evas_Object *pEvasObject;
-
- pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
- if (pEvasObject) {
- elm_win_title_set(pEvasObject, pStrName);
- evas_object_smart_callback_add(pEvasObject, "delete,request",
- MpUtilDestroyMainWindow, NULL);
- elm_win_borderless_set(pEvasObject, EINA_FALSE);
- }
-
- Evas *pEvas = evas_object_evas_get(pEvasObject);
- Evas_Object *pMainRect = evas_object_rectangle_add(pEvas);
-
- if (pMainRect)
- {
- evas_object_size_hint_weight_set(pMainRect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_color_set(pMainRect, 0, 0, 0, 0);
- evas_object_render_op_set(pMainRect, EVAS_RENDER_COPY);
- evas_object_show(pMainRect);
- elm_win_resize_object_add(pEvasObject, pMainRect);
- }
- pMainXwindow = elm_win_xwindow_get(pEvasObject);
-
- return (void *)pEvasObject;
-}
-
-int MpUtilSetKeyGrab(const char *szKeyName, int nGrabMode)
-{
- VideoLogInfo("");
- if (!pX11DisplayHandle) {
- pX11DisplayHandle = ecore_x_display_get();
- }
-
- if (!pMainXwindow) {
- VideoLogInfo("Not exist pMainXwindow.");
- }
-
- utilx_grab_key(pX11DisplayHandle, pMainXwindow, szKeyName, nGrabMode);
- return TRUE;
-}
-
-int MpUtilSetKeyUngrab(const char *szKeyName)
-{
- VideoLogInfo("");
- if (pMainXwindow && pX11DisplayHandle) {
- utilx_ungrab_key(pX11DisplayHandle, pMainXwindow, szKeyName);
- }
- return TRUE;
-}
-
-
-bool MpUtilCheckRTSPType(char *szUriPath)
-{
- if(szUriPath == NULL) {
- VideoLogInfo("ERR:");
- return FALSE;
- }
-
- //VideoLogInfo(" URI : %s", szUriPath);
-
- if (strstr(szUriPath, "rtp"))
- return TRUE;
- else if (strstr(szUriPath, "rtsp"))
- return TRUE;
-
- return FALSE;
-}
-
-int MpUtilCheckUriType(char *szUriPath)
-{
- if(szUriPath == NULL) {
- VideoLogInfo("ERR:");
- return FALSE;
- }
-
- VideoLogInfo(" URI : %s", szUriPath);
-
- if (strstr(szUriPath, "rtp"))
- return 1;
- else if (strstr(szUriPath, "rtsp"))
- return 1;
- else if (strstr(szUriPath, "http"))
- return 1;
- else if (strstr(szUriPath, "https"))
- return 1;
-
- return 0;
-}
-
-bool MpUtilCheckLocalFileExist(char *uri)
-{
- VideoLogInfo("");
-
- if(uri == NULL)
- {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- if(strstr(uri,MP_UTIL_FILE_PREFIX))
- {
- if (!g_file_test(uri+strlen(MP_UTIL_FILE_PREFIX), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
- {
- return FALSE;
- }
- return TRUE;
- }
- else
- {
- if(!g_file_test(uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
- {
- return FALSE;
- }
- return TRUE;
- }
-}
-
-bool MpUtilCheckBatteryStatus(void)
-{
- VideoLogInfo("");
-
- int nLowBatteryStatus = 0;
-
- if (!vconf_get_int
- (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
- if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-int MpUtilBatteryStatusNoti(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-
- if(!pAppData)
- {
- VideoLogInfo("[ERR] No exist appdata.");
- return FALSE;
- }
-
- if(vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, MpUtilBatteryStatusChangeCb, pAppData))
- {
- VideoLogInfo("[ERR] Fail to set Battery notification.");
- /* return FALSE; */
- }
-
- return TRUE;
-}
-
-int MpUtilBatteryStatusNotiIgnore(void)
-{
- VideoLogInfo("");
-
- if (vconf_ignore_key_changed
- (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
- MpUtilBatteryStatusChangeCb) < 0) {
- VideoLogInfo("[ERR] Fail to ignore battery status.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-int MpUtilMMCstatusNoti(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-
- if (!pAppData) {
- VideoLogInfo("[ERR] No exist appdata.");
- return FALSE;
- }
-
- if (vconf_notify_key_changed
- (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb,
- pAppData) < 0) {
- VideoLogInfo("[ERR] Fail to set MMC notification.");
- //return FALSE;
- }
-
- return TRUE;
-}
-
-int MpUtilMMCstatusNotiIgnore(void)
-{
- VideoLogInfo("");
-
- if (vconf_ignore_key_changed
- (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) {
- VideoLogInfo("[ERR] Fail to ignore MMC status.");
- //return FALSE;
- }
-
- return TRUE;
-}
-
-int MpUtilGetRotationStateFromAppcore(void)
-{
- VideoLogInfo("");
- int bLocked = -1;
-
- if (vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &bLocked) != 0)
- {
- VideoLogInfo("Get vlalue fail");
- return nCurRotateValue;
- }
-
- if(bLocked == false)
- {
- switch(app_get_device_orientation())
- {
- case APP_DEVICE_ORIENTATION_0:
- VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
- nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL;
- break;
-
- case APP_DEVICE_ORIENTATION_90:
- VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
- nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_REVERSE;
- break;
-
- case APP_DEVICE_ORIENTATION_180:
- VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
- nCurRotateValue = VIDEO_ROTATE_PORTRAIT_REVERSE;
- break;
-
- case APP_DEVICE_ORIENTATION_270:
- VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
- nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_NORMAL;
- break;
- }
- }
- return nCurRotateValue;
-}
-
-int MpUtilGetRotationState(void)
-{
- VideoLogInfo("");
-
- return nCurRotateValue;
-}
-
-void MpUtilSetRotationState(int nCurRotation)
-{
- VideoLogInfo("");
-
- nCurRotateValue = nCurRotation;
-
- if (pPopupWindow) {
- MpUtilRotateWindow(nCurRotation, pPopupWindow);
- }
-}
-
-bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle, int nLengthTitle)
-{
- VideoLogInfo("");
-
- if (!szFilepath || !szTitle) {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- char *szTitleName;
- char *szExt;
-
- memset(szTitle, 0, nLengthTitle);
-
- szTitleName = strrchr(szFilepath, '/');
-
- if (szTitleName)
- szTitleName++;
- else
- szTitleName = szFilepath;
-
- szExt = strrchr(szTitleName, '.');
-
- if (szExt) {
- int nTmpStringSize = szExt - szTitleName;
- strncpy(szTitle, szTitleName, nTmpStringSize);
- } else {
- strncpy(szTitle, szTitleName, STR_LEN_MAX - 1);
- }
-
- return TRUE;
-}
-
-void MpUtilInitSession(void)
-{
- VideoLogInfo("");
-
- sound_manager_set_session_type(SOUND_SESSION_TYPE_EXCLUSIVE);
-}
-
-void MpUtilFinishSession(void)
-{
- VideoLogInfo("");
- //sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
-}
-
-void MpUtilVolumeTypeSet(void)
-{
- VideoLogInfo("");
-
- sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
-}
-
-void MpUtilVolumeTypeUnset(void)
-{
- VideoLogInfo("");
-
- sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
-}
-
-bool MpUtilCheckMuteStatus()
-{
- VideoLogInfo("");
-
- int nVolume = 0;
- int nRet = 0;
- nRet = sound_manager_get_volume(VOLUME_KEY_TYPE_MEDIA, &nVolume);
- if(nRet != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogError("sound_manager_get_volume fail : %d", nRet);
- return FALSE;
- }
-
- if(nVolume == 0)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-bool MpUtilSetVolumeChangeCbSet(void *pUserData)
-{
- int ret = 0;
- VideoLogInfo("");
-
- ret = sound_manager_set_volume_changed_cb(MpUtilSoundMgrVolumeChangeCb, pUserData);
- if(ret != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogError("sound_manager_set_volume_changed_cb fail : %d", ret);
- return FALSE;
- }
-
- return TRUE;
-}
-void MpUtilSetVolumeChangeCbUnset()
-{
- VideoLogInfo("");
-
- sound_manager_unset_volume_changed_cb();
-
-}
-
-void MpUtilDeletePopupHandle(void)
-{
- VideoLogInfo("");
-
- if (pPopUpHandle) {
- evas_object_del(pPopUpHandle);
- pPopUpHandle = NULL;
- } else {
- VideoLogInfo("No exist popup.");
- }
-
- if (pPopupWindow) {
- evas_object_del(pPopupWindow);
- pPopupWindow = NULL;
- } else {
- VideoLogInfo("No exist popup window.");
- }
-
- MpUtilSetAlphaOfMainWindow(TRUE);
-}
-
-bool MpUtilNotifyPopUp(VideoAppData *pAppData, char *szContents, void *PopupButtonCallbackFunc)
-{
- VideoLogInfo("");
-
- if (pAppData == NULL || szContents == NULL) {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
-
- MpUtilDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
- evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(pPopUpHandle, szContents);
- elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR);
- elm_popup_timeout_set(pPopUpHandle, 3.0);
-
- if(PopupButtonCallbackFunc)
- {
- evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
- }
-
- if(pPopupWindow)
- {
- MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow);
- }
-
- evas_object_show(pPopUpHandle);
-
- return TRUE;
-}
-
-bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,
- void *PopupButtonCallbackFunc)
-{
- VideoLogInfo("");
-
- if (pAppData == NULL || szContents == NULL) {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
-
- MpUtilDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
- evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(pPopUpHandle, szContents);
- elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR);
- elm_popup_timeout_set(pPopUpHandle, 3.0);
-
- if (PopupButtonCallbackFunc) {
- evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
- }
-
- evas_object_show(pPopUpHandle);
-
- return TRUE;
-}
-
-
-bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc)
-{
- VideoLogInfo("");
-
- if(szTitle == NULL || szContents == NULL || pAppData == NULL)
- {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
-
- Evas_Object *pButton = NULL;
-
- MpUtilDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
- evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(pPopUpHandle, szContents);
- elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
-
- pButton = elm_button_add(pPopUpHandle);
- elm_object_style_set ( pButton, "popup_button/default");
- elm_object_text_set(pButton, MP_COM_SK_YES);
- elm_object_part_content_set(pPopUpHandle, "button1", pButton);
-
- if(PopupYesButtonCallbackFunc)
- {
- evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData);
- }
-
- pButton = elm_button_add(pPopUpHandle);
- elm_object_text_set(pButton, MP_COM_SK_NO);
- elm_object_style_set ( pButton, "popup_button/default");
- elm_object_part_content_set(pPopUpHandle, "button2", pButton);
-
- if(PopupNoButtonCallbackFunc)
- {
- evas_object_smart_callback_add(pButton, "clicked", PopupNoButtonCallbackFunc, (void*)pAppData);
- }
-
- //elm_popup_timeout_set(pPopUpHandle, 3.0);
-
- evas_object_show(pPopUpHandle);
-
- return TRUE;
-}
-
-bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData)
-{
- VideoLogInfo("");
-
- if(pAppData == NULL)
- {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
-
- Evas_Object *pButton = NULL;
-
- MpUtilDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
- evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_BODY_DELETE_Q);
-
- pButton = elm_button_add(pPopUpHandle);
- elm_object_text_set(pButton, MP_COM_BODY_DELETE);
- elm_object_style_set(pButton, "sweep/delete");
- elm_object_part_content_set(pPopUpHandle, "button1", pButton);
-
- if(PopupDeleteButtonCallbackFunc)
- {
- evas_object_smart_callback_add(pButton, "clicked", PopupDeleteButtonCallbackFunc, pUserData);
- }
-
- pButton = elm_button_add(pPopUpHandle);
- elm_object_text_set(pButton, MP_COM_BUTTON_CANCEL);
- elm_object_part_content_set(pPopUpHandle, "button2", pButton);
-
- if(PopupCancelButtonCallbackFunc)
- {
- evas_object_smart_callback_add(pButton, "clicked", PopupCancelButtonCallbackFunc, pUserData);
- }
-
- //elm_popup_timeout_set(pPopUpHandle, 3.0);
-
- evas_object_show(pPopUpHandle);
-
- return TRUE;
-}
-
-void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString)
-{
- VideoLogInfo("");
-
- Evas_Object *pLabel = NULL;
-
- pLabel = elm_label_add(pBox);
- elm_object_style_set(pLabel, "popup/default");
- elm_object_text_set(pLabel, szString);
- elm_label_ellipsis_set(pLabel, EINA_TRUE);
- elm_label_wrap_width_set(pLabel, 614 * elm_config_scale_get());
- evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_min_set(pLabel, 614 * elm_config_scale_get(), 35 * elm_config_scale_get());
- elm_box_pack_end(pBox, pLabel);
- evas_object_show(pLabel);
-}
-
-/*bool MpUtilDetailPopup(VideoAppData *pAppData, int nVideoItemIndex, char *szTitle, void *PopupButtonCallbackFunc)
-{
- VideoLogInfo("");
-
- if(szTitle == NULL || pAppData == NULL)
- {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
- char *szFilePath = NULL;
- char *szVideoTitle = NULL;
-
- char szTmpStr[STR_LEN_MAX] = {0};
- char szTmpFileDate[STR_LEN_MAX] = {0};
- char szTmpFileExtension[STR_LEN_MAX] = {0};
- char szTmpFileSize[STR_LEN_MAX] = {0};
-
- double nLongtitude = 0.0;
- double nLatitude = 0.0;
-
- int nWidth = 0;
- int nHeight = 0;
-
- Evas_Object *pBox = NULL;
- Evas_Object *pButton = NULL;
-
- MpUtilDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
- evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- szFilePath = MpUtilMediaSvcGetVideoUrl(nVideoItemIndex);
- szVideoTitle = MpUtilMediaSvcGetVideoTitle(nVideoItemIndex);
- nWidth = MpUtilMediaSvcGetVideoItemWidth(nVideoItemIndex);
- nHeight = MpUtilMediaSvcGetVideoItemHeight(nVideoItemIndex);
-
- MpVideoInfoCtrlGetFileInfo(szFilePath, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX);
- MpVideoInfoCtrlGetGPS(szFilePath, &nLongtitude, &nLatitude);
-
- pBox = elm_box_add(pPopUpHandle);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s </align></font_size>", MP_COM_BODY_DETAILS_TITLE, szVideoTitle);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_BODY_FORMAT, szTmpFileExtension);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_POP_DATE, szTmpFileDate);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", MP_COM_BODY_SIZE, szTmpFileSize);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %d x %d</align></font_size>", MP_IDLE_BODY_RESOLUTION, nWidth, nHeight);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LATITUDE), nLatitude);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LONGITUTD), nLongtitude);
- MpUtilSetLabelForDetail(pBox, szTmpStr);
- memset(szTmpStr, 0, STR_LEN_MAX);
-
- elm_object_content_set(pPopUpHandle, pBox);
-
- elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
- pButton = elm_button_add(pPopUpHandle);
- elm_object_style_set (pButton, "popup_button/default");
- elm_object_text_set(pButton, MP_COM_SK_BACK);
- elm_object_part_content_set(pPopUpHandle, "button1", pButton);
-
- if(szFilePath)
- {
- free(szFilePath);
- szFilePath = NULL;
- }
-
- if(szVideoTitle)
- {
- free(szVideoTitle);
- szVideoTitle = NULL;
- }
-
- if(PopupButtonCallbackFunc)
- {
- evas_object_smart_callback_add(pButton, "clicked", PopupButtonCallbackFunc, (void*)pAppData);
- }
-
- evas_object_show(pPopUpHandle);
-
- return TRUE;
-}*/
-
-bool MpUtilProgressPopUp(VideoAppData *pAppData, char *szLabel)
-{
- VideoLogInfo("");
-
- if (pAppData == NULL || szLabel == NULL) {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
-
- MpUtilDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
- evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- Evas_Object *progressbar, *box, *label;
-
- label = elm_label_add(pPopUpHandle);
- elm_object_text_set(label, szLabel);
- evas_object_show(label);
-
- progressbar = elm_progressbar_add(pPopUpHandle);
- elm_object_style_set(progressbar, "pending_list");
- elm_progressbar_pulse(progressbar, EINA_TRUE);
- evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_progressbar_pulse(progressbar, EINA_TRUE);
- evas_object_show(progressbar);
-
- box = elm_box_add(pPopUpHandle);
- elm_box_pack_end(box, label);
- elm_box_pack_end(box, progressbar);
- evas_object_show(box);
- elm_object_content_set(pPopUpHandle, box);
-
- if (pPopupWindow) {
- MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow);
- }
-
- evas_object_show(pPopUpHandle);
-
- return TRUE;
-}
-
-
-void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func)
-{
- VideoLogInfo("");
-
- Evas_Object *pButton = NULL;
- Evas_Object *pIcon = NULL;
-
- pButton = elm_button_add(pParent);
-
- if(szIconPath)
- {
- pIcon = elm_icon_add(pParent);
- elm_image_file_set(pIcon, szIconPath, NULL);
- //evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, nAspectWidth, nAspectHeight);
- evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_NEITHER, nAspectWidth, nAspectHeight);
- //elm_icon_resizable_set(pIcon, bSizeUp, bSizeDown);
- }
-
- if(szButtonStyle)
- {
- elm_object_style_set(pButton, szButtonStyle);
- }
-
- if(pIcon)
- {
- elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon);
- }
-
- if(func)
- {
- evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData);
- }
-
- elm_object_focus_allow_set(pButton, EINA_FALSE);
- evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(pButton);
-
- return (void *)pButton;
-}
-
-void *MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func)
-{
- VideoLogInfo("");
-
- Evas_Object *pButton = NULL;
-
- pButton = elm_button_add(pParent);
-
- if(szButtonStyle)
- {
- elm_object_style_set(pButton, szButtonStyle);
- }
-
- if(szButtonText)
- {
- elm_object_text_set(pButton, szButtonText);
- }
-
- if(func)
- {
- evas_object_smart_callback_add(pButton, "clicked", func, pUserData);
- }
-
- elm_object_focus_allow_set(pButton, EINA_FALSE);
- evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(pButton);
-
- return (void *)pButton;
-}
-
-void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName)
-{
- VideoLogInfo("");
-
- Evas_Object *pEdj = NULL;
- int nWidth = 0;
- int nHeight = 0;
-
- pEdj = edje_object_add(pEvas);
- if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) {
- VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName,
- szGroupName);
- return NULL;
- }
-
- edje_object_size_min_get(pEdj, &nWidth, &nHeight);
- evas_object_resize(pEdj, nWidth, nHeight);
-
- return (void *)pEdj;
-}
-
-bool MpUtilIsCallOff(void)
-{
- VideoLogInfo("");
-
- int nCallStatus = 0;
-
- if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) {
- if (nCallStatus == VCONFKEY_CALL_OFF)
- {
- VideoLogInfo("Call off");
- return TRUE;
- }
- else
- {
- VideoLogInfo("!!! CALL ON !!!");
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-bool MpUtilIsCameraOff(void)
-{
- VideoLogInfo("");
-
- int nCameraStatus = 0;
-
- if (!vconf_get_int(VCONFKEY_CAMERA_STATE, &nCameraStatus)) {
- if (nCameraStatus == VCONFKEY_CAMERA_STATE_NULL)
- {
- VideoLogInfo("Camera off");
- return TRUE;
- }
- else
- {
- VideoLogInfo("!!! CAMERA ON !!!");
- }
- }
-
- return FALSE;
-}
-
-bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData)
-{
- if (!pCameraStatusCb) {
- VideoLogInfo("pEarjackCb is empty.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- vconf_notify_key_changed(VCONFKEY_CAMERA_STATE, pCameraStatusCb, pUserData);
-
- return TRUE;
-}
-
-bool MpUtilIsConnectEarjack(void)
-{
- VideoLogInfo("");
-
- int nEarjack = 0;
-
- if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) {
- if (nEarjack) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData)
-{
- if (!pEarjackCb) {
- VideoLogInfo("pEarjackCb is empty.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData);
-
- return TRUE;
-}
-
-bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl)
-{
- if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
- {
- VideoLogInfo("[ERR]");
- }
-
- VideoLogInfo("szPreviewUrl : %s", szPreviewUrl);
-
- bool bRet = FALSE;
-
- if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS, szPreviewUrl))
- {
- VideoLogInfo("Fail to write szPreviewUrl.");
- bRet = FALSE;
- }
- else
- {
- VideoLogInfo("Success to write it.");
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize)
-{
- if(!szRetPreviewUrl)
- {
- VideoLogInfo("[ERR]");
- }
- else
- {
- memset(szRetPreviewUrl, 0, nStrSize);
- }
-
- VideoLogInfo("");
-
- bool bRet = FALSE;
- char *szPreviewUrl = NULL;
-
-
- szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS);
- if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
- {
- VideoLogInfo("Fail to get szPreviewUrl from vconf register.");
- bRet = FALSE;
- }
- else
- {
- VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl);
- strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1);
- free(szPreviewUrl);
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl)
-{
- if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
- {
- VideoLogInfo("[ERR]");
- }
-
- VideoLogInfo("");
-
- bool bRet = FALSE;
-
- if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS, szPreviewUrl))
- {
- VideoLogInfo("Fail to write szPreviewUrl.");
- bRet = FALSE;
- }
- else
- {
- VideoLogInfo("Success to write it.");
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize)
-{
- if(!szRetPreviewUrl)
- {
- VideoLogInfo("[ERR]");
- }
- else
- {
- memset(szRetPreviewUrl, 0, nStrSize);
- }
-
- VideoLogInfo("");
-
- bool bRet = FALSE;
- char *szPreviewUrl = NULL;
-
-
- szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS);
- if(!szPreviewUrl || strlen(szPreviewUrl) <= 0)
- {
- VideoLogInfo("Fail to get szPreviewUrl from vconf register.");
- bRet = FALSE;
- }
- else
- {
- VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl);
- strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1);
- free(szPreviewUrl);
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-unsigned int MpUtilGetMainWindowXID(void)
-{
- VideoLogInfo("");
- if (pMainXwindow) {
- VideoLogInfo("pMainXwindow : %d", pMainXwindow);
- return pMainXwindow;
- } else {
- VideoLogInfo("No exist main window XID.");
- }
- return 0;
-}
-
-void MpUtilRotateWindow(int nRotateMode, void *pWindowHandle)
-{
- VideoLogInfo("");
-
- if (!pWindowHandle) {
- return;
- }
-
- switch (nRotateMode) {
- case VIDEO_ROTATE_UNKNOWN:
- VideoLogInfo("VIDEO_ROTATE_UNKNOWN");
- elm_win_rotation_with_resize_set(pWindowHandle, 0);
- break;
-
- case VIDEO_ROTATE_PORTRAIT_NORMAL:
- VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL");
- elm_win_rotation_with_resize_set(pWindowHandle, 0);
- break;
-
- case VIDEO_ROTATE_LANDSCAPE_NORMAL:
- VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL");
- elm_win_rotation_with_resize_set(pWindowHandle, 270);
- break;
-
- case VIDEO_ROTATE_PORTRAIT_REVERSE:
- VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE");
- elm_win_rotation_with_resize_set(pWindowHandle, 180);
- break;
-
- case VIDEO_ROTATE_LANDSCAPE_REVERSE:
- VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE");
- elm_win_rotation_with_resize_set(pWindowHandle, 90);
- break;
-
- default:
- VideoLogInfo("DEFAULT - VIDEO_ROTATE_UNKNOWN");
- elm_win_rotation_with_resize_set(pWindowHandle, 0);
- break;
- }
-}
-
-void MpUtilGetUserAgent(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-
- int nWifiMode = 0;
-
- char *szUserAgent = NULL;
- szUserAgent = vconf_get_str(VCONFKEY_ADMIN_UAGENT);
- if(szUserAgent)
- {
- memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
- strncpy(pAppData->szUserAgent, szUserAgent, STR_LEN_MAX - 1);
- free(szUserAgent);
- }
- else
- {
- VideoLogInfo("!!!!! NO EXIST USER AGENT !!!!!");
- }
-
-#if 0
- memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
- snprintf(pAppData->szUserAgent, STR_LEN_MAX, "%s", MP_UTIL_TEMP_USER_AGENT_VALUE);
-#endif
-
- if(!vconf_get_int(VCONFKEY_WIFI_STATE, &nWifiMode))
- {
- VideoLogInfo("User Agent : %s, Wi-Fi : %d", pAppData->szUserAgent, nWifiMode);
- }
-
-}
-
-double MpUtilGetSysTime(void)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- return (double)tv.tv_sec + (double)tv.tv_usec / 1E6;
-}
-
-void MpUtilLcdNormalPowerLockForResume(void)
-{
- VideoLogInfo("");
-
- pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW | HOLD_KEY_BLOCK, 0);
-}
-
-void MpUtilLcdNormalPowerUnlockForPause(void)
-{
- VideoLogInfo("");
-
- pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
-}
-
-void MpUtilLcdOffForPowerButton(void)
-{
- VideoLogInfo("");
-
- pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
-}
-
-void MpUtilMultimediaKeyGrab(void)
-{
- VideoLogInfo("");
- MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE);
- MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE);
- MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE);
- MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE);
- MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE);
- MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE);
- MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE);
-}
-
-void MpUtilMultimediaKeyUngrab(void)
-{
- VideoLogInfo("");
-
- MpUtilSetKeyUngrab(PAUSE_KEY);
- MpUtilSetKeyUngrab(PLAY_KEY);
- MpUtilSetKeyUngrab(STOP_KEY);
- MpUtilSetKeyUngrab(NEXT_KEY);
- MpUtilSetKeyUngrab(PREV_KEY);
- MpUtilSetKeyUngrab(FORWARD_KEY);
- MpUtilSetKeyUngrab(REWIND_KEY);
-
-}
-
-void MpUtilMultimediaVolumeKeyGrab(void)
-{
- VideoLogInfo("");
-
- MpUtilSetKeyGrab(VOLUME_UP_KEY, KEY_GRAB_EXCLUSIVE);
- MpUtilSetKeyGrab(VOLUME_DOWN_KEY, KEY_GRAB_EXCLUSIVE);
-
- int nRet = 0;
- nRet = vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1);
- if(nRet != 0)
- {
- VideoLogError("VCONFKEY_STARTER_USE_VOLUME_KEY set fail: %d", nRet);
- }
-}
-void MpUtilMultimediaVolumeKeyUngrab(void)
-{
- VideoLogInfo("");
-
- MpUtilSetKeyUngrab(VOLUME_UP_KEY);
- MpUtilSetKeyUngrab(VOLUME_DOWN_KEY);
-}
-
-/*
-bool MpUtilSbeamIsActive(void)
-{
- VideoLogInfo("bIsActiveNfcSbeam : %d", bIsActiveNfcSbeam);
-
- return bIsActiveNfcSbeam;
-}
-
-void MpUtilSbeamP2pTargetDiscoveredCb(nfc_discovered_type_e nType, nfc_p2p_target_h pTarget, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if(nType == NFC_DISCOVERED_TYPE_ATTACHED)
- {
- VideoLogInfo("NFC_DISCOVERED_TYPE_ATTACHED");
-
- if(bIsActiveNfcSbeam)
- {
- char szWindowId[STR_LEN_MAX] = {0};
-
- if(strlen(pAppData->szMediaUri) <= 0)
- {
- VideoLogInfo("[ERR]No exist media uri.");
- return;
- }
-
- service_h svc_handle;
- service_create(&svc_handle);
- snprintf(szWindowId, STR_LEN_MAX-1, "%d", elm_win_xwindow_get(pAppData->pMainWindow));
-
- service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/nfc_sbeam_send");
- service_set_mime(svc_handle, "text/DirectShareVideos");
- service_set_window(svc_handle, elm_win_xwindow_get(pAppData->pMainWindow));
- service_set_uri(svc_handle, pAppData->szMediaUri);
- service_send_launch_request(svc_handle, NULL, NULL);
- service_destroy(svc_handle);
- }
- else
- {
- VideoLogInfo("bIsActiveNfcSbeam is NULL.");
- }
- }
-}
-
-void MpUtilSbeamInit(void* pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- VideoLogInfo("");
-
- int bSbeamState = VCONFKEY_NFC_SBEAM_OFF;
-
- if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0)
- {
- VideoLogInfo("Fail to get value.");
- }
- else
- {
- if(bSbeamState != VCONFKEY_NFC_SBEAM_ON)
- {
- VideoLogInfo("Off state about nfc sbeam");
- return;
- }
- }
-
- if(bIsActiveNfcSbeam == FALSE)
- {
- if(nfc_manager_initialize(NULL, NULL) != NFC_ERROR_NONE)
- {
- VideoLogInfo("[Err] Fail to initialize nfc manager.");
- return;
- }
-
- nfc_manager_set_p2p_target_discovered_cb(MpUtilSbeamP2pTargetDiscoveredCb, pUserData);
-
- bIsActiveNfcSbeam = TRUE;
- }
- else
- {
- VideoLogInfo("Already set sbeam activation.");
- }
-}
-
-void MpUtilSbeamDeinit(void)
-{
- VideoLogInfo("");
-
- int bSbeamState = VCONFKEY_NFC_SBEAM_OFF;
-
- if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0)
- {
- VideoLogInfo("Fail to get value.");
- }
- else
- {
- if(bSbeamState != VCONFKEY_NFC_SBEAM_ON)
- {
- VideoLogInfo("Off state about nfc sbeam");
- return;
- }
- }
-
- if(bIsActiveNfcSbeam == TRUE)
- {
- if(nfc_manager_deinitialize() != NFC_ERROR_NONE)
- {
- VideoLogInfo("[Err] Fail to deinitialize nfc manager.");
- }
-
- bIsActiveNfcSbeam = FALSE;
- }
- else
- {
- VideoLogInfo("Already set sbeam unactivation.");
- }
-}
-*/
-
-char* MpUtilGetFileSize(unsigned int size)
-{
- VideoLogInfo("");
-
-#define FILE_SIZE_LEN_MAX 64
-#define BASIC_SIZE 1024 //used for file size check
-
-enum VIDEO_PLAYER_FILE_SIZE_TYPE
-{
- SIZE_BYTE = 0,
- SIZE_KB,
- SIZE_MB,
- SIZE_GB
-};
-
- int nCount = 0;
-
- char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
- if(pTmp == NULL)
- {
- return NULL;
- }
-
- while(size >= (BASIC_SIZE))
- {
- size /= BASIC_SIZE;
- nCount++;
- }
-
- if(nCount == SIZE_BYTE)
- {
- snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuB", size);
- }
- else if(nCount == SIZE_KB)
- {
- snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuKB", size);
- }
- else if(nCount == SIZE_MB)
- {
- snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", size);
- }
- else if(nCount == SIZE_GB)
- {
- snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuGB", size);
- }
- else
- {
- snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", 0);
- }
-
- VideoLogInfo("Size=%s", pTmp);
-
- return pTmp;
-}
-
-void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour)
-{
-#define VIDEO_TIME_MSEC_PER_SEC 1000
-#define VIDEO_TIME_SEC_PER_MIN 60
-#define VIDEO_TIME_MIN_PER_HOUR 60
-#define VIDEO_TIME_SEC_PER_HOUR (VIDEO_TIME_MIN_PER_HOUR * VIDEO_TIME_SEC_PER_MIN)
-
- if(!szRetTime)
- {
- VideoLogInfo("[ERR] No exist szRetTime pointer.");
- return;
- }
- else
- {
- memset(szRetTime, 0, STR_LEN_MAX);
- }
-
- if(nVideoTime <= 0)
- {
- VideoLogInfo("nVideoTime : %d", nVideoTime);
- }
-
- int nTime = floor(nVideoTime / VIDEO_TIME_MSEC_PER_SEC);
- int nHour = 0;
- int nMin = 0;
- int nSec = 0;
- int nTmp = 0;
-
- if (nTime >= VIDEO_TIME_SEC_PER_HOUR)
- {
- nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
- nTmp = floor(nTime / VIDEO_TIME_SEC_PER_MIN);
- nMin = nTmp % VIDEO_TIME_MIN_PER_HOUR;
- nHour = floor(nTmp / VIDEO_TIME_MIN_PER_HOUR);
- }
- else if (nTime >= VIDEO_TIME_SEC_PER_MIN)
- {
- nHour = 0;
- nMin = floor(nTime / VIDEO_TIME_SEC_PER_MIN);
- nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
- }
- else
- {
- nHour = 0;
- nMin = 0;
- nSec = nTime % VIDEO_TIME_SEC_PER_MIN;
- }
-
- if(bIsHideHour)
- {
- if(nHour)
- {
- snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec);
- }
- else
- {
- snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d", nMin, nSec);
- }
- }
- else
- {
- snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec);
- }
-
- szRetTime[strlen(szRetTime)] = '\0';
-
- VideoLogInfo("szRetTime : %s", szRetTime);
-}
-
-void MpUtilLayoutVisibleOff(void *pWindowHandle)
-{
- VideoLogInfo("");
-
- if(pWindowHandle == NULL)
- {
- VideoLogError("Window handle is NULL");
- return;
- }
-
- if(pX11DisplayHandle == NULL)
- {
- VideoLogError("Display handle is NULL");
- return;
- }
-
- if (!strcmp ("mobile", elm_win_profile_get (pWindowHandle)))
- {
- utilx_set_fb_visible (pX11DisplayHandle, UTILX_FB_TYPE_UI, FALSE);
- }
- else
- {
- VideoLogError("Skip for Desktop mode : %s", elm_win_profile_get (pWindowHandle));
- }
- return;
-}
diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c
deleted file mode 100755
index 3acc475..0000000
--- a/src/mp-video-animation-ctrl.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-value-define.h"
-#include "mp-video-animation-ctrl.h"
-
-#define BUFFERING_TXT_MAX_LEN 16
-
-static Evas_Object *pAnimationEdj = NULL;
-static Ecore_Timer *pAnimationTimer = NULL;
-
-static int nIconIndex = 0;
-
-static Eina_Bool MpVideoAnimationCtrlTimerCb(void *data)
-{
-/* VideoLogInfo(""); */
-
- char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
-
- snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d",
- SIGNAL_ANIMATION_IMAGE_LOADING, nIconIndex);
-
- edje_object_signal_emit(pAnimationEdj, sig_format, "*");
-
- nIconIndex += 1;
- if (nIconIndex > ANIMATION_MAX_COUNT)
- nIconIndex = 1;
-
- return EINA_TRUE;
-}
-
-void *MpVideoAnimationCtrlInit(void *pUserData)
-{
- VideoLogInfo("");
-
- if (pUserData == NULL) {
- VideoLogInfo("data is NULL");
- return NULL;
- }
-
- Evas *pMainWindowEvas = (Evas *) pUserData;
-
- pAnimationEdj = MpUtilLoadEdjFile(pMainWindowEvas,
- VIDEO_PLAYER_ANIMATION_EDJ,
- ANIMATION_EDJ_GROUP);
-
- evas_object_hide(pAnimationEdj);
-
- return (void *)pAnimationEdj;
-}
-
-void MpVideoAnimationCtrlDestroy(void)
-{
- VideoLogInfo("");
-
- if (pAnimationTimer) {
- ecore_timer_del(pAnimationTimer);
- pAnimationTimer = NULL;
- }
-
- if (pAnimationEdj) {
- evas_object_hide(pAnimationEdj);
- evas_object_del(pAnimationEdj);
- pAnimationEdj = NULL;
- }
-
- nIconIndex = 0;
-}
-
-void MpVideoAnimationCtrlSetPercent(int nPercent)
-{
- VideoLogInfo("");
- if (nPercent >= 0) {
- char szBuffering[BUFFERING_TXT_MAX_LEN] = { 0, };
-
- snprintf(szBuffering, BUFFERING_TXT_MAX_LEN, "Loading %d%%...",
- nPercent);
- edje_object_part_text_set(pAnimationEdj, "loading.txt",
- szBuffering);
- } else {
- edje_object_part_text_set(pAnimationEdj, "loading.txt",
- "Loading...");
- }
-}
-
-void MpVideoAnimationCtrlPlay(void)
-{
- VideoLogInfo("");
- if (pAnimationTimer == NULL) {
- pAnimationTimer = ecore_timer_add(ANIMATION_TIMER_INTERVAL,
- MpVideoAnimationCtrlTimerCb,
- NULL);
- }
-}
-
-void MpVideoAnimationCtrlStop(void)
-{
- VideoLogInfo("");
-
- if (pAnimationTimer) {
- ecore_timer_del(pAnimationTimer);
- pAnimationTimer = NULL;
- }
-}
-
-void MpVideoAnimationCtrlShow(void)
-{
- VideoLogInfo("");
-
- if (pAnimationTimer == NULL) {
- MpVideoAnimationCtrlPlay();
- MpVideoAnimationCtrlSetPercent(-1);
- evas_object_show(pAnimationEdj);
- }
-}
-
-void MpVideoAnimationCtrlHide(void)
-{
- VideoLogInfo("");
-
- MpVideoAnimationCtrlStop();
- evas_object_hide(pAnimationEdj);
-}
-
-bool MpVideoAnimationCtrlGetActiveState(void)
-{
- VideoLogInfo("");
- if (pAnimationTimer)
- return true;
- else
- return false;
-}
diff --git a/src/mp-video-app-ctrl.c b/src/mp-video-app-ctrl.c
deleted file mode 100755
index 0102d79..0000000
--- a/src/mp-video-app-ctrl.c
+++ /dev/null
@@ -1,1383 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <app.h>
-#include <player.h>
-#include <mm_util_imgp.h>
-#include <image_util.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "mp-video-app-ctrl.h"
-#include "mp-video-view-mgr.h"
-#include "mp-util-media-service.h"
-#include "mp-video-value-define.h"
-#include "mp-video-string-define.h"
-#include "mp-video-streaming-ctrl.h"
-#include "mp-external-ug.h"
-#include "mp-video-ctrl-mgr.h"
-#include "mp-video-service-ctrl.h"
-
-static int nPlayerErrorType = 0;
-static int nPlayerInterruptType = 0;
-static int nBufferingRate = 0;
-static bool bWindowForegroundState = FALSE;
-
-static MpPlayerInterrupteType g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED;
-
-static Ecore_Pipe *pEcorePipeHandleForErrorMsg = NULL;
-static Ecore_Pipe *pEcorePipeHandleBOF = NULL;
-static Ecore_Pipe *pEcorePipeHandleEOF = NULL;
-static Ecore_Pipe *pEcorePipeHandleForBuffering = NULL;
-static Ecore_Pipe *pEcorePipeHandleForResumed = NULL;
-static Ecore_Pipe *pEcorePipeHandleForInterruped = NULL;
-static Ecore_Pipe *pEcorePipeHandlerForSeekComplete = NULL;
-
-
-static void MpVideoAppCtrlStart(VideoAppData *pAppData);
-static void MpVideoAppCtrlStop(VideoAppData *pAppData);
-static void MpVideoAppCtrlPause(VideoAppData *pAppData);
-static void MpVideoAppCtrlResume(VideoAppData *pAppData);
-static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData);
-static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData);
-static void MpVideoAppCtrlFFDown(VideoAppData *pAppData);
-static void MpVideoAppCtrlRewDown(VideoAppData *pAppData);
-static void MpVideoAppCtrlFFUp(VideoAppData *pAppData);
-static void MpVideoAppCtrlRewUp(VideoAppData *pAppData);
-static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData);
-static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData);
-static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData);
-static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState);
-static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData);
-static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData);
-static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData);
-static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData);
-static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData);
-static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData);
-static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData);
-static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData);
-static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData);
-static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData);
-static void MpVideoAppCtrlExit(VideoAppData *pAppData);
-static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData);
-static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData);
-static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
-static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
-static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData);
-static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData);
-static void MpVideoAppCtrlSetMute(VideoAppData *pAppData, bool bMute);
-
-
-/*
- * Callback function
- */
-
-static void MpVideoAppCtrlUnSupportFormatErrorCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpUtilLcdNormalPowerUnlockForPause();
-
- MpVideoAppCtrlEndOfStream(pAppData);
-}
-
-
-static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
-}
-
-static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData");
- return 0;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoAppCtrlPause(pAppData);
-
- g_nCurrentInterrupt = nPlayerInterruptType;
-
- switch(nPlayerInterruptType)
- {
- case MP_PLAYER_INTERRUPTED_COMPLETED:
- VideoLogInfo("MP_PLAYER_INTERRUPTED_COMPLETED");
- break;
-
- case MP_PLAYER_INTERRUPTED_BY_OTHER_APP:
- VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_OTHER_APP");
- break;
-
- case MP_PLAYER_INTERRUPTED_BY_CALL:
- VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_CALL");
- break;
-
- case MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
- VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG");
- break;
-
- case MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
- VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT");
- break;
-
- case MP_PLAYER_INTERRUPTED_BY_ALARM:
- VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_ALARM");
- break;
-
- default:
- VideoLogInfo("OTHER");
- break;
- }
-
- return 0;
-}
-
-static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData");
- return 0;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoCtrlMgrMediaPlay((void *)pAppData);
-
- pAppData->bStartSeek = FALSE;
-
- if(pAppData->nSetPosition > 0)
- {
- VideoLogInfo("Start position time : %dms", pAppData->nSetPosition);
- MpVideoAppCtrlSetPosition(pAppData);
- }
-
- }
- else
- {
- pAppData->bStartSeek = FALSE;
- if(pAppData->nSetPosition > 0)
- {
- VideoLogInfo("Pending seek position time : %dms", pAppData->nSetPosition);
- MpVideoAppCtrlSetPosition(pAppData);
- pAppData->bStartSeek = TRUE;
- }
-
- if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
- {
- MpVideoCtrlMgrSetMute(TRUE);
- }
-
- if(!pAppData->bStartSeek)
- {
- MpVideoCtrlMgrMediaPlay((void *)pAppData);
- }
- }
-
- MpVideoAppCtrlBeginOfStream(pAppData);
- MpUtilLcdNormalPowerLockForResume();
-
- return 0;
-}
-
-static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData");
- return 0;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoViewCtrlPause(pAppData);
- MpVideoAppCtrlStop(pAppData);
- MpVideoCtrlMgrMediaDestroy(pAppData);
-
- MpUtilLcdNormalPowerUnlockForPause();
-
- MpVideoAppCtrlEndOfStream(pAppData);
-
- return 0;
-}
-
-static int MpVideoAppCtrlBufferingCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData");
- return 0;
- }
-
- if(nBufferingRate < 10)
- {
- MpVideoAppCtrlShowLayout((VideoAppData *)pUserData);
- }
-
- MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData);
-
- return 0;
-}
-
-static int MpVideoAppCtrlSeekCompletePipeCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData");
- return 0;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pAppData->bStartSeek)
- {
- MpVideoCtrlMgrMediaPlay((void *)pAppData);
- MpVideoAppCtrlBeginOfStream(pAppData);
- MpUtilLcdNormalPowerLockForResume();
- pAppData->bStartSeek = FALSE;
- }
-
- pAppData->bSeekComplete = TRUE;
-
- if(pAppData->nSeekPosition > 0) {
- pAppData->nSetPosition = pAppData->nSeekPosition;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
- pAppData->nSeekPosition = 0;
- MpVideoViewCtrlUpdateProgressbar((void *)pAppData);
- return 0;
- }
-
- if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_PAUSE) {
- VideoLogInfo("");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
- }
- else if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_RESUME) {
- VideoLogInfo("");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE;
- }
-
- return 0;
-}
-
-static void MpVideoAppCtrlSeekCompleteCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData");
- return;
- }
-
- VideoLogInfo("");
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- if(pEcorePipeHandlerForSeekComplete)
- {
- if(!ecore_pipe_write(pEcorePipeHandlerForSeekComplete, (void *)pAppData, sizeof(VideoAppData)))
- {
- VideoLogDebug("Fail to write MpVideoAppCtrlSeekCompleteCb.");
- }
- }
-}
-
-
-static int MpVideoAppCtrlResumeByRewCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData");
- return 0;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoAppCtrlResume(pAppData);
-
- return 0;
-}
-
-static int MpVideoAppCtrlErrormsgCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData");
- return 0;
- }
-
- VideoLogInfo("");
-
- switch(MpVideoCtrlMgrGetErrorType(nPlayerErrorType))
- {
- case MP_PLAYER_ERROR_NONE:
- VideoLogInfo("MP_PLAYER_ERROR_NONE");
- break;
-
- case MP_PLAYER_ERROR_OUT_OF_MEMORY:
- VideoLogInfo("MP_PLAYER_ERROR_OUT_OF_MEMORY");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
- break;
-
- case MP_PLAYER_ERROR_INVALID_PARAMETER:
- VideoLogInfo("MP_PLAYER_ERROR_INVALID_PARAMETER");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
- break;
-
- case MP_PLAYER_ERROR_NO_SUCH_FILE:
- VideoLogInfo("MP_PLAYER_ERROR_NO_SUCH_FILE");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_FILE_NOT_FOUND, MpVideoAppCtrlExitCb);
- break;
-
- case MP_PLAYER_ERROR_INVALID_OPERATION:
- VideoLogInfo("MP_PLAYER_ERROR_INVALID_OPERATION");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb);
- break;
-
- case MP_PLAYER_ERROR_SEEK_FAILED:
- VideoLogInfo("MP_PLAYER_ERROR_SEEK_FAILED");
- break;
-
- case MP_PLAYER_ERROR_INVALID_STATE:
- VideoLogInfo("MP_PLAYER_ERROR_INVALID_STATE");
- break;
-
- case MP_PLAYER_ERROR_NOT_SUPPORTED_FILE:
- VideoLogInfo("MP_PLAYER_ERROR_NOT_SUPPORTED_FILE");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE), MpVideoAppCtrlUnSupportFormatErrorCb);
- break;
-
- case MP_PLAYER_ERROR_INVALID_URI:
- VideoLogInfo("MP_PLAYER_ERROR_INVALID_URI");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_INVALID_URL, MpVideoAppCtrlExitCb);
- break;
-
- case MP_PLAYER_ERROR_SOUND_POLICY:
- VideoLogInfo("MP_PLAYER_ERROR_SOUND_POLICY");
- break;
-
- case MP_PLAYER_ERROR_CONNECTION_FAILED:
- VideoLogInfo("MP_PLAYER_ERROR_CONNECTION_FAILED");
- MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_CONNECTION_FAILED, MpVideoAppCtrlExitCb);
- break;
-
- case MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
- VideoLogInfo("MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED");
- break;
-
- default:
- MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb);
- break;
- }
-
- return 0;
-}
-
-static void MpVideoAppCtrlPlayerPrepareCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(pEcorePipeHandleBOF)
- {
- if(!ecore_pipe_write(pEcorePipeHandleBOF, pUserData, sizeof(VideoAppData)))
- {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
-}
-
-static void MpVideoAppCtrlPlayerCompletedCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(pEcorePipeHandleEOF)
- {
- if(!ecore_pipe_write(pEcorePipeHandleEOF, pUserData, sizeof(VideoAppData)))
- {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
-}
-
-static void MpVideoAppCtrlPlayerInterruptedCb(player_interrupted_code_e nInterruptCode, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- nPlayerInterruptType = nInterruptCode;
-
- if(pEcorePipeHandleForInterruped)
- {
- if(!ecore_pipe_write(pEcorePipeHandleForInterruped, pUserData, sizeof(VideoAppData)))
- {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
-}
-
-static void MpVideoAppCtrlPlayerErrorCb(int nPlayerErrorCode, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- nPlayerErrorType = nPlayerErrorCode;
-
- if(pEcorePipeHandleForErrorMsg)
- {
- if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg, pUserData, sizeof(VideoAppData)))
- {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
-}
-
-static void MpVideoAppCtrlPlayerBufferingCb(int nPercent, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("Buffering : %d%% ", nPercent);
-
- nBufferingRate = nPercent;
-
- if(pEcorePipeHandleForBuffering)
- {
- if(!ecore_pipe_write(pEcorePipeHandleForBuffering, pUserData, sizeof(VideoAppData)))
- {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
-}
-
-static void MpVideoAppCtrlPlayerUpdateSubtitleCb(unsigned long nDuration, char* szText, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-}
-
-/*
- * Internal function
- */
-void MpVideoAppCtrlFuncInit(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-
- if(!pAppData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart = (void *)MpVideoAppCtrlStart;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop = (void *)MpVideoAppCtrlStop;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause = (void *)MpVideoAppCtrlPause;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume = (void *)MpVideoAppCtrlResume;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause = (void *)MpVideoAppCtrlStopByAppPause;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume = (void *)MpVideoAppCtrlStartByAppResume;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown = (void *)MpVideoAppCtrlFFDown;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown = (void *)MpVideoAppCtrlRewDown;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp = (void *)MpVideoAppCtrlFFUp;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp = (void *)MpVideoAppCtrlRewUp;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF = (void *)MpVideoAppCtrlSpeedFF;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew = (void *)MpVideoAppCtrlSpeedRew;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset = (void *)MpVideoAppCtrlSpeedReset;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen = (void *)MpVideoAppCtrlRotateScreen;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition = (void *)MpVideoAppCtrlGetPosition;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition = (void *)MpVideoAppCtrlSetPosition;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout = (void *)MpVideoAppCtrlHideLayout;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout = (void *)MpVideoAppCtrlShowLayout;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish = (void *)MpVideoAppCtrlHideFinish;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish = (void *)MpVideoAppCtrlShowFinish;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution = (void *)MpVideoAppCtrlGetVideoResolution;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime = (void *)MpVideoAppCtrlReqDurationTime;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream = (void *)MpVideoAppCtrlBeginOfStream;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream = (void *)MpVideoAppCtrlEndOfStream;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit = (void *)MpVideoAppCtrlExit;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming = (void *)MpVideoAppCtrlStartStreaming;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching = (void *)MpVideoAppCtrlReLaunching;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition = (void *)MpVideoAppCtrlGetBufferingPosition;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume = (void *)MpVideoAppCtrlShowVolume;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume = (void *)MpVideoAppCtrlHideVolume;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute = (void *)MpVideoAppCtrlSetMute;
-}
-
-static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- VideoLogInfo("Skip Normal Play mode");
- return;
- }
-
- if(MpUtilCheckRTSPType(pAppData->szMediaUri))
- {
- return;
- }
-
- pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition();
-}
-
-static void MpVideoAppCtrlStart(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- if(!MpUtilCheckLocalFileExist(pAppData->szMediaUri))
- {
- MpUtilNotifyPopUp(pAppData, MP_COM_POP_FILE_NOT_EXIST, MpVideoAppCtrlExitCb);
- return;
- }
-
- MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle, STR_LEN_MAX);
- MpVideoViewCtrlChangeTitle(pAppData);
- MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
- (void *)MpUtilGetMainWindowXID(),
- NULL,
- pAppData->szSubtitle,
- (void *)pAppData);
-
- MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb,
- MpVideoAppCtrlPlayerInterruptedCb,
- MpVideoAppCtrlPlayerErrorCb,
- MpVideoAppCtrlPlayerBufferingCb,
- MpVideoAppCtrlPlayerUpdateSubtitleCb,
- (void*)pAppData);
-
- if(!MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData))
- {
- MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb);
- return;
- }
-
- MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState());
-
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- if(!MpVideoStreamingCtrlIsNetworkOn())
- {
- MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoAppCtrlExitCb);
- return;
- }
-
- if(MpVideoStreamingCtrlInit((void *)pAppData))
- {
- VideoLogInfo("Connect to network.");
- MpVideoAppCtrlStartStreaming((void *)pAppData);
- }
- }
-}
-
-static void MpVideoAppCtrlStop(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
- MpVideoCtrlMgrMediaStop((void *)pAppData);
-}
-
-static void MpVideoAppCtrlPause(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
- {
- VideoLogInfo("Allready Pause video player.");
- return;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
-
- MpVideoCtrlMgrMediaPause(pAppData);
- MpVideoViewCtrlPause(pAppData);
- MpVideoAppCtrlShowLayout(pAppData);
- MpUtilLcdNormalPowerUnlockForPause();
-}
-
-static void MpVideoAppCtrlResume(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
- {
- return;
- }
-
- if(pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
- {
- VideoLogInfo("Allready Resume video player.");
- return;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
- MpUtilMultimediaKeyGrab();
-
- MpVideoAppCtrlGetPosition(pAppData);
- MpVideoCtrlMgrMediaResume(pAppData);
- MpVideoViewCtrlResume(pAppData);
- MpVideoAppCtrlShowLayout(pAppData);
- MpUtilLcdNormalPowerLockForResume();
-}
-
-static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- if(!MpVideoCtrlMgrIsExistPlayerHandle())
- {
- VideoLogInfo("Not exist Player handle.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoAppCtrlGetPosition(pAppData);
- pAppData->nSetPosition = pAppData->nCurPosition;
- VideoLogInfo("Current position time : %d", pAppData->nSetPosition);
- MpVideoViewCtrlPause(pAppData);
- MpVideoAppCtrlStop(pAppData);
- MpVideoCtrlMgrMediaDestroy(pAppData);
- MpUtilLcdNormalPowerUnlockForPause();
-
- MpVideoViewCtrlResetProgressBar((void *)pAppData);
-
- MpUtilMultimediaKeyUngrab();
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData);
- }
-}
-
-static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(bWindowForegroundState == FALSE)
- {
- VideoLogInfo("The Window of the video player is hided.");
- }
-
- MpVideoAppCtrlStart(pAppData);
- MpVideoViewCtrlResume(pAppData);
- MpVideoAppCtrlShowLayout(pAppData);
-
- return;
-}
-
-static void MpVideoAppCtrlFFDown(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-}
-
-static void MpVideoAppCtrlRewDown(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-}
-
-static void MpVideoAppCtrlFFUp(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-}
-
-static void MpVideoAppCtrlRewUp(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-}
-
-static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(VIDEO_ROTATE_UNKNOWN > nRotateState || VIDEO_ROTATE_LANDSCAPE_REVERSE < nRotateState)
- {
- VideoLogInfo("Wrong rotate state. - %d", nRotateState);
- return;
- }
-
- MpVideoCtrlMgrRotateVideoScreen(nRotateState);
-}
-
-static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData)
-{
- pAppData->nCurPosition = MpVideoCtrlMgrGetPosition();
-}
-
-static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoCtrlMgrSetPosition(pAppData->nSetPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData);
- if(MpUtilCheckRTSPType(pAppData->szMediaUri))
- {
- VideoLogInfo("RTSP SEEK Start");
- nBufferingRate = 0;
- MpVideoAppCtrlBufferingCb((void *)pAppData);
- }
-}
-
-static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData)
-{
- VideoLogInfo("");
- MpVideoAppCtrlGetPosition(pAppData);
- MpVideoCtrlMgrSetPosition( pAppData->nCurPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData);
- MpVideoCtrlMgrResetPlaySpeed((void *)pAppData);
-}
-
-static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData)
-{
- VideoLogInfo("");
- MpVideoCtrlMgrSetPlaySpeedUp((void *)pAppData);
-}
-
-static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData)
-{
- VideoLogInfo("");
- MpVideoCtrlMgrSetPlaySpeedDown((void *)pAppData);
-}
-
-static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoViewHideLayout((void *)pAppData);
-}
-
-static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoViewShowLayout((void *)pAppData);
-}
-
-static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoViewCtrlHideFinish((void *)pAppData, bWindowForegroundState);
-
-}
-static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoViewCtrlShowFinish((void *)pAppData);
-}
-
-static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- pAppData->nVideoWidthResolution = MpVideoCtrlMgrGetVideoWidthResolution();
- pAppData->nVideoHeightResolution = MpVideoCtrlMgrGetVideoHeightResolution();
-}
-
-static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- pAppData->nDuration = MpVideoCtrlMgrGetDuration();
-}
-
-static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpUtilMultimediaKeyGrab();
-
- MpVideoAppCtrlGetVideoResolution(pAppData);
- pAppData->nDuration = MpVideoCtrlMgrGetDuration();
-
- MpVideoViewCtrlInitAfterBeginOfStream((void*)pAppData);
-
- if(MpVideoViewCtrlIsPauseByUser((void *)pAppData))
- {
- MpVideoAppCtrlPause(pAppData);
- MpVideoCtrlMgrSetMute(FALSE);
- }
-
- if(MpVideoCtrlMgrIsOnlyAudio())
- {
- MpVideoViewCtrlShowNocontentImage((void*)pAppData);
- }
- else
- {
- MpVideoViewCtrlHideNocontentImage((void*)pAppData);
- }
-}
-
-static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
- if(nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY)
- {
- if(pAppData->nCurPosition >= 0)
- {
- MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, 0);
- }
- else
- {
- VideoLogInfo("Invalid Plaing time or duration time.");
- }
- }
- MpVideoAppCtrlExit(pAppData);
-}
-
-static void MpVideoAppCtrlExit(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(pEcorePipeHandleForErrorMsg)
- {
- ecore_pipe_del(pEcorePipeHandleForErrorMsg);
- pEcorePipeHandleForErrorMsg = NULL;
- }
-
- if(pEcorePipeHandleBOF)
- {
- ecore_pipe_del(pEcorePipeHandleBOF);
- pEcorePipeHandleBOF = NULL;
- }
-
- if(pEcorePipeHandleEOF)
- {
- ecore_pipe_del(pEcorePipeHandleEOF);
- pEcorePipeHandleEOF = NULL;
- }
-
- if(pEcorePipeHandleForBuffering)
- {
- ecore_pipe_del(pEcorePipeHandleForBuffering);
- pEcorePipeHandleForBuffering = NULL;
- }
-
- if(pEcorePipeHandleForResumed)
- {
- ecore_pipe_del(pEcorePipeHandleForResumed);
- pEcorePipeHandleForResumed = NULL;
- }
-
- if(pEcorePipeHandleForInterruped)
- {
- ecore_pipe_del(pEcorePipeHandleForInterruped);
- pEcorePipeHandleForInterruped = NULL;
- }
-
- if(pEcorePipeHandlerForSeekComplete)
- {
- ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
- pEcorePipeHandlerForSeekComplete = NULL;
- }
-
- MpVideoAppCtrlStop(pAppData);
- MpVideoCtrlMgrMediaDestroy(pAppData);
- MpUtilDeletePopupHandle();
- MpVideoViewCtrlDestroy((void *)pAppData);
- MpUtilSetVolumeChangeCbUnset();
-
- if(MpVideoServiceCtrlGetPlayerType() == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingCtrlDestroy((void *)pAppData);
- }
-
- MpExternalUgDestroyAll();
-
- elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
-
- elm_exit();
-}
-
-static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- char *szCookie = MpVideoServiceCtrlGetCookieForStreaming();
- if(szCookie)
- {
- strncpy(pAppData->szCookie, szCookie, STR_LEN_MAX - 1);
- }
-
- MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(),
- NULL, NULL, (void *)pAppData);
-
- MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb,
- MpVideoAppCtrlPlayerInterruptedCb,
- MpVideoAppCtrlPlayerErrorCb,
- MpVideoAppCtrlPlayerBufferingCb,
- MpVideoAppCtrlPlayerUpdateSubtitleCb,
- (void*)pAppData);
-
- MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData);
-
- MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState());
-}
-
-static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoAppCtrlStop(pAppData);
- MpVideoCtrlMgrMediaDestroy(pAppData);
-
- MpVideoViewCtrlHideVolume();
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- pAppData->nSetPosition = 0;
- MpVideoViewCtrlChangeTitle(pAppData);
- }
-
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoAppCtrlStartStreaming(pAppData);
- }
-}
-
-static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return;
- }
-
- VideoLogInfo("");
-
- if(pEcorePipeHandlerForSeekComplete)
- {
- ecore_pipe_del(pEcorePipeHandlerForSeekComplete);
- pEcorePipeHandlerForSeekComplete = NULL;
- }
- pEcorePipeHandlerForSeekComplete = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlSeekCompletePipeCb, (void *)pAppData);
-
- if(pEcorePipeHandleForErrorMsg)
- {
- ecore_pipe_del(pEcorePipeHandleForErrorMsg);
- pEcorePipeHandleForErrorMsg = NULL;
- }
-
- pEcorePipeHandleForErrorMsg = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlErrormsgCb, (void *)pAppData);
-
- if(pEcorePipeHandleBOF)
- {
- ecore_pipe_del(pEcorePipeHandleBOF);
- pEcorePipeHandleBOF = NULL;
- }
-
- pEcorePipeHandleBOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb, (void *)pAppData);
-
- if(pEcorePipeHandleEOF)
- {
- ecore_pipe_del(pEcorePipeHandleEOF);
- pEcorePipeHandleEOF = NULL;
- }
-
- pEcorePipeHandleEOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb, (void *)pAppData);
-
- if(pEcorePipeHandleForBuffering)
- {
- ecore_pipe_del(pEcorePipeHandleForBuffering);
- pEcorePipeHandleForBuffering = NULL;
- }
-
- pEcorePipeHandleForBuffering = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb, (void *)pAppData);
-
- if(pEcorePipeHandleForResumed)
- {
- ecore_pipe_del(pEcorePipeHandleForResumed);
- pEcorePipeHandleForResumed = NULL;
- }
-
- pEcorePipeHandleForResumed = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb, (void *)pAppData);
-
- if(pEcorePipeHandleForInterruped)
- {
- ecore_pipe_del(pEcorePipeHandleForInterruped);
- pEcorePipeHandleForInterruped = NULL;
- }
-
- pEcorePipeHandleForInterruped = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb, (void *)pAppData);
-}
-
-static void MpVideoAppCtrlSetMute(VideoAppData *pAppData, bool bMute)
-{
- VideoLogInfo("");
-
- MpVideoViewCtrlSetMuteValue(bMute);
-}
-
-static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-
- MpVideoViewCtrlShowVolume();
-}
-
-static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData)
-{
- VideoLogInfo("");
-
- MpVideoViewCtrlHideVolume();
-}
-
-
-/*
- * External function
- */
-bool MpVideoAppCtrlInit(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("No exist appdata.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoLogInfo("Get rotation state from appcore. - %d", MpUtilGetRotationStateFromAppcore());
-
- MpUtilSetVolumeChangeCbSet((void *)pAppData);
-
- MpVideoAppCtrlFuncInit(pAppData);
- MpVideoAppCtrlPipeInit(pAppData);
- MpVideoViewCtrlInit(pAppData);
-
- evas_object_show(pAppData->pMainWindow);
- elm_win_activate(pAppData->pMainWindow);
-
- if(!MpUtilIsCallOff())
- {
- MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
- return FALSE;
- }
-
- MpVideoAppCtrlInitCheckCallStatus();
-
- if(!MpUtilCheckBatteryStatus())
- {
- MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpVideoAppCtrlExitCb);
- return FALSE;
- }
-
- MpVideoAppCtrlStart(pAppData);
-
- return TRUE;
-}
-
-bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData)
-{
- if (!pAppData) {
- VideoLogInfo("No exist appdata.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- MpVideoAppCtrlStop(pAppData);
-
- MpVideoCtrlMgrMediaDestroy(pAppData);
- MpUtilDeletePopupHandle();
- MpVideoViewCtrlDestroy((void *)pAppData);
-
- MpUtilMediaSvcFinishSession();
- MpUtilBatteryStatusNotiIgnore();
-
- nBufferingRate = 0;
- nPlayerErrorType = 0;
- nPlayerInterruptType = 0;
-
- pAppData->nDuration = 0;
- pAppData->nSetPosition = 0;
- pAppData->nCurPosition = 0;
- pAppData->nBufferingPosition = 0;
- pAppData->nVideoWidthResolution = 0;
- pAppData->nVideoHeightResolution = 0;
-
- memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX);
- memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX);
- memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
- memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
-
- pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR;
- pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
- pAppData->nPlayingSpeed = 0;
-
- memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX);
- memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX);
- memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX);
-
- MpUtilResetForRelaunching();
-
- MpVideoAppCtrlInitCheckCallStatus();
-
- return TRUE;
-}
-
-bool MpVideoAppCtrlIsTopView(void* pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- return MpVideoViewCtrlIsTopView(pUserData);
-}
-
-bool MpVideoAppCtrlIsExistPlayerHandle(void)
-{
- VideoLogInfo("");
-
- return MpVideoCtrlMgrIsExistPlayerHandle();
-}
-
-void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState)
-{
- VideoLogInfo("");
-
- bWindowForegroundState = bForwgroundState;
-}
-
-void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData)
-{
- VideoLogInfo("");
-
- MpVideoViewCtrlSetRotation(nRotateMode, TRUE, pUserData);
-}
-
-bool MpVideoAppCtrlIsCheckCallStatus(void)
-{
- VideoLogInfo("");
-
- bool bCheckCallStatus = FALSE;
-
- if(g_nCurrentInterrupt == MP_PLAYER_INTERRUPTED_BY_CALL)
- {
- bCheckCallStatus = TRUE;
- }
-
- return bCheckCallStatus;
-
-}
-void MpVideoAppCtrlInitCheckCallStatus(void)
-{
- VideoLogInfo("");
-
- g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED;
-}
-
diff --git a/src/mp-video-ctrl-mgr.c b/src/mp-video-ctrl-mgr.c
deleted file mode 100755
index 240fbd2..0000000
--- a/src/mp-video-ctrl-mgr.c
+++ /dev/null
@@ -1,571 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <stdio.h>
-#include <string.h>
-#include <image_util.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-ctrl-mgr.h"
-#include "mp-video-player-mgr.h"
-#include "mp-video-type-define.h"
-#include "mp-video-service-ctrl.h"
-
-bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if(!MpPlayerMgrCreate(szMediaURI))
- {
- VideoLogInfo("[ERR] Fail to create player handle.");
- return FALSE;
- }
-
- MpUtilGetUserAgent(pAppData);
-
- if(!MpPlayerMgrSetUseragentForStreaming(pAppData->szUserAgent))
- {
- VideoLogInfo("[ERR] Fail to set useragent.");
- return FALSE;
- }
-
- if(!MpPlayerMgrSetProxyAddressForStreaming(pAppData->szProxyAddress))
- {
- VideoLogInfo("[ERR] Fail to set proxy address.");
- return FALSE;
- }
-
- if(!MpPlayerMgrSetCookieForStreaming(pAppData->szCookie))
- {
- VideoLogInfo("[ERR] Fail to set Cookie.");
- return FALSE;
- }
-
- if(szSubtitleUri && strlen((char*)szSubtitleUri) > 0)
- {
- VideoLogInfo("Subtitle URI : %s", szSubtitleUri);
-
- if(!MpPlayerMgrSetSubtitle(szSubtitleUri))
- {
- VideoLogInfo("Fail to set subtitle uri.");
- }
- }
- else
- {
- VideoLogInfo("No exist subtitle uri.");
- }
-
- if(!MpPlayerMgrSetOverlayXid(pOverlayXid))
- {
- VideoLogInfo("[ERR] Fail to set overlay window.");
- return FALSE;
- }
-
- if(!MpVideoCtrlMgrSetScaling(FALSE))
- {
- VideoLogInfo("[ERR] Fail to set scaling.");
- return FALSE;
- }
-
- if(!MpPlayerMgrSetSoundPriority())
- {
- VideoLogInfo("[ERR] Fail to set sound priority.");
- return FALSE;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
-
- return TRUE;
-}
-
-bool MpVideoCtrlMgrMediaRealize(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrRealize())
- {
- VideoLogInfo("[ERR] Fail relization.");
- return FALSE;
- }
- return TRUE;
-}
-
-bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrRealizeAsync(pReailzeCb, pUserData))
- {
- VideoLogInfo("[ERR] Fail relization.");
- return FALSE;
- }
- return TRUE;
-}
-
-void MpVideoCtrlMgrMediaDestroy(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (!MpPlayerMgrIsActive()) {
- VideoLogInfo(" Already destroy player handle.");
- return;
- }
-
- if (!MpPlayerMgrUnrealize()) {
- VideoLogInfo("[ERR] Fail to unrealize player handle.");
- }
-
- if (!MpPlayerMgrDestroy()) {
- VideoLogInfo("[ERR] Fail to destroy player handle.");
- return;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
-}
-
-bool MpVideoCtrlMgrMediaPlay(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (!MpPlayerMgrPlay()) {
- VideoLogInfo("[ERR] Fail to play multimedia player.");
- return FALSE;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
-
- return TRUE;
-}
-
-void MpVideoCtrlMgrMediaStop(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (!MpPlayerMgrIsActive()) {
- VideoLogInfo("[ERR] Player handle is destroyed.");
- return;
- }
-
- if (!MpPlayerMgrStop()) {
- VideoLogInfo("[ERR] Fail to stop multimedia player.");
- return;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
-}
-
-void MpVideoCtrlMgrMediaPause(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
- VideoLogInfo
- ("It is not possible to pause when player state is stop.");
- return;
- }
-
- if (!MpPlayerMgrPause()) {
- VideoLogInfo("[ERR] Fail to pause multimedia player.");
- return;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
-}
-
-void MpVideoCtrlMgrMediaResume(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
- VideoLogInfo
- ("It is not possible to resume when player state is stop.");
- return;
- }
-
- if (!MpPlayerMgrResume()) {
- VideoLogInfo("[ERR] Fail to resume multimedia player.");
- return;
- }
-
- pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
-}
-
-void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- if(!PlayerCompletedCb || !PlayerInterruptedCb || !PlayerErrorCb || !PlayerBufferingCb)
- {
- VideoLogInfo("[ERR] No exist player callback function pointer.");
- return;
- }
-
- VideoLogInfo("");
-
- MpPlayerMgrRegistePlayerCallback(PlayerCompletedCb, PlayerInterruptedCb, PlayerErrorCb, PlayerBufferingCb, PlayerSubtitleCb, pUserData);
-}
-
-void MpVideoCtrlMgrSetOverlayXid(void *pXid)
-{
- VideoLogInfo("");
-
- if (!MpPlayerMgrSetOverlayXid(pXid)) {
- VideoLogInfo("[ERR] Fail to set overlay window.");
- return;
- }
-}
-void MpVideoCtrlMgrSetEvasSinkID(void *pEvasSinkID)
-{
- VideoLogInfo("");
-
- if (!MpPlayerMgrSetEvasSinkID(pEvasSinkID)) {
- VideoLogInfo("[ERR] Fail to set overlay window.");
- return;
- }
-}
-
-void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData)
-{
- VideoLogInfo("");
-
- VideoLogInfo("Set position - %d", nSetPosition);
-
- if (nSetPosition > -1) {
- MpPlayerMgrSetPosition(nSetPosition, pSeekCb, pUserData);
- }
-}
-void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition)
-{
- VideoLogInfo("");
-
- if (nSetPosition > -1) {
- MpPlayerMgrSetSubtitlePosition(nSetPosition);
- }
-}
-
-int MpVideoCtrlMgrGetPosition(void)
-{
- /* VideoLogInfo(""); */
-
- return MpPlayerMgrGetPosition();
-}
-
-int MpVideoCtrlMgrGetDuration(void)
-{
- VideoLogInfo("");
-
- int nDuration = 0;
-
- nDuration = MpPlayerMgrGetDuration();
-
- VideoLogInfo(" content duration : %d ms", nDuration);
-
- return nDuration;
-}
-
-void MpVideoCtrlMgrResetPlaySpeed(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (!MpPlayerMgrSetPlaySpeed(1.0)) {
- VideoLogInfo("[ERR] Fail to reset play speed.");
- return;
- }
-
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_NORMAL;
-}
-
-void MpVideoCtrlMgrSetPlaySpeedUp(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) {
- VideoLogInfo("Current speed is full.(5X)");
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_5X;
- }
-
-
- float val = 0;
- val = (float)pAppData->nPlayingSpeed;
-
- MpPlayerMgrSetPlaySpeed(val);
-
-}
-
-void MpVideoCtrlMgrSetPlaySpeedDown(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("");
-
- if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) {
- VideoLogInfo("Current speed is full.(5X)");
- return;
- }
-
- float val = 0;
- val = -(float)pAppData->nPlayingSpeed;
- MpPlayerMgrSetPlaySpeed(val);
-
-}
-
-int MpVideoCtrlMgrGetVideoWidthResolution(void)
-{
- VideoLogInfo("");
-
- int nVideoWidthResolution = MpPlayerMgrGetVideoWidthResolution();
-
- VideoLogInfo("Video width resolution : %d", nVideoWidthResolution);
-
- return nVideoWidthResolution;
-}
-
-int MpVideoCtrlMgrGetVideoHeightResolution(void)
-{
- VideoLogInfo("");
-
- int nVideoHeightResolution = MpPlayerMgrGetVideoHeightResolution();
-
- VideoLogInfo("Video height resolution : %d", nVideoHeightResolution);
-
- return nVideoHeightResolution;
-}
-
-void MpVideoCtrlMgrSetRatioVideoScreen(void *pUserData, int nRatioScreenSize)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoLogInfo("");
-
- int nDisplayMode = PLAYER_DISPLAY_MODE_LETTER_BOX;
-
- MpPlayerMgrSetDisplayMode(nDisplayMode);
-}
-
-void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue)
-{
- VideoLogInfo("");
-
- switch (nVideoRotateValue) {
- case VIDEO_ROTATE_PORTRAIT_NORMAL:
- VideoLogInfo("Set Portrait.");
- MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT);
- break;
-
- case VIDEO_ROTATE_LANDSCAPE_NORMAL:
- VideoLogInfo("Set Landscape.");
- MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE);
- break;
-
- case VIDEO_ROTATE_PORTRAIT_REVERSE:
- VideoLogInfo("Set Portrait reverse.");
- MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN);
- break;
-
- case VIDEO_ROTATE_LANDSCAPE_REVERSE:
- VideoLogInfo("Set Landscape reverse.");
- MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN);
- break;
-
- default:
- VideoLogInfo("Set Portrait.");
- MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT);
- break;
- }
-}
-
-void MpVideoCtrlMgrSetMute(bool bMuteEnable)
-{
- VideoLogInfo("");
-
- MpPlayerMgrSetMute(bMuteEnable);
-}
-
-bool MpVideoCtrlMgrGetMuteState(void)
-{
- VideoLogInfo("");
-
- return MpPlayerMgrGetMute();
-}
-
-bool MpVideoCtrlMgrStartCapture(void *pVideoCaptureCb, void *pUserData)
-{
- VideoLogInfo("");
-
- return MpPlayerMgrCaptureVideo(pVideoCaptureCb, pUserData);
-}
-
-int MpVideoCtrlMgrGetBufferingPosition(void)
-{
- return MpPlayerMgrGetBufferingPosition();
-}
-
-bool MpVideoCtrlMgrIsExistPlayerHandle(void)
-{
- VideoLogInfo("");
-
- return MpPlayerMgrIsActive();
-}
-
-bool MpVideoCtrlMgrIsOnlyAudio(void)
-{
- VideoLogInfo("");
-
- int nStreamFileType = MpPlayerMgrGetFileStreamType();
-
- if(nStreamFileType == MP_FILE_STREAM_TYPE_AUDIO)
- {
- VideoLogInfo("A file stream type is only audio.");
- return TRUE;
- }
-
- return FALSE;
-}
-
-bool MpVideoCtrlMgrSetScaling(bool bScale)
-{
- VideoLogInfo("");
-
- return MpPlayerMgrSetScaling(bScale);
-
-}
-
-int MpVideoCtrlMgrGetErrorType(int nErrorVal)
-{
- VideoLogInfo("");
-
- switch(nErrorVal)
- {
- case PLAYER_ERROR_NONE:
- return MP_PLAYER_ERROR_NONE;
-
- case PLAYER_ERROR_OUT_OF_MEMORY:
- return MP_PLAYER_ERROR_OUT_OF_MEMORY;
-
- case PLAYER_ERROR_INVALID_PARAMETER:
- return MP_PLAYER_ERROR_INVALID_PARAMETER;
-
- case PLAYER_ERROR_NO_SUCH_FILE:
- return MP_PLAYER_ERROR_NO_SUCH_FILE;
-
- case PLAYER_ERROR_INVALID_OPERATION:
- return MP_PLAYER_ERROR_INVALID_OPERATION;
-
- case PLAYER_ERROR_SEEK_FAILED:
- return MP_PLAYER_ERROR_SEEK_FAILED;
-
- case PLAYER_ERROR_INVALID_STATE:
- return MP_PLAYER_ERROR_INVALID_STATE;
-
- case PLAYER_ERROR_NOT_SUPPORTED_FILE:
- return MP_PLAYER_ERROR_NOT_SUPPORTED_FILE;
-
- case PLAYER_ERROR_INVALID_URI:
- return MP_PLAYER_ERROR_INVALID_URI;
-
- case PLAYER_ERROR_SOUND_POLICY:
- return MP_PLAYER_ERROR_SOUND_POLICY;
-
- case PLAYER_ERROR_CONNECTION_FAILED:
- return MP_PLAYER_ERROR_CONNECTION_FAILED;
-
- case PLAYER_ERROR_VIDEO_CAPTURE_FAILED:
- return MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED;
-
- default:
- return MP_PLAYER_ERROR_UNKNOWN_ERROR;
- }
-}
-
-int MpVideoCtrlMgrGetClosedCaptionCount(void)
-{
- VideoLogInfo("");
-
- return MpPlayerMgrGetClosedCaptionCount();
-
-} \ No newline at end of file
diff --git a/src/mp-video-display-view.c b/src/mp-video-display-view.c
deleted file mode 100755
index 2143d2a..0000000
--- a/src/mp-video-display-view.c
+++ /dev/null
@@ -1,1341 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <aul.h>
-#include <ctype.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <syspopup_caller.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-display-view.h"
-#include "mp-video-progressbar.h"
-#include "mp-video-type-define.h"
-#include "mp-video-value-define.h"
-#include "mp-util-media-service.h"
-#include "mp-video-string-define.h"
-#include "mp-video-sound-path-ctrl.h"
-
-#include "mp-external-ug.h"
-#include "mp-video-service-ctrl.h"
-
-#define CTRL_PANEL_SHOW_TIME 5.0
-#define MAX_SPEED_STEP 4
-#define REWIND_SPACE_TIME 3000
-
-static Evas_Object *pNaviFrameHandle = NULL;
-static Evas_Object *pDisplayViewLayout = NULL;
-static Evas_Object *pDisplayViewPanelEdj = NULL;
-static Evas_Object *pDisplayViewCtrlEdj = NULL;
-static Evas_Object *pDisplayViewOptionEdj = NULL;
-static Evas_Object *pDisplayViewProgressbarEdj = NULL;
-static Evas_Object *pDisplaySoundpathButton = NULL;
-
-static Evas_Object *pDisplayViewSpeedboxEdj = NULL;
-
-static Ecore_Timer *pCtrlPanelHideTimer = NULL;
-static Ecore_Timer *pSpeedPressTimer = NULL;
-static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
-static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL;
-
-static bool bSwitchDisplayViewUI = TRUE;
-static bool bIsSpeedLongPress = FALSE;
-static bool bIsDisplayViewOnlyAudio = FALSE;
-static int nSpeedMode = 0; /* (-1:REW, 1: FF) */
-static int nControlMouseDownPos = 0;
-static int nControlMouseMovePos = 0;
-static bool bIsPauseByUser = FALSE;
-static bool bIsBeginOfStream = FALSE;
-static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
-
-
-static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
-{
- if (!pUserData) {
- VideoLogInfo("No exist pUserData");
- return;
- }
-
- VideoLogInfo("");
-
- MpUtilDeletePopupHandle();
-}
-
-
-static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (MpVideoSoundpathIsConnectOtherSoundpath()) {
- VideoLogInfo("Connect BT or earjack.");
- MpVideoSoundpathShow(pUserData);
- } else {
- MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
- }
-}
-
-
-static void MpVideoDisplayViewPressOptionShareCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- if(pCtrlPanelHideTimer)
- {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
-
- MpExternalUgShow((void *)pAppData, pNaviFrameHandle);
-}
-
-static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS))
- {
- VideoLogInfo("Press Pause button.");
-
- if(pAppData->bSeekComplete == FALSE)
- {
- bIsPauseByUser = TRUE;
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
- return;
- }
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY)
- {
- bIsPauseByUser = TRUE;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- }
- }
-}
-
-static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
- VideoLogInfo("Press Resume/Play button.");
-
- if(pAppData->bSeekComplete == FALSE)
- {
- bIsPauseByUser = FALSE;
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
- return;
- }
-
- if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY)
- {
- bIsPauseByUser = FALSE;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- }
- }
-}
-
-static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- }
-
- bIsSpeedLongPress = TRUE;
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
-
- char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
-
- if(nSpeedMode == 1)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
- snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
-
- edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj);
- evas_object_show(pDisplayViewSpeedboxEdj);
- }
- else if(nSpeedMode == -1)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
- snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
- edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_REW, pDisplayViewSpeedboxEdj);
- evas_object_show(pDisplayViewSpeedboxEdj);
- }
-
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*");
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
-
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*");
-
- return EINA_FALSE;
-}
-
-
-static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) {
- VideoLogInfo("Press FF down button.");
- if (pCtrlPanelHideTimer) {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- }
-
- nSpeedMode = 1;
- pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
- }
-}
-
-static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
- VideoLogInfo("Press FF up button.");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- bIsPauseByUser = FALSE;
- }
- else
- {
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
- }
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
- edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
- evas_object_hide(pDisplayViewSpeedboxEdj);
-
-
- bIsSpeedLongPress = FALSE;
- }
-}
-
-static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED))
- {
- VideoLogInfo("Press FF clicked button.");
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
-
- bIsPauseByUser = FALSE;
- }
-}
-
-static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
- VideoLogInfo("Press Rewind donw button.");
-
- if (pCtrlPanelHideTimer) {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- }
-
- nSpeedMode = -1;
- pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData);
- }
-}
-
-static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
- VideoLogInfo("Press Rewind up button.");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- bIsPauseByUser = FALSE;
- }
- else
- {
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
- }
-
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
- evas_object_hide(pDisplayViewSpeedboxEdj);
- edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
-
-
- bIsSpeedLongPress = FALSE;
- }
-}
-
-static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(!bIsBeginOfStream)
- {
- VideoLogInfo("Skip for BOF");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) {
- VideoLogInfo("Press Rewind clicked button.");
-
- if(pAppData->nCurPosition > REWIND_SPACE_TIME)
- {
- pAppData->nSetPosition = 0;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
- }
- else
- {
- bIsPauseByUser = FALSE;
- }
- }
-}
-
-static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pAppData->nCurPosition >= 0)
- {
- MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition);
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
-
- MpVideoDisplayViewPop(pNaviFrameHandle, pUserData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
-}
-
-
-static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-}
-
-static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
- Evas_Object *pObject,
- const char *szEmission,
- const char *szSource)
-{
- VideoLogInfo("");
- if (!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
-}
-
-static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No Exist pUserData.");
- return EINA_FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pCtrlPanelHideTimer) {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
-
- return EINA_FALSE;
-}
-
-
-static void MpVideoDisplayViewSpeedChange(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No Exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int booster_step = 0;
-
- if (nSpeedMode == 1) {
- booster_step = nControlMouseDownPos - nControlMouseMovePos;
- booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
- } else if (nSpeedMode == -1) {
- booster_step = nControlMouseDownPos - nControlMouseMovePos;
- booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get());
- } else {
- VideoLogInfo("[ERR] Invalid SpeedMode.");
- return;
- }
-
-
- if(booster_step == 0)
- {
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*");
- }
- else if(booster_step == 1)
- {
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X;
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*");
- }
- else if(booster_step > 2)
- {
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X;
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*");
- }
-
- VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed);
-
- char caption[CAPTION_TEXT_MAX_LEN] = { 0, };
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
-
- if(nSpeedMode == 1)
- {
- snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
- }
- else
- {
- snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
- }
-
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption);
-
- return;
-}
-
-static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
-{
- if (!event) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No Exist pUserData.");
- return;
- }
-
- Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event;
-
- if (bIsSpeedLongPress) {
- nControlMouseMovePos = pBtnEvent->cur.output.y;
- MpVideoDisplayViewSpeedChange(pUserData);
- }
-}
-
-static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event)
-{
- VideoLogInfo("");
-
- if (!event) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event;
-
- nControlMouseDownPos = pBtnEvent->output.y;
-}
-
-static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- MpVideoSoundpathHide();
- MpUtilDeletePopupHandle();
-
- if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) {
- VideoLogInfo("Connect earjack.");
- if (pDisplaySoundpathButton) {
- elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
- } else {
- pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
- elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
- }
- } else {
- VideoLogInfo("Disconnect earjack.");
-
- if (pDisplaySoundpathButton) {
- evas_object_del(pDisplaySoundpathButton);
- pDisplaySoundpathButton = NULL;
- }
-
- elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn");
- }
-}
-
-static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(!MpUtilIsCameraOff())
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
-}
-static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
-
- evas_object_hide(pDisplayViewLayout);
-}
-
-static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
-}
-
-void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
- if (pDisplayViewLayout) {
- Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
-
- elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
-
- pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
- elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj);
-
- edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*");
-
- pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
-
- evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData);
- evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData);
-
- if(nPlayerType == MP_VIDEO_PLAYER_GALLERY)
- {
- int width = 0;
- int height = 0;
-
- int item_width = 120;
- int item_height = 90;
-
- ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
- if(width > 0) {
- item_width = 170 * width/DEFAULT_SCALE_WIDTH;
- }
-
- if(height > 0) {
- item_height = 145 * height/DEFAULT_SCALE_HEIGHT;
- }
- }
-
- pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
-
- edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
-
- pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
- if (pDisplayViewProgressbarEdj) {
- edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj);
- } else {
- VideoLogInfo("Progressbar edj handle is null.");
- }
-
- elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
-
- edje_object_signal_callback_add(pDisplayViewOptionEdj,
- SIGNAL_OPTION_SHARE_DOWN,
- PART_OPTION_SHARE,
- (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
- SIGNAL_CONTROL_PART_PLAY_BUTTON,
- (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_PLAY_RESUME_PRESS,
- SIGNAL_CONTROL_PART_PLAY_BUTTON,
- (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_FF_BUTTON,
- (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP,
- SIGNAL_CONTROL_PART_FF_BUTTON,
- (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED,
- SIGNAL_CONTROL_PART_FF_BUTTON,
- (void *)MpVideoDisplayViewFFClickedButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_REW_BUTTON,
- (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
- SIGNAL_CONTROL_PART_REW_BUTTON,
- (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED,
- SIGNAL_CONTROL_PART_REW_BUTTON,
- (void *)MpVideoDisplayViewRewClickedButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_BACK_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_BACK_BUTTON,
- (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_VOL_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_VOL_BUTTON,
- (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_VOL_BUTTON_UP,
- SIGNAL_CONTROL_PART_VOL_BUTTON,
- (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_MUTE_BUTTON,
- (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pDisplayViewCtrlEdj,
- SIGNAL_CONTROL_MUTE_BUTTON_UP,
- SIGNAL_CONTROL_PART_MUTE_BUTTON,
- (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
-
- pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP);
- evas_object_hide(pDisplayViewSpeedboxEdj);
-
- MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
- MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData);
- }
-}
-
-void MpVideoDisplayViewInit(void *pUserData, int nPlayerType)
-{
- VideoLogInfo("");
-
- if (!pNaviFrameHandle|| !pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
- bIsPauseByUser = FALSE;
-
- MpVideoDisplayViewInitLayout(pUserData, nPlayerType);
-}
-
-
-/*
- * External function
- */
-void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb)
-{
- if (!pNaviFrame || !pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pNaviFrameHandle = pNaviFrame;
- pChangeViewUserCbFunc = pChangeViewCb;
-
- MpVideoDisplayViewInit(pUserData, nPlayerType);
- pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line");
-
- elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoDisplayViewShowLayoutFinish, pUserData);
- elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoDisplayViewHideLayoutFinish, pUserData);
-
- if(MpVideoSoundpathIsConnectOtherSoundpath())
- {
- pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
- elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton);
- }
-
- if(MpUtilCheckMuteStatus())
- {
- MpVideoDisplayViewSetMuteStatus(TRUE);
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-}
-
-void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
-}
-
-void MpVideoDisplayViewDestroy(void *pUserData)
-{
- VideoLogInfo("");
-
- MpVideoDisplayViewHideControlPanel(pUserData);
- MpVideoProgressbarDestroy();
-
- pNaviFrameHandle = NULL;
- pDisplayViewProgressbarEdj = NULL;
-
- if (pDisplayViewPanelEdj) {
- evas_object_del(pDisplayViewPanelEdj);
- pDisplayViewPanelEdj = NULL;
- }
-
- if (pDisplayViewCtrlEdj) {
- evas_object_del(pDisplayViewCtrlEdj);
- pDisplayViewCtrlEdj = NULL;
- }
-
- if (pDisplayViewOptionEdj) {
- evas_object_del(pDisplayViewOptionEdj);
- pDisplayViewOptionEdj = NULL;
- }
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- }
-
- if (pCtrlPanelHideTimer) {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- if (pDisplayViewLayout) {
- evas_object_del(pDisplayViewLayout);
- pDisplayViewLayout = NULL;
- }
-
- if (pDisplaySoundpathButton) {
- evas_object_del(pDisplaySoundpathButton);
- pDisplaySoundpathButton = NULL;
- }
-
- if (pDisplayViewSpeedboxEdj) {
- evas_object_del(pDisplayViewSpeedboxEdj);
- pDisplayViewSpeedboxEdj = NULL;
- }
-
- bSwitchDisplayViewUI = TRUE;
- nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
- bIsDisplayViewOnlyAudio = FALSE;
- bIsPauseByUser = FALSE;
-}
-
-void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- bIsBeginOfStream = TRUE;
-
- pAppData->bSeekComplete = TRUE;
-
- MpVideoProgressbarBeginOfStream((void *)pAppData);
-
- if (pAppData->nDuration > 1) {
- char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
-
- snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
-
- MpVideoProgressbarUpdateDurationTime(szDurationTime);
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-
- if(MpVideoDisplayViewIsPauseByUser() == FALSE)
- {
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
- }
-}
-
-void MpVideoDisplayViewUpdatePauseKey(void)
-{
- VideoLogInfo("");
-
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
-}
-
-void MpVideoDisplayViewUpdateResumeKey(void)
-{
- VideoLogInfo("");
-
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
-}
-
-
-
-
-void MpVideoDisplayViewShowControlPanel(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!pDisplayViewPanelEdj) {
- VideoLogInfo("No exist play control panel edc.");
- return;
- }
-
- if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
- VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(bIsBeginOfStream)
- {
- MpVideoProgressbarCreateTimer((void *)pAppData);
- }
-
- bSwitchDisplayViewUI = TRUE;
- evas_object_show(pDisplayViewLayout);
-
- elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
- int nRotate = MpUtilGetRotationState();
- if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
- {
- elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
- }
- else
- {
- elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
- }
-
- if (pCtrlPanelHideTimer) {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- VideoLogInfo("");
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) {
- VideoLogInfo("");
- } else {
- VideoLogInfo("");
- pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
- }
-
- MpVideoDisplayViewActivate();
-}
-
-void MpVideoDisplayViewHideControlPanel(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
- VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
- return;
- }
-
- if (!pDisplayViewPanelEdj) {
- VideoLogInfo("No exist play control panel edc.");
- return;
- }
-
- if(bIsDisplayViewOnlyAudio)
- {
- VideoLogInfo("Not hide control panel and UI because of audio only.");
- return;
- }
-
- bSwitchDisplayViewUI = FALSE;
-
- MpVideoProgressbarDeleteTimer();
- MpExternalUgHide();
-
- if (pCtrlPanelHideTimer) {
- ecore_timer_del(pCtrlPanelHideTimer);
- pCtrlPanelHideTimer = NULL;
- }
-
- elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
- elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
-}
-
-void MpVideoDisplayViewActivate(void)
-{
- VideoLogInfo("");
-
- nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
-}
-
-void MpVideoDisplayViewUnactivate(void)
-{
- VideoLogInfo("");
-
- nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
-}
-
-void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
-
- bIsBeginOfStream = FALSE;
- MpVideoProgressbarDeleteTimer();
-
- if (pSpeedPressTimer) {
- ecore_timer_del(pSpeedPressTimer);
- pSpeedPressTimer = NULL;
- }
-
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
-
- if (pNaviFrameItemForDisplayerView != NULL) {
- VideoLogInfo("%s", pAppData->szVideoTitle);
- elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
- }
-}
-
-bool MpVideoDisplayViewIsTopView(void)
-{
- VideoLogInfo("");
-
- Evas_Object *pTmpContents = NULL;
- Elm_Object_Item *pTmpItem = NULL;
-
- if (!pNaviFrameHandle) {
- VideoLogInfo("[ERR] No exist navigationbar handle.");
- return FALSE;
- }
-
- pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
- pTmpContents = elm_object_item_content_get(pTmpItem);
- if (pTmpContents) {
- if (pTmpContents == pDisplayViewLayout) {
- VideoLogInfo("Video display view is staing in top view.");
- return TRUE;
- } else {
- VideoLogInfo("Video display view is not staied in top view.");
- return FALSE;
- }
- } else {
- VideoLogInfo("[ERR] No exist navigationbar top item.");
- return FALSE;
- }
-
- return FALSE;
-}
-
-void MpVideoDisplayViewShowNocontentImage(void *pUserData)
-{
- VideoLogInfo("");
-
- if (pDisplayViewLayout) {
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
- }
-
- bIsDisplayViewOnlyAudio = TRUE;
-
- MpVideoDisplayViewShowControlPanel(pUserData);
-}
-
-void MpVideoDisplayViewHideNocontentImage(void)
-{
- VideoLogInfo("");
-
- if (pDisplayViewLayout) {
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
- }
-
- bIsDisplayViewOnlyAudio = FALSE;
-}
-
-void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(bIsSpeedLongPress)
- {
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
-
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
- edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
-
- evas_object_hide(pDisplayViewSpeedboxEdj);
- bIsSpeedLongPress = FALSE;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
- }
-
- elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
- edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
- edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*");
- if(bLayoutHide)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
- }
-}
-
-void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(bIsSpeedLongPress)
- {
- edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, "");
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*");
-
- edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*");
- edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj);
-
- evas_object_hide(pDisplayViewSpeedboxEdj);
- bIsSpeedLongPress = FALSE;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
- }
-
- elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
-
- edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*");
-
- if(bLayoutHide)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
- }
-
-}
-
-void MpVideoDisplayViewResetProgressBar(void *pUserData)
-{
- VideoLogInfo("");
-
- if (pDisplayViewLayout) {
- MpVideoProgressbarReset(pUserData);
- }
-}
-
-bool MpVideoDisplayViewIsPauseByUser(void)
-{
- VideoLogInfo("%d", bIsPauseByUser);
-
- return bIsPauseByUser;
-}
-
-void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser)
-{
- VideoLogInfo("");
-
- bIsPauseByUser = bPauseByUser;
-}
-
-
-void MpVideoDisplayViewUpdateProgressBar(void *pUserData)
-{
- VideoLogInfo("");
-
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(bIsBeginOfStream)
- {
- MpVideoProgressbarCreateTimer(pUserData);
- }
-}
-
-void MpVideoDisplayViewSetMuteStatus(bool bMute)
-{
- VideoLogInfo("");
-
- if(pDisplayViewCtrlEdj == NULL)
- {
- VideoLogError("Display control edj is NULL");
- return;
- }
-
- if(bMute)
- {
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SET_MUTE, "*");
- }
- else
- {
- edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_UNSET_MUTE, "*");
- }
-
-}
-
diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c
deleted file mode 100644
index e1b786f..0000000
--- a/src/mp-video-player-mgr.c
+++ /dev/null
@@ -1,856 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#include "mp-video-log.h"
-#include "mp-video-player-mgr.h"
-
-#define MAX_PATH_LEN 2048
-
-
-static player_h pPlayerHandle;
-
-
-bool MpPlayerMgrIsActive(void)
-{
- return pPlayerHandle ? true : false;
-}
-
-bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData)
-{
- VideoLogInfo("");
-
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(player_set_completed_cb(pPlayerHandle, PlayerCompletedCbFunc, pUserData) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(player_set_interrupted_cb(pPlayerHandle, PlayerInterruptedCbFunc, pUserData) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(player_set_error_cb(pPlayerHandle, PlayerErrorCbFunc, pUserData) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(player_set_buffering_cb(pPlayerHandle, PlayerBufferingCbFunc, pUserData) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(player_set_subtitle_updated_cb(pPlayerHandle, PlayerSubtitleCbFunc, pUserData) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR]");
- return false;
-}
-
- return true;
-}
-
-bool MpPlayerMgrCreate(const char *szPath)
-{
- VideoLogInfo("");
-
- if(!szPath)
- {
- VideoLogInfo("[ERR] Not correct Meida URI.");
- return false;
- }
-
- int nPathLength = strlen(szPath);
- int nErr = PLAYER_ERROR_NONE;
-
- VideoLogInfo(" Media path (%s)", szPath);
-
- if(nPathLength > 0 && nPathLength < MAX_PATH_LEN)
- {
- nErr = player_create(&pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to create player handle. (MMF Error code : %x)", nErr);
- return false;
- }
-
- nErr = player_set_uri(pPlayerHandle, szPath);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] (%x) Fail to set attribute ", nErr);
- return false;
- }
- }
- else
- {
- VideoLogInfo("[ERR] File path is too long.");
- return false;
- }
-
- nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] (%x):: Fail to set attribute ", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrDestroy(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_destroy(pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
- pPlayerHandle = NULL;
-
- return true;
-}
-
-bool MpPlayerMgrRealize(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_prepare(pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_prepare_async(pPlayerHandle, pPrepareCb, pUserData);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrUnrealize(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_unprepare (pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrPlay(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_start(pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrStop(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_stop (pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrResume(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_start(pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrPause(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_pause(pPlayerHandle);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x", nErr);
- return false;
- }
-
- return true;
-}
-
-int MpPlayerMgrGetPosition(void)
-{
- if(!MpPlayerMgrIsActive())
- {
- return 0;
- }
-
- int nPos = 0;
- int nErr = 0;
-
- nErr = player_get_position(pPlayerHandle, &nPos);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
- return 0;
- }
-
- return nPos;
-}
-
-void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("Set position - %d", nPos);
-
- int nErr = player_set_position(pPlayerHandle, (int)nPos, pSeekCb, pUserData);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
- }
-}
-
-void MpPlayerMgrSetSubtitlePosition(unsigned int nPos)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- int nErr = player_set_subtitle_position(pPlayerHandle, nPos);
-
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
- }
-}
-
-
-void MpPlayerMgrSetMute(bool bMuteEnable)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(player_set_mute(pPlayerHandle, bMuteEnable) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to set mute.");
- }
-}
-
-bool MpPlayerMgrGetMute(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- bool bIsMute = false;
-
- if(player_is_muted(pPlayerHandle, &bIsMute) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to get mute state.");
- return false;
- }
-
- return bIsMute;
-}
-
-bool MpPlayerMgrSetSurroundFilters(int nSurround)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- audio_effect_preset_e ePresetValue = (audio_effect_preset_e)nSurround;
-
- bool available = false;
-
- player_audio_effect_preset_is_available (pPlayerHandle, ePresetValue, &available);
-
- if(available == false)
- {
- VideoLogInfo("[ERR] unavailable to set audio effect.");
- return false;
- }
-
- if(player_audio_effect_set_preset(pPlayerHandle,ePresetValue) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to set audio effect.");
- return false;
- }
-
- return true;
-}
-
-int MpPlayerMgrGetDuration(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return 0;
- }
-
- int nDuration = -1;
-
- int nErr = player_get_duration(pPlayerHandle, &nDuration);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
- return 0;
- }
-
- return nDuration;
-}
-
-bool MpPlayerMgrSetOverlayXid(void *pOverlayXid)
-{
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-/*
- if(!pOverlayXid)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-*/
- VideoLogInfo("XID : %x, %d", pOverlayXid, (int)pOverlayXid);
- int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_X11, (void*)pOverlayXid);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
- return false;
- }
- return true;
-}
-
-bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID)
-{
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-/*
- if(!pEvasSinkID)
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-*/
- VideoLogInfo("Evas Sink ID : %x", pEvasSinkID);
-
- int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_EVAS, (void*)pEvasSinkID);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrSetSoundPriority(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
- return false;
- }
-
- return true;
-}
-
-int MpPlayerMgrSetPlaySpeed(float nSpeedValue)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return -1;
- }
- int nErr = player_set_playback_rate(pPlayerHandle, nSpeedValue);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
- return -1;
- }
-
- return 0;
-}
-
-int MpPlayerMgrGetVideoWidthResolution(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return 0;
- }
-
- int nWidth = 0;
- int nHeight = 0;
- int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
- return 0;
- }
-
- return nWidth;
-}
-
-int MpPlayerMgrGetVideoHeightResolution(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return 0;
- }
-
- int nWidth = 0;
- int nHeight = 0;
- int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr);
- return 0;
- }
-
- return nHeight;
-}
-
-bool MpPlayerMgrSetSubtitle(char *szSubtitlePath)
-{
- VideoLogInfo("%s", szSubtitlePath);
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(!szSubtitlePath)
- {
- VideoLogInfo("[ERR] subtitle path is null.");
- return false;
- }
-
- int nErr = player_set_subtitle_path(pPlayerHandle, szSubtitlePath);
- if(nErr != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr);
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
- int nRet = player_set_display_mode (pPlayerHandle , nMethodMode);
- if(nRet != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet);
- return false;
- }
- return true;
-}
-
-bool MpPlayerMgrSetRotate(MpVideoRotation nRotation)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- int nRotVal = PLAYER_DISPLAY_ROTATION_NONE;
-
- if(nRotation == VIDEO_SCREEN_PORTRAIT) {
- nRotVal = PLAYER_DISPLAY_ROTATION_NONE;
- }
- else if(nRotation == VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN) {
- nRotVal = PLAYER_DISPLAY_ROTATION_180;
- }
- else if(nRotation == VIDEO_SCREEN_LANDSCAPE) {
- nRotVal = PLAYER_DISPLAY_ROTATION_270;
- }
- else if(nRotation == VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN) {
- nRotVal = PLAYER_DISPLAY_ROTATION_90;
- }
-
- int nRet = player_set_x11_display_rotation (pPlayerHandle , nRotVal);
- if(nRet != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet);
- return false;
- }
- return true;
-}
-
-bool MpPlayerMgrSetUseragentForStreaming(const char *szUserAgent)
-{
- VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING USER AGENT. !!!!!!");
-
- return true;
-}
-
-bool MpPlayerMgrSetProxyAddressForStreaming(const char *szProxyAddress)
-{
- VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING PROXY ADDRESS. !!!!!!");
- return true;
-}
-
-bool MpPlayerMgrSetCookieForStreaming(const char *szCookie)
-{
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- if(!szCookie)
- {
- VideoLogInfo("No exist cookie.");
- return false;
- }
-
- VideoLogInfo("");
-
- int nRet = player_set_streaming_cookie(pPlayerHandle , szCookie, strlen(szCookie));
- if(nRet == PLAYER_ERROR_INVALID_PARAMETER)
- {
- VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER");
- return false;
- }
-
- return true;
-}
-
-bool MpPlayerMgrStartCapture()
-{
- VideoLogInfo("");
- return true;
-}
-
-bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData)
-{
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("");
- return false;
- }
-
- VideoLogInfo("");
-
- int nRet = player_capture_video(pPlayerHandle, pCallbackFunc, pUserData);
- if(nRet == PLAYER_ERROR_INVALID_PARAMETER)
- {
- VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER");
- return false;
- }
-
- if(nRet == PLAYER_ERROR_INVALID_OPERATION)
- {
- VideoLogInfo("PLAYER_ERROR_INVALID_OPERATION");
- return false;
- }
-
- if(nRet == PLAYER_ERROR_INVALID_STATE)
- {
- VideoLogInfo("PLAYER_ERROR_INVALID_STATE");
- return false;
- }
-
- return true;
-}
-
-int MpPlayerMgrGetBufferingPosition(void)
-{
- int nStartPos = 0;
- int nCurrentPos = 0;
-
- if(player_get_streaming_download_progress(pPlayerHandle,&nStartPos, &nCurrentPos) != PLAYER_ERROR_NONE)
- {
- VideoLogError("");
- return 0;
-}
-
- return nCurrentPos;
-}
-
-bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData)
-{
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- // !!! CHECK player_buffering_cb !!!
- if(player_set_buffering_cb(pPlayerHandle, pCallbackFunc, pUserData) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("");
- return false;
- }
-
- return true;
-}
-
-int MpPlayerMgrGetFileStreamType(void)
-{
- VideoLogInfo("");
-
-// jdlee
- return FILE_STREAM_TYPE_VIDEO;
-}
-
-bool MpPlayerMgrSetScaling(bool bScale)
-{
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return false;
- }
-
- VideoLogInfo("");
-
- if(player_enable_evas_display_scaling(pPlayerHandle, bScale) != PLAYER_ERROR_NONE) {
- VideoLogInfo("[ERR]");
- return false;
- }
- return true;
-}
-
-player_state_e MpPlayerMgrGetPlayerState(void)
-{
- int ret = 0;
- player_state_e player_state = PLAYER_STATE_NONE;
- ret = player_get_state(pPlayerHandle, &player_state);
- if (ret != PLAYER_ERROR_NONE) {
- player_state = PLAYER_STATE_NONE;
- }
- return player_state;
-}
-
-void MpPlayerMgrSetVolume(float volume)
-{
- VideoLogInfo("volume = %f", volume);
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(player_set_volume(pPlayerHandle, volume, volume) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to set volume.");
- }
-}
-
-float MpPlayerMgrGetVolume(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return 0.0;
- }
-
- float volume_left = 0.0;
- float volume_right = 0.0;
-
- if(player_get_volume(pPlayerHandle, &volume_left, &volume_right) != PLAYER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to get volume.");
- return 0.0;
- }
-
- return volume_left;
-}
-
-int MpPlayerMgrGetClosedCaptionCount(void)
-{
- VideoLogInfo("");
-
- if(!MpPlayerMgrIsActive())
- {
- VideoLogInfo("[ERR]");
- return 0;
- }
- int nCount = 0;
-
- if(player_get_track_count(pPlayerHandle, PLAYER_TRACK_TYPE_TEXT, &nCount) != PLAYER_ERROR_NONE)
- {
- VideoLogError("[ERR] player_get_track_count.");
- return 0;
- }
-
- VideoLogError("== %d ===========================================", nCount);
-
- return nCount;
-}
-
diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c
deleted file mode 100644
index 6ad16d7..0000000
--- a/src/mp-video-progressbar.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-value-define.h"
-#include "mp-video-service-ctrl.h"
-#include "mp-video-progressbar.h"
-
-#define PROGRESS_BAR_START_TERM 130
-#define PROGRESS_BAR_WIDTH_TERM 200
-
-#define PROGRESS_ADJUSTMENT_TIME_INTERVAL 2.0
-#define PROGRESS_ADJUSTMENT_RUN_INTERVAL 0.3
-
-#define PROGRESS_ADJUSTMENT_MOVE_LIMIT 20
-#define PROGRESS_ADJUSTMENT_MODE_LIMIT 20
-
-
-static Evas_Object *pProgressbarEdj = NULL;
-static Ecore_Timer *pProgressbarTimer = NULL;
-
-static Ecore_Timer *pProgressAdjustCheckTimer = NULL;
-static Ecore_Timer *pProgressAdjustRunTimer = NULL;
-
-static bool bIsEventSkip = FALSE;
-static bool bIsDrag = FALSE;
-static int nDragPosition = 0;
-
-static bool bIsAdjustmentMode = FALSE;
-static int nDownPosX = 0;
-static int nOldPosX = 0;
-static bool bPrevAdjustment = FALSE;
-
-
-static void MpVideoProgressbarSetAdjustmentMode(bool bShow)
-{
- VideoLogInfo("");
-
- if(bShow) {
- edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_SHOW, "*");
- }
- else {
- edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_HIDE, "*");
- }
-}
-
-
-static void MpVideoProgressbarSetPointerVisible(bool bVisible)
-{
- VideoLogInfo("");
-
- if(bVisible) {
- edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_SHOW, "*");
- }
- else {
- edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_HIDE, "*");
- }
-}
-
-/*
- * Internal function
- */
-static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData)
-{
- //VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist userdata.");
- return EINA_TRUE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- double nPlayedRatio = 0.0;
- char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
-
- nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration);
-
- snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
- PLAY_TIME_ARGS(nDragPosition / 1000));
-
- edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing",
- nPlayedRatio, 0.0);
-
- edje_object_part_text_set(pProgressbarEdj, "progress.txt.played",
- szPlayingTime);
-
- if(bIsAdjustmentMode) {
- edje_object_part_text_set(pProgressbarEdj, "progress.adjustment.txt",
- szPlayingTime);
- }
-
- return EINA_TRUE;
-}
-
-static void MpVideoProgressbarUpdateBufferingValue(void *pUserData)
-{
- //VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist userdata.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- double buffering_ratio = 0.0;
- pAppData->
- VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition(pAppData);
-
- buffering_ratio = ((double)pAppData->nBufferingPosition / (double)100);
-
- //VideoLogInfo("%d:%lf", pAppData->nBufferingPosition, buffering_ratio);
-
- edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering",
- buffering_ratio, 0.0);
-}
-
-/*
- * Callback function.
- */
-static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
-{
- /* VideoLogInfo(""); */
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist userdata.");
- return EINA_TRUE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pAppData->nDuration < 1) {
- VideoLogInfo("Try to update duration time.");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData);
- return EINA_TRUE;
- }
-
- if (bIsEventSkip || bIsDrag)
- return EINA_TRUE;
-
- double nPlayedRatio = 0.0;
- char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
-
- nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration);
- snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000));
-
- edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0);
- edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime);
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoProgressbarUpdateBufferingValue(pUserData);
- }
-
- return EINA_TRUE;
-}
-
-static Eina_Bool MpVideoProgressbarAdjustmentTimerCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR] No exist userdata.");
- return EINA_FALSE;
- }
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- bIsAdjustmentMode = TRUE;
-
- VideoLogInfo("%d, %d",pAppData->nCurPosition , nDragPosition);
-
- pAppData->nSetPosition = nDragPosition;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
-
- MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode);
- MpVideoProgressbarUpdateValue(pUserData);
- return EINA_FALSE;
-}
-
-static Eina_Bool MpVideoProgressbarAdjustmentRunTimerCb(void *pUserData)
-{
-// VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist userdata.");
- return EINA_TRUE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
-
- if(bPrevAdjustment) {
- pAppData->nSetPosition = nDragPosition - 1000;
- }
- else {
- pAppData->nSetPosition = nDragPosition + 1000;
- }
-
- if (pAppData->nSetPosition < 0) {
- pAppData->nSetPosition = 0;
- }
-
- if (pAppData->nSetPosition > pAppData->nDuration) {
- pAppData->nSetPosition = pAppData->nDuration;
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
-
- nDragPosition = pAppData->nSetPosition;
-
- MpVideoProgressbarUpdateValue((void *)pAppData);
-
-
-
- return EINA_TRUE;
-}
-
-
-
-static void MpVideoProgressbarDownCb(void *pUserData, Evas * e,
- Evas_Object *obj, void *event_info)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!event_info) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (bIsEventSkip)
- return;
-
- MpVideoProgressbarDeleteTimer();
- MpVideoProgressbarSetPointerVisible(TRUE);
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
- if(nTmpPlayerType != MP_STREAMING_PLAYER)
- {
- if(pProgressAdjustCheckTimer) {
- ecore_timer_del(pProgressAdjustCheckTimer);
- pProgressAdjustCheckTimer = NULL;
- }
-
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
-
- pProgressAdjustCheckTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_TIME_INTERVAL,
- MpVideoProgressbarAdjustmentTimerCb, (void *)pUserData);
-
- }
- bIsDrag = TRUE;
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- Evas_Event_Mouse_Up *ev = event_info;
- Evas_Object *progressbar = obj;
- int w = 0, current = 0;
- double ratio = 0.0;
-
- int term = 0;
- int w_term = 0;
- int width = 0;
- int height = 0;
-
- ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
- term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH;
- w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH;
- evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
- nDownPosX = ev->canvas.x;
- nOldPosX = ev->canvas.x;;
- current = ev->canvas.x - term;
- w = w - w_term;
- if (current < 0)
- current = 0;
- else if (current > w)
- current = w;
-
- ratio = (double)current / w;
-
- nDragPosition = ratio * pAppData->nDuration;
- pAppData->nSetPosition = nDragPosition;
-
- if(nTmpPlayerType != MP_STREAMING_PLAYER)
- {
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
- pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
- //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE;
- }
- pAppData->bSeekComplete = FALSE;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
- }
- else {
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
- pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
- }
- }
-
- MpVideoProgressbarUpdateValue(pUserData);
-
-}
-
-static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj,
- void *event_info)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!event_info) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (bIsEventSkip)
- return;
-
- bIsDrag = FALSE;
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- MpVideoProgressbarSetPointerVisible(FALSE);
-
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
-
- if(pProgressAdjustCheckTimer) {
- ecore_timer_del(pProgressAdjustCheckTimer);
- pProgressAdjustCheckTimer = NULL;
- }
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
- if(nTmpPlayerType != MP_STREAMING_PLAYER)
- {
- if(bIsAdjustmentMode) {
- bIsAdjustmentMode = FALSE;
- MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode);
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
-
- if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
- pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
- //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
- }
- nOldPosX = 0;
- return;
- }
- }
-
- Evas_Event_Mouse_Up *ev = event_info;
- Evas_Object *progressbar = obj;
- int w = 0, current = 0;
- double ratio = 0.0;
-
- int term = 0;
- int w_term = 0;
- int width = 0;
- int height = 0;
-
- ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
- term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH;
- w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH;
-
- evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
- current = ev->canvas.x - term;
- w = w - w_term;
-
- if (current < 0)
- current = 0;
- else if (current > w)
- current = w;
-
- ratio = (double)current / w;
-
- pAppData->nSetPosition = (int)pAppData->nDuration * ratio;
-
- if (pAppData->nSetPosition > pAppData->nDuration)
- pAppData->nSetPosition = pAppData->nDuration;
-
- if (pAppData->nSetPosition < 0)
- pAppData->nSetPosition = 0;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
-
- MpVideoProgressbarCreateTimer((void *)pAppData);
-
- if(nTmpPlayerType != MP_STREAMING_PLAYER)
- {
-
- if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
- pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
- //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
- }
-
- if(!pAppData->bSeekComplete)
- {
- pAppData->nSeekPosition = pAppData->nSetPosition;
- if((pAppData->nCurPosition < pAppData->nSeekPosition + 5000) &&
- (pAppData->nCurPosition > pAppData->nSeekPosition - 5000))
- {
- VideoLogError("Skip for same position");
- pAppData->nSeekPosition = 0;
- }
- }
- else
- {
- if((pAppData->nCurPosition < pAppData->nSetPosition + 5000) &&
- (pAppData->nCurPosition > pAppData->nSetPosition - 5000))
- {
- VideoLogError("Skip for same position");
- }
- else
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
- }
- }
- }
- else
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
- MpVideoProgressbarCreateTimer((void *)pAppData);
-
- if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
- pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
- pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME;
- pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
- }
-
- }
-}
-static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
- Evas_Object *obj, void *event_info)
-{
-// VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!event_info) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (bIsEventSkip || bIsDrag == FALSE)
- return;
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- Evas_Event_Mouse_Up *ev = event_info;
- Evas_Object *progressbar = obj;
- int w = 0, current = 0;
- double ratio = 0.0;
-
- int term = 0;
- int w_term = 0;
- int width = 0;
- int height = 0;
-
- ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height);
- term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH;
- w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH;
-
- evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
- if(bIsAdjustmentMode) {
- if((nOldPosX + PROGRESS_ADJUSTMENT_MODE_LIMIT) < ev->canvas.x) {
- if(bPrevAdjustment == TRUE) {
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
- }
- bPrevAdjustment = FALSE;
- nOldPosX = ev->canvas.x;
- }
- else if((nOldPosX - PROGRESS_ADJUSTMENT_MODE_LIMIT) > ev->canvas.x) {
- if(bPrevAdjustment == FALSE) {
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
- }
- bPrevAdjustment = TRUE;
- nOldPosX = ev->canvas.x;
- }
-
- if(pProgressAdjustRunTimer == NULL) {
- pProgressAdjustRunTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_RUN_INTERVAL,
- MpVideoProgressbarAdjustmentRunTimerCb, (void *)pAppData);
-
- }
-
- }
- else {
- if(((nDownPosX + PROGRESS_ADJUSTMENT_MOVE_LIMIT) < ev->canvas.x ) ||
- ((nDownPosX - PROGRESS_ADJUSTMENT_MOVE_LIMIT) > ev->canvas.x)) {
- VideoLogInfo("Adjustment Off");
-
- if(pProgressAdjustCheckTimer) {
- ecore_timer_del(pProgressAdjustCheckTimer);
- pProgressAdjustCheckTimer = NULL;
- }
-
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
- }
- current = ev->canvas.x - term;
- w = w - w_term;
-
- if (current < 0)
- current = 0;
- else if (current > w)
- current = w;
-
- ratio = (double)current / w;
- nDragPosition = ratio * pAppData->nDuration;
- pAppData->nSetPosition = nDragPosition;
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
- if(nTmpPlayerType != MP_STREAMING_PLAYER)
- {
- if(pAppData->bSeekComplete) {
- pAppData->bSeekComplete = FALSE;
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
- }
- }
- MpVideoProgressbarUpdateValue(pUserData);
- }
-}
-
-/*
- * External function
- */
-void MpVideoProgressbarSetSkipEvent(bool bSkip)
-{
-// VideoLogInfo("");
-
- bIsEventSkip = bSkip;
-}
-
-void *MpVideoProgressbarGetEdjHandle(void)
-{
- VideoLogInfo("");
-
- if (pProgressbarEdj) {
- return (void *)pProgressbarEdj;
- } else {
- VideoLogInfo("Progressbar edj handle is null.");
- return NULL;
- }
-}
-
-void *MpVideoProgressbarInit(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return NULL;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
-
- pProgressbarEdj = (Evas_Object *)MpUtilLoadEdjFile(pMainWindowEvas,
- VIDEO_PLAYER_PROGRESS_EDJ,
- PROGRESS_EDJ_GROUP);
-
- evas_object_event_callback_add(pProgressbarEdj,
- EVAS_CALLBACK_MOUSE_DOWN,
- MpVideoProgressbarDownCb, pAppData);
-
- evas_object_event_callback_add(pProgressbarEdj,
- EVAS_CALLBACK_MOUSE_UP,
- MpVideoProgressbarUpCb, pAppData);
-
- evas_object_event_callback_add(pProgressbarEdj,
- EVAS_CALLBACK_MOUSE_MOVE,
- MpVideoProgressbarMoveCb, pAppData);
-
- MpVideoProgressbarUpdateDurationTime("--:--:--");
-
- return (void *)pProgressbarEdj;
-}
-
-void MpVideoProgressbarDestroy(void)
-{
- VideoLogInfo("");
-
- if (pProgressbarEdj) {
- evas_object_del(pProgressbarEdj);
- pProgressbarEdj = NULL;
- }
-
- if (pProgressbarTimer) {
- ecore_timer_del(pProgressbarTimer);
- pProgressbarTimer = NULL;
- }
-
- if(pProgressAdjustCheckTimer) {
- ecore_timer_del(pProgressAdjustCheckTimer);
- pProgressAdjustCheckTimer = NULL;
- }
-
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
-
- bIsEventSkip = FALSE;
- nDragPosition = 0;
-}
-
-void MpVideoProgressbarCreateTimer(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pProgressbarTimer) {
- ecore_timer_del(pProgressbarTimer);
- pProgressbarTimer = NULL;
- }
-
- if (bIsEventSkip)
- return;
-
- double nPlayedRatio = 0.0;
- char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
-
- nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration);
- snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000));
-
- edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0);
- edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime);
-
- pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData);
-}
-
-void MpVideoProgressbarDeleteTimer(void)
-{
- VideoLogInfo("");
-
- if (pProgressbarTimer) {
- ecore_timer_del(pProgressbarTimer);
- pProgressbarTimer = NULL;
- }
-
- if(pProgressAdjustCheckTimer) {
- ecore_timer_del(pProgressAdjustCheckTimer);
- pProgressAdjustCheckTimer = NULL;
- }
-
- if(pProgressAdjustRunTimer) {
- ecore_timer_del(pProgressAdjustRunTimer);
- pProgressAdjustRunTimer = NULL;
- }
-}
-
-void MpVideoProgressbarUpdateDurationTime(char *szDurationTime)
-{
- VideoLogInfo("");
-
- if (!szDurationTime) {
- VideoLogInfo("Fail to ser duration time");
- return;
- }
-
- edje_object_part_text_set(pProgressbarEdj, "progress.txt.total",
- szDurationTime);
-}
-
-void MpVideoProgressbarBeginOfStream(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoProgressbarDeleteTimer();
-
- pAppData->nCurPosition = 0;
- edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0);
- edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00");
-
- MpVideoProgressbarCreateTimer(pUserData);
-}
-
-void MpVideoProgressbarReset(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- MpVideoProgressbarDeleteTimer();
-
- edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0);
- edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00");
-}
-
diff --git a/src/mp-video-service-ctrl.c b/src/mp-video-service-ctrl.c
deleted file mode 100755
index a9df9e5..0000000
--- a/src/mp-video-service-ctrl.c
+++ /dev/null
@@ -1,629 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <app.h>
-#include <aul.h>
-#include <glib.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "mp-video-service-ctrl.h"
-
-
-#define MP_VIDEO_LAUNCHED_BY_APP_KEY "launching_application"
-#define MP_VIDEO_SORT_TYPE_KEY "order_type"
-#define MP_VIDEO_LIST_TYPE_KEY "video_list_type"
-#define MP_VIDEO_TAG_NAME_KEY "tag_name"
-#define MP_VIDEO_EDIT_MODE_KEY "edit_mode"
-#define MP_VIDEO_START_POS_TIME_KEY "start_pos_time"
-#define MP_VIDEO_URI_PATH "path"
-#define MP_VIDEO_COOKIE "cookie"
-#define MP_VIDEO_MULTI_WIN_TYPE_KEY "is_multi_win_type"
-#define MP_VIDEO_LAUNCH_TYPE "launch-type"
-#define MP_VIDEO_SHORTCUT_VIDEO "shortcut-videoplayer"
-
-static service_h pAppSvcHandle = NULL;
-static int nPlayerType = MP_NONE_VIEW_TYPE;
-static int nPrevPlayerType = MP_NONE_VIEW_TYPE;
-static int nGalleryLatestTime = 0;
-static char *g_szStreamingCookie = NULL;
-static bool bIsShortcutType = FALSE;
-
-
-/////////////////////////////////////////////////////////////////////////////
-// Internal Function
-
-bool MpVideoServiceCtrlCheckMime(service_h pVideoServiceHandle, char **szMediaUri)
-{
- VideoLogInfo("");
-
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("[ERR] No Exist Service handle.");
- return FALSE;
- }
-
- bool bRet = TRUE;
- char *szMimeContent = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, AUL_K_MIME_CONTENT, &szMimeContent) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("No exist mime type.");
- bRet = FALSE;
- }
-
- if(szMimeContent)
- {
- *szMediaUri = (char*)malloc(strlen(szMimeContent) + 1);
- memset(*szMediaUri, 0, strlen(szMimeContent) + 1);
- strncpy(*szMediaUri, szMimeContent, strlen(szMimeContent));
- VideoLogInfo("Mime content : %s", *szMediaUri);
- free(szMimeContent);
- bRet = TRUE;
- }
- else
- {
- VideoLogInfo("No exist MIME type.");
- bRet = FALSE;
- }
-
- return bRet;
-}
-
-bool MpVideoServiceCtrlCheckBundle(service_h pVideoServiceHandle, char **szMediaUri)
-{
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
- return FALSE;
- }
-
- bool bRet = TRUE;
- char *szStrVideoURI = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_URI_PATH, &szStrVideoURI) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("No exist KEY of video/streaming URI.");
- bRet = FALSE;
- return bRet;
- }
-
- if(szStrVideoURI)
- {
- *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1);
- memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1);
- strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI));
- VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri);
- free(szStrVideoURI);
- szStrVideoURI = NULL;
- bRet = TRUE;
- }
- else
- {
- VideoLogInfo("No exist video/streaming URI.");
- bRet = FALSE;
- }
-
- return bRet;
-}
-
-bool MpVideoServiceCtrlCheckAUL(service_h pVideoServiceHandle, char **szMediaUri)
-{
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
- return FALSE;
- }
-
-
- char *pGetOperation = NULL;
-
- service_get_operation(pVideoServiceHandle, &pGetOperation);
-
- if(pGetOperation == NULL)
- {
- return FALSE;
- }
-
- if(!strcmp(SERVICE_OPERATION_VIEW , pGetOperation))
- {
- char *szStrVideoURI = NULL;
-
- service_get_uri(pVideoServiceHandle, &szStrVideoURI);
-
- if(szStrVideoURI)
- {
- *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1);
- memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1);
- strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI));
- VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri);
- free(szStrVideoURI);
- szStrVideoURI = NULL;
- }
- else
- {
- VideoLogInfo("[ERR] No exist video/streaming URI.");
-
- if(pGetOperation)
- {
- free(pGetOperation);
- pGetOperation = NULL;
- }
-
- return FALSE;
- }
- }
- else
- {
- VideoLogInfo("No exist Operation.");
-
- if(pGetOperation)
- {
- free(pGetOperation);
- pGetOperation = NULL;
- }
-
- return FALSE;
- }
-
- VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s", *szMediaUri);
-
- if(pGetOperation)
- {
- free(pGetOperation);
- pGetOperation = NULL;
- }
-
- return TRUE;
-}
-
-
-bool MpVideoServiceCtrlParseUri(service_h pVideoServiceHandle, char** szMediaUri)
-{
- VideoLogInfo("");
-
- if(!MpVideoServiceCtrlCheckMime(pVideoServiceHandle, szMediaUri))
- {
- if(!MpVideoServiceCtrlCheckBundle(pVideoServiceHandle, szMediaUri))
- {
- if(!MpVideoServiceCtrlCheckAUL(pVideoServiceHandle, szMediaUri))
- {
- VideoLogInfo("No exist URI path.");
- return FALSE;
- }
- }
- }
-
- VideoLogInfo("szMediaUri : %s", *szMediaUri);
-
- return TRUE;
-}
-
-int MpVideoServiceCtrlCheckUriType(char* szMediaUri)
-{
- if(!szMediaUri)
- {
- VideoLogInfo("[ERR] No exist media uri.");
- return MP_ERROR_PLAYER_TYPE;
- }
-
- VideoLogInfo("");
-
- int nRet = 0;
-
- if(MpUtilCheckUriType(szMediaUri))
- {
- VideoLogInfo("MP_STREAMING_PLAYER");
- nRet = MP_STREAMING_PLAYER;
- }
- else
- {
- VideoLogInfo("MP_VIDEO_PLAYER");
- nRet = MP_VIDEO_PLAYER;
- }
-
- return nRet;
-}
-
-bool MpVideoServiceCtrlCheckCookieForStreaming(service_h pVideoServiceHandle)
-{
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value.");
- return FALSE;
- }
-
- bool bRet = TRUE;
- char *pStrVideoCookie = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_COOKIE, &pStrVideoCookie) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("[ERR] No exist KEY of streaming COOKIE.");
- bRet = FALSE;
- }
-
- if(pStrVideoCookie)
- {
- g_szStreamingCookie = (char*)malloc(strlen(pStrVideoCookie) + 1);
- memset(g_szStreamingCookie, 0, strlen(pStrVideoCookie) + 1);
- strncpy(g_szStreamingCookie, pStrVideoCookie, strlen(pStrVideoCookie));
- VideoLogInfo("Video/Streaming URI path Cookie : %s", g_szStreamingCookie);
- free(pStrVideoCookie);
- }
- else
- {
- VideoLogInfo("[ERR] No exist video/streaming URI.");
- bRet = FALSE;
- }
-
- return TRUE;
-}
-
-int MpVideoServiceCtrlCheckStartPositionTime(service_h pVideoServiceHandle, char *szBundleKey)
-{
- VideoLogInfo("");
-
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("No exist Service handle data.");
- return 0;
- }
-
- int nStartPositionTime = 0;
- char *szStartPosTime = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szStartPosTime) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("No exist mime type.");
- return 0;
- }
-
- if(!szStartPosTime)
- {
- VideoLogInfo("No exist pointer of position time.");
- return 0;
- }
-
- nStartPositionTime = atoi(szStartPosTime);
-
- VideoLogInfo("Start position time : %d", nStartPositionTime);
-
- free(szStartPosTime);
-
- if(nStartPositionTime < 0)
- {
- nStartPositionTime = 0;
- }
-
- return nStartPositionTime;
-}
-
-bool MpVideoServiceCtrlGetTagNameOfGallery(service_h pVideoServiceHandle, char *szBundleKey, char *szTagName)
-{
- VideoLogInfo("");
-
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("No exist Service handle.");
- return FALSE;
- }
-
- if(!szBundleKey)
- {
- VideoLogInfo("No exist Service handle kay.");
- return FALSE;
- }
-
- if(!szTagName)
- {
- VideoLogInfo("No exist pAppData.");
- return FALSE;
- }
-
- bool nRet = TRUE;
- char *szVideoTagName = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szVideoTagName) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("No exist mime type.");
- nRet = FALSE;
- }
-
- if(szVideoTagName)
- {
- strncpy(szTagName, szVideoTagName, STR_LEN_MAX - 1);
- VideoLogInfo("szTagName : %s", szTagName);
- free(szVideoTagName);
- nRet = TRUE;
- }
- else
- {
- VideoLogInfo("No exist pointer of szVideoTagName.");
- nRet = FALSE;
- }
-
- return nRet;
-}
-
-int MpVideoServiceCtrlCheckLauncher(service_h pVideoServiceHandle)
-{
- VideoLogInfo("");
-
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("No exist Service handle data.");
- return MP_VIDEO_PLAYER_SIMPLE;
- }
-
- char *szLaunchingByOtherApp = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCHED_BY_APP_KEY, &szLaunchingByOtherApp) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY");
- return MP_VIDEO_PLAYER_SIMPLE;
- }
-
- if(!szLaunchingByOtherApp)
- {
- VideoLogInfo("No exist pointer of szLaunchingByOtherApp");
- return MP_VIDEO_PLAYER_SIMPLE;
- }
-
- MpPlayerViewType nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE;
-
- if(!strcmp(szLaunchingByOtherApp, "gallery"))
- {
- nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY;
-
- nGalleryLatestTime = MpVideoServiceCtrlCheckStartPositionTime(pVideoServiceHandle, MP_VIDEO_START_POS_TIME_KEY);
- }
- else if(!strcmp(szLaunchingByOtherApp, "image_viewer"))
- {
- nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY;
- }
- else if(!strcmp(szLaunchingByOtherApp, "email"))
- {
- nTmpLaunchingAppType = MP_VIDEO_PLAYER_EMAIL;
- }
- else if(!strcmp(szLaunchingByOtherApp, "message"))
- {
- nTmpLaunchingAppType = MP_VIDEO_PLAYER_MMS;
- }
- else if(!strcmp(szLaunchingByOtherApp, "light_play_view"))
- {
- nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE;
- }
- else
- {
- nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE;
- }
-
- VideoLogInfo("Start position time : %d", nTmpLaunchingAppType);
-
- free(szLaunchingByOtherApp);
-
- return (int)nTmpLaunchingAppType;
-}
-
-bool MpVideoServiceCtrlCheckShortcut(service_h pVideoServiceHandle)
-{
- if(!pVideoServiceHandle)
- {
- VideoLogInfo("No exist Service handle.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- char *pGetOperation = NULL;
-
- service_get_operation(pVideoServiceHandle, &pGetOperation);
-
- if(pGetOperation == NULL)
- {
- bIsShortcutType = FALSE;
- return bIsShortcutType;
- }
-
- if(!strcmp(pGetOperation, SERVICE_OPERATION_DEFAULT))
- {
- char *szOperationType = NULL;
-
- if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCH_TYPE, &szOperationType) != SERVICE_ERROR_NONE)
- {
- VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY");
- bIsShortcutType = FALSE;
- }
-
- if(!szOperationType)
- {
- VideoLogInfo("No exist pointer of szOperationType");
- bIsShortcutType = FALSE;
- }
- else
- {
- if(!strcmp(szOperationType, MP_VIDEO_SHORTCUT_VIDEO))
- {
- bIsShortcutType = TRUE;
- }
- else
- {
- bIsShortcutType = FALSE;
- }
-
- if(szOperationType)
- {
- free(szOperationType);
- szOperationType = NULL;
- }
- }
- }
-
- return bIsShortcutType;
-}
-
-
-
-/////////////////////////////////////////////////////////////////////////////
-// External Function
-
-void MpVideoServiceCtrlReset(void)
-{
- VideoLogInfo("");
-
- pAppSvcHandle = NULL;
-
- nGalleryLatestTime = 0;
-
- if(g_szStreamingCookie)
- {
- free(g_szStreamingCookie);
- g_szStreamingCookie = NULL;
- }
-}
-
-int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri)
-{
- if(!pAppServiceHandle)
- {
- VideoLogInfo("");
- return MP_ERROR_PLAYER_TYPE;
- }
-
- VideoLogInfo("");
-
- MpVideoServiceCtrlReset();
-
- pAppSvcHandle = (service_h)pAppServiceHandle;
- nPlayerType = MP_NONE_VIEW_TYPE;
-
- if(!MpVideoServiceCtrlParseUri(pAppSvcHandle, szMediaUri))
- {
- VideoLogInfo("MP_VIDEO_PLAYER_LIST");
- nPlayerType = MP_VIDEO_PLAYER;
- }
-
- if(!*szMediaUri)
- {
- return nPlayerType;
- }
- else
- {
- VideoLogInfo("szMediaUri : %s", *szMediaUri);
- }
-
- int nUriType = 0;
-
- nUriType = MpVideoServiceCtrlCheckUriType(*szMediaUri);
-
- if(nUriType == MP_VIDEO_PLAYER)
- {
- nPlayerType = MpVideoServiceCtrlCheckLauncher(pAppSvcHandle);
- }
-
- if(nUriType == MP_STREAMING_PLAYER)
- {
- nPlayerType = MP_STREAMING_PLAYER;
- MpVideoServiceCtrlCheckCookieForStreaming(pAppSvcHandle);
- }
-
- return nPlayerType;
- }
-
-int MpVideoServiceCtrlGetLatestTime(void)
-{
- VideoLogInfo("");
-
- if(nGalleryLatestTime < 0)
- {
- nGalleryLatestTime = 0;
- }
-
- return nGalleryLatestTime;
-}
-
-int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void)
-{
- if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType)
- {
- nPlayerType = MP_ERROR_PLAYER_TYPE;
- }
-
- return nPlayerType;
-}
-
-int MpVideoServiceCtrlGetPlayerType(void)
-{
- VideoLogInfo("");
-
- if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType)
- {
- nPlayerType = MP_ERROR_PLAYER_TYPE;
- }
-
- VideoLogInfo("nPlayerType : %d", nPlayerType);
-
- return nPlayerType;
-}
-
-void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType)
-{
- VideoLogInfo("nSetPlayerType : %d", nSetPlayerType);
-
- if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType)
- {
- MpVideoServiceCtrlSetPrevPlayerType(nPlayerType);
- nPlayerType = nSetPlayerType;
- }
-}
-
-int MpVideoServiceCtrlGetPrevPlayerType(void)
-{
- VideoLogInfo("");
-
- if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType)
- {
- nPrevPlayerType = MP_ERROR_PLAYER_TYPE;
- }
-
- VideoLogInfo("nPrevPlayerType : %d", nPrevPlayerType);
-
- return nPrevPlayerType;
-}
-
-void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType)
-{
- VideoLogInfo("nSetPlayerType : %d", nSetPlayerType);
-
- if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType)
- {
- nPrevPlayerType = nSetPlayerType;
- }
-}
-
-char* MpVideoServiceCtrlGetCookieForStreaming(void)
-{
- VideoLogInfo("");
-
- if(!g_szStreamingCookie)
- {
- VideoLogInfo("No exist streaming cookie.");
- return NULL;
- }
-
- return g_szStreamingCookie;
-} \ No newline at end of file
diff --git a/src/mp-video-sound-path-ctrl.c b/src/mp-video-sound-path-ctrl.c
deleted file mode 100755
index 3c7e5ec..0000000
--- a/src/mp-video-sound-path-ctrl.c
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <app.h>
-#include <player.h>
-#include <sound_manager.h>
-#include <Ecore_Evas.h>
-#include <Elementary.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-type-define.h"
-#include "mp-video-value-define.h"
-#include "mp-video-string-define.h"
-#include "mp-video-sound-path-ctrl.h"
-
-#define MP_VIDEO_SOUND_PATH_NUM 10
-#define MP_VIDEO_SOUND_PATH_SPEAKER "Speaker"
-#define MP_VIDEO_SOUND_PATH_EARJACK "Headphones"
-
-static Evas_Object *pVideoSoundPathPopUpHandle = NULL;
-//static Evas_Object *pVideoSoundPathpPopupWindow = NULL;
-static Evas_Object *pGroupRadio = NULL;
-static Evas_Object *pGenList = NULL;
-
-static char **szSoundPathItems = NULL;
-static bool bIsConnectBluetooth = FALSE;
-static bool bIsConnectEarjack = FALSE;
-
-void MpVideoSoundpathDeleteRadioButton(void)
-{
- VideoLogInfo("");
-
- if (pGroupRadio) {
- evas_object_del(pGroupRadio);
- pGroupRadio = NULL;
- }
-}
-
-void MpVideoSoundpathDeletePopupHandle(void)
-{
- VideoLogInfo("");
-
- int nCount = 0;
-
- if(szSoundPathItems)
- {
- for(nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++)
- {
- if(szSoundPathItems[nCount])
- {
- free(szSoundPathItems[nCount]);
- szSoundPathItems[nCount] = NULL;
- }
- }
- free(szSoundPathItems);
- szSoundPathItems = NULL;
- }
-
- MpVideoSoundpathDeleteRadioButton();
-
- if (pGenList) {
- evas_object_del(pGenList);
- pGenList = NULL;
- }
-
- if (pVideoSoundPathPopUpHandle) {
- evas_object_del(pVideoSoundPathPopUpHandle);
- pVideoSoundPathPopUpHandle = NULL;
- }
-
- MpUtilSetAlphaOfMainWindow(TRUE);
-
- /*
- if (pVideoSoundPathpPopupWindow) {
- evas_object_del(pVideoSoundPathpPopupWindow);
- pVideoSoundPathpPopupWindow = NULL;
- }
- */
-}
-
-static char *MpVideoSoundpathGetLabelOfGenlistItemCb(const void *pUserData,
- Evas_Object *pObject,
- const char *pPart)
-{
- VideoLogInfo("");
-
- int nIndex = (int)pUserData;
-
- if (!strcmp(pPart, "elm.text")) {
- VideoLogInfo("Index : %d", nIndex);
- return strdup(szSoundPathItems[nIndex]);
- }
-
- return NULL;
-}
-
-static Evas_Object *MpVideoSoundpathGetIconOfGenlistItemCb(const void
- *pUserData,
- Evas_Object *pObject,
- const char *pPart)
-{
- VideoLogInfo("");
-
- int nIndex = (int)pUserData;
- Evas_Object *pTmpRadio = NULL;
-
- if (!strcmp(pPart, "elm.icon")) {
- VideoLogInfo("Index : %d", nIndex);
- pTmpRadio = elm_radio_add(pObject);
- elm_radio_state_value_set(pTmpRadio, nIndex);
- evas_object_show(pTmpRadio);
- elm_radio_group_add(pTmpRadio, pGroupRadio);
- }
-
- return pTmpRadio;
-}
-
-static void MpVideoSoundpathSelectSoundPathItemCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
-{
- if(pUserData == NULL)
- {
- VideoLogInfo("[ERR]No have pUserData");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nIndex = 0;
- Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
-
- if(pItem)
- {
- nIndex = (int)elm_object_item_data_get(pItem);
- VideoLogInfo("Select sound path : %s", szSoundPathItems[nIndex]);
-
- if(!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_SPEAKER))
- {
- int nRet = 0;
- nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_SPEAKER);
-
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
- }
- else if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_EARJACK))
- {
- int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_WIRED_ACCESSORY);
- if(nRet != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet);
- }
- else
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
- }
- }
- else
- {
- //int nRet = sound_manager_set_route_policy(SOUND_ROUTE_DEFAULT);
- int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_BLUETOOTH);
- if(nRet != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet);
- }
- else
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
- }
- }
- }
-
- MpVideoSoundpathDeletePopupHandle();
-}
-
-static void MpVideoSoundpathPopupCb(void *pUserData, Evas_Object *pObject,
- void *pEventInfo)
-{
- VideoLogInfo("");
-
- if (pUserData == NULL) {
- VideoLogInfo("[ERR]No have pUserData");
- return;
- }
-
- MpVideoSoundpathDeletePopupHandle();
-}
-
-static void MpVideoSoundpathCurrentState()
-{
- VideoLogInfo("");
-
- bool bBluetoothConnect = 0;
- char *szBluetoothName = NULL;
- bIsConnectEarjack = FALSE;
- bIsConnectBluetooth = FALSE;
-
- /* Speaker */
- strncpy(szSoundPathItems[MP_SOUND_PATH_SPEAKER], MP_VIDEO_SOUND_PATH_SPEAKER, STR_LEN_MAX - 1);
-
- /* Check and Add earjack sound path. */
- if(MpUtilIsConnectEarjack())
- {
- VideoLogInfo("Connect earjack.");
- bIsConnectEarjack = TRUE;
- strncpy(szSoundPathItems[MP_SOUND_PATH_EARJACK], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1);
- }
- else
- {
- VideoLogInfo("No connect earjack.");
- }
-
- /* Add bluetooth stereo sound path. */
- if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName))
- {
- VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
- }
- else
- {
- if(bBluetoothConnect)
- {
- if(szBluetoothName)
- {
- VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName);
- bIsConnectBluetooth = TRUE;
- strncpy(szSoundPathItems[MP_SOUND_PATH_BLUETOOTH], szBluetoothName, STR_LEN_MAX - 1);
- free(szBluetoothName);
- szBluetoothName = NULL;
- }
- }
- else
- {
- if(szBluetoothName)
- {
- free(szBluetoothName);
- szBluetoothName = NULL;
- }
- VideoLogInfo("Unactivate Bluetooth stereo A2DP.");
- }
- }
-
-}
-
-void MpVideoSoundpathSetRadioButton(void)
-{
- VideoLogInfo("");
-
- sound_device_in_e in;
- sound_device_out_e out;
-
- sound_manager_get_active_device(&in, &out);
-
- switch(out)
- {
- case SOUND_DEVICE_OUT_SPEAKER:
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
- break;
-
- case SOUND_DEVICE_OUT_WIRED_ACCESSORY:
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
- break;
-
- case SOUND_DEVICE_OUT_BT_A2DP:
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
- break;
-
- default:
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
- break;
- }
-
-/*
- bool bBluetoothConnect = 0;
- char *szBluetoothName = NULL;
- sound_route_policy_e nPolicy = 0;
-
- if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to get sound path route policy.");
- return;
- }
-
- if(nPolicy == SOUND_ROUTE_DEFAULT)
- {
- VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
-
- if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName))
- {
- VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
- }
-
- if(bBluetoothConnect)
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
- }
- else if(MpUtilIsConnectEarjack())
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
- }
- else
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
- }
- }
- else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP)
- {
- VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
-
- if(MpUtilIsConnectEarjack())
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
- }
- else
- {
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
- }
- }
- else
- {
- VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
-
- elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
- }
-*/
-}
-
-/*
- * External function
- */
-bool MpVideoSoundpathShow(void *pUserData)
-{
- if (pUserData == NULL) {
- VideoLogInfo("No have popup message or pAppData is null.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- MpVideoSoundpathIsConnectOtherSoundpath();
-
- if (!bIsConnectBluetooth && !bIsConnectEarjack) {
- VideoLogInfo("Soundpath is only speaker.");
- return FALSE;
- }
-
- Evas_Object *pBox = NULL;
- Evas_Object *pButton = NULL;
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoSoundpathDeletePopupHandle();
-
- MpUtilSetAlphaOfMainWindow(FALSE);
-
- /* Popup handle */
- //pVideoSoundPathpPopupWindow = (Evas_Object *)MpUtilCreateWindow("soundpath_popup_window");
- //pVideoSoundPathPopUpHandle = elm_popup_add(pVideoSoundPathpPopupWindow);
- pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow);
-
-
- szSoundPathItems = (char **)calloc(1, sizeof(char *) * MP_VIDEO_SOUND_PATH_NUM);
- int idx = 0;
- for(idx = 0; idx < MP_VIDEO_SOUND_PATH_NUM; idx++)
- {
- szSoundPathItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char));
- }
-
- MpVideoSoundpathCurrentState();
-
- elm_object_style_set(pVideoSoundPathPopUpHandle, "menustyle");
- elm_object_part_text_set(pVideoSoundPathPopUpHandle, "title,text", MP_VIDEO_SOUND_PATH);
- evas_object_size_hint_weight_set(pVideoSoundPathPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- pButton = elm_button_add(pVideoSoundPathPopUpHandle);
- elm_object_style_set (pButton, "popup_button/default");
- elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_BUTTON_CANCEL));
- elm_object_part_content_set(pVideoSoundPathPopUpHandle, "button1", pButton);
- evas_object_smart_callback_add(pButton, "clicked", MpVideoSoundpathPopupCb, (void*)pAppData);
-
- /* Set item of Genlist. */
- Elm_Genlist_Item_Class *st_Itc = NULL;
- st_Itc = elm_genlist_item_class_new();
- st_Itc->item_style = "1text.1icon.3";
- st_Itc->func.text_get = (void *)MpVideoSoundpathGetLabelOfGenlistItemCb;
- st_Itc->func.content_get = (void *)MpVideoSoundpathGetIconOfGenlistItemCb;
- st_Itc->func.state_get = NULL;
- st_Itc->func.del = NULL;
-
- /* Create genlist handle */
- pGenList = elm_genlist_add(pVideoSoundPathPopUpHandle);
- evas_object_size_hint_weight_set(pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- //MpUtilRotateWindow(MpUtilGetRotationState(), pVideoSoundPathpPopupWindow);
-
- pGroupRadio = elm_radio_add(pGenList);
-
- if (bIsConnectBluetooth) {
- elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_BLUETOOTH, NULL,
- ELM_GENLIST_ITEM_NONE,
- MpVideoSoundpathSelectSoundPathItemCb,
- pAppData);
- }
-
- if (bIsConnectEarjack) {
- elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_EARJACK, NULL,
- ELM_GENLIST_ITEM_NONE,
- MpVideoSoundpathSelectSoundPathItemCb,
- pAppData);
- }
-
- elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_SPEAKER, NULL,
- ELM_GENLIST_ITEM_NONE,
- MpVideoSoundpathSelectSoundPathItemCb,
- pAppData);
-
- elm_genlist_item_class_free(st_Itc);
-
- MpVideoSoundpathSetRadioButton();
-
- pBox = elm_box_add(pVideoSoundPathPopUpHandle);
- if(bIsConnectBluetooth && bIsConnectEarjack)
- {
- evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get());
- }
- else if(bIsConnectBluetooth || bIsConnectEarjack)
- {
- evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 225 * elm_config_scale_get());
- }
- else
- {
- evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 451 * elm_config_scale_get());
- }
-
- elm_box_pack_end(pBox, pGenList);
- elm_object_content_set(pVideoSoundPathPopUpHandle, pBox);
-
- evas_object_show(pGenList);
- evas_object_show(pVideoSoundPathPopUpHandle);
-
- return TRUE;
-}
-
-void MpVideoSoundpathHide(void)
-{
- VideoLogInfo("");
-
- MpVideoSoundpathDeletePopupHandle();
-}
-
-void MpVideoSoundpathRotatePopupWindow(int nRotateMode)
-{
- /*
- if (!pVideoSoundPathpPopupWindow) {
- VideoLogInfo("No exist genlist popup window handle.");
- return;
- }
-
- VideoLogInfo("");
-
- MpUtilRotateWindow(nRotateMode, pVideoSoundPathpPopupWindow);
- */
-
- return;
-}
-
-bool MpVideoSoundpathIsConnectOtherSoundpath(void)
-{
- VideoLogInfo("");
-
- bool bBluetoothConnect = 0;
- char *szBluetoothName = NULL;
-
- bIsConnectEarjack = FALSE;
- bIsConnectBluetooth = FALSE;
-
- if(MpUtilIsConnectEarjack())
- {
- VideoLogInfo("Connect earjack.");
- bIsConnectEarjack= TRUE;
- return TRUE;
- }
- sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName);
-
- if(bBluetoothConnect)
- {
- if(szBluetoothName) {
- free(szBluetoothName);
- szBluetoothName = NULL;
- }
-
- VideoLogInfo("Connect bluetooth.");
- bIsConnectBluetooth = TRUE;
- return TRUE;
- }
-
- if(szBluetoothName) {
- free(szBluetoothName);
- szBluetoothName = NULL;
- }
-
- VideoLogInfo("Only spaker.");
- return FALSE;
-}
-
-int MpVideoSoundpathGetCurrConnectedSoundpath(void)
-{
- VideoLogInfo("");
-
- sound_device_in_e in;
- sound_device_out_e out;
- MpSoundPathType nType = MP_SOUND_PATH_SPEAKER;
-
- sound_manager_get_active_device(&in, &out);
-
- switch(out)
- {
- case SOUND_DEVICE_OUT_SPEAKER:
- nType = MP_SOUND_PATH_SPEAKER;
- break;
-
- case SOUND_DEVICE_OUT_WIRED_ACCESSORY:
- nType = MP_SOUND_PATH_EARJACK;
- break;
-
- case SOUND_DEVICE_OUT_BT_A2DP:
- nType = MP_SOUND_PATH_BLUETOOTH;
- break;
-
- default:
- nType = MP_SOUND_PATH_SPEAKER;
- break;
- }
-
- return nType;
-
-/*
- bool bBluetoothConnect = 0;
- char *szBluetoothName = NULL;
- sound_route_policy_e nPolicy = 0;
-
- if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogInfo("[ERR] Fail to get sound path route policy.");
- return MP_SOUND_PATH_SPEAKER;
- }
-
- if(nPolicy == SOUND_ROUTE_DEFAULT)
- {
- VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
-
- if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName))
- {
- VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
- }
-
- if(bBluetoothConnect)
- {
- return MP_SOUND_PATH_BLUETOOTH;
- }
- else if(MpUtilIsConnectEarjack())
- {
- return MP_SOUND_PATH_EARJACK;
- }
- else
- {
- return MP_SOUND_PATH_SPEAKER;
- }
- }
- else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP)
- {
- VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
-
- if(MpUtilIsConnectEarjack())
- {
- return MP_SOUND_PATH_EARJACK;
- }
- else
- {
- return MP_SOUND_PATH_SPEAKER;
- }
- }
- else
- {
- VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
-
- return MP_SOUND_PATH_SPEAKER;
- }
-
- return MP_SOUND_PATH_SPEAKER;
-*/
-}
diff --git a/src/mp-video-streaming-ctrl.c b/src/mp-video-streaming-ctrl.c
deleted file mode 100644
index b5c8657..0000000
--- a/src/mp-video-streaming-ctrl.c
+++ /dev/null
@@ -1,818 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <app.h>
-#include <vconf.h>
-#include <string.h>
-#include <vconf-keys.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-type-define.h"
-#include "mp-video-string-define.h"
-#include "mp-video-streaming-ctrl.h"
-
-
-#define NETWORK_TIMEOUT 30.0
-
-static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF;
-static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF;
-static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
-
-static Ecore_Pipe *pEcorePipeHandleForPause = NULL;
-static Ecore_Pipe *pEcorePipeHandleForResume = NULL;
-
-static Eina_Bool bIsInitCallbackFunc = FALSE;
-
-static Ecore_Timer *pNetworkTimeoutTimer = NULL;
-
-
-
-/*
- * Callback function.
- */
-
-static void MpVideoStreamingCtrlExitCb(void *pUserData, Evas_Object *pObject,
- void *pEventInfo)
-{
- if (!pUserData) {
- VideoLogInfo("No exist pUserData");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
-}
-
-static int MpVideoStreamingCtrlResumeCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("No exist pUserData");
- return 0;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pNetworkTimeoutTimer) {
- ecore_timer_del(pNetworkTimeoutTimer);
- pNetworkTimeoutTimer = NULL;
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData);
-
- return 0;
-}
-
-static Eina_Bool MpVideoStreamingCtrlPopupCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("No exist pUserData");
- return EINA_FALSE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pNetworkTimeoutTimer) {
- ecore_timer_del(pNetworkTimeoutTimer);
- pNetworkTimeoutTimer = NULL;
- }
-
- MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoStreamingCtrlExitCb);
-
- return EINA_FALSE;
-}
-
-static int MpVideoStreamingCtrlPauseCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("No exist pUserData");
- return 0;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
-
- if (pNetworkTimeoutTimer) {
- ecore_timer_del(pNetworkTimeoutTimer);
- pNetworkTimeoutTimer = NULL;
- }
-
- pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT,
- MpVideoStreamingCtrlPopupCb,
- pAppData);
-
- return 0;
-}
-
-
-static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData || !pKeyNode) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- char *szkeyname = NULL;
-
- szkeyname = vconf_keynode_get_name(pKeyNode);
- if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) {
- switch(vconf_keynode_get_int(pKeyNode))
- {
- case MP_NETWORK_CLOSE:
- VideoLogInfo("MP_NETWORK_CLOSE");
- if(pEcorePipeHandleForPause) {
- if(!ecore_pipe_write(pEcorePipeHandleForPause,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- break;
-
- case MP_NETWORK_ON:
- VideoLogInfo("MP_NETWORK_ON");
- if(pEcorePipeHandleForResume) {
- if(!ecore_pipe_write(pEcorePipeHandleForResume,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- break;
-
- default:
- VideoLogInfo("UNKNOWN NETWORK CONFIG");
- break;
- }
- } else {
- }
-}
-
-static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData)
-{
- if (!pUserData || !pKeyNode) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- VideoLogInfo("");
- char *szkeyname = NULL;
-
- szkeyname = vconf_keynode_get_name(pKeyNode);
- if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) {
- switch(vconf_keynode_get_int(pKeyNode))
- {
- case VCONFKEY_NETWORK_OFF:
- nNetworkStatus = MP_NETWORK_TYPE_OFF;
- VideoLogInfo("MP_NETWORK_TYPE_OFF");
- /*
- if(pEcorePipeHandleForPause) {
- if(!ecore_pipe_write(pEcorePipeHandleForPause,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- */
- break;
-
- case VCONFKEY_NETWORK_CELLULAR:
- VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
- /*
- if(pEcorePipeHandleForResume) {
- if(!ecore_pipe_write(pEcorePipeHandleForResume,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
- */
- break;
-
- case VCONFKEY_NETWORK_WIFI:
- VideoLogInfo("MP_NETWORK_TYPE_WIFI");
- /*
- if(pEcorePipeHandleForResume) {
- if(!ecore_pipe_write(pEcorePipeHandleForResume,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- nNetworkStatus = MP_NETWORK_TYPE_WIFI;
- */
- break;
-
- default:
- nNetworkStatus = MP_NETWORK_TYPE_OFF;
- VideoLogInfo("UNKNOWN NETWORK STATE");
- if(pEcorePipeHandleForPause) {
- if(!ecore_pipe_write(pEcorePipeHandleForPause,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- break;
- }
- }
- else {
- if(pEcorePipeHandleForPause) {
- if(!ecore_pipe_write(pEcorePipeHandleForPause,
- pUserData, sizeof(VideoAppData))) {
- VideoLogDebug("FAIL PIPE WRITE");
- }
- }
- }
-}
-
-static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData || !pKeyNode) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- char *szkeyname = NULL;
- char *szTmp = NULL;
-
- szkeyname = vconf_keynode_get_name(pKeyNode);
- if(szkeyname == NULL) {
- VideoLogInfo("key name value is NULL");
- return;
- }
-
- if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) {
- szTmp = vconf_keynode_get_str(pKeyNode);
-
- if(szTmp == NULL) {
- VideoLogInfo("node string value is NULL");
- return;
- }
-
- VideoLogInfo("Network ip address : %s", szTmp);
- }
- else {
- VideoLogInfo("Invalid ip address.");
- }
-}
-
-static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData || !pKeyNode) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- char *szkeyname = NULL;
-
- szkeyname = vconf_keynode_get_name(pKeyNode);
- if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) {
- switch(vconf_keynode_get_int(pKeyNode))
- {
- case VCONFKEY_NETWORK_WIFI_OFF:
- nWifiState = MP_NETWORK_WIFI_OFF;
- VideoLogInfo("MP_NETWORK_WIFI_OFF");
- break;
-
- case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
- nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
- VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
- break;
-
- case VCONFKEY_NETWORK_WIFI_CONNECTED:
- nWifiState = MP_NETWORK_WIFI_CONNECTED;
- VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
- break;
-
- default:
- nWifiState = MP_NETWORK_WIFI_OFF;
- VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
- break;
- }
- } else {
- nWifiState = MP_NETWORK_WIFI_OFF;
- VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
- }
-}
-
-static void MpVideoStreamingCtrlCellularStateCb(keynode_t *pKeyNode,void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData || !pKeyNode) {
- VideoLogInfo("User data is NULL.");
- return;
- }
-
- char *szkeyname = NULL;
-
- szkeyname = vconf_keynode_get_name(pKeyNode);
- if (!strcmp(szkeyname, VCONFKEY_NETWORK_CELLULAR_STATE)) {
- switch(vconf_keynode_get_int(pKeyNode))
- {
- case VCONFKEY_NETWORK_CELLULAR_ON:
- nCellularState = MP_NETWORK_CELLULAR_ON;
- VideoLogInfo("MP_NETWORK_CELLULAR_ON");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
- nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
- VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
- nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
- VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
- nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
- VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
- nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
- VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
- break;
-
- default:
- nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
- VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
- break;
- }
- } else {
- nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
- VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
- }
-}
-
-static void MpVideoStreamingCtrlPipeInit(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("No exist pUserData");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pEcorePipeHandleForPause) {
- ecore_pipe_del(pEcorePipeHandleForPause);
- pEcorePipeHandleForPause = NULL;
- }
-
- pEcorePipeHandleForPause = ecore_pipe_add(
- (Ecore_Pipe_Cb)MpVideoStreamingCtrlPauseCb,
- (void *)pAppData);
-
- if(pEcorePipeHandleForResume) {
- ecore_pipe_del(pEcorePipeHandleForResume);
- pEcorePipeHandleForResume = NULL;
- }
-
- pEcorePipeHandleForResume = ecore_pipe_add(
- (Ecore_Pipe_Cb)MpVideoStreamingCtrlResumeCb,
- (void *)pAppData);
-
-}
-
-/*
- * Internal function.
- */
-
-bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nRet = 0;
-
- nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
- MpVideoStreamingCtrlNetworkOnOffCb,
- (void*)pAppData);
-
- if (nRet < 0) {
- VideoLogInfo("[ERR] Fail to set network on/off notification.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nRet = 0;
-
- nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS,
- MpVideoStreamingCtrlNetworkStatusCb,
- (void*)pAppData);
-
- if (nRet < 0) {
- VideoLogInfo("[ERR] Fail to set network status notification.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nRet = 0;
-
- nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP,
- MpVideoStreamingCtrlChangeIpCb,
- (void*)pAppData);
-
- if (nRet < 0) {
- VideoLogInfo("[ERR] Fail to set ip address changing notification.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nRet = 0;
-
- nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE,
- MpVideoStreamingCtrlWiFiStateCb,
- (void*)pAppData);
-
- if (nRet < 0) {
- VideoLogInfo("[ERR] Fail to set wifi state notification.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nRet = 0;
-
- nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE,
- MpVideoStreamingCtrlCellularStateCb,
- (void*)pAppData);
-
- if (nRet < 0) {
- VideoLogInfo("[ERR] Fail to set cellular notification.");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * External function.
- */
-bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress)
-{
- VideoLogInfo("");
-
- char *szTmp = NULL;
-
- szTmp = vconf_get_str(VCONFKEY_NETWORK_IP);
- if (szTmp) {
- memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX);
- strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1);
-
- VideoLogInfo("Current network ip address : %s", szRetIpAddress);
-
- if(szTmp)
- free(szTmp);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-bool MpVideoStreamingCtrlGetProxy(char* szRetProxy)
-{
- VideoLogInfo("");
-
- char *szTmp = NULL;
-
- szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY);
- if (szTmp) {
- memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX);
- strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1);
-
- VideoLogInfo("Current network ip address : %s", szRetProxy);
-
- if(szTmp)
- free(szTmp);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-bool MpVideoStreamingCtrlIsNetworkOn(void)
-{
- VideoLogInfo("");
-
- int ntmpCheckNetworkON = 0;
-
- if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) {
- switch(ntmpCheckNetworkON)
- {
- case MP_NETWORK_CLOSE:
- VideoLogInfo("Network close.");
- return FALSE;
-
- case MP_NETWORK_ON:
- VideoLogInfo("Network on.");
- return TRUE;
- }
- } else {
- VideoLogInfo("Network close.");
- }
-
- return FALSE;
-}
-
-int MpVideoStreamingCtrlGetNetworkStatus(void)
-{
- VideoLogInfo("");
-
- int ntmpGetNetworkStatus = 0;
-
- if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) {
- switch(ntmpGetNetworkStatus)
- {
- case VCONFKEY_NETWORK_OFF:
- nNetworkStatus = MP_NETWORK_TYPE_OFF;
- VideoLogInfo("MP_NETWORK_TYPE_OFF");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR:
- nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
- VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
- break;
-
- case VCONFKEY_NETWORK_WIFI:
- nNetworkStatus = MP_NETWORK_TYPE_WIFI;
- VideoLogInfo("MP_NETWORK_TYPE_WIFI");
- break;
-
- default:
- nNetworkStatus = MP_NETWORK_TYPE_OFF;
- VideoLogInfo("MP_NETWORK_TYPE_OFF - default");
- break;
- }
- } else {
- nNetworkStatus = MP_NETWORK_TYPE_OFF;
- VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value");
- }
-
- return nNetworkStatus;
-}
-
-int MpVideoStreamingCtrlGetWifiState()
-{
- VideoLogInfo("");
-
- int ntmpGetWifiState = 0;
-
- if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) {
- switch(ntmpGetWifiState)
- {
- case VCONFKEY_NETWORK_WIFI_OFF:
- nWifiState = MP_NETWORK_WIFI_OFF;
- VideoLogInfo("MP_NETWORK_WIFI_OFF");
- break;
-
- case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
- nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
- VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
- break;
-
- case VCONFKEY_NETWORK_WIFI_CONNECTED:
- nWifiState = MP_NETWORK_WIFI_CONNECTED;
- VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
- break;
-
- default:
- nWifiState = MP_NETWORK_WIFI_OFF;
- VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
- break;
- }
- } else {
- nWifiState = MP_NETWORK_WIFI_OFF;
- VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
- }
-
- return nWifiState;
-
-}
-
-int MpVideoStreamingCtrlGetCellularState()
-{
- VideoLogInfo("");
-
- int ntmpGetCellularState = 0;
-
- if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) {
- switch(ntmpGetCellularState)
- {
- case VCONFKEY_NETWORK_CELLULAR_ON:
- nCellularState = MP_NETWORK_CELLULAR_ON;
- VideoLogInfo("MP_NETWORK_CELLULAR_ON");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
- nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
- VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
- nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
- VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
- nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
- VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
- break;
-
- case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
- nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
- VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
- break;
-
- default:
- nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
- VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
- break;
- }
- } else {
- nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
- VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
- }
-
- return nCellularState;
-}
-
-void MpVideoStreamingCtrlDestroy(void *pUserData)
-{
- VideoLogInfo("");
-
- if (pNetworkTimeoutTimer) {
- ecore_timer_del(pNetworkTimeoutTimer);
- pNetworkTimeoutTimer = NULL;
- }
-
- if(pEcorePipeHandleForPause) {
- ecore_pipe_del(pEcorePipeHandleForPause);
- pEcorePipeHandleForPause = NULL;
- }
-
- if(pEcorePipeHandleForResume) {
- ecore_pipe_del(pEcorePipeHandleForResume);
- pEcorePipeHandleForResume = NULL;
- }
-}
-
-
-
-bool MpVideoStreamingCtrlInit(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- char szTmp[STR_LEN_MAX] = {0};
- bool bNetworkState = FALSE;
-
- if(bIsInitCallbackFunc == EINA_FALSE) {
- MpVideoStreamingCtrlPipeInit(pUserData);
-
- MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData);
- MpVideoStreamingCtrlSetNotifyChangingIp(pUserData);
- MpVideoStreamingCtrlSetNotifyWiFiState(pUserData);
- MpVideoStreamingCtrlSetNotifyCellularState(pUserData);
-
- bIsInitCallbackFunc = EINA_TRUE;
- }
-
- if (pNetworkTimeoutTimer) {
- ecore_timer_del(pNetworkTimeoutTimer);
- pNetworkTimeoutTimer = NULL;
- }
-
- switch(MpVideoStreamingCtrlGetNetworkStatus())
- {
- case MP_NETWORK_TYPE_OFF:
- VideoLogInfo("MP_NETWORK_TYPE_OFF");
- pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT,
- MpVideoStreamingCtrlPopupCb,
- pAppData);
- bNetworkState = FALSE;
- break;
-
- case MP_NETWORK_TYPE_CELLULAR:
- VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
- if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON)
- bNetworkState = TRUE;
- break;
-
- case MP_NETWORK_TYPE_WIFI:
- VideoLogInfo("MP_NETWORK_TYPE_WIFI");
- if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED)
- bNetworkState = TRUE;
- break;
- }
-
- if(bNetworkState) {
- MpVideoStreamingCtrlGetIpAddress(szTmp);
- VideoLogInfo("Current IP Address : %s", szTmp);
-
- memset(szTmp, 0, STR_LEN_MAX);
- MpVideoStreamingCtrlGetProxy(szTmp);
- VideoLogInfo("Current Proxy Address : %s", szTmp);
-
- memset(pAppData->szProxyAddress, 0, STR_LEN_MAX);
- strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1);
- }
-
- return bNetworkState;
-}
diff --git a/src/mp-video-streaming-view.c b/src/mp-video-streaming-view.c
deleted file mode 100755
index 0ffdf63..0000000
--- a/src/mp-video-streaming-view.c
+++ /dev/null
@@ -1,743 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <aul.h>
-#include <ctype.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <syspopup_caller.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-type-define.h"
-#include "mp-video-value-define.h"
-#include "mp-video-string-define.h"
-#include "mp-video-progressbar.h"
-#include "mp-video-animation-ctrl.h"
-#include "mp-video-streaming-view.h"
-#include "mp-video-service-ctrl.h"
-
-#define CTRL_PANEL_SHOW_TIME 5.0
-
-static Evas_Object *pNaviFrameHandle = NULL;
-static Evas_Object *pStreamingViewNaviControlBar = NULL;
-static Evas_Object *pBufferingAnimationHandle = NULL;
-
-static Evas_Object *pStreamingViewLayout = NULL;
-static Evas_Object *pStreamingViewPanelEdj = NULL;
-static Evas_Object *pStreamingViewCtrlEdj = NULL;
-static Evas_Object *pStreamingViewOptionEdj = NULL;
-static Evas_Object *pStreamingViewProgressbarEdj = NULL;
-
-static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL;
-static Elm_Object_Item *pNaviFrameItemStreamingView = NULL;
-
-static ChangeStreamingViewCbFunc pChangeViewUserCbFunc = NULL;
-
-static bool bIsStreamingViewScreenLock = FALSE;
-static bool bSwitchStreamingViewUI = TRUE;
-static bool bIsStreamingHightQuality = TRUE;
-static bool bIsChangeResolution = FALSE;
-static bool bIsStreamingViewOnlyAudio = FALSE;
-static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
-
-/*
- * Callback function.
- */
-
-static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
- VideoLogInfo("Press Pause button.");
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- }
- }
-}
-
-static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData,
- Evas_Object *pObject,
- const char *szEmission,
- const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
- VideoLogInfo("Press Resume/Play button.");
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- }
- }
-}
-
-static void MpVideoStreamingViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- edje_object_signal_callback_del(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb);
-
- MpVideoStreamingViewPop(pNaviFrameHandle, pUserData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb, pUserData);
-}
-
-static void MpVideoStreamingViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR] No Exist pUserData.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData);
-}
-
-static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
- //syspopup_launch("volume", NULL);
-}
-
-static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No Exist pUserData.");
- return EINA_FALSE;
- }
-
- if(bIsStreamingViewOnlyAudio)
- {
- VideoLogInfo("Not hide control panel and UI because of audio only.");
- return EINA_FALSE;
- }
-
- if (MpVideoStreamingViewGetBufferingState()) {
- VideoLogInfo("skip for Buffering");
- return EINA_TRUE;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (pStreamingViewCtrlPanelHideTimer) {
- ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
- pStreamingViewCtrlPanelHideTimer = NULL;
- }
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
-
- return EINA_FALSE;
-
-}
-
-static void MpVideoStreamingViewChangedCameraStatusCb(void *pNode, void *pUserData)
-{
- if(!pUserData)
-{
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(!MpUtilIsCameraOff())
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
- }
-
-static void MpVideoStreamingViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
-
- evas_object_hide(pStreamingViewLayout);
- }
-
-static void MpVideoStreamingViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData);
-}
-
-
-/*
- * Internal function
- */
-
-void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pStreamingViewLayout = elm_layout_add(pParent);
- if (pStreamingViewLayout) {
- Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
-
- elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
-
- // Option Button (Screen size, Share, Info, 5.1 Surround)
- pStreamingViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
- elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pStreamingViewOptionEdj);
- edje_object_signal_emit(pStreamingViewOptionEdj, SIGNAL_OPTION_MODE_WEB, "*");
-
- pStreamingViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
- pStreamingViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
- pBufferingAnimationHandle = MpVideoAnimationCtrlInit(pMainWindowEvas);
-
- edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_CONTROL, pStreamingViewCtrlEdj);
- elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_ANIMATION, pBufferingAnimationHandle);
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
-
- MpVideoAnimationCtrlShow();
-
- pStreamingViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
- MpVideoProgressbarSetSkipEvent(TRUE);
- if (pStreamingViewProgressbarEdj) {
- edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pStreamingViewProgressbarEdj);
- } else {
- VideoLogInfo("Progressbar edj handle is null.");
- }
-
- elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_CONTROL, pStreamingViewPanelEdj);
-
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_MODE_STREAMING, "*");
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
- SIGNAL_CONTROL_PART_PLAY_BUTTON,
- (void *)MpVideoStreamingViewPressPauseButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_PLAY_RESUME_PRESS,
- SIGNAL_CONTROL_PART_PLAY_BUTTON,
- (void *)MpVideoStreamingViewPressResumeButtonCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_BACK_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_BACK_BUTTON,
- (void *)MpVideoStreamingViewBackButtonDownCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_VOL_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_VOL_BUTTON,
- (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_VOL_BUTTON_UP,
- SIGNAL_CONTROL_PART_VOL_BUTTON,
- (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_MUTE_BUTTON_DOWN,
- SIGNAL_CONTROL_PART_MUTE_BUTTON,
- (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
-
- edje_object_signal_callback_add(pStreamingViewCtrlEdj,
- SIGNAL_CONTROL_MUTE_BUTTON_UP,
- SIGNAL_CONTROL_PART_MUTE_BUTTON,
- (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
-
- MpUtilRegisteCameraStatusCbFunc((void *)MpVideoStreamingViewChangedCameraStatusCb, pUserData);
- }
-}
-
-void MpVideoStreamingViewInit(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pNaviFrameHandle|| !pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData);
-}
-
-
-
-/*
- * External function
- */
-void MpVideoStreamingViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeStreamingViewCbFunc pChangeViewCb)
-{
- VideoLogInfo("");
-
- pNaviFrameHandle = pNaviFrame;
- pChangeViewUserCbFunc = pChangeViewCb;
-
- MpVideoStreamingViewInit(pUserData);
-
- pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line");
-
- elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoStreamingViewShowLayoutFinish, pUserData);
- elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoStreamingViewHideLayoutFinish, pUserData);
-
- if(MpUtilCheckMuteStatus())
- {
- MpVideoStreamingViewSetMuteStatus(TRUE);
- }
-
- int nRotate = MpUtilGetRotationState();
- if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
- {
- MpVideoStreamingViewPortrate();
- }
- else
- {
- MpVideoStreamingViewLandscape();
- }
-
-
-}
-
-void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData);
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
- else
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
-}
-
-void MpVideoStreamingViewDestroy(void *pUserData)
-{
- VideoLogInfo("");
-
- MpVideoStreamingViewHideControlPanel(pUserData);
- MpVideoProgressbarDestroy();
- MpVideoAnimationCtrlDestroy();
-
- pNaviFrameHandle = NULL;
- pBufferingAnimationHandle = NULL;
- pNaviFrameItemStreamingView = NULL;
- pStreamingViewProgressbarEdj = NULL;
-
- if (pStreamingViewNaviControlBar) {
- evas_object_del(pStreamingViewNaviControlBar);
- pStreamingViewNaviControlBar = NULL;
- }
-
- if (pStreamingViewLayout) {
- evas_object_del(pStreamingViewLayout);
- pStreamingViewLayout = NULL;
- }
-
- if (pStreamingViewPanelEdj) {
- evas_object_del(pStreamingViewPanelEdj);
- pStreamingViewPanelEdj = NULL;
- }
-
- if (pStreamingViewCtrlEdj) {
- evas_object_del(pStreamingViewCtrlEdj);
- pStreamingViewCtrlEdj = NULL;
- }
-
- if (pStreamingViewCtrlPanelHideTimer) {
- ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
- pStreamingViewCtrlPanelHideTimer = NULL;
- }
-
- if (pStreamingViewOptionEdj) {
- evas_object_del(pStreamingViewOptionEdj);
- pStreamingViewOptionEdj = NULL;
- }
-
- bIsStreamingViewScreenLock = FALSE;
- bIsStreamingViewOnlyAudio = FALSE;
-
- bSwitchStreamingViewUI = TRUE;
- nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
-
- bIsStreamingHightQuality = TRUE;
- bIsChangeResolution = FALSE;
-}
-
-void MpVideoStreamingViewInitAfterBeginOfStream(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
- MpVideoProgressbarSetSkipEvent(FALSE);
- MpVideoProgressbarBeginOfStream((void *)pAppData);
-
- if (pAppData->nDuration > 1) {
- char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
- snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
- PLAY_TIME_ARGS(pAppData->nDuration / 1000));
- MpVideoProgressbarUpdateDurationTime(szDurationTime);
- }
-
- MpVideoAnimationCtrlHide();
- edje_object_signal_emit(_EDJ(pStreamingViewLayout),
- SIGNAL_MAIN_ANIMATION_HIDE, "*");
-
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData);
-
- if(pAppData->nDuration < 1)
- pAppData->nDuration = 1;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
-}
-
-void MpVideoStreamingViewUpdatePauseKey(void)
-{
- VideoLogInfo("");
-
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
-}
-
-void MpVideoStreamingViewUpdateResumeKey(void)
-{
- VideoLogInfo("");
-
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
-}
-
-void MpVideoStreamingViewShowControlPanel(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (!pStreamingViewPanelEdj) {
- VideoLogInfo("No exist play control panel edc.");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
- VideoLogInfo("");
- return;
- }
-
- bSwitchStreamingViewUI = TRUE;
- MpVideoProgressbarCreateTimer((void *)pAppData);
-
- evas_object_show(pStreamingViewLayout);
-
- elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm");
-
- int nRotate = MpUtilGetRotationState();
- if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL)
- {
- elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*");
- }
- else
- {
- elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*");
- }
-
- if (pStreamingViewCtrlPanelHideTimer) {
- ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
- pStreamingViewCtrlPanelHideTimer = NULL;
- }
-
- if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsStreamingViewOnlyAudio == TRUE) {
- } else {
- pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
- }
-
- MpVideoStreamingViewActivate();
-}
-
-void MpVideoStreamingViewHideControlPanel(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
- VideoLogInfo("");
- return;
- }
-
- if (!pStreamingViewPanelEdj) {
- VideoLogInfo("No exist play control panel edc.");
- return;
- }
-
- if(bIsStreamingViewOnlyAudio)
- {
- VideoLogInfo("Not hide control panel and UI because of audio only.");
- return;
- }
-
- bSwitchStreamingViewUI = FALSE;
- MpVideoProgressbarDeleteTimer();
-
- elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm");
- elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*");
-
- if (pStreamingViewCtrlPanelHideTimer) {
- ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
- pStreamingViewCtrlPanelHideTimer = NULL;
- }
-}
-
-void MpVideoStreamingViewActivate(void)
-{
- VideoLogInfo("");
-
- nStreamingViewState = MP_STREAMING_VIEW_STATE_ACTIVATE;
-}
-
-void MpVideoStreamingViewUnactivate(void)
-{
- VideoLogInfo("");
-
- nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
-}
-
-void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide)
-{
- VideoLogInfo("");
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if (MpVideoStreamingViewGetBufferingState())
- {
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
- }
- else
- {
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
- if(bLayoutHide)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData);
- }
- }
-}
-
-void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate)
-{
- if (nSetBufferingRate > 95) {
- MpVideoAnimationCtrlHide();
- MpVideoProgressbarSetSkipEvent(FALSE);
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
- } else {
- MpVideoProgressbarSetSkipEvent(TRUE);
- MpVideoAnimationCtrlShow();
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
-
- if(nSetBufferingRate >= 0)
- MpVideoAnimationCtrlSetPercent(nSetBufferingRate);
- }
-}
-
-bool MpVideoStreamingViewGetBufferingState(void)
-{
- VideoLogInfo("");
-
- return MpVideoAnimationCtrlGetActiveState();
-}
-
-bool MpVideoStreamingViewIsTopView(void)
-{
- VideoLogInfo("");
-
- Evas_Object *pTmpContents = NULL;
- Elm_Object_Item *pTmpItem = NULL;
-
- if (!pNaviFrameHandle) {
- VideoLogInfo("[ERR] No exist navigationbar handle.");
- return FALSE;
- }
-
- pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
- pTmpContents = elm_object_item_content_get(pTmpItem);
- if (pTmpContents) {
- if (pTmpContents == pStreamingViewLayout) {
- VideoLogInfo("Streaming display view is staing in top view.");
- return TRUE;
- } else {
- VideoLogInfo("Streaming display view is not staied in top view.");
- return FALSE;
- }
- } else {
- VideoLogInfo("[ERR] No exist naviFrame top item.");
- return FALSE;
- }
-
- return FALSE;
-}
-
-void MpVideoStreamingViewShowNocontentImage(void *pUserData)
-{
- VideoLogInfo("");
-
- if (pStreamingViewLayout) {
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
- }
-
- bIsStreamingViewOnlyAudio = TRUE;
-
- MpVideoStreamingViewShowControlPanel(pUserData);
-}
-
-void MpVideoStreamingViewHideNocontentImage(void)
-{
- VideoLogInfo("");
-
- if (pStreamingViewLayout) {
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
- }
-
- bIsStreamingViewOnlyAudio = FALSE;
-}
-
-void MpVideoStreamingViewPortrate(void)
-{
- VideoLogInfo("");
-
- elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*");
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*");
- edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*");
- edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*");
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_PORTRATE_MODE, "*");
-}
-
-void MpVideoStreamingViewLandscape(void)
-{
- VideoLogInfo("");
-
- elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*");
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE, "*");
-}
-
-void MpVideoStreamingViewUpdateProgressBar(void *pUserData)
-{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR]");
- return;
- }
-
- MpVideoProgressbarCreateTimer(pUserData);
-}
-
-void MpVideoStreamingViewSetMuteStatus(bool bMute)
-{
- VideoLogInfo("");
- if(pStreamingViewCtrlEdj == NULL)
- {
- VideoLogError("streaming control edj is NULL");
- return;
- }
-
- if(bMute)
- {
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SET_MUTE, "*");
- }
- else
- {
- edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_UNSET_MUTE, "*");
- }
-
-}
-
diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c
deleted file mode 100755
index b47fc68..0000000
--- a/src/mp-video-subtitle-ctrl.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <vconf.h>
-#include <vconf-keys.h>
-#include <Ecore_Evas.h>
-#include <Elementary.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-service-ctrl.h"
-#include "mp-video-subtitle-ctrl.h"
-
-#define MP_VIDEO_SUBTITLE_MENU_NUM 2
-
-#define MP_SUBTITLE_FONT_SMALL 22
-#define MP_SUBTITLE_FONT_MEDIUM 35
-#define MP_SUBTITLE_FONT_LARGE 48
-#define MP_SUBTITLE_MIN_VALUE 3
-
-
-/* subtitle edc layout */
-static Evas_Object *pSubTitleEdj = NULL;
-
-static bool bExistSubtitleFile = FALSE;
-static char *szSubtitleFileUri = NULL;
-static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][5] = { ".srt", ".sub", ".smi" };
-
-static MpSubTitleSizeType nSubtitleSize = MP_SUBTITLE_SIZE_SMALL;
-
-static bool bShowStatus = TRUE;
-
-
-/*
- * Internal function
- */
-
-static void MpVideoSubtitleCtrlClear(void)
-{
- VideoLogInfo("");
-
- bExistSubtitleFile = FALSE;
-
- if(szSubtitleFileUri)
- {
- free(szSubtitleFileUri);
- szSubtitleFileUri = NULL;
- }
-
- if(pSubTitleEdj) {
- evas_object_del(pSubTitleEdj);
- pSubTitleEdj = NULL;
- }
-
-}
-
-/*
- * External function
- */
-
-bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath)
-{
- if (!szMediaUriPath) {
- VideoLogInfo("No Exist szMediaUri.");
- return FALSE;
- }
-
- if (strlen(szMediaUriPath) < 1) {
- VideoLogInfo("No Exist szMediaUri.");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- struct stat buf;
- int nCount = 0;
- int nStrLength = 0;
-
- bExistSubtitleFile = FALSE;
-
- if(szSubtitleFileUri == NULL)
- {
- szSubtitleFileUri = calloc(1, sizeof(char) * STR_LEN_MAX);
- }
-
- char *szExt;
-
- szExt = strrchr(szMediaUriPath, '.');
-
- if (szExt) {
- nStrLength = strlen(szMediaUriPath) - strlen(szExt);
- }
- else {
- nStrLength = strlen(szMediaUriPath);
- }
-
- for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++)
- {
- memset(szSubtitleFileUri, 0, STR_LEN_MAX);
- strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength);
- strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]);
- VideoLogInfo("%s",szSubtitleFileUri);
-
- if (!stat(szSubtitleFileUri, &buf)) {
- VideoLogInfo("Success finding subtitle file. - %d", nCount);
- bExistSubtitleFile = TRUE;
- break;
- } else {
- memset(szSubtitleFileUri, 0, STR_LEN_MAX);
- }
- }
-
- if (!bExistSubtitleFile) {
- VideoLogInfo("Fail finding subtitle file.");
- }
-
- return bExistSubtitleFile;
-}
-
-void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent)
-{
- if (pUserData == NULL) {
- VideoLogInfo("[ERR]No have pUserData");
- return NULL;
- }
-
- if (pParent == NULL) {
- VideoLogInfo("[ERR]No have pParent");
- return NULL;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoSubtitleCtrlClear();
-
- if(!MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri)) {
- VideoLogInfo("Sub tiltle file is not exist.");
- }
-
- pSubTitleEdj = elm_layout_add(pParent);
- elm_layout_file_set(pSubTitleEdj, VIDEO_PLAYER_SUBTITLE_EDJ, SUBTITLE_EDJ_GROUP);
-
- return (void *)pSubTitleEdj;
-}
-
-void MpVideoSubtitleCtrlDestroy(void)
-{
- VideoLogInfo("");
-
- MpVideoSubtitleCtrlClear();
-}
-
-void MpVideoSubtitleCtrlUpdate(char *szTxt)
-{
- VideoLogInfo("%d",strlen(szTxt));
-
- if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
- return;
- }
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return;
- }
-
- edje_object_part_text_set(_EDJ(pSubTitleEdj), "subtitle.label.txt",szTxt);
-}
-
-
-bool MpVideoSubtitleCtrlIsExistSubtitle(void)
-{
- VideoLogInfo("");
-
- return bExistSubtitleFile;
-}
-
-bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri)
-{
- VideoLogInfo("");
-
- if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
- return FALSE;
- }
-
- if (strlen(szSubtitleFileUri) < 1) {
- VideoLogInfo("[ERR]No have szSubtitleFileUri");
- return FALSE;
- }
-
- strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1);
-
- return TRUE;
-}
-
-void MpVideoSubtitleCtrlSetLayoutShow(bool bShow)
-{
- VideoLogInfo("");
-
- if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
- return;
- }
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return;
- }
- if(bShow) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_SHOW, "*");
- }
- else {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_HIDE, "*");
- }
-
-}
-
-void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode)
-{
- VideoLogInfo("");
-
- if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
- return;
- }
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return;
- }
-
- MpSubTitleSizeType type = nSizeMode;
-
- if(type == MP_SUBTITLE_SIZE_LARGE) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_LARGE, "*");
- }
- else if(type == MP_SUBTITLE_SIZE_MEDIUM) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_MEDIUM, "*");
- }
- else if(type == MP_SUBTITLE_SIZE_SMALL) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_SMALL, "*");
- }
-
- nSubtitleSize = type;
-
-}
-
-int MpVideoSubtitleCtrlGetSizeMode()
-{
- VideoLogInfo("");
-
- if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
- return -1;
- }
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return -1;
- }
-
- return nSubtitleSize;
-}
-
-
-
-void MpVideoSubtitleCtrlSetRotate(int nRotateStatus)
-{
- VideoLogInfo("");
- if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
- return;
- }
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return;
- }
-
- if(nRotateStatus == VIDEO_ROTATE_PORTRAIT_NORMAL ||
- nRotateStatus == VIDEO_ROTATE_PORTRAIT_REVERSE) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_PORTRATE_MODE, "*");
-
- }
- else if(nRotateStatus == VIDEO_ROTATE_LANDSCAPE_NORMAL ||
- nRotateStatus == VIDEO_ROTATE_LANDSCAPE_REVERSE) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LANDSCAPE_MODE, "*");
- }
-}
-
-void MpVideoSubtitleCtrlSetShowStatus(bool bShow)
-{
- VideoLogInfo("");
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return;
- }
- if(bShowStatus != bShow) {
- bShowStatus = bShow;
- if(bShow) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_SHOW, "*");
-
- }
- else {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_HIDE, "*");
- }
- }
-}
-
-bool MpVideoSubtitleCtrlGetShowStatus()
-{
- VideoLogInfo("");
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return FALSE;
- }
-
- return bShowStatus;
-}
-
-void MpVideoSubtitleCtrlSetLockScreen(bool bShow)
-{
- VideoLogInfo("");
-
- if(pSubTitleEdj == NULL) {
- VideoLogInfo("Subtitle handle is NULL");
- return;
- }
-
- if(bShow) {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_SHOW, "*");
- }
- else {
- edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_HIDE, "*");
- }
-
-}
-
diff --git a/src/mp-video-view-mgr.c b/src/mp-video-view-mgr.c
deleted file mode 100755
index f3892ae..0000000
--- a/src/mp-video-view-mgr.c
+++ /dev/null
@@ -1,1390 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#include <app.h>
-#include <syspopup_caller.h>
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "mp-external-ug.h"
-#include "mp-video-view-mgr.h"
-#include "mp-video-type-define.h"
-#include "mp-util-media-service.h"
-#include "mp-video-display-view.h"
-#include "mp-video-string-define.h"
-#include "mp-video-streaming-view.h"
-#include "mp-video-service-ctrl.h"
-#include "mp-video-volume-ctrl.h"
-
-#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL 4.0
-#define DETAIL_POPUP_STR_LEN_MAX 20
-#define LAYOUT_VISIBLE_OFF_TIMER_INTERVAL 1.0
-
-
-static Evas_Object *pMainLayout = NULL;
-static Evas_Object *pBackGround = NULL;
-static Evas_Object *pNaviFrame = NULL;
-static Evas_Object *pConformant = NULL;
-static Evas_Object *pGesture = NULL;
-static Evas_Object *pEventRect = NULL;
-static Evas_Object *pDisplayViewVolume = NULL;
-
-static MpVideoRotateType nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL;
-
-static Ecore_Event_Handler *pHWKeyEventDownHandler = NULL;
-static Ecore_Event_Handler *pHWKeyEventUpHandler = NULL;
-
-static bool bIsLongPressForward = FALSE;
-static bool bIsKeyCancle = FALSE;
-static bool bShowLayout = FALSE;
-
-static Ecore_Timer *pLongPressSpeedPlayingTimer = NULL;
-static Ecore_Timer *pLongPressVolumeKeyTimer = NULL;
-static Ecore_Timer *pLayoutVisibleOffTimer = NULL;
-
-static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData);
-static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData);
-static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData);
-
-/*
- * Callback function.
- */
-static Eina_Bool MpVideoViewCtrlLayoutVisibleOffTimerCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- if(pLayoutVisibleOffTimer)
- {
- ecore_timer_del(pLayoutVisibleOffTimer);
- pLayoutVisibleOffTimer = NULL;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpUtilLayoutVisibleOff(pAppData->pMainWindow);
-
- return EINA_FALSE;
-}
-
-static Eina_Bool MpVideoViewCtrlVolumeKeyDownTimerCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- MpVideoViewCtrlShowVolume();
- int nVol;
- nVol = MpVideoVolumeCtrlGetVolume() - 1;
- MpVideoVolumeCtrlSetVolume(nVol);
-
- return EINA_TRUE;
-}
-
-static Eina_Bool MpVideoViewCtrlVolumeKeyUpTimerCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- MpVideoViewCtrlShowVolume();
- int nVol;
- nVol = MpVideoVolumeCtrlGetVolume() + 1;
- MpVideoVolumeCtrlSetVolume(nVol);
-
- return EINA_TRUE;
-}
-
-
-static Eina_Bool MpVideoViewCtrlHardkeyDownCb(void *pUserData, int nType, void *pEvent)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("Key down : %s", pKeyEvent->keyname);
-
- if(!strcmp(pKeyEvent->keyname, END_KEY))
- {
- VideoLogInfo("Back(End) key");
- }
- else if(!strcmp(pKeyEvent->keyname, HOME_KEY))
- {
- VideoLogInfo("Home key");
- }
- else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY))
- {
- MpVideoViewCtrlShowVolume();
- int nVol;
- nVol = MpVideoVolumeCtrlGetVolume() - 1;
- MpVideoVolumeCtrlSetVolume(nVol);
-
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
- pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyDownTimerCb, (void *)pAppData);
- }
- else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY))
- {
- MpVideoViewCtrlShowVolume();
- int nVol;
- nVol = MpVideoVolumeCtrlGetVolume() + 1;
- MpVideoVolumeCtrlSetVolume(nVol);
-
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
-
- pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyUpTimerCb, (void *)pAppData);
- }
- else if(!strcmp(pKeyEvent->keyname, POWER_KEY))
- {
- VideoLogInfo("Power key");
-
- MpUtilLcdOffForPowerButton();
- }
- else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY))
- {
- VideoLogInfo("Pause key down");
- }
- else if(!strcmp(pKeyEvent->keyname, PLAY_KEY))
- {
- VideoLogInfo("Play key down");
- }
- else if(!strcmp(pKeyEvent->keyname, STOP_KEY))
- {
- VideoLogInfo("Stop key down");
- }
- else if(!strcmp(pKeyEvent->keyname, NEXT_KEY))
- {
- VideoLogInfo("Next key down");
- }
- else if(!strcmp(pKeyEvent->keyname, PREV_KEY))
- {
- VideoLogInfo("Prev key down");
- }
- else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY))
- {
- VideoLogInfo("Forward key down");
- bIsLongPressForward = TRUE;
- MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData);
- }
- else if(!strcmp(pKeyEvent->keyname, REWIND_KEY))
- {
- VideoLogInfo("Rewind key down");
- bIsLongPressForward = FALSE;
- MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData);
- }
- else if(!strcmp(pKeyEvent->keyname, KEY_CANCLE))
- {
- VideoLogInfo("Cancel key down");
- bIsKeyCancle = TRUE;
- }
-
- return EINA_FALSE;
-}
-
-static Eina_Bool MpVideoViewCtrlHardkeyUpCb(void *pUserData, int nType, void *pEvent)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- VideoLogInfo("Key Up : %s", pKeyEvent->keyname);
-
- if(bIsKeyCancle)
- {
- VideoLogInfo("KEY CANCLE.");
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
- bIsKeyCancle = FALSE;
- return EINA_FALSE;
- }
-
- if(!strcmp(pKeyEvent->keyname, END_KEY))
- {
- VideoLogInfo("End key up");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
- else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY))
- {
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
- }
- else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY))
- {
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
- }
- else if(!strcmp(pKeyEvent->keyname, HOME_KEY))
- {
- VideoLogInfo("Home key up");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
-
- MpVideoServiceCtrlSetPrevPlayerType(MpVideoServiceCtrlGetPlayerType());
- }
- else if(!strcmp(pKeyEvent->keyname, POWER_KEY))
- {
- VideoLogInfo("Power key up");
- }
- else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY))
- {
- VideoLogInfo("Pause key up");
- if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- }
- else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- }
- }
- else if(!strcmp(pKeyEvent->keyname, PLAY_KEY))
- {
- VideoLogInfo("Play key up");
- if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- }
- else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
- }
- }
- else if(!strcmp(pKeyEvent->keyname, STOP_KEY))
- {
- VideoLogInfo("Stop key up");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
- }
- else if(!strcmp(pKeyEvent->keyname, NEXT_KEY))
- {
- VideoLogInfo("Next key up");
- }
- else if(!strcmp(pKeyEvent->keyname, PREV_KEY))
- {
- VideoLogInfo("Prev key up");
- }
- else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY))
- {
- VideoLogInfo("Forward key up");
- MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData);
- }
- else if(!strcmp(pKeyEvent->keyname, REWIND_KEY))
- {
- VideoLogInfo("Rewind key up");
- MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData);
- }
- else
- {
- }
-
- return EINA_FALSE;
-}
-
-static Evas_Event_Flags MpVideoViewCtrlGestureNTabStartCb(void *pUserData , void *pEventInfo)
-{
- VideoLogInfo("");
-
- return EVAS_EVENT_FLAG_NONE;
-}
-
-
-static Evas_Event_Flags MpVideoViewCtrlGestureNTabEndCb(void *pUserData , void *pEventInfo)
-{
- VideoLogInfo("");
-
- Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo;
- if(p->n == 1) {
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(bShowLayout) {
- int nWidth = 0;
- int nHeight = 0;
- int nMinY = 0;
- int nMaxY = 0;
-
- evas_object_geometry_get(pMainLayout, NULL, NULL, &nWidth, &nHeight);
-
- if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL ||
- MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE)
- {
- nMinY = (elm_config_scale_get() * 223);
- nMaxY = nHeight - ( elm_config_scale_get() * 215);
- }
- else
- {
- nMinY = (elm_config_scale_get() * 223);
- nMaxY = nHeight - ( elm_config_scale_get() * 204);
- }
-
- if(p->y > nMinY && p->y < nMaxY)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
- }
- } else {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
- }
- }
-
- return EVAS_EVENT_FLAG_NONE;
-}
-
-
-static Evas_Event_Flags MpVideoViewCtrlGestureNTabAbortCb(void *pUserData , void *pEventInfo)
-{
- VideoLogInfo("");
-
- return EVAS_EVENT_FLAG_NONE;
-}
-
-/*
- * Internal function.
- */
-static void MpVideoViewCtrlScreenRotationInit(int nRotateMode, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpUtilRotateWindow(nRotateMode, pAppData->pMainWindow);
- nVideoRotateType = nRotateMode;
- MpVideoViewCtrlSetRotation(nVideoRotateType, FALSE, pUserData);
-}
-
-static Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow)
-{
- if(!pWindow)
- {
- VideoLogError("[ERR]");
- return NULL;
- }
-
- VideoLogInfo("");
-
- return NULL;
-}
-
-void* MpVideoViewCtrlCreateConformant(void *pParent)
-{
- if(!pParent)
- {
- VideoLogInfo("[ERR]");
- return NULL;
- }
-
- VideoLogInfo("");
-
- Evas_Object *pTmpConform = NULL;
-
- pTmpConform = elm_conformant_add(pParent);
- evas_object_size_hint_weight_set(pTmpConform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_conformant_set(pParent, EINA_TRUE);
- elm_win_resize_object_add(pParent, pTmpConform);
- evas_object_show(pTmpConform);
-
- pConformant = pTmpConform;
-
- return pTmpConform;
-}
-
-static Evas_Object *MpVideoViewCtrlCreateMainLayout(Evas_Object *pParent)
-{
- if(!pParent)
- {
- VideoLogInfo("[ERR]");
- return NULL;
- }
-
- VideoLogInfo("");
-
- if(pMainLayout)
- {
- evas_object_del(pMainLayout);
- pMainLayout = NULL;
- }
-
- pMainLayout = elm_layout_add(pParent);
-
- elm_layout_theme_set(pMainLayout, "layout", "application", "video_no_indicator");
- evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_content_set(pParent, pMainLayout);
- pBackGround = MpVideoViewCtrlCreateBg(pParent);
- evas_object_show(pMainLayout);
-
- return pMainLayout;
-}
-
-static void MpVideoViewCtrlCreateEventRect(void *pUserData, Evas_Object *pParent)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- if(!pParent)
- {
- VideoLogInfo("[ERR]");
- return;
-}
-
- VideoLogInfo("");
-
- pEventRect = evas_object_rectangle_add(evas_object_evas_get(pParent));
- evas_object_color_set(pEventRect, 0, 0, 0, 0);
-
- elm_object_part_content_set(pParent, "elm.swallow.event", pEventRect);
-
- pGesture = elm_gesture_layer_add(pEventRect);
-
- elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_START, MpVideoViewCtrlGestureNTabStartCb, pUserData);
- elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_END, MpVideoViewCtrlGestureNTabEndCb, pUserData);
- elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_ABORT, MpVideoViewCtrlGestureNTabAbortCb, pUserData);
-
- evas_object_repeat_events_set(pEventRect, EINA_TRUE);
-
- elm_gesture_layer_attach(pGesture, pEventRect);
-
- evas_object_show(pEventRect);
-
-
-}
-static Evas_Object *MpVideoViewCtrlCreateVolume(void *pUserData, Evas_Object *pParent)
-{
- if(!pParent)
- {
- VideoLogInfo("[ERR]");
- return NULL;
- }
-
- VideoLogInfo("");
-
- if(pDisplayViewVolume)
- {
- evas_object_del(pDisplayViewVolume);
- pDisplayViewVolume = NULL;
- }
-
- pDisplayViewVolume = MpVideoVolumeCtrlInit(pParent, pUserData);
-
- return pDisplayViewVolume;
-}
-
-static void MpVideoViewCtrlShowNaviFrame(void)
-{
- VideoLogInfo("");
-
- if(pNaviFrame)
- {
- elm_object_part_content_set(pMainLayout, "elm.swallow.content", pNaviFrame);
- evas_object_show(pNaviFrame);
- }
- }
-
-static Evas_Object *MpVideoViewCtrlCreateNaviFrame(Evas_Object *pParent, void* pUserData)
-{
- if(!pParent)
- {
- VideoLogInfo("[ERR]");
- return NULL;
- }
-
- VideoLogInfo("");
-
- if(pNaviFrame)
- {
- evas_object_del(pNaviFrame);
- pNaviFrame = NULL;
- }
-
- pNaviFrame = elm_naviframe_add(pParent);
-
- elm_object_part_content_set(pParent, "elm.swallow.content", pNaviFrame);
-
- elm_naviframe_prev_btn_auto_pushed_set(pNaviFrame, EINA_FALSE);
-
- evas_object_show(pNaviFrame);
-
- return pNaviFrame;
-}
-
-static void MpVideoViewCtrlSetVideoViews(VideoAppData *pAppData, int nPlayerType)
-{
- VideoLogInfo("%p",pAppData);
-
- MpVideoServiceCtrlSetPlayerType(nPlayerType);
-
- switch(nPlayerType)
- {
- case MP_VIDEO_PLAYER:
- VideoLogInfo("MP_VIDEO_PLAYER");
- MpUtilMultimediaVolumeKeyGrab();
- MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
- break;
-
- case MP_VIDEO_PLAYER_SIMPLE:
- VideoLogInfo("MP_VIDEO_PLAYER_SIMPLE");
- MpUtilMultimediaVolumeKeyGrab();
- MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
- break;
-
- case MP_VIDEO_PLAYER_EMAIL:
- VideoLogInfo("MP_VIDEO_PLAYER_EMAIL");
- MpUtilMultimediaVolumeKeyGrab();
- MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
- break;
-
- case MP_VIDEO_PLAYER_MMS:
- VideoLogInfo("MP_VIDEO_PLAYER_MMS");
- MpUtilMultimediaVolumeKeyGrab();
- MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
- break;
-
- case MP_VIDEO_PLAYER_GALLERY:
- VideoLogInfo("MP_VIDEO_PLAYER_GALLERY");
- MpUtilMultimediaVolumeKeyGrab();
- MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
- break;
-
- case MP_STREAMING_PLAYER:
- VideoLogInfo("MP_STREAMING_PLAYER");
- MpUtilMultimediaVolumeKeyGrab();
- MpVideoStreamingViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb);
- break;
-
- default:
- VideoLogInfo("[ERR] No exist player tpye.");
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
- }
-}
-
-static Eina_Bool MpVideoVideoViewCtrlSpeedKeyLongPressCb(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX)
- {
- if(pLongPressSpeedPlayingTimer)
- {
- ecore_timer_del(pLongPressSpeedPlayingTimer);
- pLongPressSpeedPlayingTimer = NULL;
- }
-
- return EINA_FALSE;
- }
-
- ++pAppData->nPlayingSpeed;
-
- if(bIsLongPressForward)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
- }
- else
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
- }
-
- return EINA_TRUE;
-}
-
-static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData.");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X;
-
- if(bIsLongPressForward)
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData);
- }
- else
- {
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData);
- }
-
- if(pLongPressSpeedPlayingTimer)
- {
- ecore_timer_del(pLongPressSpeedPlayingTimer);
- pLongPressSpeedPlayingTimer = NULL;
- }
-
- pLongPressSpeedPlayingTimer = ecore_timer_add(MULTIMEDIA_KEY_LONG_PRESS_INTERVAL, MpVideoVideoViewCtrlSpeedKeyLongPressCb, (void *)pAppData);
-}
-
-static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData.");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- bIsLongPressForward = FALSE;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData);
-
- if(pLongPressSpeedPlayingTimer)
- {
- ecore_timer_del(pLongPressSpeedPlayingTimer);
- pLongPressSpeedPlayingTimer = NULL;
- }
-}
-
-static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- MpVideoViewCtrlHideVolume();
-
- MpVideoViewCtrlSetVideoViews((VideoAppData*)pUserData, nChangePlayerView);
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching(pAppData);
- }
-
-/*
- * External function.
- */
-bool MpVideoViewCtrlInit(VideoAppData *pAppData)
-{
- if(!pAppData)
- {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- if(pHWKeyEventDownHandler)
- {
- ecore_event_handler_del(pHWKeyEventDownHandler);
- pHWKeyEventDownHandler = NULL;
- }
-
- if(pHWKeyEventUpHandler)
- {
- ecore_event_handler_del(pHWKeyEventUpHandler);
- pHWKeyEventUpHandler = NULL;
- }
-
- pHWKeyEventDownHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpVideoViewCtrlHardkeyDownCb, (void *)pAppData);
- pHWKeyEventUpHandler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (void *)MpVideoViewCtrlHardkeyUpCb, (void *)pAppData);
-
- elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
-
- MpVideoViewCtrlCreateConformant(pAppData->pMainWindow);
- MpVideoViewCtrlCreateMainLayout(pConformant);
- MpVideoViewCtrlCreateEventRect((void *)pAppData, pMainLayout);
- MpVideoViewCtrlCreateVolume(pAppData, pMainLayout);
- MpVideoViewCtrlCreateNaviFrame(pMainLayout, (void*)pAppData);
- MpVideoViewCtrlSetVideoViews(pAppData, MpVideoServiceCtrlGetPlayerType());
- MpVideoViewCtrlScreenRotationInit(MpUtilGetRotationState(), (void *)pAppData);
-
- return TRUE;
-}
-
-void MpVideoViewCtrlDestroy(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- MpExternalUgUnload();
-
- MpVideoVolumeCtrlDestroy();
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewDestroy(pUserData);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewDestroy(pUserData);
- }
-
- if(pGesture)
- {
- evas_object_del(pGesture);
- pGesture = NULL;
- }
-
- if(pEventRect)
- {
- evas_object_del(pEventRect);
- pEventRect = NULL;
- }
-
- if(pHWKeyEventDownHandler)
- {
- ecore_event_handler_del(pHWKeyEventDownHandler);
- pHWKeyEventDownHandler = NULL;
- }
-
- if(pHWKeyEventUpHandler)
- {
- ecore_event_handler_del(pHWKeyEventUpHandler);
- pHWKeyEventUpHandler = NULL;
- }
-
- if(pMainLayout)
- {
- evas_object_del(pMainLayout);
- pMainLayout = NULL;
- }
-
- if(pLongPressSpeedPlayingTimer)
- {
- ecore_timer_del(pLongPressSpeedPlayingTimer);
- pLongPressSpeedPlayingTimer = NULL;
- }
-
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
-
- if(pLayoutVisibleOffTimer)
- {
- ecore_timer_del(pLayoutVisibleOffTimer);
- pLayoutVisibleOffTimer = NULL;
- }
-
- if(pDisplayViewVolume)
- {
- evas_object_del(pDisplayViewVolume);
- pDisplayViewVolume = NULL;
- }
-
- if(pBackGround)
- {
- evas_object_del(pBackGround);
- pBackGround = NULL;
- }
-
- bIsLongPressForward = FALSE;
- bIsKeyCancle = FALSE;
-
- nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL;
-}
-
-void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(nRotateMode == VIDEO_ROTATE_UNKNOWN)
- {
- nRotateMode = MpUtilGetRotationState();
- }
-
- nVideoRotateType = nRotateMode;
-
- MpUtilSetRotationState(nVideoRotateType);
-
- if(MpVideoVolumeCtrlGetShowStatus())
- {
- MpVideoViewCtrlHideVolume();
- }
-
- if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE)
- {
- edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_PORTRAIT_MODE, "*");
- }
- else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE)
- {
- edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_LANDSCAPE_MODE, "*");
- }
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE)
- {
- MpVideoDisplayViewPortrate(bLayoutHide, pUserData);
- }
- else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE)
- {
- MpVideoDisplayViewLandscape(bLayoutHide, pUserData);
- }
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewRotation((void *)pAppData, nVideoRotateType, bLayoutHide);
- }
-
- MpUtilRotateWindow(nVideoRotateType, pAppData->pMainWindow);
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen(pAppData, nVideoRotateType);
-}
-
-void MpVideoViewCtrlInitAfterBeginOfStream(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewInitAfterBeginOfStream(pUserData);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewInitAfterBeginOfStream(pUserData);
- }
-}
-
-void MpVideoViewCtrlPause(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewUpdatePauseKey();
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewUpdatePauseKey();
- }
-}
-
-void MpVideoViewCtrlResume(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewUpdateResumeKey();
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewUpdateResumeKey();
- }
-}
-
-void MpVideoViewShowLayout(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pLayoutVisibleOffTimer)
- {
- ecore_timer_del(pLayoutVisibleOffTimer);
- pLayoutVisibleOffTimer = NULL;
- }
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*");
- elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
- MpVideoViewCtrlShowNaviFrame();
- bShowLayout = TRUE;
-
- MpVideoDisplayViewActivate();
- MpVideoDisplayViewShowControlPanel(pUserData);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*");
- elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
- MpVideoViewCtrlShowNaviFrame();
- bShowLayout = TRUE;
-
- MpVideoStreamingViewActivate();
- MpVideoStreamingViewShowControlPanel(pUserData);
- }
-}
-
-void MpVideoViewHideLayout(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- if(MpVideoStreamingViewGetBufferingState())
- {
- VideoLogInfo("skip for Buffering");
- return;
- }
- }
-
- edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_HIDE, "*");
- elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_HIDE);
-
- bShowLayout = FALSE;
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewHideControlPanel(pUserData);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewHideControlPanel(pUserData);
- }
-}
-void MpVideoViewCtrlShowFinish(void *pUserData)
-{
- VideoLogInfo("");
-
-}
-
-void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff)
-{
- if(!pUserData)
- {
- VideoLogError("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pNaviFrame)
- {
- elm_object_part_content_unset(pMainLayout, "elm.swallow.content");
- evas_object_hide(pNaviFrame);
- }
-
- if(pLayoutVisibleOffTimer)
- {
- ecore_timer_del(pLayoutVisibleOffTimer);
- pLayoutVisibleOffTimer = NULL;
- }
-
- if(bLayoutOff)
- {
- pLayoutVisibleOffTimer = ecore_timer_add(LAYOUT_VISIBLE_OFF_TIMER_INTERVAL, MpVideoViewCtrlLayoutVisibleOffTimerCb, (void *)pAppData);
- }
-
-
-}
-
-void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
-// VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog();
-
- if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- if(MpUtilCheckRTSPType(pAppData->szMediaUri))
- {
- if(nSetBufferingRate == 0)
- {
- MpVideoStreamingViewSetBufferingRate(-1);
- }
- else
- {
- MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
- }
- }
- else
- {
- if(nSetBufferingRate >= 0)
- {
- MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
- }
- }
- }
-}
-
-void MpVideoViewCtrlChangeTitle(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX);
-
- MpVideoDisplayViewChangeNaviFrameTitle(pUserData);
- }
-}
-
-bool MpVideoViewCtrlIsTopView(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- bool bIstopView = FALSE;
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- VideoLogInfo("VIDEO PLAYER");
- bIstopView = MpVideoDisplayViewIsTopView();
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- VideoLogInfo("STREAMING PLAYER");
- bIstopView = MpVideoStreamingViewIsTopView();
- }
-
- return bIstopView;
-}
-
-void MpVideoViewCtrlShowNocontentImage(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewShowNocontentImage(pUserData);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewShowNocontentImage(pUserData);
- }
-}
-
-void MpVideoViewCtrlHideNocontentImage(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("[ERR]");
- return;
- }
-
- VideoLogInfo("");
-
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewHideNocontentImage();
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewHideNocontentImage();
- }
-}
-
-void MpVideoViewCtrlResetProgressBar(void *pUserData)
-{
- VideoLogInfo("");
-
- MpVideoDisplayViewResetProgressBar(pUserData);
-}
-
-void MpVideoViewCtrlUpdateProgressbar(void *pUserData)
-{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserData.");
- return;
- }
- VideoLogInfo("");
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- VideoLogInfo("VIDEO PLAYER");
- MpVideoDisplayViewUpdateProgressBar(pUserData);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- VideoLogInfo("STREAMING PLAYER");
- MpVideoStreamingViewUpdateProgressBar(pUserData);
- }
-}
-
-bool MpVideoViewCtrlIsPauseByUser(void *pUserData)
-{
- if(!pUserData)
-{
- VideoLogInfo("[ERR]");
- return FALSE;
- }
-
- VideoLogInfo("");
-
- return MpVideoDisplayViewIsPauseByUser();
-}
-
-void MpVideoViewCtrlSetMuteValue(bool bMute)
-{
-
- VideoLogInfo("");
- int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType();
-
- if(nTmpPlayerType == MP_VIDEO_PLAYER ||
- nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE ||
- nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY ||
- nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL ||
- nTmpPlayerType == MP_VIDEO_PLAYER_MMS)
- {
- MpVideoDisplayViewSetMuteStatus(bMute);
- }
- else if(nTmpPlayerType == MP_STREAMING_PLAYER)
- {
- MpVideoStreamingViewSetMuteStatus(bMute);
- }
-}
-
-
-void MpVideoViewCtrlShowVolume()
-{
- VideoLogInfo("");
-
- if(MpVideoVolumeCtrlGetShowStatus())
- {
- return;
- }
-
- elm_object_part_content_set(pMainLayout, "elm.swallow.volume", pDisplayViewVolume);
-
- MpVideoVolumeCtrlShow();
-
-}
-void MpVideoViewCtrlHideVolume()
-{
- VideoLogInfo("");
-
- if(pLongPressVolumeKeyTimer)
- {
- ecore_timer_del(pLongPressVolumeKeyTimer);
- pLongPressVolumeKeyTimer = NULL;
- }
-
- elm_object_part_content_unset(pMainLayout, "elm.swallow.volume");
-
- MpVideoVolumeCtrlHide();
-
-}
diff --git a/src/mp-video-volume-ctrl.c b/src/mp-video-volume-ctrl.c
deleted file mode 100644
index 6601587..0000000
--- a/src/mp-video-volume-ctrl.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <sound_manager.h>
-#include <Elementary.h>
-
-#include "video-player.h"
-
-#include "mp-util.h"
-#include "mp-video-log.h"
-#include "mp-video-type-define.h"
-#include "mp-video-value-define.h"
-#include "mp-video-string-define.h"
-#include "mp-video-volume-ctrl.h"
-
-//#include "mp-video-statistics.h"
-
-#define VOLUME_CTRL_HIDE_TIMER_INTERVAL 3.0
-#define VOLUME_CTRL_DRAG_TIMER_INTERVAL 0.3
-
-
-typedef struct __MpVolumeCtrlData MpVolumeCtrlData;
-
-struct __MpVolumeCtrlData{
- VideoAppData *pAppData;
-
- Evas_Object *pLayout;
-
- Ecore_Timer *pHideTimer;
- Ecore_Timer *pDragTimer;
-
- int nMaxVol;
- int nMinVol;
-
- int nCurVol;
-
-};
-
-static MpVolumeCtrlData *pVolumeData = NULL;
-
-static void MpVideoVolumeCtrlUpdateTextValue(void *pUserData)
-{
-
- VideoLogInfo("");
- if(pUserData == NULL)
- {
- VideoLogError("Volume ctrl data is null.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
-
- char szVol[3] = {0,};
- snprintf(szVol, 3, "%d", pCtrlData->nCurVol);
-
- VideoLogError("%d , %s", pCtrlData->nCurVol, szVol);
-
- edje_object_part_text_set(_EDJ(pCtrlData->pLayout), "volume.progress.circle.txt", szVol);
-
-}
-
-static void MpVideoVolumeCtrlUpdateDragValue(void *pUserData)
-{
-
- VideoLogInfo("");
- if(pUserData == NULL)
- {
- VideoLogError("Volume ctrl data is null.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
-
-
- double fVolPos = 0.0;
- fVolPos = ((double)pCtrlData->nCurVol/(double)pCtrlData->nMaxVol);
- edje_object_part_drag_value_set(_EDJ(pCtrlData->pLayout), "volume.progress.drag", fVolPos, 0.0);
-
-}
-
-static int MpVideoVolumeCtrlGetMaxVolume()
-{
- VideoLogInfo("");
-
- int nRet = SOUND_MANAGER_ERROR_NONE;
- int nMax = 0;
- nRet = sound_manager_get_max_volume (SOUND_TYPE_MEDIA, &nMax);
- if(nRet != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogError("Sound manage get max volue fail : %d", nRet);
- return -1;
- }
-
- return nMax;
-}
-static int MpVideoVolumeCtrlGetCurVolume()
-{
- VideoLogInfo("");
-
- int nRet = SOUND_MANAGER_ERROR_NONE;
- int nVol = 0;
- nRet = sound_manager_get_volume (SOUND_TYPE_MEDIA, &nVol);
- if(nRet != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogError("Sound manage get current volue fail : %d", nRet);
- return -1;
- }
-
- return nVol;
-}
-
-static void MpVideoVolumeCtrlSetCurVolume(int nVol)
-{
- VideoLogInfo("");
-
- int nRet = SOUND_MANAGER_ERROR_NONE;
- nRet = sound_manager_set_volume (SOUND_TYPE_MEDIA, nVol);
- if(nRet != SOUND_MANAGER_ERROR_NONE)
- {
- VideoLogError("Sound manage get current volue fail : %d", nRet);
- return;
- }
-
- return;
-}
-
-static Eina_Bool MpVideoVolumeCtrlHideTimerCb(void *pUserData)
-{
- VideoLogInfo("");
- if(pUserData == NULL)
- {
- VideoLogError("pAppData is null.");
- return EINA_FALSE;
- }
-
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
- if(pCtrlData->pHideTimer)
- {
- ecore_timer_del(pCtrlData->pHideTimer);
- pCtrlData->pHideTimer = NULL;
- }
-
- pCtrlData->pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pCtrlData->pAppData);
-
- return EINA_FALSE;
-}
-
-
-static Eina_Bool MpVideoVolumeCtrlDragTimerCb(void *pUserData)
-{
- VideoLogInfo("");
- if(pUserData == NULL)
- {
- VideoLogError("pAppData is null.");
- return EINA_FALSE;
- }
-
- VideoLogInfo("");
-
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
-
- double fVolPos = 0.0;
-
- edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL);
-
- pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos);
-
- MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol);
-
- MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
-
- return EINA_TRUE;
-}
-
-
-
-static void MpVideoVolumeCtrlDragStartcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
- if(pUserData == NULL)
- {
- VideoLogError("pAppData is null.");
- return;
- }
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
-
- if(pCtrlData->pHideTimer)
- {
- ecore_timer_del(pCtrlData->pHideTimer);
- pCtrlData->pHideTimer = NULL;
- }
-
- pCtrlData->pDragTimer = ecore_timer_add(VOLUME_CTRL_DRAG_TIMER_INTERVAL, MpVideoVolumeCtrlDragTimerCb, (void *)pCtrlData);
-}
-
-static void MpVideoVolumeCtrlDragStopcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
- if(pUserData == NULL)
- {
- VideoLogError("pAppData is null.");
- return;
- }
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
-
- if(pCtrlData->pHideTimer)
- {
- ecore_timer_del(pCtrlData->pHideTimer);
- pCtrlData->pHideTimer = NULL;
- }
-
- pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData);
-
- if(pCtrlData->pDragTimer)
- {
- ecore_timer_del(pCtrlData->pDragTimer);
- pCtrlData->pDragTimer = NULL;
- }
-
- double fVolPos = 0.0;
- edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL);
- pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos);
-
- MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol);
- MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
-}
-
-static void MpVideoVolumeCtrlDragcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource)
-{
- VideoLogInfo("");
-
- if(pUserData == NULL)
- {
- VideoLogError("pAppData is null.");
- return;
- }
-
- VideoLogInfo("");
-
- MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData;
- double fVolPos = 0.0;
- edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL);
- pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos);
-
- MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
-
-}
-
-
-void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData)
-{
- if(pUserData == NULL)
- {
- VideoLogError("pAppData is null.");
- return NULL;
- }
-
- if(pParent == NULL)
- {
- VideoLogError("pParent is null.");
- return NULL;
- }
-
- VideoLogInfo("");
-
- MpVolumeCtrlData *pCtrlData = NULL;
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pCtrlData = calloc(1, sizeof(MpVolumeCtrlData));
-
- pCtrlData->nMinVol = 0;
- pCtrlData->nMaxVol = MpVideoVolumeCtrlGetMaxVolume();
- pCtrlData->nCurVol = MpVideoVolumeCtrlGetCurVolume();
-
- Evas_Object *layout = elm_layout_add(pParent);
- elm_layout_file_set(layout, VIDEO_PLAYER_VOLUME_POPUP_EDJ, VOLUME_EDJ_GROUP);
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_hide(layout);
-
- edje_object_signal_callback_add(_EDJ(layout), "drag,start", "volume.progress.drag", MpVideoVolumeCtrlDragStartcb, (void *)pCtrlData);
- edje_object_signal_callback_add(_EDJ(layout), "drag,stop", "volume.progress.drag", MpVideoVolumeCtrlDragStopcb, (void *)pCtrlData);
- edje_object_signal_callback_add(_EDJ(layout), "drag", "volume.progress.drag", MpVideoVolumeCtrlDragcb, (void *)pCtrlData);
-
- pCtrlData->pAppData = pAppData;
- pCtrlData->pLayout = layout;
-
- MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol);
- MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
- MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData);
-
- pVolumeData = pCtrlData;
-
- return layout;
-
-}
-
-void MpVideoVolumeCtrlDestroy(void)
-{
- VideoLogInfo("");
-
- if(pVolumeData == NULL)
- {
- VideoLogError("Volume Ctrl data is NULL");
- return;
- }
-
- if(pVolumeData->pLayout)
- {
- evas_object_del(pVolumeData->pLayout);
- pVolumeData->pLayout = NULL;
-
- }
-
- if(pVolumeData->pHideTimer)
- {
- ecore_timer_del(pVolumeData->pHideTimer);
- pVolumeData->pHideTimer = NULL;
- }
-
- if(pVolumeData->pDragTimer)
- {
- ecore_timer_del(pVolumeData->pDragTimer);
- pVolumeData->pDragTimer = NULL;
- }
-
- free(pVolumeData);
- pVolumeData = NULL;
-
-}
-
-
-void MpVideoVolumeCtrlShow()
-{
- VideoLogInfo("");
-
- if(pVolumeData == NULL)
- {
- VideoLogError("Volume Ctrl data is NULL");
- return;
- }
- MpVolumeCtrlData *pCtrlData = pVolumeData;
-
- evas_object_show(pCtrlData->pLayout);
-
- if(pCtrlData->pHideTimer)
- {
- ecore_timer_del(pCtrlData->pHideTimer);
- pCtrlData->pHideTimer = NULL;
- }
-
- pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData);
-
-}
-
-void MpVideoVolumeCtrlHide()
-{
- VideoLogInfo("");
-
- if(pVolumeData == NULL)
- {
- VideoLogError("Volume Ctrl data is NULL");
- return;
- }
-
- MpVolumeCtrlData *pCtrlData = pVolumeData;
-
- if(pCtrlData->pHideTimer)
- {
- ecore_timer_del(pCtrlData->pHideTimer);
- pCtrlData->pHideTimer = NULL;
- }
-
- evas_object_hide(pCtrlData->pLayout);
-}
-
-
-void MpVideoVolumeCtrlSetVolume(int nVol)
-{
- VideoLogInfo("");
-
- if(pVolumeData == NULL)
- {
- VideoLogError("Volume Ctrl data is NULL");
- return;
- }
- MpVolumeCtrlData *pCtrlData = pVolumeData;
-
- if(nVol > pCtrlData->nMaxVol)
- {
- nVol = pCtrlData->nMaxVol;
- }
-
- if(nVol < 0)
- {
- nVol = 0;
- }
-
- MpVideoVolumeCtrlShow();
-
- pCtrlData->nCurVol = nVol;
- MpVideoVolumeCtrlSetCurVolume(nVol);
- MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData);
- MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData);
-
-}
-
-int MpVideoVolumeCtrlGetVolume()
-{
- VideoLogInfo("");
-
- return MpVideoVolumeCtrlGetCurVolume();
-}
-
-bool MpVideoVolumeCtrlGetShowStatus()
-{
- VideoLogInfo("");
-
- if(pVolumeData == NULL)
- {
- VideoLogError("Volume Ctrl data is NULL");
- return FALSE;
- }
- MpVolumeCtrlData *pCtrlData = pVolumeData;
-
- if(pCtrlData->pHideTimer)
- {
- return TRUE;
- }
-
- return FALSE;
-}
-
diff --git a/src/video-player.c b/src/video-player.c
index 32396ec..1a54741 100755..100644
--- a/src/video-player.c
+++ b/src/video-player.c
@@ -1,535 +1,305 @@
/*
- * Copyright (c) [2012] Samsung Electronics Co., Ltd.
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
#include <app.h>
#include <glib.h>
-#include <pmapi.h>
+#include <appcore-common.h>
+
+#include <system_settings.h>
+#include "video-player.h"
+#include "videos-view-mgr.h"
+#include "mp-video-value-define.h"
#include "mp-util.h"
#include "mp-video-log.h"
-#include "video-player.h"
-#include "mp-video-app-ctrl.h"
-#include "mp-util-media-service.h"
-#include "mp-video-string-define.h"
-#include "mp-external-ug.h"
-#include "mp-video-service-ctrl.h"
-
-static void appResume(void *pUserData);
-
-static bool bIsForeground = FALSE;
+#include "mp-library-view-mgr.h"
+#include "mp-launching-video-displayer.h"
+#include "mp-video-sound-manager.h"
+#include "mp-video-list-view-main.h"
+#include "vp-util.h"
-static Ecore_Idler *pInitIdlerHandle = NULL;
+#define VIDEOS_WIN_NAME "videos"
-static Eina_Bool _mp_focus_in_cb(void *pUserData, int nType, void *pEvent)
+static bool appCreate(void *pUserData)
{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return ECORE_CALLBACK_PASS_ON;
- }
-
- if (!pEvent) {
- VideoLogInfo("[ERR] No exist pEvent.");
- return ECORE_CALLBACK_PASS_ON;
- }
+ VideoLogWarning("== APP CREATE ==");
- 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;
+ return TRUE;
}
-static Eina_Bool _mp_focus_out_cb(void *pUserData, int nType, void *pEvent)
+static void __app_color_theme_changed(void *pUserData)
{
- 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;
+ VideoLogWarning("app_color_theme_changed");
+ mp_library_mgr_change_color();
}
-
-static Eina_Bool _mp_client_message_cb(void *pUserData, int nType, void *pEvent)
+static void appCreateInternal()
{
- 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);
- }
- }
- }
+ VideoLogWarning("== APP CREATE INTERNAL ==");
- return ECORE_CALLBACK_PASS_ON;
-}
+ /* Instead specify h/w acceleration in the application xml. */
+#ifdef _USE_OPENGL_BACKEND
+ /* elm_config_preferred_engine_set("opengl_x11"); */
+#else
+ /* elm_config_preferred_engine_set("software_x11"); */
+#endif
-static Eina_Bool _mp_app_init_idler_cb(void *pUserData)
-{
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return ECORE_CALLBACK_CANCEL;
- }
- VideoLogInfo("");
+ mp_util_create_main_theme();
+ mp_util_set_color_theme_changed_cb(__app_color_theme_changed);
- VideoAppData *pAppData = (VideoAppData *)pUserData;
+ mp_mgr_create_main_window(VIDEOS_WIN_NAME);
- 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);
+#ifdef _MULTI_WINDOW
+ elm_win_wm_desktop_layout_support_set(
+ (Evas_Object *)mp_mgr_get_main_window(), EINA_TRUE);
- pInitIdlerHandle = NULL;
+ evas_object_data_set((Evas_Object *)mp_mgr_get_main_window(),
+ "id_startup_by", (void *)-1);
+ evas_object_data_set((Evas_Object *)mp_mgr_get_main_window(),
+ "id_layout_pos", (void *)-1);
+#endif
- return ECORE_CALLBACK_CANCEL;
+ evas_object_show((Evas_Object *)mp_mgr_get_main_window());
+ elm_win_activate((Evas_Object *)mp_mgr_get_main_window());
+ return;
}
-static void _mp_alloc_service_value(void *pUserData)
+static Eina_Bool appControlPost(void *data)
{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
+ if (mp_mgr_get_library_naviframe() == NULL) {
+ mp_mgr_restart_main_window();
+ } else {
+ VideoLogInfo("appControlPost");
+ /* mp_library_mgr_resume_wall_render(); */
}
-
-
- 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);
+ return TRUE;
}
-static void _mp_free_service_value(void *pUserData)
+static void appControl(app_control_h pAppSvcHandle, void *pUserData)
{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
+ VideoLogWarning("== APP SERVICE ==");
+ bool bActiveMainwindow = FALSE;
+ if (mp_mgr_get_main_window() == NULL) {
+ appCreateInternal();
+ } else {
+ bActiveMainwindow = TRUE;
}
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(pAppData->szSubtitle)
- {
- free(pAppData->szSubtitle);
- pAppData->szSubtitle = NULL;
+ if (mp_mgr_get_main_window() == NULL) {
+ VideoLogError("mp_mgr_get_main_window return NULL!!!");
+ elm_exit();
+ return;
}
- if(pAppData->szVideoTitle)
- {
- free(pAppData->szVideoTitle);
- pAppData->szVideoTitle = NULL;
+/*
+* for split window
+*/
+#ifdef _MULTI_WINDOW
+ if (!pAppSvcHandle) {
+ VideoLogInfo("[ERR] No exist pAppSveHandle.");
+ return;
}
- if(pAppData->szMediaUri)
- {
- free(pAppData->szMediaUri);
- pAppData->szMediaUri = NULL;
- }
- if(pAppData->szPreMediaUri)
- {
- free(pAppData->szPreMediaUri);
- pAppData->szPreMediaUri = NULL;
- }
+ static int is_first_run = 0;
- if(pAppData->szNextMediaUri)
- {
- free(pAppData->szNextMediaUri);
- pAppData->szNextMediaUri = NULL;
- }
+ char *val_startup = NULL;
+ char *val_layout = NULL;
+ int id = -1;
- if(pAppData->szProxyAddress)
- {
- free(pAppData->szProxyAddress);
- pAppData->szProxyAddress = NULL;
- }
+ int id_startup_by = (int)evas_object_data_get(
+ (Evas_Object *)mp_mgr_get_main_window(),
+ "id_startup_by");
+ int id_layout_pos = (int)evas_object_data_get(
+ (Evas_Object *)mp_mgr_get_main_window(),
+ "id_layout_pos");
- if(pAppData->szUserAgent)
- {
- free(pAppData->szUserAgent);
- pAppData->szUserAgent = NULL;
+ if (app_control_get_extra_data(pAppSvcHandle, "window_startup_type",
+ &val_startup) != APP_CONTROL_ERROR_NONE) {
+ val_startup = strdup("0");
}
- if(pAppData->szCookie)
- {
- free(pAppData->szCookie);
- pAppData->szCookie = NULL;
+ if (app_control_get_extra_data(pAppSvcHandle, "window_layout_id",
+ &val_layout) != APP_CONTROL_ERROR_NONE) {
+ val_layout = strdup("-1");
}
-}
-
-static bool appCreate(void *pUserData)
-{
- VideoLogInfo("");
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return FALSE;
+ if (id_startup_by == -1) {
+ id = elm_win_aux_hint_add(
+ (Evas_Object *)mp_mgr_get_main_window(),
+ "wm.policy.win.startup.by", val_startup);
+ evas_object_data_set((Evas_Object *)mp_mgr_get_main_window(),
+ "id_startup_by", (void *)id);
+ } else {
+ elm_win_aux_hint_val_set(
+ (Evas_Object *)mp_mgr_get_main_window(), id_startup_by,
+ val_startup);
}
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- _mp_alloc_service_value((void *)pAppData);
-
- pInitIdlerHandle = ecore_idler_add(_mp_app_init_idler_cb, (void *)pAppData);
-
-#ifdef TARGET
- elm_config_preferred_engine_set("opengl_x11");
-#else
- elm_config_preferred_engine_set("software_x11");
-#endif
-
- elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME);
-
-
- MpUtilInitSession();
- MpUtilVolumeTypeSet();
-
- if(!MpUtilMMCstatusNoti(pAppData))
- {
- VideoLogError("[ERR] Fail to set MMC notification.");
+ if (id_layout_pos == -1) {
+ id = elm_win_aux_hint_add(
+ (Evas_Object *)mp_mgr_get_main_window(),
+ "wm.policy.win.zone.desk.layout.pos", val_layout);
+ evas_object_data_set((Evas_Object *)mp_mgr_get_main_window(),
+ "id_layout_pos", (void *)id);
+ } else {
+ elm_win_aux_hint_val_set(
+ (Evas_Object *)mp_mgr_get_main_window(), id_layout_pos,
+ val_layout);
}
- bIsForeground = FALSE;
+ VideoLogInfo("val_startup : [%s]", val_startup);
+ VideoLogInfo("val_layout : [%s]", val_layout);
+ VideoLogInfo("id_startup_by : [%d]", id_startup_by);
+ VideoLogInfo("id_layout_pos : [%d]", id_layout_pos);
- MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
+ free(val_startup);
+ free(val_layout);
+ val_startup = NULL;
+ val_layout = NULL;
- return TRUE;
-}
+ char *operation = NULL;
+ int nRet = service_get_operation(pAppSvcHandle, &operation);
+ if (nRet == APP_CONTROL_ERROR_NONE &&
+ strcmp(operation,
+ "http://tizen.org/appcontrol/operation/main") == 0) {
+ if (is_first_run == 1) {
+ elm_win_activate(
+ (Evas_Object *)mp_mgr_get_main_window());
-static void appService(service_h pAppSvcHandle, void *pUserData)
-{
- VideoLogInfo("");
+ VideoLogInfo("is_first_run is true");
+ /* mp_library_mgr_resume_wall_render(); */
- if(!pUserData)
- {
- VideoLogInfo("[ERR] No exist pUserData.");
- bIsForeground = FALSE;
- MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
- return;
- }
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- char* szGetMediaUri = NULL;
- MpUtilVolumeTypeSet();
-
- if(!pAppSvcHandle)
- {
- VideoLogInfo("[ERR] No exist pBundle.");
- bIsForeground = FALSE;
- MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
- return;
- }
+ MP_FREE_STRING(operation);
- if(pAppData->pMainWindow == NULL)
- {
- VideoLogInfo("Create main window.");
- pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE);
- }
- else
- {
- if(strlen(pAppData->szMediaUri) > 0)
- {
- MpVideoAppCtrlResetForRelaunching(pAppData);
+ return;
}
}
- if(MpVideoServiceCtrlInitServiceParser((void*)pAppSvcHandle, &szGetMediaUri) == MP_ERROR_PLAYER_TYPE)
- {
- VideoLogInfo("[ERR] Fail to init service parser.");
- bIsForeground = FALSE;
- MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
- return;
- }
+ MP_FREE_STRING(operation);
- if(szGetMediaUri)
- {
- strncpy(pAppData->szMediaUri, szGetMediaUri, STR_LEN_MAX);
- VideoLogInfo("szGetMediaUri : %s", pAppData->szMediaUri);
- free(szGetMediaUri);
- }
- else
- {
- VideoLogInfo("No exist szGetMediaUri");
- }
+ is_first_run = 1;
+#endif
- if(!MpUtilBatteryStatusNoti(pAppData))
- {
- VideoLogInfo("[ERR] Fail to set Battery notification.");
- bIsForeground = FALSE;
- MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
- return;
+ if (bActiveMainwindow) {
+ evas_object_show((Evas_Object *)mp_mgr_get_main_window());
+ elm_win_activate((Evas_Object *)mp_mgr_get_main_window());
}
- bIsForeground = TRUE;
+ /* ecore_idler_add(appControlPost, NULL); */
- MpUtilMediaSvcInitSession();
- MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED);
- MpVideoAppCtrlInit(pAppData);
+ appControlPost(NULL);
+ return;
}
static void appExit(void *pUserData)
{
- VideoLogInfo("");
-
- if (!pUserData) {
- VideoLogInfo("[ERR] No exist pUserData.");
- return;
- }
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ VideoLogWarning("== APP EXIT ==");
+ mp_util_free_main_theme();
+ mp_util_set_color_theme_changed_cb(NULL);
- MpUtilMultimediaVolumeKeyUngrab();
- MpUtilLcdOffForPowerButton();
- MpUtilSetKeyUngrab(HOME_KEY);
- MpUtilMultimediaKeyUngrab();
- MpUtilMMCstatusNotiIgnore();
- MpUtilBatteryStatusNotiIgnore();
- MpUtilVolumeTypeUnset();
- MpUtilFinishSession();
- MpUtilDeletePopupHandle();
- MpUtilMediaSvcDestoryVideoList();
- MpUtilMediaSvcFinishSession();
-
- _mp_free_service_value(pUserData);
-
- bIsForeground = FALSE;
- MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE);
-
-#ifdef TA_SVAE_PERF_FILE
- VP_PERF_DEINIT();
-#endif
+ mp_sound_mgr_deinit();
}
static void appPause(void *pUserData)
{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserdata handle.");
- return;
- }
-
- VideoLogInfo("");
-
- MpUtilVolumeTypeUnset();
- MpUtilMultimediaVolumeKeyUngrab();
+ VideoLogWarning("== APP PAUSE ==");
- VideoAppData *pAppData = (VideoAppData *)pUserData;
+ mp_sound_mgr_deinit();
+ /* mp_library_mgr_pause_wall_render(); */
- 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);
+ return;
}
static void appResume(void *pUserData)
{
- if(!pUserData)
- {
- VideoLogInfo("No exist pUserdata handle.");
- return;
- }
-
- VideoLogInfo("");
-
- VideoAppData *pAppData = (VideoAppData *)pUserData;
-
- if(bIsForeground)
- {
- VideoLogInfo("Defence overlap launching.");
- return;
- }
- MpUtilVolumeTypeSet();
+ VideoLogWarning("== APP RESUME ==");
- MpUtilMultimediaVolumeKeyGrab();
+ /* mp_library_mgr_resume_wall_render(); */
+ mp_list_view_update_widget_resume();
- 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);
+ return;
}
-static void appRotate(app_device_orientation_e rotateState, void *pUserData)
+static void appUpdateLanguage(app_event_info_h pEventInfo, 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;
+ VideoLogWarning("== APP CHANGE LANGUAGE ==");
+
+ mp_library_mgr_change_language();
+
+ char *locale = NULL;
+ int retcode = system_settings_get_value_string(
+ SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
+
+ if (retcode != SYSTEM_SETTINGS_ERROR_NONE) {
+ VideoLogInfo(
+ "[ERR] failed to get updated language[retcode = %d]",
+ retcode);
+ } else {
+ if (locale) {
+ elm_language_set(locale);
+ MP_FREE_STRING(locale);
+ }
}
-
- MpVideoAppCtrlSetRotation(nCurRotate, pUserData);
}
-int main(int argc, char *argv[])
+EXPORT_API int main(int argc, char *argv[])
{
- VideoAppData pAppData;
- memset(&pAppData, 0, sizeof(VideoAppData));
-
- app_event_callback_s st_appEventService;
+ struct timeval startTimeVal;
+ int nRet = -1;
+ gettimeofday(&startTimeVal, NULL);
+
+ VideoLogInfo("======================================================");
+ VideoLogInfo(" Measuring exec() launching time - %ld:%ldus",
+ startTimeVal.tv_sec, startTimeVal.tv_usec);
+ VideoLogInfo("======================================================");
+
+ ui_app_lifecycle_callback_s st_appEventService;
+ app_event_handler_h hLanguageChangedHandle = NULL;
+
+ nRet = ui_app_add_event_handler(&hLanguageChangedHandle,
+ APP_EVENT_LANGUAGE_CHANGED, appUpdateLanguage, NULL);
+ if (nRet != APP_ERROR_NONE) {
+ VideoLogError("Fail to add handler for LANGUAGE_CHANGED [%d]",
+ nRet);
+ return -1;
+ }
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.app_control = appControl;
+/*
+ st_appEventService.low_memory = appBattery;
st_appEventService.low_battery = NULL;
- st_appEventService.device_orientation = appRotate;
- st_appEventService.language_changed = NULL;
+ st_appEventService.device_orientation = NULL; //appRotate;
+ st_appEventService.language_changed = appUpdateLanguage;
st_appEventService.region_format_changed = NULL;
-
- if(app_efl_main(&argc, &argv, &st_appEventService, &pAppData) != APP_ERROR_NONE)
- {
+*/
+ nRet = ui_app_main(argc, argv, &st_appEventService, NULL);
+ if (nRet != APP_ERROR_NONE) {
VideoLogInfo("[ERR] app_efl_main().");
return -1;
}
- VideoLogInfo("escape app_efl_main() loop.");
+ VideoLogInfo("escape ui_app_main() loop.");
return 0;
}
+
diff --git a/src/view/mp-library-view-mgr.c b/src/view/mp-library-view-mgr.c
new file mode 100644
index 0000000..5cd2eb4
--- /dev/null
+++ b/src/view/mp-library-view-mgr.c
@@ -0,0 +1,202 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+#include <app.h>
+#include <stdbool.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include <system_settings.h>
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-library-view-mgr.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+#include "mp-video-list-view-main.h"
+#include "mp-video-search-view.h"
+#include "videos-view-mgr.h"
+#include "mp-rotate-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-preference.h"
+
+typedef enum {
+ MP_NONE_VIEW = 0,
+ MP_LIBRARY_LIST_VIEW,
+ MP_SEARCH_LIST_VIEW,
+ MP_MAX_VIEW,
+} MpLibraryViewType;
+
+/*static void *pMainLayout = NULL;*/
+/*static void *pNaviFrame = NULL;*/
+/*static void *pConformant = NULL;*/
+
+void mp_library_mgr_exit_cb(void)
+{
+ VideoLogInfo("");
+
+ /*///////////////////////////////////////////////////////*/
+ /* TO-DO : It needs to include exit call sequence.*/
+}
+
+/*//////////////////////////////////////////////////////////////////////////*/
+/* External APIs*/
+
+void *mp_library_mgr_init(void)
+{
+ /*Evas_Object *pConformant = (Evas_Object*)mp_mgr_get_conformant();*/
+
+ /*pMainLayout = MpLibraryViewMgrCreateMainLayout(pConformant);*/
+
+ mp_library_mgr_set_value();
+
+ Evas_Object *pParent = (Evas_Object *) mp_mgr_get_library_parent();
+ Evas_Object *pNaviFrame = elm_naviframe_add(pParent);
+
+ evas_object_size_hint_align_set(pNaviFrame, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pNaviFrame, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ /*elm_object_part_content_set(pParent, "elm.swallow.content", pNaviFrame);*/
+
+ elm_naviframe_prev_btn_auto_pushed_set(pNaviFrame, EINA_FALSE);
+ evas_object_show(pNaviFrame);
+
+ mp_list_view_push((void *) pNaviFrame);
+
+ return (void *) pNaviFrame;
+}
+
+void mp_library_mgr_destroy(void *pUserData)
+{
+ VideoLogInfo("");
+ if (NULL == pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+ mp_list_view_destroy();
+
+ mp_library_mgr_unset_value();
+
+ Evas_Object *pNaviFrame = (Evas_Object *) pUserData;
+
+ if (pNaviFrame) {
+ evas_object_del(pNaviFrame);
+ /*pNaviFrame = NULL;*/
+ }
+
+}
+
+void mp_library_mgr_update_video_list(void)
+{
+
+ mp_list_view_update_widget();
+}
+
+void mp_library_mgr_update_library_view(MpListUpdateType eUpdateType)
+{
+ VideoLogInfo("eUpdateType = %d", eUpdateType);
+
+ mp_list_view_rotate_view(eUpdateType);
+}
+
+void mp_library_mgr_change_language(void)
+{
+ VideoLogInfo("");
+
+ char *locale = NULL;
+ int retcode =
+ system_settings_get_value_string
+ (SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
+
+ if (retcode != SYSTEM_SETTINGS_ERROR_NONE) {
+ VideoLogInfo
+ ("[ERR] failed to get updated language!!! [retcode = retcode]",
+ retcode);
+ } else {
+ if (locale) {
+ elm_language_set(locale);
+ MP_FREE_STRING(locale);
+ }
+ }
+
+ mp_list_view_change_language();
+}
+
+void mp_library_mgr_change_color(void)
+{
+ mp_list_view_change_color();
+}
+
+void mp_library_mgr_destroy_player(void)
+{
+ mp_list_view_destroy_player();
+}
+
+void mp_library_mgr_set_value(void)
+{
+ VideoLogInfo("");
+
+ mp_util_svc_init_session();
+ mp_util_preference_init();
+}
+
+/*it is not necessary to invoke this interface and could use idler to invoke*/
+void mp_library_mgr_init_value(void)
+{
+ VideoLogInfo("");
+}
+
+void mp_library_mgr_unset_value(void)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+ mp_util_svc_destory_video_list();
+ mp_util_svc_finish_session();
+
+ mp_library_mgr_destroy_player();
+ mp_rotate_ctrl_destroy();
+}
+
+void mp_library_mgr_pause_wall_render(void)
+{
+ VideoLogInfo("");
+#ifdef VS_FEATURE_THUMBNAIL_VIEW /**/
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ }
+#endif /**/
+}
+
+void mp_library_mgr_resume_wall_render(void)
+{
+ VideoLogInfo("");
+#ifdef VS_FEATURE_THUMBNAIL_VIEW /**/
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ }
+#endif
+}
diff --git a/src/view/mp-video-detail-view.c b/src/view/mp-video-detail-view.c
new file mode 100644
index 0000000..673d5cb
--- /dev/null
+++ b/src/view/mp-video-detail-view.c
@@ -0,0 +1,683 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-type-define.h"
+
+#include "mp-video-detail-view.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "vp-util.h"
+
+typedef struct _VideoDetailView {
+ /*obj*/
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ Evas_Object *pGenList;
+ Evas_Object *pBox;
+
+ /*data*/
+ Elm_Genlist_Item_Class *stDetailItc;
+ mpDetailViewCbFunc DetailViewUserCbFunc;
+ stDetailInfo *pDetailInfo;
+ char *pMediaId;
+ bool isFolder;
+ int nListCount;
+
+} stDetailView;
+
+
+static stDetailView *g_pDetailViewHandle = NULL;
+
+
+/*//////////////////////////////////////////////////////////*/
+/* Internal function*/
+/*//////////////////////////////////////////////////////////*/
+static void __mp_detail_view_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info);
+static Eina_Bool __mp_detail_view_cancel_btn_cb(void *pUserData,
+ Elm_Object_Item *pItem);
+/*static void __mp_detail_view_mouse_up_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo);*/
+
+void mp_detail_view_delete_handle(void)
+{
+ VideoLogInfo("");
+ if (!g_pDetailViewHandle) {
+ VideoLogError("g_pDetailViewHandle is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "rotation,changed",
+ __mp_detail_view_rotate_cb);
+
+ if (g_pDetailViewHandle->pDetailInfo) {
+ mp_detail_view_free_detail_info(g_pDetailViewHandle->pDetailInfo);
+ g_pDetailViewHandle->pDetailInfo = NULL;
+
+ }
+ MP_FREE_STRING(g_pDetailViewHandle->pMediaId);
+
+ MP_DEL_ITC(g_pDetailViewHandle->stDetailItc);
+ MP_DEL_OBJ(g_pDetailViewHandle->pGenList);
+ MP_DEL_OBJ(g_pDetailViewHandle->pBox);
+ MP_FREE_STRING(g_pDetailViewHandle);
+}
+
+static void __mp_detail_view_reset(void)
+{
+ VideoLogInfo("");
+ if (!g_pDetailViewHandle) {
+ VideoLogError("g_pDetailViewHandle is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_del((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "rotation,changed",
+ __mp_detail_view_rotate_cb);
+
+ if (g_pDetailViewHandle->pDetailInfo) {
+ mp_detail_view_free_detail_info(g_pDetailViewHandle->pDetailInfo);
+ g_pDetailViewHandle->pDetailInfo = NULL;
+
+ }
+ MP_FREE_STRING(g_pDetailViewHandle->pMediaId);
+
+ MP_DEL_ITC(g_pDetailViewHandle->stDetailItc);
+ g_pDetailViewHandle->pGenList = NULL;
+ g_pDetailViewHandle->pBox = NULL;
+
+ MP_FREE_STRING(g_pDetailViewHandle);
+}
+
+static char *__mp_detail_view_genlist_text_get_cb(const void *pUserData,
+ Evas_Object *pObj,
+ const char *pPart)
+{
+ if (!pUserData || !g_pDetailViewHandle) {
+ VideoLogError("pUserData is NULL");
+ return NULL;
+ }
+
+ char *szTxt = (char *) pUserData;
+
+ VideoLogWarning("%s : %s", pPart, szTxt);
+
+ if (!g_strcmp0(pPart, "elm.text.main.left.top")) {
+
+ return strdup(szTxt);
+ } else if (!g_strcmp0(pPart, "elm.text.sub.left.bottom")) {
+
+ stDetailInfo *pDetailInfo = g_pDetailViewHandle->pDetailInfo;
+
+ if (pDetailInfo == NULL) {
+ return NULL;
+ }
+
+ if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_TITLE)) {
+ if (pDetailInfo->szTitle)
+ return elm_entry_utf8_to_markup(pDetailInfo->szTitle);
+ } else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_FORMAT)) {
+ if (pDetailInfo->szFormat)
+ return elm_entry_utf8_to_markup(pDetailInfo->szFormat);
+ }
+ /*else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_DATE)) {
+ if (pDetailInfo->szDate)
+ return elm_entry_utf8_to_markup(pDetailInfo->szDate);
+ } */
+ else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_SIZE)) {
+ if (pDetailInfo->szSize)
+ return elm_entry_utf8_to_markup(pDetailInfo->szSize);
+ } else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_RESOLUTION)) {
+ if (pDetailInfo->szResolution)
+ return elm_entry_utf8_to_markup(pDetailInfo->
+ szResolution);
+ } else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_LAST_MODIFIED)) {
+ if (pDetailInfo->szLastModifiedTime)
+ return elm_entry_utf8_to_markup(pDetailInfo->
+ szLastModifiedTime);
+ } else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_LOCATION)) {
+ if (pDetailInfo->szLocation)
+ return elm_entry_utf8_to_markup(pDetailInfo->szLocation);
+ }
+ /*else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_LATITUDE)) {
+ if (pDetailInfo->szLatitude) {
+ if (atof(pDetailInfo->szLatitude) != VIDEO_DETAIL_VALUE_GPS_DEFAULT)
+ return elm_entry_utf8_to_markup(pDetailInfo->szLatitude);
+ else
+ return g_strdup(VIDEOS_DETAILVIEW_BODY_UNKNOWN);
+ }
+ }
+ else if (!g_strcmp0(szTxt, VIDEOS_DETAILVIEW_BODY_LONGITUDE)) {
+ if (pDetailInfo->szLongitude) {
+ if (atof(pDetailInfo->szLongitude) != VIDEO_DETAIL_VALUE_GPS_DEFAULT)
+ return elm_entry_utf8_to_markup(pDetailInfo->szLongitude);
+ else
+ return g_strdup(VIDEOS_DETAILVIEW_BODY_UNKNOWN);
+ }
+ } */
+ }
+
+ return NULL;
+}
+
+static Eina_Bool __mp_detail_view_cancel_btn_cb(void *pUserData,
+ Elm_Object_Item *pItem)
+{
+ if (g_pDetailViewHandle && g_pDetailViewHandle->DetailViewUserCbFunc) {
+ g_pDetailViewHandle->DetailViewUserCbFunc();
+ }
+
+ return EINA_TRUE;
+}
+
+static void __mp_detail_view_genlist_realized(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!event_info || !obj) {
+ VideoLogError("event info is invalid");
+ return;
+ }
+ Elm_Object_Item *pItem = elm_genlist_last_item_get(obj);
+
+ if (pItem) {
+ elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide",
+ "");
+ }
+}
+
+static bool __mp_detail_view_add_genlist_item(Evas_Object *pObj,
+ MpListViewAsType nViewType)
+{
+ if (!pObj || !g_pDetailViewHandle
+ || !g_pDetailViewHandle->pDetailInfo) {
+ VideoLogError("g_pDetailViewHandle is NULL");
+ return FALSE;
+ }
+ MP_DEL_ITC(g_pDetailViewHandle->stDetailItc);
+ g_pDetailViewHandle->stDetailItc = elm_genlist_item_class_new();
+
+ g_pDetailViewHandle->stDetailItc->version =
+ ELM_GENLIST_ITEM_CLASS_VERSION;
+ g_pDetailViewHandle->stDetailItc->item_style = "2line.top";
+ g_pDetailViewHandle->stDetailItc->func.text_get =
+ (void *) __mp_detail_view_genlist_text_get_cb;
+ g_pDetailViewHandle->stDetailItc->func.content_get = NULL;
+ g_pDetailViewHandle->stDetailItc->func.state_get = NULL;
+ g_pDetailViewHandle->stDetailItc->func.del = NULL;
+
+ int nListCount = 0;
+
+ Elm_Object_Item *pItem = NULL;
+ stDetailInfo *pDetailInfo = g_pDetailViewHandle->pDetailInfo;
+
+ if (!g_pDetailViewHandle->isFolder) {
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *) VIDEOS_DETAILVIEW_BODY_TITLE,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *) VIDEOS_DETAILVIEW_BODY_SIZE,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *)
+ VIDEOS_DETAILVIEW_BODY_FORMAT, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *)
+ VIDEOS_DETAILVIEW_BODY_RESOLUTION,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ /*pItem = elm_genlist_item_append(pObj, g_pDetailViewHandle->stDetailItc, (void *)VIDEOS_DETAILVIEW_BODY_DATE, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++; */
+
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *)
+ VIDEOS_DETAILVIEW_BODY_LAST_MODIFIED,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *)
+ VIDEOS_DETAILVIEW_BODY_LOCATION, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ /*pItem = elm_genlist_item_append(pObj, g_pDetailViewHandle->stDetailItc, (void *)_(VIDEOS_DETAILVIEW_BODY_LATITUDE), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ pItem = elm_genlist_item_append(pObj, g_pDetailViewHandle->stDetailItc, (void *)_(VIDEOS_DETAILVIEW_BODY_LONGITUDE), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++; */
+ } else {
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *) VIDEOS_DETAILVIEW_BODY_TITLE,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+
+ if (pDetailInfo->szSize) {
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *)
+ VIDEOS_DETAILVIEW_BODY_SIZE, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+ }
+
+ pItem =
+ elm_genlist_item_append(pObj,
+ g_pDetailViewHandle->stDetailItc,
+ (void *)
+ VIDEOS_DETAILVIEW_BODY_LOCATION, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pItem,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ nListCount++;
+ }
+
+ g_pDetailViewHandle->nListCount = nListCount;
+
+ return TRUE;
+}
+
+static void __mp_detail_view_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pDetailViewHandle) {
+ VideoLogError("__mp_detail_view_rotate_cb IS null");
+ return;
+ }
+ if (g_pDetailViewHandle->nListCount < VIDEO_POPUP_MIN_ITEMS) {
+ return;
+ }
+ mp_widget_ctrl_set_popup_min_size(g_pDetailViewHandle->pBox,
+ g_pDetailViewHandle->nListCount,
+ VIDEOS_POPUP_114);
+
+}
+
+/*//////////////////////////////////////////////////////////*/
+/* External function*/
+/*//////////////////////////////////////////////////////////*/
+
+void mp_detail_view_free_detail_info(stDetailInfo *pDetailInfo)
+{
+ if (pDetailInfo) {
+ MP_FREE_STRING(pDetailInfo->szTitle);
+ /*MP_FREE_STRING(pDetailInfo->szDate);*/
+ MP_FREE_STRING(pDetailInfo->szFormat);
+ MP_FREE_STRING(pDetailInfo->szSize);
+ MP_FREE_STRING(pDetailInfo->szResolution);
+ /*MP_FREE_STRING(pDetailInfo->szLatitude);*/
+ /*MP_FREE_STRING(pDetailInfo->szLongitude);*/
+ MP_FREE_STRING(pDetailInfo->szLocation);
+ MP_FREE_STRING(pDetailInfo);
+ }
+}
+
+static void __mp_detail_view_base_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ __mp_detail_view_reset();
+}
+
+void __mp_details_soft_back_button_cb(void *data, Evas_Object *obj,
+ const char *emission,
+ const char *source)
+{
+ Evas_Object *pTopNaviFrame = NULL;
+ pTopNaviFrame =
+ elm_naviframe_item_pop(g_pDetailViewHandle->pNaviFrameHandle);
+ evas_object_del(pTopNaviFrame);
+}
+
+void mp_detail_view_push(void *pNaviFrame, bool IsFolder,
+ const char *pMediaId, stDetailInfo *pDetailInfo)
+{
+ VideoLogInfo("");
+
+ if (!pDetailInfo) {
+ VideoLogError("invalid detail");
+ return;
+ }
+ mp_detail_view_delete_handle();
+ g_pDetailViewHandle =
+ (stDetailView *) calloc(1, sizeof(stDetailView));
+ if (!g_pDetailViewHandle) {
+ VideoLogError("g_pDetailViewHandle is NULL");
+ return;
+ }
+
+ g_pDetailViewHandle->pDetailInfo = calloc(1, sizeof(stDetailInfo));
+ if (g_pDetailViewHandle->pDetailInfo == NULL) {
+ VideoLogError("pDetailView alloc fail");
+ mp_detail_view_delete_handle();
+ return;
+ }
+
+ g_pDetailViewHandle->pMediaId = g_strdup(pMediaId);
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (IsFolder) {
+ VideoSecureLogInfo("%s,%s %s", pDetailInfo->szTitle,
+ pDetailInfo->szSize, pDetailInfo->szLocation);
+ g_pDetailViewHandle->pDetailInfo->szTitle =
+ g_strdup(pDetailInfo->szTitle);
+ g_pDetailViewHandle->pDetailInfo->szSize =
+ g_strdup(pDetailInfo->szSize);
+ g_pDetailViewHandle->pDetailInfo->szLocation =
+ g_strdup(pDetailInfo->szLocation);
+ } else {
+ VideoSecureLogInfo("%s,%s,%s,%s,%s", pDetailInfo->szTitle,
+ pDetailInfo->szFormat,
+ pDetailInfo->szResolution,
+ pDetailInfo->szLocation);
+ g_pDetailViewHandle->pDetailInfo->szTitle =
+ g_strdup(pDetailInfo->szTitle);
+ /*g_pDetailViewHandle->pDetailInfo->szDate = g_strdup(pDetailInfo->szDate);*/
+ g_pDetailViewHandle->pDetailInfo->szFormat =
+ g_strdup(pDetailInfo->szFormat);
+ g_pDetailViewHandle->pDetailInfo->szSize =
+ g_strdup(pDetailInfo->szSize);
+ g_pDetailViewHandle->pDetailInfo->szLastModifiedTime =
+ g_strdup(pDetailInfo->szLastModifiedTime);
+ g_pDetailViewHandle->pDetailInfo->szResolution =
+ g_strdup(pDetailInfo->szResolution);
+ /*g_pDetailViewHandle->pDetailInfo->szLatitude = g_strdup(pDetailInfo->szLatitude);*/
+ /*g_pDetailViewHandle->pDetailInfo->szLongitude = g_strdup(pDetailInfo->szLongitude);*/
+ g_pDetailViewHandle->pDetailInfo->szLocation =
+ g_strdup(pDetailInfo->szLocation);
+ }
+
+ g_pDetailViewHandle->DetailViewUserCbFunc = NULL;
+
+ g_pDetailViewHandle->pNaviFrameHandle = pNaviFrame;
+ g_pDetailViewHandle->isFolder = IsFolder;
+
+ evas_object_smart_callback_add((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "rotation,changed",
+ __mp_detail_view_rotate_cb, NULL);
+
+
+ /* Create genlist handle*/
+ g_pDetailViewHandle->pGenList =
+ elm_genlist_add(g_pDetailViewHandle->pNaviFrameHandle);
+ evas_object_size_hint_weight_set(g_pDetailViewHandle->pGenList,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pDetailViewHandle->pGenList,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(g_pDetailViewHandle->pGenList,
+ "realized",
+ __mp_detail_view_genlist_realized,
+ NULL);
+
+ elm_genlist_mode_set(g_pDetailViewHandle->pGenList,
+ ELM_LIST_COMPRESS);
+
+ __mp_detail_view_add_genlist_item(g_pDetailViewHandle->pGenList,
+ nViewType);
+ evas_object_event_callback_add(g_pDetailViewHandle->pGenList,
+ EVAS_CALLBACK_DEL,
+ __mp_detail_view_base_layout_del_cb,
+ NULL);
+
+ g_pDetailViewHandle->pNaviFrameItem =
+ elm_naviframe_item_push(g_pDetailViewHandle->pNaviFrameHandle,
+ VIDEOS_DETAILVIEW_HEADER_DETAILS, NULL,
+ NULL, g_pDetailViewHandle->pGenList,
+ NULL);
+ elm_naviframe_item_pop_cb_set(g_pDetailViewHandle->pNaviFrameItem,
+ __mp_detail_view_cancel_btn_cb, NULL);
+
+ Evas_Object *back_btn =
+ elm_button_add(g_pDetailViewHandle->pNaviFrameHandle);
+ elm_object_style_set(back_btn, "back");
+ elm_object_signal_callback_add(back_btn, "elm,action,click", "",
+ __mp_details_soft_back_button_cb,
+ (void *) g_pDetailViewHandle);
+ elm_object_item_part_content_set(g_pDetailViewHandle->pNaviFrameItem,
+ "title_left_btn", back_btn);
+ evas_object_show(back_btn);
+}
+
+bool mp_detail_view_get_video_detail_info(int nVideoItemIndex,
+ stDetailInfo **pDetailInfo)
+{
+ char *szFilePath = NULL;
+ char *szVideoTitle = NULL;
+
+ char szTmpStr[FORMAT_LEN_MAX] = { 0, };
+ char szTmpFileDate[FORMAT_LEN_MAX] = { 0, };
+ char szTmpFileExtension[FORMAT_LEN_MAX] = { 0, };
+ char szTmpFileSize[FORMAT_LEN_MAX] = { 0, };
+ char *szTmpModifiedTime = NULL;
+
+ /*double dLongitude = 0.0;*/
+ /*double dLatitude = 0.0;*/
+
+ int nWidth = 0;
+ int nHeight = 0;
+ stDetailInfo *pDetail = NULL;
+
+ szFilePath = mp_util_svc_get_video_url(nVideoItemIndex);
+ szVideoTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+
+ mp_info_ctrl_get_file_info(szFilePath, szTmpFileDate,
+ FORMAT_LEN_MAX - 1, szTmpFileExtension,
+ FORMAT_LEN_MAX - 1, szTmpFileSize,
+ FORMAT_LEN_MAX - 1);
+
+ nWidth = mp_util_svc_get_video_item_width(nVideoItemIndex);
+ nHeight = mp_util_svc_get_video_item_height(nVideoItemIndex);
+ /*dLongitude = mp_util_svc_get_video_item_longitude(nVideoItemIndex);*/
+ /*dLatitude = mp_util_svc_get_video_item_latitude(nVideoItemIndex);*/
+ szTmpModifiedTime =
+ mp_util_svc_get_video_item_modified_time(nVideoItemIndex);
+
+ pDetail = calloc(1, sizeof(stDetailInfo));
+ if (pDetail == NULL) {
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szVideoTitle);
+ VideoLogError("pDetailPopup alloc fail");
+ return FALSE;
+ }
+
+ pDetail->szTitle = g_strdup(szVideoTitle);
+ pDetail->szLocation = vp_util_convert_file_location(szFilePath);
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szVideoTitle);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%s", szTmpFileExtension);
+ pDetail->szFormat = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ /*snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%s", szTmpFileDate);
+ pDetail->szDate = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX); */
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%s", szTmpFileSize);
+ pDetail->szSize = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ pDetail->szLastModifiedTime = g_strdup(szTmpModifiedTime);
+ MP_FREE_STRING(szTmpModifiedTime);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%d X %d", nWidth, nHeight);
+ pDetail->szResolution = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ /*snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%f", dLatitude);
+ pDetail->szLatitude = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%f", dLongitude);
+ pDetail->szLongitude = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX); */
+ *pDetailInfo = pDetail;
+
+ return TRUE;
+}
+
+bool mp_detail_view_get_folder_detail_info(int nFolderItemIndex,
+ stDetailInfo **pDetailInfo)
+{
+ int nIndex = 0;
+
+ char *szFolderUrl =
+ mp_util_svc_get_video_folder_url(nFolderItemIndex);
+
+ mp_util_svc_destory_video_item_list();
+ if (szFolderUrl) {
+ mp_util_svc_extract_video_list_from_folder(szFolderUrl,
+ mp_sort_ctrl_get_sort_state
+ (), MP_LIST_VIEW_ALL);
+ }
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize = %d", nVideoListSize);
+
+ char szTmpStr[FORMAT_LEN_MAX] = { 0, };
+ char *szFilePath = NULL;
+ char *szFolderName = NULL;
+
+ unsigned long long nSizeTmp = 0;
+ unsigned long long nSizeTotal = 0;
+ char *szTmpFileSize = NULL;
+
+ stDetailInfo *pDetail = NULL;
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++) {
+ szFilePath = mp_util_svc_get_video_url(nIndex);
+ nSizeTmp = 0;
+ mp_util_get_file_size_by_path(szFilePath, &nSizeTmp);
+ nSizeTotal += nSizeTmp;
+ MP_FREE_STRING(szFilePath);
+ }
+ szTmpFileSize = mp_util_get_file_size(nSizeTotal);
+ VideoLogInfo("nSizeTotal = %s", szTmpFileSize);
+
+ pDetail = calloc(1, sizeof(stDetailInfo));
+ if (pDetail == NULL) {
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFolderName);
+ MP_FREE_STRING(szFolderUrl);
+ MP_FREE_STRING(szTmpFileSize);
+ VideoLogError("pDetailPopup alloc fail");
+ return FALSE;
+ }
+
+ szFolderName = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+
+ pDetail->szTitle = g_strdup(szFolderName);
+ pDetail->szLocation = vp_util_convert_file_location(szFolderUrl);
+ MP_FREE_STRING(szFolderName);
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFolderUrl);
+
+ if (szTmpFileSize) {
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%s", szTmpFileSize);
+ pDetail->szSize = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+ MP_FREE_STRING(szTmpFileSize);
+ }
+
+ *pDetailInfo = pDetail;
+
+ return TRUE;
+}
+
+void mp_detail_view_update(void)
+{
+ if (!g_pDetailViewHandle) {
+ return;
+ }
+ MpMediaType eMediaType = MEDIA_TYPE_FILE;
+ if (g_pDetailViewHandle->isFolder)
+ eMediaType = MEDIA_TYPE_DIRECTORY;
+
+ bool bValidMedia = TRUE;
+ int nIndex = 0;
+ bValidMedia =
+ mp_util_svc_check_valid_media_id(g_pDetailViewHandle->pMediaId,
+ eMediaType, &nIndex);
+ if (!bValidMedia) {
+ elm_naviframe_item_pop(g_pDetailViewHandle->pNaviFrameHandle);
+ }
+}
diff --git a/src/view/mp-video-list-folder-share-via-view.c b/src/view/mp-video-list-folder-share-via-view.c
new file mode 100644
index 0000000..f268b8d
--- /dev/null
+++ b/src/view/mp-video-list-folder-share-via-view.c
@@ -0,0 +1,636 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-list-share-via-view.h"
+#include "mp-video-list-folder-share-via-view.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "vp-file-util.h"
+
+typedef struct {
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ void *pGenlist;
+ Elm_Genlist_Item_Class *pGenListItc;
+ MpMediaSvcSortType nSortType;
+ MpDbUpdateViewLev euLev;
+ ChangeListFolderShareViewCbFunc pChangeViewUserCbFunc;
+ MpVideoListTabType eTabType;
+} st_FolderListShareViaViewHandle;
+
+typedef struct {
+ Evas_Object *pBox;
+ Evas_Object *pBaselayout;
+} st_FolderListShareViaViewWidget;
+
+static st_FolderListShareViaViewHandle *g_pFolderShareHandle = NULL;
+static st_FolderListShareViaViewWidget *g_pFolderShareWidget = NULL;
+
+
+/* Pre define function*/
+int mp_folder_share_view_get_sort_type(void);
+bool __mp_folder_share_view_arrange_video_list(void *pGenlist,
+ bool bNeedSvc);
+void mp_folder_share_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+static void __mp_folder_share_view_base_layout_del_cb(void *pUserData,
+ Evas *e,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+
+void mp_folder_share_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pFolderShareHandle) {
+ evas_object_smart_callback_del(g_pFolderShareHandle->
+ pNaviFrameHandle,
+ "transition,finished",
+ mp_folder_share_view_naviframe_transition_effect_cb);
+
+ MP_DEL_OBJ(g_pFolderShareHandle->pGenlist);
+ MP_DEL_ITC(g_pFolderShareHandle->pGenListItc);
+ MP_FREE_STRING(g_pFolderShareHandle);
+ }
+
+ if (g_pFolderShareWidget) {
+ MP_DEL_OBJ(g_pFolderShareWidget->pBox);
+
+ if (g_pFolderShareWidget->pBaselayout != NULL) {
+ evas_object_event_callback_del(g_pFolderShareWidget->
+ pBaselayout, EVAS_CALLBACK_DEL,
+ __mp_folder_share_view_base_layout_del_cb);
+ MP_DEL_OBJ(g_pFolderShareWidget->pBaselayout);
+ }
+ MP_FREE_STRING(g_pFolderShareWidget);
+ }
+}
+
+static void __mp_folder_share_view_reset(void)
+{
+ VideoLogInfo("");
+
+ if (g_pFolderShareHandle) {
+ mp_util_db_set_update_fun(g_pFolderShareHandle->euLev, NULL);
+ mp_util_db_set_backup_fun(g_pFolderShareHandle->euLev, NULL);
+ evas_object_smart_callback_del(g_pFolderShareHandle->
+ pNaviFrameHandle,
+ "transition,finished",
+ mp_folder_share_view_naviframe_transition_effect_cb);
+ g_pFolderShareHandle->pGenlist = NULL;
+ MP_FREE_STRING(g_pFolderShareHandle);
+ }
+
+ if (g_pFolderShareWidget) {
+
+ g_pFolderShareWidget->pBox = NULL;
+ g_pFolderShareWidget->pBaselayout = NULL;
+
+ MP_FREE_STRING(g_pFolderShareWidget);
+ }
+}
+
+void mp_folder_share_view_reset_value(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pFolderShareHandle) {
+ VideoLogError("[ERR] g_pFolderShareHandle is not existed.");
+ return;
+ }
+
+ g_pFolderShareHandle->pNaviFrameHandle = NULL;
+ g_pFolderShareHandle->pNaviFrameItem = NULL;
+ g_pFolderShareHandle->pChangeViewUserCbFunc = NULL;
+ g_pFolderShareHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+}
+
+static void __mp_folder_share_view_trans_finished_cb(void *pUserData,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!obj) {
+ VideoLogError("[ERR] g_pFolderShareHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished",
+ __mp_folder_share_view_trans_finished_cb);
+}
+
+static Eina_Bool mp_folder_share_view_back_btn_cb(void *pUserData,
+ Elm_Object_Item *pItem)
+{
+ if (!g_pFolderShareHandle) {
+ VideoLogInfo("[ERR] g_pFolderShareHandle is NULL.");
+ return EINA_TRUE;
+ }
+ /* Register transition finished callback.*/
+ mp_widget_ctrl_disable_navi_handle_focus_except_item
+ (g_pFolderShareHandle->pNaviFrameHandle,
+ g_pFolderShareHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pFolderShareHandle->pNaviFrameHandle,
+ "transition,finished",
+ __mp_folder_share_view_trans_finished_cb,
+ NULL);
+
+ mp_folder_share_view_pop();
+
+ return EINA_TRUE;
+}
+
+void mp_folder_share_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!g_pFolderShareHandle) {
+ VideoLogError("[ERR] No exist g_pFolderShareHandle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pFolderShareHandle->pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ pTmpItem =
+ elm_naviframe_top_item_get(g_pFolderShareHandle->
+ pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents) {
+ if (pTmpContents == g_pFolderShareWidget->pBox) {
+ } else {
+ VideoLogInfo
+ ("It's not pListShareViaViewTabbarLayout in top screen.");
+ }
+ } else {
+ VideoLogError("[ERR] No exist naviframe top item.");
+ }
+}
+
+static void __mp_folder_share_view_result_view_update_cb(void)
+{
+ if (!g_pFolderShareHandle) {
+ VideoLogInfo("g_pFolderShareHandle is null.");
+ return;
+ }
+
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+
+ /*refresh folder view */
+ mp_util_svc_extract_video_folder_list_by_type
+ (mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+ __mp_folder_share_view_arrange_video_list(g_pFolderShareHandle->
+ pGenlist, FALSE);
+
+ VideoLogInfo("");
+}
+
+void mp_folder_share_view_select_item_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pFolderShareHandle->pGenlist) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ int nFolderItemIndex = (int) pUserData;
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ VideoSecureLogInfo("nFolderItemIndex=%d, szFolderPath=%s",
+ nFolderItemIndex, szFolderPath);
+ mp_share_view_push(g_pFolderShareHandle->pNaviFrameHandle,
+ __mp_folder_share_view_result_view_update_cb,
+ szFolderPath, LIST_TAB_TYPE_PERSONAL);
+
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ MP_FREE_STRING(szFolderPath);
+}
+
+static char *__mp_folder_share_view_get_label_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ int nFolderItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top")) {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ MP_FREE_STRING(szTitle);
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.sub.left.bottom")) {
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ char *pDes_path = mp_util_get_dir_by_path(szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+ char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path);
+ MP_FREE_STRING(pDes_path);
+ return szFolderUtf8;
+ } else {
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__mp_folder_share_view_get_icon_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char *pPart)
+{
+ int nFolderItemIndex = (int) pUserData;
+ if (!g_strcmp0(pPart, "elm.icon.1")) {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pBg = NULL;
+ char *pThumbIconUri =
+ mp_util_get_folder_thumbnail(nFolderItemIndex,
+ mp_sort_ctrl_get_sort_state());
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME,
+ "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg =
+ mp_util_create_preload_image(pObject, pThumbIconUri,
+ VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+ if (pBg)
+ evas_object_show(pBg);
+
+ if (!mp_util_create_folder_sub_icon(pLayout, nFolderItemIndex)) {
+ VideoLogWarning
+ ("Create sub icon is failed. nFolderItemIndex: %d",
+ nFolderItemIndex);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+ }
+
+ return NULL;
+}
+
+int mp_folder_share_view_get_sort_type(void)
+{
+
+ switch (mp_sort_ctrl_get_sort_state()) {
+ /*case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ g_pFolderShareHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break; */
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ g_pFolderShareHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ g_pFolderShareHandle->nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+ /*case MP_LIST_SORT_BY_SIZE:
+ g_pFolderShareHandle->nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ g_pFolderShareHandle->nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break; */
+ }
+
+ return g_pFolderShareHandle->nSortType;
+}
+
+static void __mp_folder_share_view_append_folder_items(void *pGenlist)
+{
+ VideoLogInfo("");
+ if (!g_pFolderShareHandle) {
+ VideoLogError("No exist g_pFolderShareHandle.");
+ return;
+ }
+
+ int nIndex = 0;
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+ MP_DEL_ITC(g_pFolderShareHandle->pGenListItc);
+ g_pFolderShareHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pFolderShareHandle->pGenListItc->item_style = "2line.top";
+ g_pFolderShareHandle->pGenListItc->func.text_get =
+ (void *) __mp_folder_share_view_get_label_cb;
+ g_pFolderShareHandle->pGenListItc->func.content_get =
+ (void *) __mp_folder_share_view_get_icon_cb;
+ g_pFolderShareHandle->pGenListItc->func.state_get = NULL;
+ g_pFolderShareHandle->pGenListItc->func.del = NULL;
+
+ for (nIndex = 0; nIndex < nFolderListSize; nIndex++) {
+ if (mp_util_svc_get_folder_storage(nIndex) !=
+ MP_MEDIA_TYPE_STORAGE_DROPBOX) {
+ elm_genlist_item_append(pGenlist,
+ g_pFolderShareHandle->pGenListItc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ mp_folder_share_view_select_item_cb,
+ (void *) nIndex);
+ }
+ }
+}
+
+bool __mp_folder_share_view_arrange_video_list(void *pGenlist,
+ bool bNeedSvc)
+{
+ if (!g_pFolderShareWidget || !g_pFolderShareHandle) {
+ VideoLogError("No exist g_pShareViaListViewWidget.");
+ return FALSE;
+ }
+
+ if (!pGenlist) {
+ VideoLogError("No exist genlist object.");
+ return FALSE;
+ }
+
+ int nVideoListSize = mp_util_svc_get_video_folder_size();
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_folder_share_view_get_sort_type(), MP_LIST_VIEW_PHONE);
+#ifdef ENABLE_DRM_FEATURE
+ mp_util_svc_filter_drm_video_item_list();
+#endif
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+ if (nVideoListSize > 0) {
+ elm_genlist_clear(pGenlist);
+ __mp_folder_share_view_append_folder_items(pGenlist);
+ } else {
+ elm_naviframe_item_pop(g_pFolderShareHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+
+ evas_object_show(pGenlist);
+ return TRUE;
+}
+
+Evas_Object *mp_folder_share_view_create_internal_layout(void *pParent)
+{
+ if (!pParent) {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pFolderShareWidget->pBaselayout) {
+ evas_object_del(g_pFolderShareWidget->pBaselayout);
+ g_pFolderShareWidget->pBaselayout = NULL;
+ }
+
+ g_pFolderShareWidget->pBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pFolderShareWidget->pBaselayout,
+ VIDEO_PLAYER_REMOVE_LIST_EDJ,
+ REMOVE_LIST_EDJ_GROUP);
+ evas_object_size_hint_weight_set(g_pFolderShareWidget->pBaselayout,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pFolderShareWidget->pBaselayout,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ return g_pFolderShareWidget->pBaselayout;
+}
+
+static void __mp_folder_share_view_db_changed_cb(void *pUserData)
+{
+ VideoLogWarning("Video DB has been changed.");
+ if (!g_pFolderShareHandle || !g_pFolderShareWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ bool bNormalShow = TRUE;
+ bNormalShow =
+ __mp_folder_share_view_arrange_video_list(g_pFolderShareHandle->
+ pGenlist, TRUE);
+ if (!bNormalShow) {
+ VideoLogError("invalid view");
+ return;
+ }
+
+ Elm_Object_Item *pItem = NULL;
+ pItem = elm_genlist_first_item_get(g_pFolderShareHandle->pGenlist);
+ if (pItem) {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+}
+
+void mp_folder_share_view_init(void *pParent)
+{
+ if (!g_pFolderShareHandle || !g_pFolderShareWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ g_pFolderShareWidget->pBaselayout =
+ mp_folder_share_view_create_internal_layout(pParent);
+ if (!g_pFolderShareWidget->pBaselayout) {
+ VideoLogError("pBaselayout is not existed.");
+ return;
+ }
+ evas_object_event_callback_add(g_pFolderShareWidget->pBaselayout,
+ EVAS_CALLBACK_DEL,
+ __mp_folder_share_view_base_layout_del_cb,
+ NULL);
+
+ g_pFolderShareWidget->pBox =
+ elm_box_add(g_pFolderShareWidget->pBaselayout);
+ if (!g_pFolderShareWidget->pBox) {
+ VideoLogError("pBox is not existed.");
+ return;
+ }
+
+ g_pFolderShareHandle->pGenlist =
+ elm_genlist_add(g_pFolderShareWidget->pBox);
+ if (!g_pFolderShareHandle->pGenlist) {
+ VideoLogError("pGenlist is not existed.");
+ return;
+ }
+ evas_object_size_hint_weight_set(g_pFolderShareHandle->pGenlist,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pFolderShareHandle->pGenlist,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pFolderShareHandle->pGenlist,
+ VIDEO_GENLIST_BLOCK_COUNT);
+ elm_genlist_mode_set(g_pFolderShareHandle->pGenlist,
+ ELM_LIST_COMPRESS);
+ elm_genlist_homogeneous_set(g_pFolderShareHandle->pGenlist,
+ EINA_TRUE);
+
+ elm_box_pack_end(g_pFolderShareWidget->pBox,
+ g_pFolderShareHandle->pGenlist);
+ elm_object_part_content_set(g_pFolderShareWidget->pBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pFolderShareWidget->pBox);
+
+ bool bNormalShow = TRUE;
+ bNormalShow =
+ __mp_folder_share_view_arrange_video_list(g_pFolderShareHandle->
+ pGenlist, FALSE);
+ if (!bNormalShow) {
+ VideoLogError("invalid view");
+ return;
+ }
+
+ Evas_Object *back_btn = elm_button_add(pParent);
+ elm_object_style_set(back_btn, "naviframe/end_btn/default");
+ evas_object_show(back_btn);
+ g_pFolderShareHandle->pNaviFrameItem =
+ elm_naviframe_item_push(g_pFolderShareHandle->pNaviFrameHandle,
+ VIDEOS_SELECTVIEW_HEADER_SELECT, back_btn,
+ NULL, g_pFolderShareWidget->pBaselayout,
+ NULL);
+ elm_object_item_domain_text_translatable_set(g_pFolderShareHandle->
+ pNaviFrameItem,
+ VIDEOS_STRING,
+ EINA_TRUE);
+ elm_naviframe_item_pop_cb_set(g_pFolderShareHandle->pNaviFrameItem,
+ mp_folder_share_view_back_btn_cb,
+ g_pFolderShareHandle);
+
+
+ elm_naviframe_item_title_enabled_set(g_pFolderShareHandle->
+ pNaviFrameItem, EINA_TRUE,
+ EINA_FALSE);
+ evas_object_smart_callback_add(g_pFolderShareHandle->pNaviFrameHandle,
+ "transition,finished",
+ mp_folder_share_view_naviframe_transition_effect_cb,
+ NULL);
+
+ evas_object_show(g_pFolderShareHandle->pGenlist);
+ evas_object_show(g_pFolderShareWidget->pBaselayout);
+
+ mp_util_db_set_update_fun(g_pFolderShareHandle->euLev,
+ __mp_folder_share_view_db_changed_cb);
+
+ mp_util_hide_indicator();
+}
+
+void mp_folder_share_view_push(void *pNaviFrame,
+ ChangeListFolderShareViewCbFunc
+ pChangeViewCb, MpVideoListTabType eTabType)
+{
+ VideoLogInfo("");
+ if (g_pFolderShareHandle || g_pFolderShareWidget) {
+ mp_folder_share_view_destroy();
+ }
+
+ g_pFolderShareHandle =
+ (st_FolderListShareViaViewHandle *) calloc(1,
+ sizeof
+ (st_FolderListShareViaViewHandle));
+ g_pFolderShareWidget =
+ (st_FolderListShareViaViewWidget *) calloc(1,
+ sizeof
+ (st_FolderListShareViaViewWidget));
+
+ memset(g_pFolderShareHandle, 0,
+ sizeof(st_FolderListShareViaViewHandle));
+ memset(g_pFolderShareWidget, 0,
+ sizeof(st_FolderListShareViaViewWidget));
+ mp_folder_share_view_reset_value();
+
+ g_pFolderShareHandle->pNaviFrameHandle = pNaviFrame;
+ g_pFolderShareHandle->pChangeViewUserCbFunc = pChangeViewCb;
+ g_pFolderShareHandle->eTabType = eTabType;
+ g_pFolderShareHandle->euLev = MP_DB_UPDATE_LEV_1;
+
+ mp_folder_share_view_init(g_pFolderShareHandle->pNaviFrameHandle);
+}
+
+void mp_folder_share_view_pop(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pFolderShareHandle) {
+ VideoLogError("No existed handle of share view.");
+ return;
+ }
+ if (g_pFolderShareHandle->pChangeViewUserCbFunc) {
+ g_pFolderShareHandle->pChangeViewUserCbFunc();
+ }
+
+ mp_util_hide_indicator();
+}
+
+void mp_folder_share_view_change_language(void)
+{
+ if (!g_pFolderShareHandle || !g_pFolderShareWidget) {
+ VideoLogError("No existed handle of share view.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_object_item_domain_translatable_part_text_set
+ (g_pFolderShareHandle->pNaviFrameItem, "elm.text.title",
+ VIDEOS_STRING, VIDEOS_SELECTVIEW_HEADER_SELECT_IDS);
+}
+
+static void __mp_folder_share_view_base_layout_del_cb(void *pUserData,
+ Evas *e,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ __mp_folder_share_view_reset();
+}
diff --git a/src/view/mp-video-list-personal-ctrl.c b/src/view/mp-video-list-personal-ctrl.c
new file mode 100644
index 0000000..637cc24
--- /dev/null
+++ b/src/view/mp-video-list-personal-ctrl.c
@@ -0,0 +1,757 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include <glib.h>
+
+#include "mp-util-move.h"
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-list-personal-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-util-preference.h"
+#include "mp-util-config.h"
+
+
+typedef struct _PersonalPage {
+ /*obj*/
+ Evas_Object *pProgressbar;
+ Evas_Object *pPopUpHandle;
+ Evas_Object *pPopupLayout;
+ /*data*/
+ Ecore_Idler *pMoveItemIdlerHandle;
+ Ecore_Timer *pStartMoveTimer;
+ Ecore_Idler *pFinishMoveIdler;
+ Ecore_Idler *pMoveFailedIdler;
+ Ecore_Thread *pMoveItemThreadHandle;
+
+ PersonalCtrlCbFunc PersonalCtrlUserCbFunc;
+
+ int nTotalMoveItem;
+ int nCompltedMoveItem;
+ int nCompltedFolderMoveItem;
+ int nPersonalViewStyle;
+ int nCheckedEditListSize;
+ unsigned long long nMovingSize;
+ unsigned long long nTotalSize;
+
+ bool *pCheckedItemsEditList;
+ bool bCancelMove;
+ bool bFolderMove;
+
+} stPersonalPage;
+
+static stPersonalPage *g_mpPersonalPage = NULL;
+
+
+/*//////////////////////////////////////////////////////////*/
+/* Internal function*/
+/*//////////////////////////////////////////////////////////*/
+static void mp_personal_ctrl_button_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo);
+
+void mp_personal_ctrl_move_popup_handle(void)
+{
+ VideoLogInfo("");
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+ g_mpPersonalPage->nTotalMoveItem = 0;
+ g_mpPersonalPage->nCompltedMoveItem = 0;
+ g_mpPersonalPage->nCheckedEditListSize = 0;
+
+ g_mpPersonalPage->pProgressbar = NULL;
+ g_mpPersonalPage->pCheckedItemsEditList = NULL;
+ g_mpPersonalPage->pMoveItemThreadHandle = NULL;
+
+ if (g_mpPersonalPage->pPopUpHandle) {
+ eext_object_event_callback_del(g_mpPersonalPage->pPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ mp_personal_ctrl_button_popup_cb);
+ }
+ MP_DEL_IDLER(g_mpPersonalPage->pMoveItemIdlerHandle);
+ MP_DEL_TIMER(g_mpPersonalPage->pStartMoveTimer);
+ MP_DEL_IDLER(g_mpPersonalPage->pFinishMoveIdler);
+ MP_DEL_IDLER(g_mpPersonalPage->pMoveFailedIdler);
+ /*MP_DEL_TIMER(pProgressbarTimer);*/
+ MP_DEL_OBJ(g_mpPersonalPage->pPopUpHandle);
+ if (g_mpPersonalPage->PersonalCtrlUserCbFunc) {
+ g_mpPersonalPage->PersonalCtrlUserCbFunc();
+ }
+ MP_FREE_STRING(g_mpPersonalPage);
+
+
+}
+
+static void mp_personal_ctrl_button_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+ g_mpPersonalPage->bCancelMove = TRUE;
+ mp_util_move_set_cancel_state(g_mpPersonalPage->bCancelMove);
+
+ /*if (g_mpPersonalPage->pMoveItemThreadHandle)
+ {
+ ecore_thread_cancel(g_mpPersonalPage->pMoveItemThreadHandle);
+ } */
+}
+
+static void __mp_personal_ctrl_update_percent(bool bUpdateFile,
+ bool bUpdateSize)
+{
+ if (!g_mpPersonalPage || !g_mpPersonalPage->pPopupLayout) {
+ VideoLogError("");
+ return;
+ }
+ char *szSisePercent = NULL;
+ char *szFilePercent = NULL;
+ if (bUpdateSize) {
+ double nPercent = 0.0;
+ if (g_mpPersonalPage->nTotalSize < 1) {
+ nPercent = 0.0;
+ } else {
+ nPercent =
+ (double) g_mpPersonalPage->nMovingSize /
+ (double) g_mpPersonalPage->nTotalSize;
+ }
+ nPercent = nPercent * 100;
+ if (nPercent > (100 - 1)) {
+ nPercent = 100.0;
+ }
+ szSisePercent = g_strdup_printf("%d%s", (int) nPercent, "%");
+ elm_object_part_text_set(g_mpPersonalPage->pPopupLayout,
+ "elm.text.left", szSisePercent);
+ }
+ if (bUpdateFile) {
+ if (g_mpPersonalPage->nCompltedMoveItem + 1 >
+ g_mpPersonalPage->nTotalMoveItem) {
+ g_mpPersonalPage->nCompltedMoveItem =
+ g_mpPersonalPage->nTotalMoveItem - 1;
+ }
+ szFilePercent =
+ g_strdup_printf("%d/%d",
+ (g_mpPersonalPage->nCompltedMoveItem + 1),
+ g_mpPersonalPage->nTotalMoveItem);
+ elm_object_part_text_set(g_mpPersonalPage->pPopupLayout,
+ "elm.text.right", szFilePercent);
+ }
+ MP_FREE_STRING(szSisePercent);
+ MP_FREE_STRING(szFilePercent);
+
+}
+
+static Eina_Bool __mp_personal_ctrl_finish_move_idler_cb(void *pUserData)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return FALSE;
+ }
+
+ g_mpPersonalPage->pFinishMoveIdler = NULL;
+
+
+ mp_personal_ctrl_move_popup_handle();
+
+ return FALSE;
+}
+
+static void __mp_personal_ctrl_warning_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+ mp_util_delete_popup_handle();
+
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+ mp_personal_ctrl_move_popup_handle();
+
+}
+
+static Eina_Bool __mp_personal_ctrl_move_failed_idler_cb(void *pUserData)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return FALSE;
+ }
+
+ g_mpPersonalPage->pMoveFailedIdler = NULL;
+ if (g_mpPersonalPage->nPersonalViewStyle == 1) {
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_MOVE_TO_NORMAL_STORAGE_FAILED,
+ __mp_personal_ctrl_warning_popup_cb);
+ } else {
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_MOVE_TO_PERSONAL_STORAGE_FAILED,
+ __mp_personal_ctrl_warning_popup_cb);
+ }
+
+ return FALSE;
+}
+
+static void __mp_personal_ctrl_move_cb(euThreadFeedback msg_type,
+ unsigned long long size,
+ int nErrorCode, void *userData)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+ g_mpPersonalPage->nMovingSize += size;
+
+ if (nErrorCode == -1 || msg_type == MP_VIDEO_UPDATE_FAILED) {
+ ecore_thread_feedback(g_mpPersonalPage->pMoveItemThreadHandle,
+ (void *) MP_VIDEO_UPDATE_FAILED);
+ } else if (nErrorCode == 1 || msg_type == MP_VIDEO_UPDATE_CANCEL) {
+ ecore_thread_cancel(g_mpPersonalPage->pMoveItemThreadHandle);
+ } else if (nErrorCode == 0 || msg_type == MP_VIDEO_UPDATE) {
+ ecore_thread_feedback(g_mpPersonalPage->pMoveItemThreadHandle,
+ (void *) MP_VIDEO_UPDATE);
+ }
+}
+
+static bool __mp_personal_ctrl_move_get_total_size(unsigned long long
+ *nTotalSize)
+{
+
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return FALSE;
+ }
+
+ if (!g_mpPersonalPage->pCheckedItemsEditList) {
+ VideoLogError("The userdata and pCheckedItemsEditList is null.");
+
+ return FALSE;
+ }
+ int nCounter = 0;
+ unsigned long long nSize = 0;
+ unsigned long long nSizeTmp = 0;
+ char *szTmpFolderUrl = NULL;
+ char *szSubTitle = NULL;
+ char *szFileUrl = NULL;
+ if (g_mpPersonalPage->bFolderMove) {
+ for (nCounter = 0;
+ nCounter < g_mpPersonalPage->nCheckedEditListSize;
+ nCounter++) {
+ if (g_mpPersonalPage->pCheckedItemsEditList[nCounter]) {
+ szTmpFolderUrl =
+ mp_util_svc_get_video_folder_url(nCounter);
+ mp_util_move_get_total_dir_size(szTmpFolderUrl,
+ &nSizeTmp);
+ MP_FREE_STRING(szTmpFolderUrl);
+ nSize += nSizeTmp;
+ }
+ }
+ } else {
+ for (nCounter = 0;
+ nCounter < g_mpPersonalPage->nCheckedEditListSize;
+ nCounter++) {
+ if (g_mpPersonalPage->pCheckedItemsEditList[nCounter]) {
+ nSizeTmp = mp_util_svc_get_video_item_size(nCounter);
+ nSize += nSizeTmp;
+
+ /*Support subtitle size.*/
+ nSizeTmp = 0;
+ szFileUrl = mp_util_svc_get_video_url(nCounter);
+ mp_util_get_subtitle_path(szFileUrl, &szSubTitle);
+ if (szSubTitle) {
+ mp_util_get_file_size_by_path(szSubTitle, &nSizeTmp);
+ nSize += nSizeTmp;
+ }
+ MP_FREE_STRING(szFileUrl);
+ MP_FREE_STRING(szSubTitle);
+ }
+ }
+
+ }
+
+ *nTotalSize = nSize;
+ return TRUE;
+}
+
+static void __mp_personal_ctrl_move_item_thread_main_cb(void *pUserData,
+ Ecore_Thread *
+ thread)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_mpPersonalPage->pCheckedItemsEditList) {
+ VideoLogError("The userdata and pCheckedItemsEditList is null.");
+
+ ecore_thread_feedback(g_mpPersonalPage->pMoveItemThreadHandle,
+ (void *) MP_VIDEO_UPDATE_ERROR);
+ return;
+ }
+ unsigned long long nSize = 0;
+ __mp_personal_ctrl_move_get_total_size(&nSize);
+ g_mpPersonalPage->nTotalSize = nSize;
+ g_mpPersonalPage->nMovingSize = 0;
+ VideoLogInfo("nMovefolderTotal:%lld", g_mpPersonalPage->nTotalSize);
+
+ /*mp_util_svc_print_list_info();*/
+ int nCounter = 0;
+ char *pDestFile = NULL;
+ char *szFileUrl = NULL;
+ char *szMediaUrlForPreview = NULL;
+ char *szTmpFolderUrl = NULL;
+ char *szSubTitle = NULL;
+ bool bPersonal = FALSE;
+ int nRet = FALSE;
+ while ((g_mpPersonalPage->nCompltedMoveItem <
+ g_mpPersonalPage->nTotalMoveItem)
+ && (!g_mpPersonalPage->bCancelMove)) {
+
+ nCounter = 0;
+ for (nCounter = 0;
+ nCounter < g_mpPersonalPage->nCheckedEditListSize;
+ nCounter++) {
+ if (g_mpPersonalPage->pCheckedItemsEditList[nCounter]) {
+ __mp_personal_ctrl_update_percent(TRUE, FALSE);
+ if (g_mpPersonalPage->bFolderMove) {
+ szTmpFolderUrl =
+ mp_util_svc_get_video_folder_url(nCounter);
+ VideoSecureLogInfo
+ ("pRemoveCheckedItemsEditListmove=%s,%d",
+ szTmpFolderUrl, nCounter);
+
+ bPersonal =
+ mp_util_check_video_personal_status
+ (szTmpFolderUrl);
+
+ if (bPersonal) {
+ pDestFile = g_strdup(VIDEO_DOWNLOAD_FILE_DIR);
+ } else {
+ pDestFile =
+ g_strdup(VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+ nRet =
+ mp_util_move_push(szTmpFolderUrl, pDestFile,
+ __mp_personal_ctrl_move_cb,
+ pUserData,
+ g_mpPersonalPage->nTotalSize);
+ if (nRet == -1) {
+ VideoLogInfo("move failed");
+ MP_FREE_STRING(pDestFile);
+ MP_FREE_STRING(szTmpFolderUrl);
+ ecore_thread_feedback(g_mpPersonalPage->
+ pMoveItemThreadHandle,
+ (void *)
+ MP_VIDEO_UPDATE_FAILED);
+ return;
+ /*usleep(100000);*/
+ } else if (nRet == 0) {
+ mp_util_svc_remove_folder_list_item_from_list
+ (nCounter);
+ vp_file_recursive_rm(szTmpFolderUrl);
+ } else if (nRet == 1) {
+ VideoLogInfo("move cancel");
+ MP_FREE_STRING(pDestFile);
+ MP_FREE_STRING(szTmpFolderUrl);
+ ecore_thread_cancel(g_mpPersonalPage->
+ pMoveItemThreadHandle);
+ return;
+ }
+ MP_FREE_STRING(pDestFile);
+ MP_FREE_STRING(szTmpFolderUrl);
+
+ } else {
+ szFileUrl = mp_util_svc_get_video_url(nCounter);
+ VideoSecureLogInfo
+ ("pRemoveCheckedItemsEditListmove=%s,%d",
+ szFileUrl, nCounter);
+ if (szFileUrl) {
+ szMediaUrlForPreview =
+ mp_util_config_get_preview();
+ if (szMediaUrlForPreview) {
+ if (!strcmp(szMediaUrlForPreview, szFileUrl)
+ && !bPersonal) {
+ VideoLogInfo("Erase preview url.");
+ mp_util_config_set_preview(NULL);
+ }
+ }
+ MP_FREE_STRING(szMediaUrlForPreview);
+
+ bPersonal =
+ mp_util_check_video_personal_status
+ (szFileUrl);
+
+ if (bPersonal) {
+ pDestFile = g_strdup(VIDEO_DOWNLOAD_FILE_DIR);
+ } else {
+ pDestFile =
+ g_strdup(VIDEO_UTIL_PERSONAL_HEAD_STR);
+ }
+
+ nRet =
+ mp_util_move_push(szFileUrl, pDestFile,
+ __mp_personal_ctrl_move_cb,
+ pUserData,
+ g_mpPersonalPage->
+ nTotalSize);
+ if (nRet == -1) {
+ VideoLogInfo("move failed");
+ MP_FREE_STRING(pDestFile);
+ MP_FREE_STRING(szFileUrl);
+ ecore_thread_feedback(g_mpPersonalPage->
+ pMoveItemThreadHandle,
+ (void *)
+ MP_VIDEO_UPDATE_FAILED);
+ return;
+ /*usleep(100000);*/
+ } else if (nRet == 0) {
+ mp_util_svc_remove_list_item_from_list
+ (nCounter);
+ unlink(szFileUrl);
+ } else if (nRet == 1) {
+ VideoLogInfo("move cancel");
+ MP_FREE_STRING(pDestFile);
+ MP_FREE_STRING(szFileUrl);
+ ecore_thread_cancel(g_mpPersonalPage->
+ pMoveItemThreadHandle);
+ return;
+ }
+
+ VideoSecureLogInfo("Move file url : %s:%s",
+ szFileUrl, pDestFile);
+ /*Support subtitle moving, But only for file, folder has been implemented in move.c.*/
+ /*begin*/
+ mp_util_get_subtitle_path(szFileUrl, &szSubTitle);
+ if (szSubTitle) {
+ nRet =
+ mp_util_move_push(szSubTitle, pDestFile,
+ __mp_personal_ctrl_move_cb,
+ pUserData,
+ g_mpPersonalPage->
+ nTotalSize);
+ VideoLogInfo("szSubTitle move result = %d",
+ nRet);
+ }
+ MP_FREE_STRING(szSubTitle);
+ /*end*/
+ MP_FREE_STRING(pDestFile);
+ MP_FREE_STRING(szFileUrl);
+ }
+ }
+
+ int nMoveItemCounter = 0;
+ for (nMoveItemCounter = nCounter;
+ nMoveItemCounter <
+ g_mpPersonalPage->nCheckedEditListSize - 1;
+ nMoveItemCounter++) {
+ g_mpPersonalPage->
+ pCheckedItemsEditList[nMoveItemCounter] =
+ g_mpPersonalPage->
+ pCheckedItemsEditList[nMoveItemCounter + 1];
+ }
+ g_mpPersonalPage->nCheckedEditListSize--;
+ ++g_mpPersonalPage->nCompltedMoveItem;
+ break;
+ }
+ }
+
+ if (g_mpPersonalPage->nCompltedMoveItem >=
+ g_mpPersonalPage->nTotalMoveItem) {
+ VideoLogInfo("nCompltedMoveItem == nTotalMoveItem");
+ ecore_thread_feedback(g_mpPersonalPage->pMoveItemThreadHandle,
+ (void *) MP_VIDEO_UPDATE_FINISH);
+ return;
+ }
+ }
+
+
+}
+
+static void __mp_personal_ctrl_move_thread_cancel(void *data,
+ Ecore_Thread *thread)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+ VideoLogInfo("");
+ /*ecore_thread_feedback(g_mpPersonalPage->pMoveItemThreadHandle, (void *)MP_VIDEO_PERSONAL_UPDATE_CANCEL);*/
+ /*g_mpPersonalPage->bCancelMove = TRUE;*/
+ mp_personal_ctrl_move_popup_handle();
+}
+
+static void __mp_personal_ctrl_move_thread_finish(void *pUserData,
+ Ecore_Thread *thread)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+ VideoLogInfo("");
+ /*sleep 0.2s to wait for cancel and failed signal.*/
+ /*MP_DEL_IDLER(g_mpPersonalPage->pFinishMoveIdler);*/
+ /*g_mpPersonalPage->pFinishMoveIdler = ecore_idler_add(__mp_personal_ctrl_finish_move_idler_cb, pUserData);*/
+
+}
+
+static void __mp_personal_ctrl_thread_notify_cb(void *pUserData,
+ Ecore_Thread *thread,
+ void *msg_data)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return;
+ }
+
+ double nMoveRate = 0.0;
+ euThreadFeedback feedback = (euThreadFeedback) msg_data;
+
+ switch (feedback) {
+ case MP_VIDEO_UPDATE_CANCEL:
+ VideoLogInfo("MP_VIDEO_PERSONAL_UPDATE_CANCEL");
+ mp_personal_ctrl_move_popup_handle();
+ break;
+
+ case MP_VIDEO_UPDATE:
+ if (g_mpPersonalPage->nTotalSize > 0) {
+ nMoveRate =
+ ((double) g_mpPersonalPage->nMovingSize) /
+ ((double) g_mpPersonalPage->nTotalSize);
+ __mp_personal_ctrl_update_percent(FALSE, TRUE);
+ /*VideoLogInfo("nMoveRate:%f:%lld:%lld", nMoveRate, g_mpPersonalPage->nMovingSize, g_mpPersonalPage->nTotalSize);*/
+ if (g_mpPersonalPage->pProgressbar) {
+ elm_progressbar_value_set(g_mpPersonalPage->pProgressbar,
+ nMoveRate);
+ }
+ }
+
+ break;
+
+ case MP_VIDEO_UPDATE_FINISH:
+ MP_DEL_IDLER(g_mpPersonalPage->pFinishMoveIdler);
+ g_mpPersonalPage->pFinishMoveIdler =
+ ecore_idler_add(__mp_personal_ctrl_finish_move_idler_cb,
+ pUserData);
+
+ break;
+
+ case MP_VIDEO_UPDATE_FAILED:
+ VideoLogInfo("MP_VIDEO_UPDATE_FAILED");
+ MP_DEL_IDLER(g_mpPersonalPage->pMoveFailedIdler);
+ MP_DEL_OBJ(g_mpPersonalPage->pPopUpHandle);
+ g_mpPersonalPage->pMoveFailedIdler =
+ ecore_idler_add(__mp_personal_ctrl_move_failed_idler_cb,
+ pUserData);
+ break;
+
+ case MP_VIDEO_UPDATE_ERROR:
+ mp_personal_ctrl_move_popup_handle();
+ break;
+
+ default:
+ VideoLogInfo("invalid feedback");
+ break;
+ }
+
+
+}
+
+static Eina_Bool __mp_personal_ctrl_start_move_timer_cb(void *pUserData)
+{
+ if (!g_mpPersonalPage) {
+ VideoLogError("");
+ return FALSE;
+ }
+ if (mp_util_set_dest_file(VIDEO_DOWNLOAD_FILE_DIR) == -1) {
+ VideoLogError("mp_util_set_dest_file failed");
+ return FALSE;
+ }
+
+ g_mpPersonalPage->pStartMoveTimer = NULL;
+ /*pProgressbarTimer = ecore_timer_add(0.05, MpVideoPersonalProgressbarTimerCb, pUserData);*/
+ /*pMoveItemIdlerHandle = ecore_idler_add(MpVideoPersonalMoveItemIdlerCb, pUserData);*/
+
+ g_mpPersonalPage->pMoveItemThreadHandle =
+ ecore_thread_feedback_run
+ (__mp_personal_ctrl_move_item_thread_main_cb,
+ __mp_personal_ctrl_thread_notify_cb,
+ __mp_personal_ctrl_move_thread_finish,
+ __mp_personal_ctrl_move_thread_cancel, (void *) pUserData,
+ EINA_TRUE);
+ return FALSE;
+}
+
+static bool __mp_personal_ctrl_create_progress_popup(Evas_Object *
+ pHandle,
+ void *pUserData)
+{
+ if (!g_mpPersonalPage || !g_mpPersonalPage->pPopUpHandle) {
+ VideoLogError("g_mpPersonalPage is null.");
+ return FALSE;
+ }
+ Evas_Object *pPopupLayout =
+ elm_layout_add(g_mpPersonalPage->pPopUpHandle);
+ elm_layout_file_set(pPopupLayout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_center_progress_move_copy");
+ evas_object_size_hint_weight_set(pPopupLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ if (!pPopupLayout) {
+ VideoLogError("g_mpPersonalPage is null.");
+ return FALSE;
+
+ }
+ g_mpPersonalPage->pPopupLayout = pPopupLayout;
+
+
+ Evas_Object *pProgressbar =
+ elm_progressbar_add(g_mpPersonalPage->pPopUpHandle);
+ elm_object_style_set(pProgressbar, "list_progress");
+ elm_progressbar_horizontal_set(pProgressbar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressbar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressbar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressbar, 0.0);
+ evas_object_show(pProgressbar);
+ g_mpPersonalPage->pProgressbar = pProgressbar;
+
+
+ if (g_mpPersonalPage->nPersonalViewStyle == 1) {
+ elm_object_domain_translatable_part_text_set(pPopupLayout,
+ "elm.title",
+ VIDEOS_STRING,
+ MP_TEXT_MOVING);
+ elm_object_domain_part_text_translatable_set(pPopupLayout,
+ "elm.title",
+ VIDEOS_STRING,
+ EINA_TRUE);
+ } else {
+ elm_object_domain_translatable_part_text_set(pPopupLayout,
+ "elm.title",
+ VIDEOS_STRING,
+ MP_TEXT_MOVING);
+ elm_object_domain_part_text_translatable_set(pPopupLayout,
+ "elm.title",
+ VIDEOS_STRING,
+ EINA_TRUE);
+ }
+
+ elm_object_part_content_set(pPopupLayout, "elm.swallow.content",
+ pProgressbar);
+
+ __mp_personal_ctrl_update_percent(TRUE, TRUE);
+
+ elm_object_content_set(g_mpPersonalPage->pPopUpHandle, pPopupLayout);
+ Evas_Object *pButton = elm_button_add(g_mpPersonalPage->pPopUpHandle);
+ elm_object_style_set(pButton, "popup_button/default");
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_part_content_set(g_mpPersonalPage->pPopUpHandle, "button1",
+ pButton);
+ evas_object_smart_callback_add(pButton, "clicked",
+ mp_personal_ctrl_button_popup_cb,
+ pUserData);
+
+ evas_object_show(g_mpPersonalPage->pPopUpHandle);
+ return TRUE;
+
+}
+
+/*//////////////////////////////////////////////////////////*/
+/* External function*/
+/*//////////////////////////////////////////////////////////*/
+bool mp_personal_ctrl_show(bool *pCheckedItemsEditList,
+ int pCheckedItemsEditListSize, int nViewStyle,
+ bool bFolderMove,
+ PersonalCtrlCbFunc pPersonalCtrlCb,
+ void *pUserData)
+{
+ if (!pCheckedItemsEditList) {
+ VideoLogError("No have popup message is null.");
+ return FALSE;
+ }
+
+ mp_personal_ctrl_move_popup_handle();
+ g_mpPersonalPage =
+ (stPersonalPage *) calloc(1, sizeof(stPersonalPage));
+ if (!g_mpPersonalPage) {
+ VideoLogError("g_mpPersonalPage is NULL");
+ return FALSE;
+ }
+
+ VideoLogInfo("pCheckedItemsEditListSize : %d",
+ pCheckedItemsEditListSize);
+
+
+ g_mpPersonalPage->PersonalCtrlUserCbFunc = pPersonalCtrlCb;
+ g_mpPersonalPage->nCheckedEditListSize = pCheckedItemsEditListSize;
+ g_mpPersonalPage->pCheckedItemsEditList = pCheckedItemsEditList;
+ g_mpPersonalPage->nPersonalViewStyle = nViewStyle;
+ g_mpPersonalPage->bCancelMove = FALSE;
+ g_mpPersonalPage->bFolderMove = bFolderMove;
+ g_mpPersonalPage->nTotalMoveItem = 0;
+ g_mpPersonalPage->nTotalSize = 0;
+ g_mpPersonalPage->nMovingSize = 0;
+
+ int nCounter = 0;
+ for (nCounter = 0; nCounter < g_mpPersonalPage->nCheckedEditListSize;
+ nCounter++) {
+ if (g_mpPersonalPage->pCheckedItemsEditList[nCounter]) {
+ ++g_mpPersonalPage->nTotalMoveItem;
+ }
+ }
+
+ VideoLogInfo("nTotalMoveItem : %d", g_mpPersonalPage->nTotalMoveItem);
+
+ g_mpPersonalPage->pPopUpHandle =
+ elm_popup_add(mp_util_get_main_window_handle());
+
+ eext_object_event_callback_add(g_mpPersonalPage->pPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ mp_personal_ctrl_button_popup_cb,
+ NULL);
+
+ bool bRet =
+ __mp_personal_ctrl_create_progress_popup(g_mpPersonalPage->
+ pPopUpHandle, pUserData);
+ if (!bRet) {
+ VideoLogError("popup is failed");
+ mp_personal_ctrl_move_popup_handle();
+ return FALSE;
+ }
+ MP_DEL_TIMER(g_mpPersonalPage->pStartMoveTimer);
+ g_mpPersonalPage->pStartMoveTimer =
+ ecore_timer_add(0.3, __mp_personal_ctrl_start_move_timer_cb,
+ pUserData);
+
+ return TRUE;
+}
diff --git a/src/view/mp-video-list-personal-view.c b/src/view/mp-video-list-personal-view.c
new file mode 100644
index 0000000..55335ed
--- /dev/null
+++ b/src/view/mp-video-list-personal-view.c
@@ -0,0 +1,1933 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+#include <app_preference.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-list-personal-ctrl.h"
+#include "mp-video-list-personal-view.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-util-config.h"
+#include "vp-file-util.h"
+
+
+#define PREF_MP_UTIL_PERSONAL_NO_ASK_AGAIN "preference/org.tizen.videos/personal_no_ask_again"
+#define VIDEO_SELECTED_INFO_TIMER 4.0
+
+
+typedef struct {
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ void *pVideosGenlist;
+
+ bool *pCheckedItemsEditListForRemoved;
+ char **pSelectedList; /*save selected video id*/
+ bool bSelectallCheckBoxState;
+ int nSelectCounterForEditList;
+ MpMediaSvcSortType nSortType;
+ ChangePersonalViewCbFunc pChangeViewUserCbFunc;
+ char *pFolderPath;
+ int nViewStyle; /*0:add to personal. //1,remove from personal*/
+ bool bFolderMove;
+ bool bCheckBoxState;
+ MpDbUpdateViewLev euLev;
+
+} st_VideoListPersonalViewHandle;
+
+typedef struct {
+ /*Evas_Object *pSelectionInfoLayout;*/
+ Evas_Object *pVideoListBox;
+ Evas_Object *pPersonalViewBaselayout;
+ Evas_Object *pSelectallbtn;
+ Evas_Object *pSelAllLayout;
+ Evas_Object *pSavebtn;
+ Evas_Object *pCancelbtn;
+
+ Ecore_Timer *pSelectedInfoLayoutTimer;
+} st_VideoListPersonalViewWidget;
+
+
+st_VideoListPersonalViewHandle *g_pListPersonalViewHandle = NULL;
+st_VideoListPersonalViewWidget *g_pListPersonalViewWidget = NULL;
+
+
+Elm_Genlist_Item_Class VideoPersonal_Itc;
+Elm_Genlist_Item_Class FolderPersonal_Itc;
+Elm_Genlist_Item_Class FolderPersonalNoItem_Itc;
+
+
+
+
+/* Pre define function*/
+int mp_personal_view_get_sort_type(void);
+void mp_personal_view_arrange_video_list(int nItemSortType,
+ void *pVideosGenlist,
+ bool bNeedSvc);
+void mp_personal_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+void mp_personal_view_change_title_info(void);
+static void __mp_personal_view_base_layout_del_cb(void *pUserData,
+ Evas *e,
+ Evas_Object *pObject,
+ void *pEventInfo);
+static void __mp_personal_view_ignore_personal_vconf();
+
+static bool __mp_personal_view_get_selected_video_list(int nSelectedSize);
+static void __mp_personal_view_update_selected_video_list(void);
+
+static void __mp_personal_view_free_selected_list(void)
+{
+ if (!g_pListPersonalViewHandle
+ || !g_pListPersonalViewHandle->pSelectedList) {
+ return;
+ }
+ int nIndex = 0;
+ while (g_pListPersonalViewHandle->pSelectedList[nIndex]) {
+ nIndex++;
+ MP_FREE_STRING(g_pListPersonalViewHandle->pSelectedList[nIndex]);
+ }
+ MP_FREE_STRING(g_pListPersonalViewHandle->pSelectedList);
+}
+
+void mp_personal_view_update_all_check_box(void)
+{
+ VideoLogInfo("");
+ int nPersonalSize = 0;
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nPersonalSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nPersonalSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+ if (!g_pListPersonalViewHandle->pVideosGenlist) {
+ VideoLogInfo("genlist is NULL");
+ return;
+ }
+ if (nPersonalSize < 1) {
+ VideoLogInfo("nVideoListSize < 1:%d", nPersonalSize);
+ return;
+ }
+ Elm_Object_Item *currentItem = NULL;
+ currentItem =
+ elm_genlist_first_item_get(g_pListPersonalViewHandle->
+ pVideosGenlist);
+ int nVideoItemIndex = 0;
+ Evas_Object *check_box = NULL;
+ while (currentItem && (nVideoItemIndex < nPersonalSize)) {
+ check_box =
+ elm_object_item_part_content_get(currentItem,
+ "elm.edit.icon.1");
+ if (check_box) {
+ elm_check_state_set(check_box,
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved
+ [nVideoItemIndex]);
+ }
+ currentItem = elm_genlist_item_next_get(currentItem);
+ nVideoItemIndex++;
+ }
+}
+
+static void __mp_personal_view_reset(void)
+{
+ VideoLogInfo("");
+ __mp_personal_view_ignore_personal_vconf();
+
+ if (g_pListPersonalViewHandle) {
+ mp_util_db_set_update_fun(g_pListPersonalViewHandle->euLev, NULL);
+ mp_util_db_set_backup_fun(g_pListPersonalViewHandle->euLev, NULL);
+ evas_object_smart_callback_del(g_pListPersonalViewHandle->
+ pNaviFrameHandle,
+ "transition,finished",
+ mp_personal_view_naviframe_transition_effect_cb);
+ __mp_personal_view_free_selected_list();
+
+ g_pListPersonalViewHandle->pVideosGenlist = NULL;
+
+ MP_FREE_STRING(g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved);
+ MP_FREE_STRING(g_pListPersonalViewHandle->pFolderPath);
+
+ free(g_pListPersonalViewHandle);
+ g_pListPersonalViewHandle = NULL;
+ }
+
+ if (g_pListPersonalViewWidget) {
+
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pSelectallbtn);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pSavebtn);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pCancelbtn);
+
+ g_pListPersonalViewWidget->pSelAllLayout = NULL;
+ g_pListPersonalViewWidget->pVideoListBox = NULL;
+
+ g_pListPersonalViewWidget->pPersonalViewBaselayout = NULL;
+
+ MP_DEL_TIMER(g_pListPersonalViewWidget->pSelectedInfoLayoutTimer);
+
+ free(g_pListPersonalViewWidget);
+ g_pListPersonalViewWidget = NULL;
+ }
+
+}
+
+void mp_personal_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ __mp_personal_view_ignore_personal_vconf();
+
+ if (g_pListPersonalViewHandle) {
+ evas_object_smart_callback_del(g_pListPersonalViewHandle->
+ pNaviFrameHandle,
+ "transition,finished",
+ mp_personal_view_naviframe_transition_effect_cb);
+ __mp_personal_view_free_selected_list();
+
+ MP_DEL_OBJ(g_pListPersonalViewHandle->pVideosGenlist);
+
+ MP_FREE_STRING(g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved);
+ MP_FREE_STRING(g_pListPersonalViewHandle->pFolderPath);
+
+ free(g_pListPersonalViewHandle);
+ g_pListPersonalViewHandle = NULL;
+ }
+
+ if (g_pListPersonalViewWidget) {
+
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pSelectallbtn);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pSelAllLayout);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pSavebtn);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pCancelbtn);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pVideoListBox);
+ MP_DEL_OBJ(g_pListPersonalViewWidget->pPersonalViewBaselayout);
+ MP_DEL_TIMER(g_pListPersonalViewWidget->pSelectedInfoLayoutTimer);
+
+ free(g_pListPersonalViewWidget);
+ g_pListPersonalViewWidget = NULL;
+ }
+
+}
+
+void mp_personal_view_reset_value(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("[ERR] g_pListPersonalViewHandle is not existed.");
+ return;
+ }
+
+ g_pListPersonalViewHandle->pNaviFrameHandle = NULL;
+ g_pListPersonalViewHandle->pNaviFrameItem = NULL;
+ g_pListPersonalViewHandle->pChangeViewUserCbFunc = NULL;
+
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = FALSE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList = 0;
+ g_pListPersonalViewHandle->nSortType =
+ MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+
+ if (g_pListPersonalViewHandle->pNaviFrameItem) {
+ elm_object_item_part_content_unset(g_pListPersonalViewHandle->
+ pNaviFrameItem,
+ "toolbar_more_btn");
+ elm_object_item_part_content_unset(g_pListPersonalViewHandle->
+ pNaviFrameItem, "toolbar");
+ elm_object_item_part_content_unset(g_pListPersonalViewHandle->
+ pNaviFrameItem,
+ "toolbar_button2");
+ }
+}
+
+
+/*//////////////////////////////////////////////////*/
+/* Remove items. (Below functions are about the item deletion to call by button of toolbar.)*/
+void mp_personal_view_done_delete_complete(void)
+{
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("[ERR] g_pListPersonalViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pListPersonalViewHandle->pNaviFrameHandle) {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+
+}
+
+static void __mp_personal_view_run_cancel_items_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pListPersonalViewHandle->pNaviFrameHandle) {
+ VideoLogError
+ ("g_pListPersonalViewHandle->pNaviFrameHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->pNaviFrameHandle);
+}
+
+bool mp_personal_view_set_vconf_asked_state(bool bAsked)
+{
+ int nErr = 0;
+
+ nErr = preference_set_boolean(PREF_MP_UTIL_PERSONAL_NO_ASK_AGAIN, bAsked);
+ if (nErr != 0) {
+ VideoLogError
+ ("SET PREF_MP_UTIL_PERSONAL_NO_ASK_AGAIN is fail [0x%x]",
+ nErr);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool mp_personal_view_get_vconf_asked_state(bool *bAsked)
+{
+ int nErr = 0;
+ bool nVal = 0;
+
+ nErr = preference_get_boolean(PREF_MP_UTIL_PERSONAL_NO_ASK_AGAIN, &nVal);
+ if (nErr != 0) {
+ VideoLogError
+ ("GET PREF_MP_UTIL_PERSONAL_NO_ASK_AGAIN is fail [0x%x]",
+ nErr);
+ return FALSE;
+ }
+
+ *bAsked = (nVal == 0) ? FALSE : TRUE;
+
+ return TRUE;
+}
+
+static void __mp_personal_view_ask_remove_back_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ mp_util_delete_popup_handle();
+}
+
+static void __mp_personal_view_ask_remove_ok_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("[ERR] g_pListPersonalViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+ mp_util_delete_popup_handle();
+
+ mp_personal_view_set_vconf_asked_state(g_pListPersonalViewHandle->
+ bCheckBoxState);
+
+ int nPersonalListSize = 0;
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nPersonalListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nPersonalListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ mp_personal_ctrl_show(g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved,
+ nPersonalListSize,
+ g_pListPersonalViewHandle->nViewStyle,
+ g_pListPersonalViewHandle->bFolderMove,
+ mp_personal_view_done_delete_complete, NULL);
+}
+
+static void __mp_personal_view_check_box_changed_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogError("[ERR] pObject is NULL.");
+ return;
+ }
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("[ERR] g_pMainViewHandle is NULL.");
+ return;
+ }
+
+ g_pListPersonalViewHandle->bCheckBoxState =
+ elm_check_state_get(pObject);
+}
+
+static void __mp_personal_view_run_delete_items_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("[ERR] g_pMainViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!g_pListPersonalViewHandle->pVideosGenlist) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ if (g_pListPersonalViewHandle->nSelectCounterForEditList > 0) {
+ int nPersonalListSize = 0;
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nPersonalListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nPersonalListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ }
+ bool bAskedState = FALSE;
+ mp_personal_view_get_vconf_asked_state(&bAskedState);
+ VideoLogError("bAskedState %d", bAskedState);
+
+ if (g_pListPersonalViewHandle->nViewStyle == 1 && (!bAskedState)) {
+ char *szCheckLable = NULL;
+ if (nPersonalListSize > 1) {
+ szCheckLable =
+ g_strdup_printf(MP_PERSONAL_ITEMS_MOVE_TO,
+ VIDEO_DOWNLOAD_FILE_DIR);
+ } else {
+ szCheckLable =
+ g_strdup_printf(MP_PERSONAL_ITEM_MOVE_TO,
+ VIDEO_DOWNLOAD_FILE_DIR);
+ }
+ mp_util_text_and_check_popup
+ (__mp_personal_view_ask_remove_back_cb,
+ __mp_personal_view_ask_remove_back_cb,
+ __mp_personal_view_ask_remove_ok_cb,
+ __mp_personal_view_check_box_changed_cb, szCheckLable,
+ NULL);
+ MP_FREE_STRING(szCheckLable);
+ } else {
+ mp_personal_ctrl_show(g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved,
+ nPersonalListSize,
+ g_pListPersonalViewHandle->nViewStyle,
+ g_pListPersonalViewHandle->bFolderMove,
+ mp_personal_view_done_delete_complete,
+ NULL);
+ }
+ }
+}
+
+/**/
+/*//////////////////////////////////////////////*/
+
+/*//////////////////////////////////////////////*/
+/* Back button*/
+
+static void __mp_personal_view_trans_finished_cb(void *pUserData,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!obj) {
+ VideoLogError("[ERR] g_pListPersonalViewHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished",
+ __mp_personal_view_trans_finished_cb);
+}
+
+static Eina_Bool mp_personal_view_back_btn_cb(void *pUserData,
+ Elm_Object_Item *pItem)
+{
+ if (!g_pListPersonalViewHandle) {
+ VideoLogInfo("[ERR] g_pListPersonalViewHandle is NULL.");
+ return EINA_TRUE;
+ }
+ /* Register transition finished callback.*/
+ mp_widget_ctrl_disable_navi_handle_focus_except_item
+ (g_pListPersonalViewHandle->pNaviFrameHandle,
+ g_pListPersonalViewHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pListPersonalViewHandle->
+ pNaviFrameHandle,
+ "transition,finished",
+ __mp_personal_view_trans_finished_cb,
+ NULL);
+
+ mp_personal_view_pop();
+
+ return EINA_TRUE;
+}
+
+void mp_personal_view_change_title_info(void)
+{
+ VideoLogInfo("nNumOfSelectdCount : %d",
+ g_pListPersonalViewHandle->nSelectCounterForEditList);
+
+ if (g_pListPersonalViewHandle->nSelectCounterForEditList > 0) {
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_FALSE);
+ } else {
+ VideoLogInfo("Unactivate delete tab.");
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_TRUE);
+ }
+
+ char *szCheckingTotalItem =
+ g_strdup_printf(VIDEOS_SELECTVIEW_HEADER_PD_SELECTED,
+ g_pListPersonalViewHandle->
+ nSelectCounterForEditList);
+ elm_object_item_domain_translatable_part_text_set
+ (g_pListPersonalViewHandle->pNaviFrameItem, "elm.text.title",
+ PACKAGE, szCheckingTotalItem);
+ MP_FREE_STRING(szCheckingTotalItem);
+}
+
+
+static void __mp_personal_view_select_all_change_check_box_cb(void
+ *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogError("[ERR]");
+ return;
+ }
+
+ if (!g_pListPersonalViewHandle->pVideosGenlist) {
+ VideoLogError("No exist pVideoGenlist");
+ return;
+ }
+
+ int nCounter = 0;
+ int nPersonalListSize = 0;
+ /*bool bState = elm_check_state_get(pObject);*/
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nPersonalListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nPersonalListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ }
+ VideoLogInfo("nPersonalListSize : %d", nPersonalListSize);
+
+ if (!g_pListPersonalViewHandle->bSelectallCheckBoxState) {
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = TRUE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList =
+ nPersonalListSize;
+ } else {
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = FALSE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList = 0;
+
+ VideoLogInfo("Unactivate delete tab.");
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_TRUE);
+ }
+ mp_personal_view_change_title_info();
+
+ for (nCounter = 0; nCounter < nPersonalListSize; nCounter++) {
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nCounter] =
+ g_pListPersonalViewHandle->bSelectallCheckBoxState;
+ }
+
+ mp_personal_view_update_all_check_box();
+
+ /*elm_genlist_realized_items_update(g_pListPersonalViewHandle->pVideosGenlist);*/
+}
+
+void mp_personal_view_delete_select_all(void)
+{
+ VideoLogInfo("");
+
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = FALSE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList = 0;
+
+ /*MpVideoPersonalViewHideSelectedInfo();*/
+ mp_personal_view_change_title_info();
+}
+
+/*//////////////////////////////////////////////////*/
+
+/*//////////////////////////////////////////////////*/
+/* Check box callback*/
+void mp_personal_view_change_check_box_state_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogInfo("[ERR]");
+ return;
+ } else {
+ VideoLogInfo("pObject : %x", pObject);
+ }
+
+ int nVideoItemIndex = (int) pUserData;
+ int nPersonalListSize = 0;
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nPersonalListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nPersonalListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ }
+ bool bState = elm_check_state_get(pObject);
+
+ VideoLogInfo("Check box - Index : %d, List Size : %d",
+ nVideoItemIndex, nPersonalListSize);
+
+ VideoLogInfo("BEFORE : nSelectCounterForEditList : %d",
+ g_pListPersonalViewHandle->nSelectCounterForEditList);
+
+ if (bState) {
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nVideoItemIndex] = TRUE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList++;
+ if (nPersonalListSize ==
+ g_pListPersonalViewHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = TRUE;
+ }
+ } else {
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nVideoItemIndex] = FALSE;
+ if (nPersonalListSize ==
+ g_pListPersonalViewHandle->nSelectCounterForEditList) {
+ VideoLogInfo
+ ("All check box of edit list state are not true.");
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pListPersonalViewHandle->nSelectCounterForEditList--;
+ if (g_pListPersonalViewHandle->nSelectCounterForEditList < 1) {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_TRUE);
+ }
+ }
+ elm_check_state_set(g_pListPersonalViewWidget->pSelectallbtn,
+ g_pListPersonalViewHandle->
+ bSelectallCheckBoxState);
+ mp_personal_view_change_title_info();
+ /*if (pSelectedItem)
+ {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ } */
+
+}
+
+/**/
+/*//////////////////////////////////////////////////*/
+
+/*//////////////////////////////////////////////*/
+/* Genlist callback*/
+void mp_personal_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("[ERR] No exist g_pListPersonalViewHandle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pListPersonalViewHandle->pNaviFrameHandle) {
+ VideoLogError("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ pTmpItem =
+ elm_naviframe_top_item_get(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents) {
+ if (pTmpContents == g_pListPersonalViewWidget->pVideoListBox) {
+ } else {
+ VideoLogInfo
+ ("It's not pPersonalViewTabbarLayout in top screen.");
+ }
+ } else {
+ VideoLogError("[ERR] No exist naviframe top item.");
+ }
+}
+
+void mp_personal_view_double_tap_cb(void)
+{
+ if (!g_pListPersonalViewHandle->pVideosGenlist) {
+ VideoLogError("pVideosGenlist is not exist.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_genlist_item_bring_in(elm_genlist_first_item_get
+ (g_pListPersonalViewHandle->pVideosGenlist),
+ ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+char *mp_personal_view_get_duration_time(int nVideoItemIndex)
+{
+ VideoLogInfo("");
+
+ char szTmpStr[STR_LEN_MAX] = { 0, };
+ char szTmpStrDurationTime[STR_LEN_MAX] = { 0, };
+ char szTmpStrLastPlayedPos[STR_LEN_MAX] = { 0, };
+
+ unsigned int nVideoInfoDuration =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ unsigned int nVideoInfoLastTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+
+ mp_util_convert_time(nVideoInfoDuration, szTmpStrDurationTime, FALSE);
+ mp_util_convert_time(nVideoInfoLastTime, szTmpStrLastPlayedPos, TRUE);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "%s/%s", szTmpStrLastPlayedPos,
+ szTmpStrDurationTime);
+
+ return strdup(szTmpStr);
+}
+
+void mp_personal_view_select_video_item_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pListPersonalViewHandle->pVideosGenlist) {
+ VideoLogInfo("No exist genlist object.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nVideoItemIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+
+ if (pItem) {
+ nVideoItemIndex = (int) elm_object_item_data_get(pItem);
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ int nPersonalListSize = 0;
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nPersonalListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nPersonalListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ if (g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nVideoItemIndex]) {
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nVideoItemIndex] = FALSE;
+ if (nPersonalListSize ==
+ g_pListPersonalViewHandle->nSelectCounterForEditList) {
+ VideoLogInfo
+ ("All check box of edit list state are not true.");
+ g_pListPersonalViewHandle->bSelectallCheckBoxState =
+ FALSE;
+ }
+
+ g_pListPersonalViewHandle->nSelectCounterForEditList--;
+ if (g_pListPersonalViewHandle->nSelectCounterForEditList < 1) {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pListPersonalViewWidget->
+ pSavebtn, EINA_TRUE);
+ }
+ } else {
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nVideoItemIndex] = TRUE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList++;
+ if (nPersonalListSize ==
+ g_pListPersonalViewHandle->nSelectCounterForEditList) {
+ VideoLogInfo
+ ("All check box of edit list state are true.");
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = TRUE;
+ }
+ }
+ elm_check_state_set(g_pListPersonalViewWidget->pSelectallbtn,
+ g_pListPersonalViewHandle->
+ bSelectallCheckBoxState);
+ mp_personal_view_change_title_info();
+ Evas_Object *check_box =
+ elm_object_item_part_content_get(pItem, "elm.edit.icon.1");
+ if (check_box) {
+ elm_check_state_set(check_box,
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved
+ [nVideoItemIndex]);
+ }
+ /*elm_genlist_item_fields_update(pSelectedItem, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);*/
+ } else {
+ VideoLogError("[ERR]Error item number.");
+ }
+
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+}
+
+char *mp_personal_view_get_label_of_video_item_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ int nVideoItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.text.1")) {
+ char *szTitle;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2")) {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+ /*else if (!strcmp(pPart, "elm.text.3"))
+ {
+ unsigned long long nFilesize = 0;
+
+ nFilesize = mp_util_svc_get_video_item_size(nVideoItemIndex);
+ char *szFileSize = mp_util_get_file_size(nFilesize);
+ char *szTitleUtf8 = NULL;
+ if (szFileSize)
+ {
+ szTitleUtf8 = elm_entry_utf8_to_markup(szFileSize);
+ free(szFileSize);
+ szFileSize = NULL;
+ }
+
+ return szTitleUtf8;
+ } */
+
+ return NULL;
+}
+
+char *mp_personal_view_get_label_of_folder_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ int nFolderItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.text.1")) {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ MP_FREE_STRING(szTitle);
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2")) {
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ char *pDes_path = mp_util_get_dir_by_path(szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+ char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path);
+ MP_FREE_STRING(pDes_path);
+ return szFolderUtf8;
+ } else {
+ }
+
+ return NULL;
+}
+
+
+Evas_Object *mp_personal_view_get_icon_of_video_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char *pPart)
+{
+
+ int nVideoItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.thumbnail.icon")) {
+ char *pThumbIconUri =
+ mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg =
+ mp_util_create_preload_image(pObject, pThumbIconUri,
+ VIDEO_ICON_WIDTH);
+ if (pBg)
+ evas_object_show(pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ return pBg;
+ } else if (!strcmp(pPart, "elm.progressbar.icon")) {
+ int nLastPlayedTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime <= 0) {
+ return NULL;
+ }
+
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ return pProgressBar;
+ } else if (!strcmp(pPart, "elm.lock.icon")) {
+ char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex);
+ bool bRet =
+ mp_util_check_video_personal_status((const char *)
+ pVideoFile);
+ MP_FREE_STRING(pVideoFile);
+ if (bRet) {
+ Evas_Object *pLockIcon = elm_image_add(pObject);
+ elm_image_file_set(pLockIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
+ evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pLockIcon);
+ return pLockIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.edit.icon.1")) {
+ Evas_Object *pCheckBox = elm_check_add(pObject);
+ evas_object_propagate_events_set(pCheckBox, EINA_FALSE);
+ evas_object_smart_callback_add(pCheckBox, "changed",
+ mp_personal_view_change_check_box_state_cb,
+ pUserData);
+ /*evas_object_smart_callback_add(pCheckBox, "changed", NULL, pUserData);*/
+ elm_check_state_set(pCheckBox,
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved
+ [nVideoItemIndex]);
+ elm_check_state_pointer_set(pCheckBox,
+ (Eina_Bool *) &
+ (g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved
+ [nVideoItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ return pCheckBox;
+ }
+ return NULL;
+}
+
+Evas_Object *mp_personal_view_get_icon_of_folder_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ int nFolderItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.thumbnail.icon")) {
+ Evas_Object *pBg = elm_bg_add(pObject);
+ if (pBg) {
+ elm_bg_load_size_set(pBg, VIDEO_ICON_WIDTH,
+ VIDEO_ICON_HEIGHT);
+ evas_object_size_hint_max_set(pBg, VIDEO_ICON_WIDTH,
+ VIDEO_ICON_HEIGHT);
+ evas_object_size_hint_weight_set(pBg, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pBg, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ char *pFolderIconUri =
+ mp_util_get_folder_icon_path(nFolderItemIndex);
+ elm_bg_file_set(pBg, (const char *) pFolderIconUri, NULL);
+ MP_FREE_STRING(pFolderIconUri);
+ }
+ return pBg;
+ } else if (!strcmp(pPart, "elm.lock.icon")) {
+ char *pFolderoFile =
+ mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ bool bRet =
+ mp_util_check_video_personal_status((const char *)
+ pFolderoFile);
+ MP_FREE_STRING(pFolderoFile);
+ if (bRet) {
+ Evas_Object *pLockIcon = elm_image_add(pObject);
+ elm_image_file_set(pLockIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
+ evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pLockIcon);
+ return pLockIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.edit.icon.1")) {
+ Evas_Object *pCheckBox = elm_check_add(pObject);
+ evas_object_propagate_events_set(pCheckBox, EINA_FALSE);
+ evas_object_smart_callback_add(pCheckBox, "changed",
+ mp_personal_view_change_check_box_state_cb,
+ pUserData);
+ /*evas_object_smart_callback_add(pCheckBox, "changed", NULL, pUserData);*/
+ elm_check_state_set(pCheckBox,
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved
+ [nFolderItemIndex]);
+ elm_check_state_pointer_set(pCheckBox,
+ (Eina_Bool *) &
+ (g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved
+ [nFolderItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ return pCheckBox;
+ }
+ return NULL;
+}
+
+/**/
+/*//////////////////////////////////////////////*/
+
+int mp_personal_view_get_sort_type(void)
+{
+ switch (mp_sort_ctrl_get_sort_state()) {
+ /*case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ g_pListPersonalViewHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break; */
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ g_pListPersonalViewHandle->nSortType =
+ MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ g_pListPersonalViewHandle->nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+ /*case MP_LIST_SORT_BY_SIZE:
+ g_pListPersonalViewHandle->nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ g_pListPersonalViewHandle->nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break; */
+ }
+
+ return g_pListPersonalViewHandle->nSortType;
+}
+
+void mp_personal_view_append_video_items(void *pVideosGenlist)
+{
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoPersonal_Itc.item_style = "video/edit_list";
+ VideoPersonal_Itc.func.text_get =
+ (void *) mp_personal_view_get_label_of_video_item_cb;
+ VideoPersonal_Itc.func.content_get =
+ (void *) mp_personal_view_get_icon_of_video_item_cb;
+ VideoPersonal_Itc.func.state_get = NULL;
+ VideoPersonal_Itc.func.del = NULL;
+ /*VideoPersonal_Itc.decorate_item_style = "mode/slide4";*/
+ /*VideoPersonal_Itc.decorate_all_item_style = "edit_default";*/
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++) {
+ elm_genlist_item_append(pVideosGenlist, &VideoPersonal_Itc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ mp_personal_view_select_video_item_cb,
+ NULL);
+ }
+}
+
+void mp_personal_view_append_folder_items(void *pVideosGenlist)
+{
+ int nIndex = 0;
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+
+ FolderPersonal_Itc.item_style = "video/edit_folder";
+ FolderPersonal_Itc.func.text_get =
+ (void *) mp_personal_view_get_label_of_folder_cb;
+ FolderPersonal_Itc.func.content_get =
+ (void *) mp_personal_view_get_icon_of_folder_cb;
+ FolderPersonal_Itc.func.state_get = NULL;
+ FolderPersonal_Itc.func.del = NULL;
+
+ for (nIndex = 0; nIndex < nFolderListSize; nIndex++) {
+ elm_genlist_item_append(pVideosGenlist, &FolderPersonal_Itc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ mp_personal_view_select_video_item_cb,
+ NULL);
+ }
+}
+
+
+void mp_personal_view_init_set_value(int nTotalSize)
+{
+ VideoLogInfo("");
+
+ if (g_pListPersonalViewHandle->pCheckedItemsEditListForRemoved) {
+ free(g_pListPersonalViewHandle->pCheckedItemsEditListForRemoved);
+ g_pListPersonalViewHandle->pCheckedItemsEditListForRemoved = NULL;
+ }
+ if (nTotalSize > 0) {
+ g_pListPersonalViewHandle->pCheckedItemsEditListForRemoved =
+ (bool *) malloc(sizeof(bool)*nTotalSize);
+ memset(g_pListPersonalViewHandle->pCheckedItemsEditListForRemoved,
+ 0, sizeof(bool)*nTotalSize);
+ }
+
+ g_pListPersonalViewHandle->bSelectallCheckBoxState = FALSE;
+}
+
+static void __mp_personal_view_get_folder_data(void)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+ /* int nViewType = mp_view_as_ctrl_get_type();*/
+ int nSortType = mp_personal_view_get_sort_type();
+
+ mp_util_svc_destory_video_folder_list();
+
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_personal_video_folder_list(nSortType, 0);
+ } else {
+ mp_util_svc_extract_personal_video_folder_list(nSortType, 1);
+ }
+}
+
+
+static void __mp_personal_view_get_data(void)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nSortType = mp_personal_view_get_sort_type();
+ int nViewType = mp_view_as_ctrl_get_type();
+ if ((nViewType == MP_LIST_VIEW_AS_FOLDER_LIST)
+ && (g_pListPersonalViewHandle->pFolderPath)) {
+ VideoSecureLogInfo("szFolderPath : %s",
+ g_pListPersonalViewHandle->pFolderPath);
+ if (g_pListPersonalViewHandle->pFolderPath) {
+ if (vp_file_exists(g_pListPersonalViewHandle->pFolderPath)) {
+ /*update video-list*/
+
+ mp_util_svc_destory_video_item_list();
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_video_list_from_folder_by_personal
+ (g_pListPersonalViewHandle->pFolderPath,
+ nSortType, MP_LIST_VIEW_ALL, 0);
+ } else {
+ mp_util_svc_extract_video_list_from_folder_by_personal
+ (g_pListPersonalViewHandle->pFolderPath,
+ nSortType, MP_LIST_VIEW_ALL, 1);
+ }
+ } else {
+ VideoLogError("invalid path");
+ }
+ }
+ } else {
+ mp_util_svc_destory_video_list();
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_video_list_by_personal(nSortType,
+ mp_view_ctrl_get_list_type
+ (), 0);
+ } else {
+ mp_util_svc_extract_video_list_by_personal(nSortType,
+ mp_view_ctrl_get_list_type
+ (), 1);
+ }
+ }
+
+}
+
+Evas_Object *mp_personal_view_get_icon_of_no_folder_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ VideoLogInfo("");
+
+ if (!strcmp(pPart, "elm.icon")) {
+ int width = 720 * elm_config_scale_get();
+ int height = 1100 * elm_config_scale_get();
+ Evas_Object *pNocontentsLayout = elm_layout_add(pObject);
+ elm_layout_theme_set(pNocontentsLayout, "layout", "nocontents",
+ "video");
+ evas_object_size_hint_min_set(pNocontentsLayout, width, height);
+ elm_object_part_text_set(pNocontentsLayout, "elm.text",
+ "No Folders");
+ evas_object_show(pNocontentsLayout);
+
+ return pNocontentsLayout;
+ }
+
+ return NULL;
+}
+
+void mp_personal_view_append_no_personal_folder_items(void
+ *pVideosGenlist)
+{
+ VideoLogInfo("");
+
+ FolderPersonalNoItem_Itc.item_style = "video/1icon";
+ FolderPersonalNoItem_Itc.func.text_get = NULL;
+ FolderPersonalNoItem_Itc.func.content_get =
+ (void *) mp_personal_view_get_icon_of_no_folder_item_cb;
+ FolderPersonalNoItem_Itc.func.state_get = NULL;
+ FolderPersonalNoItem_Itc.func.del = NULL;
+ FolderPersonalNoItem_Itc.decorate_item_style = NULL;
+
+ elm_genlist_item_append(pVideosGenlist, &FolderPersonalNoItem_Itc,
+ NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+}
+
+void mp_personal_view_arrange_folder_list(int nItemSortType,
+ void *pVideosGenlist,
+ bool bNeedSvc)
+{
+ if (!g_pListPersonalViewWidget || !g_pListPersonalViewHandle) {
+ VideoLogError("No exist g_pRemoveListViewWidget.");
+ return;
+ }
+
+ if (!pVideosGenlist) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ int nFolderListSize = 0;
+
+ __mp_personal_view_get_folder_data();
+
+ nFolderListSize = mp_util_svc_get_video_folder_size();
+ VideoLogInfo("nFolderListSize : %d", nFolderListSize);
+ if (bNeedSvc) {
+ __mp_personal_view_update_selected_video_list();
+ } else {
+ mp_personal_view_init_set_value(nFolderListSize);
+ }
+
+ elm_genlist_clear(pVideosGenlist);
+
+ if (nFolderListSize > 0) {
+ mp_personal_view_append_folder_items(pVideosGenlist);
+ } else {
+ mp_personal_view_append_no_personal_folder_items(pVideosGenlist);
+ }
+
+ elm_genlist_decorate_mode_set(pVideosGenlist, EINA_TRUE);
+
+ evas_object_show(pVideosGenlist);
+}
+
+
+void mp_personal_view_arrange_video_list(int nItemSortType,
+ void *pVideosGenlist,
+ bool bNeedSvc)
+{
+ if (!g_pListPersonalViewWidget || !g_pListPersonalViewHandle) {
+ VideoLogError("No exist g_pRemoveListViewWidget.");
+ return;
+ }
+
+ if (!pVideosGenlist) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ int nVideoListSize = 0;
+
+ __mp_personal_view_get_data();
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+ if (bNeedSvc) {
+ __mp_personal_view_update_selected_video_list();
+ } else {
+ mp_personal_view_init_set_value(nVideoListSize);
+ }
+
+ elm_genlist_clear(pVideosGenlist);
+
+ if (nVideoListSize > 0) {
+ mp_personal_view_append_video_items(pVideosGenlist);
+ }
+
+ elm_genlist_decorate_mode_set(pVideosGenlist, EINA_TRUE);
+
+ evas_object_show(pVideosGenlist);
+}
+
+Evas_Object *mp_personal_view_init_internal_layout(void *pParent)
+{
+ if (!pParent) {
+ VideoLogError("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pListPersonalViewWidget->pPersonalViewBaselayout) {
+ evas_object_del(g_pListPersonalViewWidget->
+ pPersonalViewBaselayout);
+ g_pListPersonalViewWidget->pPersonalViewBaselayout = NULL;
+ }
+
+ g_pListPersonalViewWidget->pPersonalViewBaselayout =
+ elm_layout_add(pParent);
+ elm_layout_file_set(g_pListPersonalViewWidget->
+ pPersonalViewBaselayout,
+ VIDEO_PLAYER_REMOVE_LIST_EDJ,
+ REMOVE_LIST_EDJ_GROUP);
+ evas_object_size_hint_weight_set(g_pListPersonalViewWidget->
+ pPersonalViewBaselayout,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListPersonalViewWidget->
+ pPersonalViewBaselayout,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ return g_pListPersonalViewWidget->pPersonalViewBaselayout;
+}
+
+static bool __mp_personal_view_get_selected_video_list(int nSelectedSize)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return FALSE;
+ }
+
+ int nVideoListSize = 0;
+
+ if (!g_pListPersonalViewHandle->nSelectCounterForEditList
+ || nSelectedSize < 1) {
+ return FALSE;
+ }
+
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ __mp_personal_view_free_selected_list();
+
+ int nIndex = 0;
+ int nCounter = 0;
+ char *pMediaId = NULL;
+
+ g_pListPersonalViewHandle->pSelectedList =
+ (char **) calloc(sizeof(char *), nSelectedSize);
+ VideoLogInfo("current edit size===%d", nSelectedSize);
+
+ for (nCounter = 0; nCounter < nVideoListSize; nCounter++) {
+ if (g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nCounter]) {
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ pMediaId = mp_util_svc_get_video_folder_id(nCounter);
+ } else {
+ pMediaId = mp_util_svc_get_video_id_by_index(nCounter);
+ }
+ if (pMediaId != NULL) {
+ g_pListPersonalViewHandle->pSelectedList[nIndex] =
+ strdup(pMediaId);
+ MP_FREE_STRING(pMediaId);
+ nIndex++;
+ }
+ }
+ }
+ return TRUE;
+}
+
+static void __mp_personal_view_update_selected_video_list(void)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nVideoListSize = 0;
+
+ MpMediaType eMediaType = MEDIA_TYPE_FILE;
+
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ eMediaType = MEDIA_TYPE_DIRECTORY;
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ int nIndex = 0;
+ int nCounter = 0;
+ bool bValidMedia = FALSE;
+ int nTotal = g_pListPersonalViewHandle->nSelectCounterForEditList;
+ VideoLogInfo("OldEditList ===%d", nTotal);
+ g_pListPersonalViewHandle->nSelectCounterForEditList = 0;
+ mp_personal_view_init_set_value(nVideoListSize);
+
+ if (!g_pListPersonalViewHandle->pSelectedList) {
+ return;
+ }
+
+ while ((nIndex < nTotal)
+ && g_pListPersonalViewHandle->pSelectedList[nIndex]) {
+
+ bValidMedia =
+ mp_util_svc_check_valid_media_id(g_pListPersonalViewHandle->
+ pSelectedList[nIndex],
+ eMediaType, &nCounter);
+ if (bValidMedia) {
+ g_pListPersonalViewHandle->
+ pCheckedItemsEditListForRemoved[nCounter] = TRUE;
+ g_pListPersonalViewHandle->nSelectCounterForEditList++;
+ }
+ nIndex++;
+ }
+
+ mp_personal_view_change_title_info();
+
+ if (g_pListPersonalViewHandle->nSelectCounterForEditList > 0)
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_FALSE);
+ else
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_TRUE);
+
+}
+
+static void __mp_personal_view_db_backup_cb(void *pUserData)
+{
+ if (!g_pListPersonalViewHandle) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+ __mp_personal_view_get_selected_video_list(g_pListPersonalViewHandle->
+ nSelectCounterForEditList);
+
+}
+
+static void __mp_personal_view_db_changed_cb(void *pUserData)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+ int nSortType = mp_personal_view_get_sort_type();
+ int nViewType = mp_view_as_ctrl_get_type();
+ if ((nViewType == MP_LIST_VIEW_AS_FOLDER_LIST)
+ && g_pListPersonalViewHandle->pFolderPath) {
+ if (g_pListPersonalViewHandle->pFolderPath) {
+ VideoSecureLogInfo("szFolderPath : %s",
+ g_pListPersonalViewHandle->pFolderPath);
+ if (vp_file_exists(g_pListPersonalViewHandle->pFolderPath)) {
+ /*update video-list*/
+
+ mp_util_svc_destory_video_item_list();
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_video_list_from_folder_by_personal
+ (g_pListPersonalViewHandle->pFolderPath,
+ nSortType, MP_LIST_VIEW_ALL, 0);
+ } else {
+ mp_util_svc_extract_video_list_from_folder_by_personal
+ (g_pListPersonalViewHandle->pFolderPath,
+ nSortType, MP_LIST_VIEW_ALL, 1);
+ }
+ mp_personal_view_arrange_video_list(nSortType,
+ g_pListPersonalViewHandle->
+ pVideosGenlist, TRUE);
+ } else {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+ }
+ } else if (g_pListPersonalViewHandle->bFolderMove) {
+ mp_util_svc_destory_video_folder_list();
+
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_personal_video_folder_list(nSortType, 0);
+ } else {
+ mp_util_svc_extract_personal_video_folder_list(nSortType, 1);
+ }
+
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+
+ if (nFolderListSize > 0) {
+ mp_personal_view_arrange_folder_list(nSortType,
+ g_pListPersonalViewHandle->
+ pVideosGenlist, TRUE);
+ } else {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+ } else {
+ mp_util_svc_destory_video_list();
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_video_list_by_personal(nSortType,
+ mp_view_ctrl_get_list_type
+ (), 0);
+ } else {
+ mp_util_svc_extract_video_list_by_personal(nSortType,
+ mp_view_ctrl_get_list_type
+ (), 1);
+ }
+
+ int nVideoListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+ if (nVideoListSize > 0) {
+ mp_personal_view_arrange_video_list(nSortType,
+ g_pListPersonalViewHandle->
+ pVideosGenlist, TRUE);
+ } else {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+ }
+ Elm_Object_Item *pItem =
+ elm_genlist_first_item_get(g_pListPersonalViewHandle->
+ pVideosGenlist);
+ if (pItem) {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+
+}
+
+static void __mp_personal_view_personal_vconf_cb(keynode_t *pKeyNode,
+ void *pUserData)
+{
+ if (g_pListPersonalViewHandle) {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+}
+
+static void __mp_personal_view_register_personal_vconf()
+{
+#ifndef ENABLE_PERSONAL
+ return;
+#endif
+ if (vconf_notify_key_changed
+ (MP_UTIL_VCONF_KEY_PERSONAL_TAG,
+ __mp_personal_view_personal_vconf_cb, NULL) < 0) {
+ VideoLogInfo
+ ("Fail to register MP_UTIL_VCONF_KEY_PERSONAL_TAG key callback");
+ }
+}
+
+static void __mp_personal_view_ignore_personal_vconf()
+{
+#ifndef ENABLE_PERSONAL
+ return;
+#endif
+ if (vconf_ignore_key_changed
+ (MP_UTIL_VCONF_KEY_PERSONAL_TAG,
+ __mp_personal_view_personal_vconf_cb) < 0) {
+ VideoLogInfo("Fail to vconf_ignore_key_changed callback");
+ }
+}
+
+static void __mp_personal_select_all_layout_down_cb(void *data,
+ Evas *evas,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ Evas_Object *check =
+ elm_object_part_content_get(g_pListPersonalViewWidget->
+ pSelAllLayout, "elm.icon");
+ Eina_Bool state = elm_check_state_get(check);
+ elm_check_state_set(check, !state);
+ __mp_personal_view_select_all_change_check_box_cb(data, check, NULL);
+}
+
+void mp_personal_view_init(void *pParent)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ g_pListPersonalViewWidget->pPersonalViewBaselayout =
+ mp_personal_view_init_internal_layout(pParent);
+ if (!g_pListPersonalViewWidget->pPersonalViewBaselayout) {
+ VideoLogError("pPersonalViewBaselayout is not existed.");
+ return;
+ }
+ evas_object_event_callback_add(g_pListPersonalViewWidget->
+ pPersonalViewBaselayout,
+ EVAS_CALLBACK_DEL,
+ __mp_personal_view_base_layout_del_cb,
+ NULL);
+
+ g_pListPersonalViewWidget->pVideoListBox =
+ elm_box_add(g_pListPersonalViewWidget->pPersonalViewBaselayout);
+ if (!g_pListPersonalViewWidget->pVideoListBox) {
+ VideoLogError("pVideoListBox is not existed.");
+ return;
+ }
+
+ evas_object_size_hint_weight_set(g_pListPersonalViewWidget->
+ pVideoListBox, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListPersonalViewWidget->
+ pVideoListBox, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ mp_widget_ctrl_create_select_all_layout(g_pListPersonalViewWidget->
+ pVideoListBox,
+ __mp_personal_view_select_all_change_check_box_cb,
+ __mp_personal_select_all_layout_down_cb,
+ (void *)
+ g_pListPersonalViewWidget,
+ &g_pListPersonalViewWidget->
+ pSelectallbtn,
+ &g_pListPersonalViewWidget->
+ pSelAllLayout);
+
+ if (!g_pListPersonalViewWidget->pSelAllLayout) {
+ VideoLogError("pSelAllLayout is not existed.");
+ return;
+ }
+
+ elm_box_pack_start(g_pListPersonalViewWidget->pVideoListBox,
+ g_pListPersonalViewWidget->pSelAllLayout);
+
+ g_pListPersonalViewHandle->pVideosGenlist =
+ elm_genlist_add(g_pListPersonalViewWidget->pVideoListBox);
+ if (!g_pListPersonalViewHandle->pVideosGenlist) {
+ VideoLogError("pVideosGenlist is not existed.");
+ return;
+ }
+
+ elm_genlist_homogeneous_set(g_pListPersonalViewHandle->pVideosGenlist,
+ EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pListPersonalViewHandle->
+ pVideosGenlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListPersonalViewHandle->
+ pVideosGenlist, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pListPersonalViewHandle->pVideosGenlist,
+ VIDEO_GENLIST_BLOCK_COUNT);
+
+ elm_genlist_mode_set(g_pListPersonalViewHandle->pVideosGenlist,
+ ELM_LIST_COMPRESS);
+ elm_box_pack_end(g_pListPersonalViewWidget->pVideoListBox,
+ g_pListPersonalViewHandle->pVideosGenlist);
+ elm_object_part_content_set(g_pListPersonalViewWidget->
+ pPersonalViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pListPersonalViewWidget->pVideoListBox);
+
+ /*MpVideoPersonalViewCreateSelectionInfo(pParent);*/
+
+ /*register db callback*/
+ /*mp_util_svc_set_update_db_cb_func(__mp_personal_view_db_changed_cb);*/
+
+ if (g_pListPersonalViewHandle->bFolderMove) {
+ VideoLogInfo("ArrangePersonalFolderList");
+ mp_personal_view_arrange_folder_list
+ (mp_personal_view_get_sort_type(),
+ g_pListPersonalViewHandle->pVideosGenlist, FALSE);
+ } else {
+ mp_personal_view_arrange_video_list(mp_personal_view_get_sort_type
+ (),
+ g_pListPersonalViewHandle->
+ pVideosGenlist, FALSE);
+ }
+
+ char *szTitle =
+ g_strdup_printf(VIDEOS_SELECTVIEW_HEADER_PD_SELECTED,
+ g_pListPersonalViewHandle->
+ nSelectCounterForEditList);
+
+ g_pListPersonalViewHandle->pNaviFrameItem =
+ elm_naviframe_item_push(g_pListPersonalViewHandle->
+ pNaviFrameHandle, szTitle, NULL, NULL,
+ g_pListPersonalViewWidget->
+ pPersonalViewBaselayout, NULL);
+ elm_object_item_domain_text_translatable_set
+ (g_pListPersonalViewHandle->pNaviFrameItem, VIDEOS_STRING,
+ EINA_TRUE);
+ elm_naviframe_item_pop_cb_set(g_pListPersonalViewHandle->
+ pNaviFrameItem,
+ mp_personal_view_back_btn_cb,
+ g_pListPersonalViewHandle);
+
+ elm_naviframe_item_title_enabled_set(g_pListPersonalViewHandle->
+ pNaviFrameItem, EINA_TRUE,
+ EINA_FALSE);
+ evas_object_smart_callback_add(g_pListPersonalViewHandle->
+ pNaviFrameHandle,
+ "transition,finished",
+ mp_personal_view_naviframe_transition_effect_cb,
+ NULL);
+
+ g_pListPersonalViewWidget->pCancelbtn =
+ mp_widget_ctrl_create_navi_left_btn(g_pListPersonalViewHandle->
+ pNaviFrameHandle,
+ g_pListPersonalViewHandle->
+ pNaviFrameItem, NULL,
+ __mp_personal_view_run_cancel_items_cb,
+ (void *)
+ g_pListPersonalViewHandle);
+ g_pListPersonalViewWidget->pSavebtn =
+ mp_widget_ctrl_create_navi_right_btn(g_pListPersonalViewHandle->
+ pNaviFrameHandle,
+ g_pListPersonalViewHandle->
+ pNaviFrameItem, NULL,
+ __mp_personal_view_run_delete_items_cb,
+ (void *)
+ g_pListPersonalViewHandle);
+ elm_object_disabled_set(g_pListPersonalViewWidget->pSavebtn,
+ EINA_TRUE);
+
+
+ evas_object_show(g_pListPersonalViewHandle->pVideosGenlist);
+ evas_object_show(g_pListPersonalViewWidget->pPersonalViewBaselayout);
+ __mp_personal_view_register_personal_vconf();
+ mp_util_db_set_update_fun(g_pListPersonalViewHandle->euLev,
+ __mp_personal_view_db_changed_cb);
+ mp_util_db_set_backup_fun(g_pListPersonalViewHandle->euLev,
+ __mp_personal_view_db_backup_cb);
+
+ MP_FREE_STRING(szTitle);
+ mp_util_hide_indicator();
+
+}
+
+void mp_personal_view_push(void *pNaviFrame,
+ ChangePersonalViewCbFunc pChangeViewCb,
+ char *pFolderPath, int nViewStyle)
+{
+ VideoLogInfo("");
+ mp_personal_view_destroy();
+ g_pListPersonalViewHandle =
+ (st_VideoListPersonalViewHandle *) calloc(1,
+ sizeof
+ (st_VideoListPersonalViewHandle));
+ g_pListPersonalViewWidget =
+ (st_VideoListPersonalViewWidget *) calloc(1,
+ sizeof
+ (st_VideoListPersonalViewWidget));
+
+ memset(g_pListPersonalViewHandle, 0,
+ sizeof(st_VideoListPersonalViewHandle));
+ memset(g_pListPersonalViewWidget, 0,
+ sizeof(st_VideoListPersonalViewWidget));
+ mp_personal_view_reset_value();
+
+ g_pListPersonalViewHandle->pNaviFrameHandle = pNaviFrame;
+ g_pListPersonalViewHandle->pChangeViewUserCbFunc = pChangeViewCb;
+ if (pFolderPath) {
+ g_pListPersonalViewHandle->pFolderPath = strdup(pFolderPath);
+ }
+ g_pListPersonalViewHandle->nViewStyle = nViewStyle;
+ g_pListPersonalViewHandle->euLev = MP_DB_UPDATE_LEV_1;
+
+ int nViewType = mp_view_as_ctrl_get_type();
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST
+ && g_pListPersonalViewHandle->pFolderPath) {
+ g_pListPersonalViewHandle->euLev = MP_DB_UPDATE_LEV_2;
+ }
+
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST
+ && !g_pListPersonalViewHandle->pFolderPath) {
+ g_pListPersonalViewHandle->bFolderMove = TRUE;
+ } else {
+ g_pListPersonalViewHandle->bFolderMove = FALSE;
+ }
+
+ mp_personal_view_init(g_pListPersonalViewHandle->pNaviFrameHandle);
+}
+
+void mp_personal_view_update(void)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nSortType = mp_personal_view_get_sort_type();
+ int nViewType = mp_view_as_ctrl_get_type();
+ if ((nViewType == MP_LIST_VIEW_AS_FOLDER_LIST)
+ && g_pListPersonalViewHandle->pFolderPath) {
+ if (g_pListPersonalViewHandle->pFolderPath) {
+ VideoSecureLogInfo("szFolderPath : %s",
+ g_pListPersonalViewHandle->pFolderPath);
+ if (vp_file_exists(g_pListPersonalViewHandle->pFolderPath)) {
+ /*update video-list*/
+ mp_util_svc_destory_video_item_list();
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_video_list_from_folder_by_personal
+ (g_pListPersonalViewHandle->pFolderPath,
+ nSortType, MP_LIST_VIEW_ALL, 0);
+ } else {
+ mp_util_svc_extract_video_list_from_folder_by_personal
+ (g_pListPersonalViewHandle->pFolderPath,
+ nSortType, MP_LIST_VIEW_ALL, 1);
+ }
+
+ elm_genlist_clear(g_pListPersonalViewHandle->
+ pVideosGenlist);
+
+ mp_personal_view_append_video_items
+ (g_pListPersonalViewHandle->pVideosGenlist);
+ } else {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+ }
+ } else if (g_pListPersonalViewHandle->bFolderMove) {
+ mp_util_svc_destory_video_folder_list();
+
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_personal_video_folder_list(nSortType, 0);
+ } else {
+ mp_util_svc_extract_personal_video_folder_list(nSortType, 1);
+ }
+
+ elm_genlist_clear(g_pListPersonalViewHandle->pVideosGenlist);
+
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+
+ if (nFolderListSize > 0) {
+ mp_personal_view_append_folder_items
+ (g_pListPersonalViewHandle->pVideosGenlist);
+ } else {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+ } else {
+ mp_util_svc_destory_video_list();
+ if (g_pListPersonalViewHandle->nViewStyle == 0) {
+ mp_util_svc_extract_video_list_by_personal(nSortType,
+ mp_view_ctrl_get_list_type
+ (), 0);
+ } else {
+ mp_util_svc_extract_video_list_by_personal(nSortType,
+ mp_view_ctrl_get_list_type
+ (), 1);
+ }
+
+ int nVideoListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+
+ elm_genlist_clear(g_pListPersonalViewHandle->pVideosGenlist);
+
+ if (nVideoListSize > 0) {
+ mp_personal_view_append_video_items
+ (g_pListPersonalViewHandle->pVideosGenlist);
+ } else {
+ elm_naviframe_item_pop(g_pListPersonalViewHandle->
+ pNaviFrameHandle);
+ }
+ }
+
+}
+
+
+void mp_personal_view_pop(void)
+{
+ VideoLogInfo("");
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_util_db_reset_backup_fun_up_self(g_pListPersonalViewHandle->euLev);
+
+ if (g_pListPersonalViewHandle->pChangeViewUserCbFunc) {
+ g_pListPersonalViewHandle->
+ pChangeViewUserCbFunc(LIST_UPDATE_TYPE_ALL);
+ }
+}
+
+bool mp_personal_view_is_top_view(void)
+{
+ if (!g_pListPersonalViewHandle || !g_pListPersonalViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+static void
+__mp_personal_view_base_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ /*evas_object_event_callback_del(g_pListPersonalViewWidget->pPersonalViewBaselayout, EVAS_CALLBACK_DEL, __mp_personal_view_base_layout_del_cb);*/
+
+ __mp_personal_view_reset();
+}
diff --git a/src/view/mp-video-list-remove-ctrl.c b/src/view/mp-video-list-remove-ctrl.c
new file mode 100644
index 0000000..35be210
--- /dev/null
+++ b/src/view/mp-video-list-remove-ctrl.c
@@ -0,0 +1,353 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-list-remove-ctrl.h"
+#include "mp-util-move.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-util-preference.h"
+#include "mp-util-config.h"
+
+typedef struct _MpRemoveVideoCtrl {
+ /*obj*/
+ Evas_Object *pPopUpHandle;
+ Evas_Object *pProgressbar;
+
+ /*data*/
+ Ecore_Idler *pDelIdler;
+ Ecore_Timer *pStartDelTimer;
+ Ecore_Timer *pFinishDelTimer;
+ ListRemoveCtrlCbFunc fDelCtrlUserCbFunc;
+
+ int nDelTotalItem;
+ int nDelCompltedItem;
+ int nDelEditListSize;
+ bool *pDelEditList;
+ bool bFolderDel;
+
+} stMpRemoveCtrl;
+
+
+static stMpRemoveCtrl *g_pRemoveCtrl = NULL;
+
+/*//////////////////////////////////////////////////////////*/
+/* Internal function*/
+/*//////////////////////////////////////////////////////////*/
+static void mp_remove_ctrl_button_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo);
+
+void mp_remove_ctrl_delete_popup_handle(void)
+{
+ VideoLogInfo("");
+ if (!g_pRemoveCtrl) {
+ VideoLogWarning("");
+ return;
+ }
+
+
+ MP_DEL_IDLER(g_pRemoveCtrl->pDelIdler);
+ MP_DEL_TIMER(g_pRemoveCtrl->pStartDelTimer);
+ MP_DEL_TIMER(g_pRemoveCtrl->pFinishDelTimer);
+
+ if (g_pRemoveCtrl->pPopUpHandle) {
+ eext_object_event_callback_del(g_pRemoveCtrl->pPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ mp_remove_ctrl_button_popup_cb);
+ MP_DEL_OBJ(g_pRemoveCtrl->pPopUpHandle);
+ }
+ MP_FREE_STRING(g_pRemoveCtrl);
+
+}
+
+static void mp_remove_ctrl_button_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!g_pRemoveCtrl) {
+ VideoLogWarning("");
+ return;
+ }
+ mp_util_move_set_cancel_state(TRUE);
+ if (g_pRemoveCtrl->fDelCtrlUserCbFunc) {
+ g_pRemoveCtrl->fDelCtrlUserCbFunc();
+ }
+ mp_remove_ctrl_delete_popup_handle();
+}
+
+static Eina_Bool __mp_remove_ctrl_finish_delete_timer_cb(void *pUserData)
+{
+ if (!g_pRemoveCtrl) {
+ VideoLogWarning("");
+ return FALSE;
+ }
+
+ g_pRemoveCtrl->pFinishDelTimer = NULL;
+ if (g_pRemoveCtrl->fDelCtrlUserCbFunc) {
+ g_pRemoveCtrl->fDelCtrlUserCbFunc();
+ }
+ mp_remove_ctrl_delete_popup_handle();
+
+ return FALSE;
+}
+
+static Eina_Bool mp_remove_ctrl_delete_item_idler_cb(void *pUserData)
+{
+
+ if (!g_pRemoveCtrl) {
+ VideoLogWarning("");
+ return FALSE;
+ }
+
+ if (!g_pRemoveCtrl->pDelEditList) {
+ VideoLogError
+ ("The userdata and g_pRemoveCtrl->pDelEditList is null.");
+ g_pRemoveCtrl->pDelIdler = NULL;
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ int nCounter = 0;
+ char *szMediaUrlForPreview = mp_util_config_get_preview();
+ VideoLogInfo("Media-Url For Preview : %s", szMediaUrlForPreview);
+ int nResult = 0;
+
+ for (nCounter = 0; nCounter < g_pRemoveCtrl->nDelEditListSize;
+ nCounter++) {
+ if (g_pRemoveCtrl->pDelEditList[nCounter]) {
+ if (g_pRemoveCtrl->bFolderDel) {
+ char *szFolderUrl =
+ mp_util_svc_get_video_folder_url(nCounter);
+ if (szFolderUrl) {
+
+ nResult =
+ mp_util_move_delete_video_folder(szFolderUrl,
+ NULL);
+ /*if (mp_util_check_empty_dir(szFolderUrl))
+ {
+ vp_file_unlink(szFolderUrl)
+ } */
+ if (szMediaUrlForPreview
+ &&
+ !mp_util_check_local_file_exist
+ (szMediaUrlForPreview)) {
+ mp_util_config_set_preview(NULL);
+ MP_FREE_STRING(szMediaUrlForPreview);
+ }
+ mp_util_svc_remove_folder_list_item_from_list
+ (nCounter);
+ MP_FREE_STRING(szFolderUrl);
+ if (nResult == 1) {
+ VideoLogInfo("cancel delete");
+ return FALSE;
+ }
+ }
+ } else {
+ char *szFileUrl = mp_util_svc_get_video_url(nCounter);
+ if (szFileUrl) {
+ if (szMediaUrlForPreview) {
+ if (!strcmp(szMediaUrlForPreview, szFileUrl)) {
+ VideoLogInfo("Erase preview url.");
+ mp_util_config_set_preview(NULL);
+ }
+ }
+ VideoLogInfo("Delete file url : %s", szFileUrl);
+ /* Now when the data is cloud data,Click delete button, Send remove request to cloud server,
+ then remove current item ,But Don't care of if this data is deleted from cloud server. */
+ unlink(szFileUrl);
+ MP_FREE_STRING(szFileUrl);
+
+ mp_util_svc_remove_item_by_list_index(nCounter);
+ /*mp_util_svc_move_from_db(szFileUrl);*/
+ }
+
+ }
+
+ int nMoveItemCounter = 0;
+ for (nMoveItemCounter = nCounter;
+ nMoveItemCounter < g_pRemoveCtrl->nDelEditListSize - 1;
+ nMoveItemCounter++) {
+ g_pRemoveCtrl->pDelEditList[nMoveItemCounter] =
+ g_pRemoveCtrl->pDelEditList[nMoveItemCounter + 1];
+ }
+ g_pRemoveCtrl->nDelEditListSize--;
+
+ /* pRemoveCheckedItemsEditList[nCounter] = FALSE;*/
+ ++g_pRemoveCtrl->nDelCompltedItem;
+ break;
+ }
+ }
+ MP_FREE_STRING(szMediaUrlForPreview);
+
+ VideoLogInfo("nCompltedDeleteItem : %d",
+ g_pRemoveCtrl->nDelCompltedItem);
+
+ double nDeleteRate =
+ ((double) g_pRemoveCtrl->nDelCompltedItem) /
+ ((double) g_pRemoveCtrl->nDelTotalItem);
+ VideoLogInfo
+ ("nDeleteRate:%f, nCompltedDeleteItem:%d, nTotalDeleteItem:%d",
+ nDeleteRate, g_pRemoveCtrl->nDelCompltedItem,
+ g_pRemoveCtrl->nDelTotalItem);
+ if (g_pRemoveCtrl->pProgressbar) {
+ elm_progressbar_value_set(g_pRemoveCtrl->pProgressbar,
+ nDeleteRate);
+ } else {
+ VideoLogInfo("No exist progress bar handle.");
+ }
+
+ if (g_pRemoveCtrl->nDelCompltedItem == g_pRemoveCtrl->nDelTotalItem) {
+ VideoLogInfo("nCompltedDeleteItem == nTotalDeleteItem");
+ MP_DEL_TIMER(g_pRemoveCtrl->pFinishDelTimer);
+ g_pRemoveCtrl->pDelIdler = NULL;
+ g_pRemoveCtrl->pFinishDelTimer =
+ ecore_timer_add(0.1, __mp_remove_ctrl_finish_delete_timer_cb,
+ pUserData);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static Eina_Bool __mp_remove_ctrl_start_delete_timer_cb(void *pUserData)
+{
+ if (!g_pRemoveCtrl) {
+ VideoLogWarning("");
+ return FALSE;
+ }
+
+ g_pRemoveCtrl->pStartDelTimer = NULL;
+ g_pRemoveCtrl->pDelIdler =
+ ecore_idler_add(mp_remove_ctrl_delete_item_idler_cb, pUserData);
+ return FALSE;
+}
+
+
+/*//////////////////////////////////////////////////////////*/
+/* External function*/
+/*//////////////////////////////////////////////////////////*/
+bool mp_remove_ctrl_show(bool *pCheckedItemsEditList,
+ int pCheckedItemsEditListSize,
+ ListRemoveCtrlCbFunc pListRemoveCtrlCb,
+ bool bFolderDel, void *pUserData)
+{
+
+ if (!pCheckedItemsEditList) {
+ VideoLogError("No have popup message is null.");
+ return FALSE;
+ }
+
+ VideoLogInfo("pCheckedItemsEditListSize : %d",
+ pCheckedItemsEditListSize);
+
+ mp_remove_ctrl_delete_popup_handle();
+ g_pRemoveCtrl = (stMpRemoveCtrl *) calloc(1, sizeof(stMpRemoveCtrl));
+ if (!g_pRemoveCtrl) {
+ VideoLogError("g_pRemoveCtrl is NULL");
+ return FALSE;
+ }
+
+
+ g_pRemoveCtrl->fDelCtrlUserCbFunc = pListRemoveCtrlCb;
+ g_pRemoveCtrl->nDelEditListSize = pCheckedItemsEditListSize;
+ g_pRemoveCtrl->pDelEditList = pCheckedItemsEditList;
+ g_pRemoveCtrl->bFolderDel = bFolderDel;
+
+ int nCounter = 0;
+ for (nCounter = 0; nCounter < g_pRemoveCtrl->nDelEditListSize;
+ nCounter++) {
+ if (g_pRemoveCtrl->pDelEditList[nCounter]) {
+ char *szTitle = mp_util_svc_get_video_title(nCounter);
+ VideoLogInfo(" Delete index - %d ; %s", nCounter, szTitle);
+ MP_FREE_STRING(szTitle);
+
+ ++g_pRemoveCtrl->nDelTotalItem;
+ }
+ }
+
+ VideoLogInfo("nTotalDeleteItem : %d", g_pRemoveCtrl->nDelTotalItem);
+
+ g_pRemoveCtrl->pPopUpHandle =
+ elm_popup_add(mp_util_get_main_window_handle());
+ /*elm_object_part_text_set(g_pRemoveCtrl->pPopUpHandle, "title,text", VIDEOS_DELETEPOP_MSG_DELETING);*/
+ evas_object_size_hint_weight_set(g_pRemoveCtrl->pPopUpHandle,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ eext_object_event_callback_add(g_pRemoveCtrl->pPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ mp_remove_ctrl_button_popup_cb, NULL);
+
+ /*Evas_Object *pButton = elm_button_add(g_pRemoveCtrl->pPopUpHandle);
+ elm_object_style_set (pButton, "popup");
+ elm_object_text_set(pButton, VIDEOS_COMMON_BUTTON_CANCEL);
+ elm_object_part_content_set(g_pRemoveCtrl->pPopUpHandle, "button1", pButton);
+ evas_object_smart_callback_add(pButton, "clicked", mp_remove_ctrl_button_popup_cb, pUserData);
+ evas_object_show(pButton); */
+
+ Evas_Object *pPopupLayout =
+ elm_layout_add(g_pRemoveCtrl->pPopUpHandle);
+ elm_layout_file_set(pPopupLayout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_text_progressbar_view_layout");
+ elm_object_part_text_set(pPopupLayout, "elm.text.description",
+ VIDEOS_DELETEPOP_MSG_DELETING);
+ elm_object_part_text_set(pPopupLayout, "progress_text", "00/00");
+ evas_object_size_hint_weight_set(pPopupLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pPopupLayout);
+
+ Evas_Object *pProgressbar =
+ elm_progressbar_add(g_pRemoveCtrl->pPopUpHandle);
+ elm_object_style_set(pProgressbar, "wheel");
+ evas_object_size_hint_align_set(pProgressbar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressbar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_progressbar_pulse(pProgressbar, EINA_TRUE);
+ elm_object_signal_emit(pProgressbar, "elm,units,show", "elm");
+ evas_object_show(pProgressbar);
+
+ elm_object_part_content_set(pPopupLayout, "progressbar",
+ pProgressbar);
+
+ g_pRemoveCtrl->pProgressbar = pProgressbar;
+
+ elm_object_content_set(g_pRemoveCtrl->pPopUpHandle, pPopupLayout);
+ evas_object_data_set(g_pRemoveCtrl->pPopUpHandle, "progressbar",
+ pProgressbar);
+
+ evas_object_show(g_pRemoveCtrl->pPopUpHandle);
+
+ MP_DEL_TIMER(g_pRemoveCtrl->pStartDelTimer);
+ g_pRemoveCtrl->pStartDelTimer =
+ ecore_timer_add(0.3, __mp_remove_ctrl_start_delete_timer_cb,
+ pUserData);
+
+ return TRUE;
+}
diff --git a/src/view/mp-video-list-remove-view.c b/src/view/mp-video-list-remove-view.c
new file mode 100644
index 0000000..06104c7
--- /dev/null
+++ b/src/view/mp-video-list-remove-view.c
@@ -0,0 +1,2238 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-list-remove-ctrl.h"
+#include "mp-video-list-remove-view.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-video-list-view-item-of-folder.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-util-widget-ctrl.h"
+#include "vp-file-util.h"
+#include "mp-rotate-ctrl.h"
+#include "videos-view-mgr.h"
+
+#define VIDEO_SELECTED_INFO_TIMER 4.0
+
+typedef struct
+{
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ void *pObjVideosList; //used for list view ,folder view,thumbnail view
+
+ Elm_Genlist_Item_Class *pGenListItc;
+ Elm_Genlist_Item_Class *pGenListLandscapeItc;
+ Elm_Gengrid_Item_Class *pGenGridItc_1;
+ Elm_Gengrid_Item_Class *pGenGridItc_2;
+ bool *pCheckedItemsEditListForRemoved;
+ char **pSelectedList; //save selected video id
+ bool bSelectallCheckBoxState;
+ int nSelectCounterForEditList;
+ MpMediaSvcSortType nSortType;
+ ChangeListRemoveViewCbFunc pChangeViewUserCbFunc; //view pop
+ ListRemoveViewCbFunc pChangeViewUpdateFunc; //update main list
+ char *pFolderPath;
+ MpVideoListTabType eTabType;
+ MpDbUpdateViewLev euLev;
+ bool bUpdateList;
+ bool bFolderDel;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+ bool bLandscape;
+ bool bThumbnailView;
+#endif
+}st_VideoListRemoveViewHandle;
+
+typedef struct
+{
+ //Evas_Object *pSelectionInfoLayout;
+ Evas_Object *pVideoListBox;
+ Evas_Object *pRemoveViewBaselayout;
+ Evas_Object *pSelectallbtn;
+ Evas_Object *pSelAllLayout;
+ Evas_Object *pSavebtn;
+ Evas_Object *pCancelbtn;
+
+ Ecore_Timer *pSelectedInfoLayoutTimer;
+}st_VideoListRemoveViewWidget;
+
+static st_VideoListRemoveViewHandle *g_pListRemoveViewHandle = NULL;
+static st_VideoListRemoveViewWidget *g_pListRemoveViewWidget = NULL;
+
+// Pre define function
+int mp_remove_view_get_sort_type(void);
+static bool __mp_remove_view_arrange_video_list(void *pObjVideosList, MpVideoListTabType eTabType, bool bNeedSvc);
+static bool __mp_remove_view_arrange_folder_list(void *pObjVideosList, MpVideoListTabType eTabType, bool bNeedSvc);
+void mp_remove_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+void mp_remove_view_change_title_info(void);
+static void __mp_remove_view_base_layout_del_cb(void *pUserData, Evas *e, Evas_Object *pObject, void *pEventInfo);
+static void __mp_remove_view_rotate_cb(void *data, Evas_Object *obj, void *event_info);
+
+static bool __mp_remove_view_get_selected_video_list(int nSelectedSize);
+//static void __mp_remove_view_update_selected_video_list(void);
+
+static void __mp_remove_view_free_selected_list(void)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewHandle->pSelectedList)
+ {
+ VideoLogInfo("Selected_list is already freed.");
+ return;
+ }
+ int nIndex = 0;
+ while (g_pListRemoveViewHandle->pSelectedList[nIndex])
+ {
+ nIndex++;
+ MP_FREE_STRING(g_pListRemoveViewHandle->pSelectedList[nIndex]);
+ }
+ MP_FREE_STRING(g_pListRemoveViewHandle->pSelectedList);
+}
+
+void mp_remove_view_update_all_check_box(void)
+{
+ VideoLogInfo("");
+
+ int nVideoListSize = 0;
+ if (LIST_TAB_TYPE_PERSONAL == g_pListRemoveViewHandle->eTabType)
+ {
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+ }
+ else
+ {
+ VideoLogError("Can't handle this eTabType!");
+ }
+
+ if (!g_pListRemoveViewHandle->pObjVideosList) {
+ VideoLogInfo("genlist is NULL");
+ return;
+ }
+ if (nVideoListSize < 1) {
+ VideoLogInfo("nVideoListSize < 1:%d", nVideoListSize);
+ return;
+ }
+
+ Evas_Object *check_box = NULL;
+ Evas_Object *check_box_layout = NULL;
+ Elm_Object_Item *currentItem = NULL;
+ Elm_Object_Item *currentItemGengrid = NULL;
+ int nVideoItemIndex = 0;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+ if (g_pListRemoveViewHandle->bThumbnailView)
+ {
+ currentItem = elm_genlist_first_item_get(g_pListRemoveViewHandle->pObjVideosList);
+ nVideoItemIndex = 0;
+ while (currentItem && (nVideoItemIndex < nVideoListSize)) {
+ Evas_Object *gengrid= elm_object_item_part_content_get(currentItem, "elm.icon");
+ currentItemGengrid = elm_gengrid_first_item_get(gengrid);
+ while (currentItemGengrid && (nVideoItemIndex < nVideoListSize)) {
+ Evas_Object *check_box= elm_object_item_part_content_get(currentItemGengrid, "elm.swallow.end");
+ if (check_box) {
+ elm_check_state_set(check_box, g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex]);
+ }
+ currentItemGengrid = elm_gengrid_item_next_get(currentItemGengrid);
+ nVideoItemIndex ++;
+ }
+ currentItem = elm_genlist_item_next_get(currentItem);
+ }
+
+ }
+ else
+#endif
+ {
+ currentItem = elm_genlist_first_item_get(g_pListRemoveViewHandle->pObjVideosList);
+ nVideoItemIndex = 0;
+ while (currentItem && (nVideoItemIndex < nVideoListSize)) {
+ check_box_layout = elm_object_item_part_content_get(currentItem, "elm.icon.2");
+ check_box = elm_object_part_content_get(check_box_layout, "elm.swallow.content");
+ if (check_box) {
+ elm_check_state_set(check_box, g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex]);
+ }
+ currentItem = elm_genlist_item_next_get(currentItem);
+ nVideoItemIndex ++;
+ }
+ }
+
+}
+
+void mp_remove_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pListRemoveViewHandle)
+ {
+ evas_object_smart_callback_del(g_pListRemoveViewHandle->pNaviFrameHandle, "transition,finished", mp_remove_view_naviframe_transition_effect_cb);
+ evas_object_smart_callback_del((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_remove_view_rotate_cb);
+ __mp_remove_view_free_selected_list();
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListItc);
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_2);
+ MP_DEL_OBJ(g_pListRemoveViewHandle->pObjVideosList);
+ MP_FREE_STRING(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved);
+ g_pListRemoveViewHandle->pChangeViewUserCbFunc = NULL;
+ g_pListRemoveViewHandle->pChangeViewUpdateFunc = NULL;
+ MP_FREE_STRING(g_pListRemoveViewHandle->pFolderPath);
+
+ free(g_pListRemoveViewHandle);
+ g_pListRemoveViewHandle = NULL;
+ }
+
+ if (g_pListRemoveViewWidget)
+ {
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pSelectallbtn);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pSavebtn);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pCancelbtn);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pSelAllLayout);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pVideoListBox);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pRemoveViewBaselayout);
+ MP_DEL_TIMER(g_pListRemoveViewWidget->pSelectedInfoLayoutTimer);
+ free(g_pListRemoveViewWidget);
+ g_pListRemoveViewWidget = NULL;
+ }
+}
+
+static void __mp_remove_view_reset(void)
+{
+ VideoLogInfo("");
+
+ if (g_pListRemoveViewHandle)
+ {
+ mp_util_db_set_update_fun(g_pListRemoveViewHandle->euLev, NULL);
+ mp_util_db_set_backup_fun(g_pListRemoveViewHandle->euLev, NULL);
+ evas_object_smart_callback_del(g_pListRemoveViewHandle->pNaviFrameHandle, "transition,finished", mp_remove_view_naviframe_transition_effect_cb);
+ evas_object_smart_callback_del((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_remove_view_rotate_cb);
+ __mp_remove_view_free_selected_list();
+ g_pListRemoveViewHandle->pObjVideosList = NULL;
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListItc);
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_2);
+ MP_FREE_STRING(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved);
+ g_pListRemoveViewHandle->pChangeViewUserCbFunc = NULL;
+ g_pListRemoveViewHandle->pChangeViewUpdateFunc = NULL;
+ MP_FREE_STRING(g_pListRemoveViewHandle->pFolderPath);
+
+ free(g_pListRemoveViewHandle);
+ g_pListRemoveViewHandle = NULL;
+ }
+
+ if (g_pListRemoveViewWidget)
+ {
+
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pSelectallbtn);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pCancelbtn);
+ MP_DEL_OBJ(g_pListRemoveViewWidget->pSavebtn);
+ g_pListRemoveViewWidget->pSelAllLayout = NULL;
+ if (g_pListRemoveViewWidget->pVideoListBox)
+ {
+ g_pListRemoveViewWidget->pVideoListBox = NULL;
+ }
+
+ if (g_pListRemoveViewWidget->pRemoveViewBaselayout)
+ {
+ g_pListRemoveViewWidget->pRemoveViewBaselayout = NULL;
+ }
+
+ MP_DEL_TIMER(g_pListRemoveViewWidget->pSelectedInfoLayoutTimer);
+
+ free(g_pListRemoveViewWidget);
+ g_pListRemoveViewWidget = NULL;
+ }
+}
+
+void mp_remove_view_reset_value(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogError("[ERR] g_pListRemoveViewHandle is not existed.");
+ return;
+ }
+
+ g_pListRemoveViewHandle->pNaviFrameHandle = NULL;
+ g_pListRemoveViewHandle->pNaviFrameItem = NULL;
+ g_pListRemoveViewHandle->pChangeViewUserCbFunc = NULL;
+
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList = 0;
+ g_pListRemoveViewHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+
+ if (g_pListRemoveViewHandle->pNaviFrameItem)
+ {
+ elm_object_item_part_content_unset(g_pListRemoveViewHandle->pNaviFrameItem, "toolbar_more_btn");
+ elm_object_item_part_content_unset(g_pListRemoveViewHandle->pNaviFrameItem, "toolbar");
+ elm_object_item_part_content_unset(g_pListRemoveViewHandle->pNaviFrameItem, "toolbar_button2");
+ }
+}
+
+
+////////////////////////////////////////////////////
+// Remove items. (Below functions are about the item deletion to call by button of toolbar.)
+void mp_remove_view_done_delete_complete(void)
+{
+ if (!g_pListRemoveViewHandle) {
+ VideoLogError("[ERR] g_pListRemoveViewHandle is NULL.");
+ return;
+ }
+ g_pListRemoveViewHandle->bUpdateList = TRUE;
+ VideoLogInfo("");
+ if (g_pListRemoveViewHandle->pNaviFrameHandle) {
+ elm_naviframe_item_pop(g_pListRemoveViewHandle->pNaviFrameHandle);
+ }
+}
+
+void mp_remove_view_response_done_delete_items_popup_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogError("[ERR] g_pListRemoveViewHandle is NULL.");
+ return;
+ }
+
+ mp_util_delete_popup_handle();
+ g_pListRemoveViewHandle->bUpdateList = TRUE;
+ int nVideoListSize = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL == g_pListRemoveViewHandle->eTabType)
+ {
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+ mp_remove_ctrl_show(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved,
+ nVideoListSize,
+ mp_remove_view_done_delete_complete,
+ g_pListRemoveViewHandle->bFolderDel,
+ NULL);
+ }
+ else
+ {
+ VideoLogError("Can't handle this eTabType!");
+ }
+}
+
+void mp_remove_view_response_cancel_delete_items_popup_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+void mp_remove_view_HW_mouse_back_popup_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+ if (!pEvent) {
+ VideoLogWarning("[ERR] pEvent is NULL.");
+ return ;
+ }
+
+ if (pEvent->button == 3)
+ {
+ mp_util_delete_popup_handle();
+ }
+}
+
+void mp_remove_view_HW_key_back_popup_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo)
+{
+ Evas_Event_Key_Down *pEvent = pEventInfo;
+ if (!pEvent) {
+ VideoLogWarning("[ERR] pEvent is NULL.");
+ return ;
+ }
+ if (!g_strcmp0(pEvent->keyname, "XF86Back"))
+ {
+ mp_util_delete_popup_handle();
+ }
+}
+
+static void __mp_remove_view_run_cancel_items_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ if (!g_pListRemoveViewHandle->pNaviFrameHandle) {
+ VideoLogError("g_pListRemoveViewHandle->pNaviFrameHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_naviframe_item_pop(g_pListRemoveViewHandle->pNaviFrameHandle);
+}
+
+
+static void __mp_remove_view_run_delete_items_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ if (!g_pListRemoveViewHandle) {
+ VideoLogError("[ERR] g_pMainViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!g_pListRemoveViewHandle->pObjVideosList) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ int nSelectCounter = g_pListRemoveViewHandle->nSelectCounterForEditList;
+
+ if (nSelectCounter > 0) {
+ MpListViewAsType type = mp_view_as_ctrl_get_type();
+ bool bItemFolderView = mp_folder_item_view_is_current_view();
+
+ if (type == MP_LIST_VIEW_AS_FOLDER_LIST && bItemFolderView) {
+ type = MP_LIST_VIEW_AS_THUMBNAIL_LIST;
+ }
+
+ if (g_pListRemoveViewHandle->bSelectallCheckBoxState)
+ mp_util_remove_all_videos_question_popup((void *) NULL, type, mp_remove_view_response_done_delete_items_popup_cb, mp_remove_view_response_cancel_delete_items_popup_cb, mp_remove_view_HW_mouse_back_popup_cb, mp_remove_view_HW_key_back_popup_cb);
+ else
+ mp_util_remove_question_popup((void *)(-nSelectCounter), type, mp_remove_view_response_done_delete_items_popup_cb, mp_remove_view_response_cancel_delete_items_popup_cb, mp_remove_view_HW_mouse_back_popup_cb, mp_remove_view_HW_key_back_popup_cb);
+ //g_pListRemoveViewHandle->nSelectCounterForEditList = 0;
+ }
+}
+
+static void __mp_remove_view_trans_finished_cb(void *pUserData, Evas_Object *obj, void *event_info)
+{
+ if (!obj)
+ {
+ VideoLogError("[ERR] g_pListRemoveViewHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished", __mp_remove_view_trans_finished_cb);
+}
+
+static Eina_Bool __mp_remove_view_back_btn_cb(void *pUserData, Elm_Object_Item *pItem)
+{
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogInfo("[ERR] g_pListRemoveViewHandle is NULL.");
+ return EINA_TRUE;
+ }
+
+ // Register transition finished callback.
+ mp_widget_ctrl_disable_navi_handle_focus_except_item(g_pListRemoveViewHandle->pNaviFrameHandle, g_pListRemoveViewHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pListRemoveViewHandle->pNaviFrameHandle, "transition,finished", __mp_remove_view_trans_finished_cb, NULL);
+
+ mp_remove_view_pop();
+
+ return EINA_TRUE;
+}
+
+void mp_remove_view_change_title_info(void)
+{
+ VideoLogInfo("nNumOfSelectdCount : %d", g_pListRemoveViewHandle->nSelectCounterForEditList);
+
+ if (g_pListRemoveViewHandle->nSelectCounterForEditList > 0)
+ {
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_FALSE);
+ }
+ else
+ {
+ VideoLogInfo("Unactivate delete tab.");
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+ }
+
+ char *szCheckingTotalItem = g_strdup_printf(VIDEOS_SELECTVIEW_HEADER_PD_SELECTED, g_pListRemoveViewHandle->nSelectCounterForEditList);
+ elm_object_item_domain_translatable_part_text_set(g_pListRemoveViewHandle->pNaviFrameItem, "elm.text.title", PACKAGE, szCheckingTotalItem);
+ MP_FREE_STRING(szCheckingTotalItem);
+}
+
+
+static void __mp_remove_view_select_all_change_check_box_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pObject)
+ {
+ VideoLogError("[ERR]");
+ return;
+ }
+
+ if (!g_pListRemoveViewHandle->pObjVideosList)
+ {
+ VideoLogError("No exist pVideoGenlist");
+ return;
+ }
+
+ int nCounter = 0;
+ int nVideoListSize = 0;
+ //bool bState = elm_check_state_get(pObject);
+
+ if (LIST_TAB_TYPE_PERSONAL == g_pListRemoveViewHandle->eTabType)
+ {
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ }
+ else
+ {
+ VideoLogError("Can't handle this eTabType!");
+ }
+
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (!g_pListRemoveViewHandle->bSelectallCheckBoxState)
+ {
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = TRUE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList = nVideoListSize;
+ }
+ else
+ {
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList = 0;
+
+ VideoLogInfo("Unactivate delete tab.");
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+ }
+ mp_remove_view_change_title_info();
+
+ for (nCounter = 0; nCounter < nVideoListSize; nCounter++)
+ {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nCounter] = g_pListRemoveViewHandle->bSelectallCheckBoxState;
+ }
+
+ mp_remove_view_update_all_check_box();
+
+ //elm_genlist_realized_items_update(g_pListRemoveViewHandle->pObjVideosList);
+}
+
+void mp_remove_view_delete_select_all(void)
+{
+ VideoLogInfo("");
+
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList = 0;
+
+ //MpVideoListRemoveViewHideSelectedInfo();
+ mp_remove_view_change_title_info();
+}
+
+////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////
+// Check box callback
+void mp_remove_view_change_check_box_state_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pObject)
+ {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+ else
+ {
+ VideoLogInfo("pObject : %x", pObject);
+ }
+
+ int nVideoListSize = 0;
+ int nVideoItemIndex = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL == g_pListRemoveViewHandle->eTabType)
+ {
+ nVideoItemIndex = (int)pUserData;
+
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ VideoLogInfo("Check box - Index : %d, List Size : %d", nVideoItemIndex, nVideoListSize);
+ }
+ else
+ {
+ VideoLogError("Can't handle this eTabType!");
+ }
+
+
+ bool bState = elm_check_state_get(pObject);
+
+ VideoLogInfo("BEFORE : nSelectCounterForEditList : %d", g_pListRemoveViewHandle->nSelectCounterForEditList);
+
+ if (bState)
+ {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex] = TRUE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList++;
+ if (nVideoListSize == g_pListRemoveViewHandle->nSelectCounterForEditList)
+ {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = TRUE;
+ }
+ }
+ else
+ {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex] = FALSE;
+ if (nVideoListSize == g_pListRemoveViewHandle->nSelectCounterForEditList)
+ {
+ VideoLogInfo("All check box of edit list state are not true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pListRemoveViewHandle->nSelectCounterForEditList--;
+ if (g_pListRemoveViewHandle->nSelectCounterForEditList < 1)
+ {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+ }
+ }
+
+ elm_check_state_set(g_pListRemoveViewWidget->pSelectallbtn, g_pListRemoveViewHandle->bSelectallCheckBoxState);
+ mp_remove_view_change_title_info();
+ /*if (pSelectedItem)
+ {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }*/
+
+}
+//
+////////////////////////////////////////////////////
+
+////////////////////////////////////////////////
+// Genlist callback
+void mp_remove_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogError("[ERR] No exist g_pListRemoveViewHandle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pListRemoveViewHandle->pNaviFrameHandle)
+ {
+ VideoLogError("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ pTmpItem = elm_naviframe_top_item_get(g_pListRemoveViewHandle->pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents)
+ {
+ if (pTmpContents == g_pListRemoveViewWidget->pVideoListBox)
+ {
+ }
+ else
+ {
+ VideoLogInfo("It's not pListRemoveViewTabbarLayout in top screen.");
+ }
+ }
+ else
+ {
+ VideoLogError("[ERR] No exist naviframe top item.");
+ }
+}
+
+void mp_remove_view_double_tap_cb(void)
+{
+ if (!g_pListRemoveViewHandle->pObjVideosList)
+ {
+ VideoLogError("pObjVideosList is not exist.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_genlist_item_bring_in(elm_genlist_first_item_get(g_pListRemoveViewHandle->pObjVideosList), ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+char *mp_remove_view_get_duration_time(int nVideoItemIndex)
+{
+ VideoLogInfo("");
+
+ char szTmpStr[STR_LEN_MAX] = {0, };
+ char szTmpStrDurationTime[STR_LEN_MAX] = {0, };
+ char szTmpStrLastPlayedPos[STR_LEN_MAX] = {0, };
+
+ unsigned int nVideoInfoDuration = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ unsigned int nVideoInfoLastTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+
+ mp_util_convert_time(nVideoInfoDuration, szTmpStrDurationTime, FALSE);
+ mp_util_convert_time(nVideoInfoLastTime, szTmpStrLastPlayedPos, TRUE);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "%s/%s", szTmpStrLastPlayedPos, szTmpStrDurationTime);
+
+ return strdup(szTmpStr);
+}
+#ifdef VS_FEATURE_LIST_VIEW
+static void __mp_remove_folder_view_select_video_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pListRemoveViewHandle->pObjVideosList)
+ {
+ VideoLogInfo("No exist genlist object.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nVideoItemIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+
+ if (pItem)
+ {
+ int nVideoListSize = 0;
+ if (LIST_TAB_TYPE_PERSONAL == g_pListRemoveViewHandle->eTabType)
+ {
+ nVideoItemIndex = (int)elm_object_item_data_get(pItem);
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+ }
+ else
+ {
+ VideoLogError("Can't handle this eTabType!");
+ }
+
+ if (g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex])
+ {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex] = FALSE;
+ if (nVideoListSize == g_pListRemoveViewHandle->nSelectCounterForEditList)
+ {
+ VideoLogInfo("All check box of edit list state are not true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pListRemoveViewHandle->nSelectCounterForEditList--;
+ if (g_pListRemoveViewHandle->nSelectCounterForEditList < 1)
+ {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+ }
+ }
+ else
+ {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex] = TRUE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList++;
+ if (nVideoListSize == g_pListRemoveViewHandle->nSelectCounterForEditList)
+ {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = TRUE;
+ }
+ }
+
+ elm_check_state_set(g_pListRemoveViewWidget->pSelectallbtn, g_pListRemoveViewHandle->bSelectallCheckBoxState);
+ mp_remove_view_change_title_info();
+ Evas_Object *check_box_layout = elm_object_item_part_content_get(pItem, "elm.icon.2");
+ Evas_Object *check_box = elm_object_part_content_get(check_box_layout, "elm.swallow.content");
+
+ if (check_box) {
+ elm_check_state_set(check_box, g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex]);
+ }
+
+ //elm_genlist_item_fields_update(pSelectedItem, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ }
+ else
+ {
+ VideoLogError("[ERR]Error item number.");
+ }
+
+ if (pSelectedItem) {
+ VideoLogInfo("[INFORM] --pSelectedItem --");
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+}
+#endif
+
+static void __mp_remove_view_select_grid_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pListRemoveViewHandle->pObjVideosList)
+ {
+ VideoLogInfo("No exist genlist object.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nVideoItemIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+
+ if (pItem) {
+ int nVideoListSize = 0;
+ if (LIST_TAB_TYPE_PERSONAL == g_pListRemoveViewHandle->eTabType) {
+ nVideoItemIndex = (int)elm_object_item_data_get(pItem);
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ } else {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+ } else {
+ VideoLogError("Can't handle this eTabType!");
+ }
+
+ if (g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex]) {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex] = FALSE;
+
+ if (nVideoListSize == g_pListRemoveViewHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are not true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pListRemoveViewHandle->nSelectCounterForEditList--;
+ if (g_pListRemoveViewHandle->nSelectCounterForEditList < 1) {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+
+ }
+ } else {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex] = TRUE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList++;
+ if (nVideoListSize == g_pListRemoveViewHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = TRUE;
+ }
+ }
+
+ elm_check_state_set(g_pListRemoveViewWidget->pSelectallbtn, g_pListRemoveViewHandle->bSelectallCheckBoxState);
+
+ mp_remove_view_change_title_info();
+
+ elm_gengrid_item_update(pItem);
+ //keep checkbox animation effect
+ elm_gengrid_item_selected_set(pItem, EINA_FALSE);
+ } else {
+ VideoLogError("[ERR]Error item number.");
+ }
+}
+
+char *mp_remove_view_get_label_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top"))
+ {
+ char *szTitle;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle)
+ {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ }
+ else if (!strcmp(pPart, "elm.text.sub.left.bottom"))
+ {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+ /*else if (!strcmp(pPart, "elm.text.sub.right.bottom"))
+ {
+ unsigned long long nFilesize = 0;
+
+ nFilesize = mp_util_svc_get_video_item_size(nVideoItemIndex);
+ char *szFileSize = mp_util_get_file_size(nFilesize);
+ char *szTitleUtf8 = NULL;
+ if (szFileSize)
+ {
+ szTitleUtf8 = elm_entry_utf8_to_markup(szFileSize);
+ free(szFileSize);
+ szFileSize = NULL;
+ }
+
+ return szTitleUtf8;
+ }*/
+
+ return NULL;
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+static char *__mp_remove_view_get_label_of_grid_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2")) {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+
+ return NULL;
+}
+#endif
+
+static int mp_remove_view_get_respective_video_no(int nFolderItemIndex)
+{
+ mp_util_svc_destory_video_item_list();
+ char *szPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ mp_util_svc_extract_video_list_from_folder(szPath, mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ MP_FREE_STRING(szPath);
+
+ return nVideoListSize;
+}
+
+static char *__mp_remove_view_get_label_of_folder_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nFolderItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top") || !strcmp(pPart, "elm.text")) {
+ char *szTitle = NULL;
+ char *title = NULL;
+ char buffer[10] = {0,};
+ szTitle = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+ int nVideoListSize = mp_remove_view_get_respective_video_no(nFolderItemIndex);
+ snprintf(buffer, 10, "%d", nVideoListSize);
+ title = g_strconcat(szTitle, "(", buffer, ")", NULL);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(title);
+
+ MP_FREE_STRING(szTitle);
+ MP_FREE_STRING(title);
+ return szTitleUtf8;
+ }
+ /*else if (!strcmp(pPart, "elm.text.sub.left.bottom") || !strcmp(pPart, "elm.text.2")) {
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ char *pDes_path = mp_util_get_dir_by_path(szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+ char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path);
+ MP_FREE_STRING(pDes_path);
+ return szFolderUtf8;
+ }*/
+
+ return NULL;
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static Evas_Object *__mp_remove_folder_view_get_grid_icon_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nFolderItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.swallow.icon")) {
+ char *pThumbIconUri = mp_util_get_folder_thumbnail(nFolderItemIndex, mp_sort_ctrl_get_sort_state());
+ Evas_Object *pBg = NULL;
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ pBg = elm_image_add(pObject);
+ MP_FREE_STRING(pThumbIconUri);
+ evas_object_size_hint_aspect_set(pBg, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ elm_image_file_set(pBg, pThumbIconUri, NULL);
+ } else {
+ pBg = mp_util_create_preload_image(pObject, pThumbIconUri, GRID_VIDEO_ICON_WIDTH);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ return pBg;
+ } else if (!strcmp(pPart, "elm.swallow.end")) {
+ Evas_Object *pCheckBox = elm_check_add(pObject);
+ elm_object_style_set(pCheckBox, "default");
+ evas_object_propagate_events_set(pCheckBox, EINA_TRUE);
+ elm_check_state_pointer_set(pCheckBox, (Eina_Bool *)&(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nFolderItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ return pCheckBox;
+ }
+ return NULL;
+}
+
+static Evas_Object *__mp_remove_view_get_grid_icon_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.swallow.icon")) {
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ pBg = elm_image_add(pObject);
+ MP_FREE_STRING(pThumbIconUri);
+ evas_object_size_hint_aspect_set(pBg, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ elm_image_file_set(pBg, pThumbIconUri, NULL);
+ } else {
+ pBg = mp_util_create_preload_image(pObject, pThumbIconUri, GRID_VIDEO_ICON_WIDTH);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ return pBg;
+ } else if (!strcmp(pPart, "elm.progressbar.icon")) {
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime <= 0) {
+ return NULL;
+ }
+
+ double nRatio = 0.0;
+ if (nDurationTime > 0) {
+ nRatio =((double)nLastPlayedTime) / ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ return pProgressBar;
+ } else if (!strcmp(pPart, "elm.lock.icon")) {
+ char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex);
+ bool bRet = mp_util_check_video_personal_status((const char*)pVideoFile);
+ MP_FREE_STRING(pVideoFile);
+ if (bRet) {
+ Evas_Object *pLockIcon = elm_image_add(pObject);
+ elm_image_file_set(pLockIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ, VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
+ evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pLockIcon);
+ return pLockIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.dropbox.icon")) {
+ bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex);
+ if (bRet) {
+ Evas_Object *pDropboxIcon = elm_image_add(pObject);
+ elm_image_file_set(pDropboxIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ, VIDEO_LIST_VIEW_ICON_DROPBOX);
+ evas_object_size_hint_align_set(pDropboxIcon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pDropboxIcon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pDropboxIcon);
+ return pDropboxIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.swallow.end")) {
+ Evas_Object *pCheckBox = elm_check_add(pObject);
+ elm_object_style_set(pCheckBox, "grid");
+ evas_object_propagate_events_set(pCheckBox, EINA_TRUE);
+ elm_check_state_pointer_set(pCheckBox, (Eina_Bool *)&(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ return pCheckBox;
+ }
+ return NULL;
+}
+#endif
+
+Evas_Object *mp_remove_view_get_icon_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ int nVideoItemIndex = (int)pUserData;
+ Evas_Object *pLayout= NULL;
+
+ if (!pPart || !pObject) {
+ return NULL;
+ }
+
+ if (!strcmp(pPart, "elm.icon.1")) {
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri, VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+
+ if (pBg)
+ evas_object_show(pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime > 0)
+ {
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pLayout);
+ elm_object_style_set(pProgressBar, "elm/progressbar/horizontal/default");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ elm_progressbar_span_size_set(pProgressBar, VIDEO_LIST_PROGRESSBAR_LENGTH);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ elm_layout_content_set(pLayout, "elm.progressbar.icon", pProgressBar);
+
+ if (pProgressBar)
+ evas_object_show(pProgressBar);
+ }
+
+ if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) {
+ VideoLogWarning("Local File or Create sub icon is failed.", nVideoItemIndex);
+ }
+
+ return pLayout;
+ }
+ else if (!strcmp(pPart, "elm.icon.2"))
+ {
+ pLayout = elm_layout_add(pObject);
+
+ Evas_Object *pCheckBox = elm_check_add(pLayout);
+
+ elm_layout_theme_set(pLayout, "layout", "list/C/type.2", "default");
+
+ elm_object_style_set(pCheckBox, "default");
+ evas_object_propagate_events_set(pCheckBox, EINA_FALSE);
+ evas_object_smart_callback_add(pCheckBox, "changed", mp_remove_view_change_check_box_state_cb, pUserData);
+
+ elm_check_state_pointer_set(pCheckBox, (Eina_Bool *)&(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nVideoItemIndex]));
+ elm_layout_content_set(pLayout, "elm.swallow.content", pCheckBox);
+
+ evas_object_show(pCheckBox);
+
+ return pLayout;
+ }
+
+ return NULL;
+/*
+ else if (!strcmp(pPart, "elm.dropbox.icon"))
+ {
+ bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex);
+ if (bRet)
+ {
+ Evas_Object *pDropboxIcon = elm_image_add(pObject);
+ elm_image_file_set(pDropboxIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ, VIDEO_LIST_VIEW_ICON_DROPBOX);
+ evas_object_size_hint_align_set(pDropboxIcon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pDropboxIcon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pDropboxIcon);
+ return pDropboxIcon;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ return NULL;
+*/
+}
+
+/*static Evas_Object *__mp_remove_view_get_icon_of_folder_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nFolderItemIndex = (int)pUserData;
+
+ if (!g_strcmp0(pPart, "elm.icon.1"))
+ {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pBg = NULL;
+ char *pThumbIconUri = mp_util_get_folder_thumbnail(nFolderItemIndex, mp_sort_ctrl_get_sort_state());
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri))
+ {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri, VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+ if (pBg)
+ evas_object_show(pBg);
+
+ if (!mp_util_create_folder_sub_icon(pLayout, nFolderItemIndex)) {
+ VideoLogWarning("Create sub icon is failed. nFolderItemIndex: %d", nFolderItemIndex);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+ }
+ else if (!strcmp(pPart, "elm.icon.2"))
+ {
+ Evas_Object *pLayout = elm_layout_add(pObject);
+ Evas_Object *pCheckBox = elm_check_add(pLayout);
+
+ elm_layout_theme_set(pLayout, "layout", "list/C/type.2", "default");
+ evas_object_propagate_events_set(pCheckBox, EINA_FALSE);
+ evas_object_smart_callback_add(pCheckBox, "changed", mp_remove_view_change_check_box_state_cb, pUserData);
+ elm_check_state_set(pCheckBox, g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nFolderItemIndex]);
+ elm_check_state_pointer_set(pCheckBox, (Eina_Bool *)&(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nFolderItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ elm_layout_content_set(pLayout, "elm.swallow.content", pCheckBox);
+
+ return pLayout;
+ }
+
+ return NULL;
+}*/
+
+int mp_remove_view_get_sort_type(void)
+{
+ switch (mp_sort_ctrl_get_sort_state())
+ {
+ /*case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ g_pListRemoveViewHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break;*/
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ g_pListRemoveViewHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ g_pListRemoveViewHandle->nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+ /*case MP_LIST_SORT_BY_SIZE:
+ g_pListRemoveViewHandle->nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ g_pListRemoveViewHandle->nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break;*/
+ }
+
+ return g_pListRemoveViewHandle->nSortType;
+}
+
+void mp_remove_view_append_video_items(void *pObjVideosList)
+{
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListItc);
+ g_pListRemoveViewHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pListRemoveViewHandle->pGenListItc->item_style = "2line.top"; //"video/edit_list";
+ g_pListRemoveViewHandle->pGenListItc->func.text_get = (void*)mp_remove_view_get_label_of_video_item_cb;
+ g_pListRemoveViewHandle->pGenListItc->func.content_get = (void*)mp_remove_view_get_icon_of_video_item_cb;
+ g_pListRemoveViewHandle->pGenListItc->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenListItc->func.del = NULL;
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++)
+ {
+ elm_genlist_item_append(pObjVideosList, g_pListRemoveViewHandle->pGenListItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+static void __mp_remove_view_append_grid_items(void *pObjVideosList, int nGenItemIndex)
+{
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_2);
+ g_pListRemoveViewHandle->pGenGridItc_1 = elm_gengrid_item_class_new();
+ g_pListRemoveViewHandle->pGenGridItc_1->item_style = "video/album_grid";
+ g_pListRemoveViewHandle->pGenGridItc_1->func.text_get = (void*)__mp_remove_view_get_label_of_grid_item_cb;
+ g_pListRemoveViewHandle->pGenGridItc_1->func.content_get = (void*)__mp_remove_view_get_grid_icon_cb;
+ g_pListRemoveViewHandle->pGenGridItc_1->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenGridItc_1->func.del = NULL;
+
+ int nCount = (mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle()) ? VP_GENLIST_THUMB_LANDSPACE_COUNT : VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nGenItemIndex * nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
+ gridItem = elm_gengrid_item_append(pObjVideosList, g_pListRemoveViewHandle->pGenGridItc_1, (void *)nIndex, __mp_remove_view_select_grid_item_cb, (void *)nIndex);
+ elm_gengrid_item_select_mode_set(gridItem, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_data_set(gridItem, (void *)nIndex);
+ }
+}
+
+static Evas_Object *__mp_remove_view_create_gengrid(Evas_Object *parent, int nWidth, int nHeight)
+{
+ Evas_Object *pGengrid = NULL;
+ pGengrid = elm_gengrid_add(parent);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid does not exist.");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_gengrid_item_size_set(pGengrid, nWidth, nHeight);
+ elm_gengrid_align_set(pGengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pGengrid, EINA_TRUE);
+
+ return pGengrid;
+}
+
+static void mp_remove_view_get_icon_dimensions(int *height, int *width)
+{
+ int winHeight = 0;
+ int winWidth = 0;
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &winWidth, &winHeight);
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ *width = winHeight / VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ } else {
+ *width = winWidth / VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ }
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+}
+
+static Evas_Object *__mp_remove_view_get_icon_of_grid_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ if (!g_pListRemoveViewHandle || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfShareList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int)pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_remove_view_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid = __mp_remove_view_create_gengrid(pObject, nWidth, nHeight);
+ __mp_remove_view_append_grid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+int mp_remove_view_thumbnail_to_genlist_index(int nVideoItemIndex)
+{
+ if (nVideoItemIndex < 0) {
+ VideoLogDebug("invalid nVideoItemIndex");
+ return 0;
+ }
+ int nGenlistIndex = 0;
+ int nItemCount = (mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle()) ? VP_GENLIST_THUMB_LANDSPACE_COUNT : VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ nGenlistIndex = nVideoItemIndex/nItemCount;
+ return nGenlistIndex;
+}
+
+static bool __mp_remove_view_append_grid_layout(void *pGenlist)
+{
+ if (!pGenlist || !g_pListRemoveViewHandle) {
+ VideoLogError("error handle.");
+ return FALSE;
+ }
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ return FALSE;
+ }
+ else
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListItc);
+ g_pListRemoveViewHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pListRemoveViewHandle->pGenListItc->item_style = "video/1icon.thumbnail";
+ g_pListRemoveViewHandle->pGenListItc->func.text_get = NULL;
+ g_pListRemoveViewHandle->pGenListItc->func.content_get = (void *)__mp_remove_view_get_icon_of_grid_cb;
+ g_pListRemoveViewHandle->pGenListItc->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenListItc->func.del = NULL;
+ g_pListRemoveViewHandle->pGenListItc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListLandscapeItc);
+ g_pListRemoveViewHandle->pGenListLandscapeItc = elm_genlist_item_class_new();
+ g_pListRemoveViewHandle->pGenListLandscapeItc->item_style = "video/1icon.thumbnail.landscape";
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.text_get = NULL;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.content_get = (void *)__mp_remove_view_get_icon_of_grid_cb;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.del = NULL;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow = mp_remove_view_thumbnail_to_genlist_index(nVideoListSize - 1);
+
+ if (mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle()))
+ {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist, g_pListRemoveViewHandle->pGenListLandscapeItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist, g_pListRemoveViewHandle->pGenListItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ }
+
+ return TRUE;
+}
+
+static void __mp_remove_view_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pListRemoveViewHandle) {
+ VideoLogError("__mp_remove_view_rotate_cb IS null");
+ return;
+ }
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ VideoLogInfo("Landscape mode");
+ g_pListRemoveViewHandle->bLandscape = true;
+ } else {
+ VideoLogInfo("Portrait mode");
+ g_pListRemoveViewHandle->bLandscape = false;
+ }
+ if (!g_pListRemoveViewHandle->bFolderDel)
+ __mp_remove_view_arrange_video_list(g_pListRemoveViewHandle->pObjVideosList, LIST_TAB_TYPE_PERSONAL, TRUE);
+ else
+ __mp_remove_view_arrange_folder_list(g_pListRemoveViewHandle->pObjVideosList, LIST_TAB_TYPE_PERSONAL, TRUE);
+ mp_remove_view_change_title_info();
+}
+
+static void __mp_remove_folder_view_append_grid_items(void *pObjVideosList, int nGenItemIndex)
+{
+ if (!g_pListRemoveViewHandle) {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+ MP_DEL_GRID_ITC(g_pListRemoveViewHandle->pGenGridItc_1);
+ g_pListRemoveViewHandle->pGenGridItc_1 = elm_gengrid_item_class_new();
+ g_pListRemoveViewHandle->pGenGridItc_1->item_style = "video/album_grid";
+ g_pListRemoveViewHandle->pGenGridItc_1->func.text_get = (void*)__mp_remove_view_get_label_of_folder_cb;
+ g_pListRemoveViewHandle->pGenGridItc_1->func.content_get = (void*)__mp_remove_folder_view_get_grid_icon_cb;
+ g_pListRemoveViewHandle->pGenGridItc_1->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenGridItc_1->func.del = NULL;
+
+ int nCount = (mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle()) ? VP_GENLIST_THUMB_LANDSPACE_COUNT : VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nGenItemIndex * nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nFolderListSize); nIndex++) {
+ gridItem = elm_gengrid_item_append(pObjVideosList, g_pListRemoveViewHandle->pGenGridItc_1, (void *)nIndex, __mp_remove_view_select_grid_item_cb, (void *)nIndex);
+ elm_gengrid_item_select_mode_set(gridItem, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_data_set(gridItem, (void *)nIndex);
+ }
+}
+
+static Evas_Object *__mp_remove_folder_view_get_icon_of_grid_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ if (!g_pListRemoveViewHandle || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfShareList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int)pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_remove_view_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid = __mp_remove_view_create_gengrid(pObject, nWidth, nHeight);
+ __mp_remove_folder_view_append_grid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+static bool __mp_remove_view_append_folder_grid_layout(void *pGenlist)
+{
+ if (!pGenlist || !g_pListRemoveViewHandle) {
+ VideoLogError("error handle.");
+ return FALSE;
+ }
+ int nIndex = 0;
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+ if (nFolderListSize <= 0) {
+ VideoLogWarning("nFolderListSize = %d", nFolderListSize);
+ return FALSE;
+ }
+ else
+ VideoLogWarning("nFolderListSize = %d", nFolderListSize);
+
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListItc);
+ g_pListRemoveViewHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pListRemoveViewHandle->pGenListItc->item_style = "video/1icon.thumbnail";
+ g_pListRemoveViewHandle->pGenListItc->func.text_get = NULL;
+ g_pListRemoveViewHandle->pGenListItc->func.content_get = (void *)__mp_remove_folder_view_get_icon_of_grid_cb;
+ g_pListRemoveViewHandle->pGenListItc->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenListItc->func.del = NULL;
+ g_pListRemoveViewHandle->pGenListItc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListLandscapeItc);
+ g_pListRemoveViewHandle->pGenListLandscapeItc = elm_genlist_item_class_new();
+ g_pListRemoveViewHandle->pGenListLandscapeItc->item_style = "video/1icon.thumbnail.landscape";
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.text_get = NULL;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.content_get = (void *)__mp_remove_folder_view_get_icon_of_grid_cb;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->func.del = NULL;
+ g_pListRemoveViewHandle->pGenListLandscapeItc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow = mp_remove_view_thumbnail_to_genlist_index(nFolderListSize - 1);
+
+ if (mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle()))
+ {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist, g_pListRemoveViewHandle->pGenListLandscapeItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist, g_pListRemoveViewHandle->pGenListItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ }
+
+ return TRUE;
+}
+#endif
+
+/*static void __mp_remove_view_append_folder_items(void *pObjVideosList)
+{
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+
+ int nIndex = 0;
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+ MP_DEL_ITC(g_pListRemoveViewHandle->pGenListItc);
+ g_pListRemoveViewHandle->pGenListItc = elm_genlist_item_class_new();
+
+ g_pListRemoveViewHandle->pGenListItc->item_style = "2line.top"; //"video/edit_folder";
+ g_pListRemoveViewHandle->pGenListItc->func.text_get = (void*)__mp_remove_view_get_label_of_folder_cb;
+ g_pListRemoveViewHandle->pGenListItc->func.content_get = (void*)__mp_remove_view_get_icon_of_folder_cb;
+ g_pListRemoveViewHandle->pGenListItc->func.state_get = NULL;
+ g_pListRemoveViewHandle->pGenListItc->func.del = NULL;
+
+ for (nIndex = 0; nIndex < nFolderListSize; nIndex++)
+ {
+ elm_genlist_item_append(pObjVideosList, g_pListRemoveViewHandle->pGenListItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, __mp_remove_view_select_video_item_cb, NULL);
+ }
+}*/
+
+void mp_remove_view_set_value(int nTotalSize)
+{
+ VideoLogInfo("");
+
+ if (g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved)
+ {
+ free(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved);
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved = NULL;
+ }
+ if (nTotalSize > 0) {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved = (bool*)malloc(sizeof(bool) * nTotalSize);
+ memset(g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved, 0, sizeof(bool) * nTotalSize);
+ }
+
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+}
+
+static bool __mp_remove_view_arrange_folder_list(void *pObjVideosList, MpVideoListTabType eTabType, bool bNeedSvc)
+{
+ if (!g_pListRemoveViewWidget || !g_pListRemoveViewHandle)
+ {
+ VideoLogError("No exist g_pRemoveListViewWidget.");
+ return FALSE;
+ }
+
+ if (!pObjVideosList)
+ {
+ VideoLogError("No exist genlist object.");
+ return FALSE;
+ }
+ int nFolderListSize = 0;
+
+ mp_util_svc_destory_video_folder_list();
+ mp_util_svc_extract_video_folder_list_by_type(mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_PHONE);
+ nFolderListSize = mp_util_svc_get_video_folder_size();
+
+ if (bNeedSvc)
+ {
+ //__mp_remove_view_update_selected_video_list();
+ }
+ else
+ {
+ mp_remove_view_set_value(nFolderListSize);
+ }
+
+
+ if (LIST_TAB_TYPE_PERSONAL == eTabType)
+ {
+ VideoLogInfo("nFolderListSize : %d", nFolderListSize);
+
+ elm_genlist_clear(pObjVideosList);
+
+ if (nFolderListSize > 0)
+ {
+ //__mp_remove_view_append_folder_items(pObjVideosList);
+ __mp_remove_view_append_folder_grid_layout(pObjVideosList);
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pListRemoveViewHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+ }
+ else
+ {
+ VideoLogError("invalid Tabbar type!");
+ }
+
+ elm_genlist_decorate_mode_set(pObjVideosList, EINA_TRUE);
+
+ evas_object_show(pObjVideosList);
+ return TRUE;
+}
+
+static bool __mp_remove_view_arrange_video_list(void *pObjVideosList, MpVideoListTabType eTabType, bool bNeedSvc)
+{
+ if (!g_pListRemoveViewWidget || !g_pListRemoveViewHandle)
+ {
+ VideoLogError("No exist g_pRemoveListViewWidget.");
+ return FALSE;
+ }
+
+ if (!pObjVideosList)
+ {
+ VideoLogError("No exist genlist object.");
+ return FALSE;
+ }
+
+ int nVideoListSize = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL == eTabType)
+ {
+ int nSortType = mp_remove_view_get_sort_type();
+ int nViewType = mp_view_as_ctrl_get_type();
+ if ((nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) && g_pListRemoveViewHandle->pFolderPath)
+ {
+ if (g_pListRemoveViewHandle->pFolderPath)
+ {
+ VideoSecureLogInfo("szFolderPath : %s", g_pListRemoveViewHandle->pFolderPath);
+ if (vp_file_exists(g_pListRemoveViewHandle->pFolderPath))
+ {
+ //update video-list
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pListRemoveViewHandle->pFolderPath, nSortType, MP_LIST_VIEW_PHONE);
+ if (bNeedSvc)
+ {
+ //__mp_remove_view_update_selected_video_list();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ mp_remove_view_set_value(nVideoListSize);
+ }
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pListRemoveViewHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+ }
+ }
+ else
+ {
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type(nSortType, MP_LIST_VIEW_PHONE);
+ if (bNeedSvc)
+ {
+ //__mp_remove_view_update_selected_video_list();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ mp_remove_view_set_value(nVideoListSize);
+ }
+ }
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (nVideoListSize > 0)
+ {
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+ if (g_pListRemoveViewHandle->bThumbnailView)
+ {
+ elm_genlist_clear(pObjVideosList);
+ __mp_remove_view_append_grid_layout(pObjVideosList);
+ }
+ else
+#endif
+ {
+ elm_genlist_clear(pObjVideosList);
+ mp_remove_view_append_video_items(pObjVideosList);
+ }
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pListRemoveViewHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+ }
+ else
+ {
+ VideoLogError("invalid Tabbar type!");
+ }
+#ifdef VS_FEATURE_THUMBNAIL_VIEW_TODO //
+ if (!g_pListRemoveViewHandle->bThumbnailView) {
+ elm_genlist_decorate_mode_set(pObjVideosList, EINA_TRUE);
+ }
+#endif //
+ evas_object_show(pObjVideosList);
+ return TRUE;
+}
+
+Evas_Object *mp_remove_view_init_internal_layout(void *pParent)
+{
+ if (!pParent)
+ {
+ VideoLogError("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pListRemoveViewWidget->pRemoveViewBaselayout)
+ {
+ evas_object_del(g_pListRemoveViewWidget->pRemoveViewBaselayout);
+ g_pListRemoveViewWidget->pRemoveViewBaselayout = NULL;
+ }
+
+ g_pListRemoveViewWidget->pRemoveViewBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pListRemoveViewWidget->pRemoveViewBaselayout, VIDEO_PLAYER_REMOVE_LIST_EDJ, REMOVE_LIST_EDJ_GROUP);
+ evas_object_size_hint_weight_set(g_pListRemoveViewWidget->pRemoveViewBaselayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListRemoveViewWidget->pRemoveViewBaselayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ return g_pListRemoveViewWidget->pRemoveViewBaselayout;
+}
+
+static bool __mp_remove_view_get_selected_video_list(int nSelectedSize)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return FALSE;
+ }
+
+ int nVideoListSize = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL != g_pListRemoveViewHandle->eTabType)
+ {
+ return FALSE;
+ }
+
+ if (!g_pListRemoveViewHandle->nSelectCounterForEditList || nSelectedSize < 1)
+ {
+ return FALSE;
+ }
+
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ __mp_remove_view_free_selected_list();
+
+ int nIndex = 0;
+ int nCounter = 0;
+ char *pMediaId = NULL;
+
+ g_pListRemoveViewHandle->pSelectedList = (char**) calloc (sizeof(char*), nSelectedSize);
+ VideoLogInfo("current edit size===%d", nSelectedSize);
+
+ for (nCounter = 0; nCounter <nVideoListSize; nCounter++)
+ {
+ if (g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nCounter])
+ {
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ pMediaId = mp_util_svc_get_video_folder_id(nCounter);
+ }
+ else
+ {
+ pMediaId = mp_util_svc_get_video_id_by_index(nCounter);
+ }
+ if (pMediaId != NULL)
+ {
+ g_pListRemoveViewHandle->pSelectedList[nIndex] = strdup(pMediaId);
+ MP_FREE_STRING(pMediaId);
+ nIndex++;
+ }
+ }
+ }
+ return TRUE;
+}
+
+/*static void __mp_remove_view_update_select_all(void)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nItemListSize = 0;
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ nItemListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nItemListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ if (nItemListSize == g_pListRemoveViewHandle->nSelectCounterForEditList)
+ {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = TRUE;
+ }
+ else
+ {
+ g_pListRemoveViewHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ VideoLogInfo("nItemListSize=%d,nSelectCounterForEditList=%d", nItemListSize, g_pListRemoveViewHandle->nSelectCounterForEditList);
+ elm_check_state_set(g_pListRemoveViewWidget->pSelectallbtn, g_pListRemoveViewHandle->bSelectallCheckBoxState);
+}
+
+static void __mp_remove_view_update_selected_video_list(void)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nVideoListSize = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL != g_pListRemoveViewHandle->eTabType)
+ {
+ return;
+ }
+
+
+ MpMediaType eMediaType = MEDIA_TYPE_FILE;
+
+ if (g_pListRemoveViewHandle->bFolderDel)
+ {
+ eMediaType = MEDIA_TYPE_DIRECTORY;
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ }
+ else
+ {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ int nIndex = 0;
+ int nCounter = 0;
+ bool bValidMedia = FALSE;
+ int nTotal = g_pListRemoveViewHandle->nSelectCounterForEditList;
+ VideoLogInfo("OldEditList ===%d", nTotal);
+ g_pListRemoveViewHandle->nSelectCounterForEditList = 0;
+ mp_remove_view_set_value(nVideoListSize);
+
+ if (!g_pListRemoveViewHandle->pSelectedList)
+ {
+ return;
+ }
+
+ while ((nIndex < nTotal) && g_pListRemoveViewHandle->pSelectedList[nIndex])
+ {
+
+ bValidMedia = mp_util_svc_check_valid_media_id(g_pListRemoveViewHandle->pSelectedList[nIndex], eMediaType, &nCounter);
+ if (bValidMedia)
+ {
+ g_pListRemoveViewHandle->pCheckedItemsEditListForRemoved[nCounter] = TRUE;
+ g_pListRemoveViewHandle->nSelectCounterForEditList ++;
+ }
+ nIndex++;
+ }
+
+ //update select all button state
+ __mp_remove_view_update_select_all();
+
+ mp_remove_view_change_title_info();
+
+ if (g_pListRemoveViewHandle->nSelectCounterForEditList > 0)
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_FALSE);
+ else
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+}*/
+
+static void __mp_remove_view_db_changed_cb(void *pUserData)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ bool bNormalShow = TRUE;
+ if (g_pListRemoveViewHandle->bFolderDel) {
+ bNormalShow = __mp_remove_view_arrange_folder_list(g_pListRemoveViewHandle->pObjVideosList, LIST_TAB_TYPE_PERSONAL, TRUE);
+ if (!bNormalShow)
+ {
+ VideoLogError("invalid view");
+ return;
+ }
+ } else {
+ bNormalShow = __mp_remove_view_arrange_video_list(g_pListRemoveViewHandle->pObjVideosList, LIST_TAB_TYPE_PERSONAL, TRUE);
+ if (!bNormalShow)
+ {
+ VideoLogError("invalid view");
+ return;
+ }
+ }
+
+ Elm_Object_Item *pItem = NULL;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW_TODO //
+ if (g_pListRemoveViewHandle->bThumbnailView)
+ {
+ pItem = elm_gengrid_first_item_get(g_pListRemoveViewHandle->pObjVideosList);
+ if (pItem)
+ {
+ elm_gengrid_item_bring_in(pItem, ELM_GENGRID_ITEM_SCROLLTO_IN);
+ }
+ }
+ else
+#endif //
+ {
+ pItem = elm_genlist_first_item_get(g_pListRemoveViewHandle->pObjVideosList);
+ if (pItem)
+ {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+ }
+
+}
+
+static void __mp_remove_view_db_backup_cb(void *pUserData)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+ __mp_remove_view_get_selected_video_list(g_pListRemoveViewHandle->nSelectCounterForEditList);
+
+}
+
+static void __mp_remove_select_all_layout_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ Evas_Object *check = elm_object_part_content_get(g_pListRemoveViewWidget->pSelAllLayout, "elm.icon");
+ Eina_Bool state = elm_check_state_get(check);
+ elm_check_state_set(check, !state);
+ __mp_remove_view_select_all_change_check_box_cb(data, check, NULL);
+}
+
+void mp_remove_view_init(void *pParent, MpVideoListTabType eTabType)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ g_pListRemoveViewWidget->pRemoveViewBaselayout = mp_remove_view_init_internal_layout(pParent);
+ if (!g_pListRemoveViewWidget->pRemoveViewBaselayout) {
+ VideoLogError("pRemoveViewBaselayout is not existed.");
+ return;
+ }
+
+ evas_object_event_callback_add(g_pListRemoveViewWidget->pRemoveViewBaselayout, EVAS_CALLBACK_DEL, __mp_remove_view_base_layout_del_cb, NULL);
+
+ g_pListRemoveViewWidget->pVideoListBox = elm_box_add(g_pListRemoveViewWidget->pRemoveViewBaselayout);
+ if (!g_pListRemoveViewWidget->pVideoListBox) {
+ VideoLogError("pVideoListBox is not existed.");
+ return;
+ }
+
+ evas_object_size_hint_weight_set(g_pListRemoveViewWidget->pVideoListBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListRemoveViewWidget->pVideoListBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ mp_widget_ctrl_create_select_all_layout(g_pListRemoveViewWidget->pVideoListBox, __mp_remove_view_select_all_change_check_box_cb, __mp_remove_select_all_layout_down_cb, (void *)g_pListRemoveViewWidget,
+ &g_pListRemoveViewWidget->pSelectallbtn, &g_pListRemoveViewWidget->pSelAllLayout);
+
+ if (!g_pListRemoveViewWidget->pSelAllLayout) {
+ VideoLogError("pSelAllLayout is not existed.");
+ return;
+ }
+
+ elm_box_pack_start(g_pListRemoveViewWidget->pVideoListBox, g_pListRemoveViewWidget->pSelAllLayout);
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW_TODO //
+ if (g_pListRemoveViewHandle->bThumbnailView)
+ {
+ g_pListRemoveViewHandle->pObjVideosList = elm_gengrid_add(g_pListRemoveViewWidget->pVideoListBox);
+ if (!g_pListRemoveViewHandle->pObjVideosList) {
+ VideoLogError("pVideoGrid is not existed.");
+ return;
+ }
+ evas_object_size_hint_weight_set(g_pListRemoveViewHandle->pObjVideosList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListRemoveViewHandle->pObjVideosList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ int nHeight = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+ int nWidth = VIDEO_GENGRID_ICON_WIDTH * MP_SCALE;
+ elm_gengrid_item_size_set(g_pListRemoveViewHandle->pObjVideosList, nWidth, nHeight);
+ elm_gengrid_align_set(g_pListRemoveViewHandle->pObjVideosList, 0.0, 0.0);
+ elm_gengrid_horizontal_set(g_pListRemoveViewHandle->pObjVideosList, EINA_FALSE);
+ //elm_gengrid_multi_select_set(g_pListRemoveViewHandle->pObjVideosList, EINA_TRUE);
+ }
+ else
+#endif //
+ {
+ g_pListRemoveViewHandle->pObjVideosList = elm_genlist_add(g_pListRemoveViewWidget->pVideoListBox);
+ if (!g_pListRemoveViewHandle->pObjVideosList) {
+ VideoLogError("pObjVideosList is not existed.");
+ return;
+ }
+ elm_scroller_bounce_set(g_pListRemoveViewHandle->pObjVideosList, EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pListRemoveViewHandle->pObjVideosList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pListRemoveViewHandle->pObjVideosList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pListRemoveViewHandle->pObjVideosList, VIDEO_GENLIST_BLOCK_COUNT);
+ elm_genlist_homogeneous_set(g_pListRemoveViewHandle->pObjVideosList, EINA_TRUE);
+ elm_genlist_mode_set(g_pListRemoveViewHandle->pObjVideosList, ELM_LIST_COMPRESS);
+ }
+ g_pListRemoveViewHandle->eTabType = eTabType;
+
+ elm_box_pack_end(g_pListRemoveViewWidget->pVideoListBox, g_pListRemoveViewHandle->pObjVideosList);
+ elm_object_part_content_set(g_pListRemoveViewWidget->pRemoveViewBaselayout, SWALLOW_LISTVIEW_CONTENT, g_pListRemoveViewWidget->pVideoListBox);
+
+ bool bNormalShow = TRUE;
+
+ if (g_pListRemoveViewHandle->bFolderDel) {
+ bNormalShow = __mp_remove_view_arrange_folder_list(g_pListRemoveViewHandle->pObjVideosList, eTabType, FALSE);
+ if (!bNormalShow)
+ {
+ VideoLogError("invalid view");
+ return;
+ }
+ } else {
+ bNormalShow = __mp_remove_view_arrange_video_list(g_pListRemoveViewHandle->pObjVideosList, eTabType, FALSE);
+ if (!bNormalShow)
+ {
+ VideoLogError("invalid view");
+ return;
+ }
+ }
+
+ char *szTitle = g_strdup_printf(VIDEOS_SELECTVIEW_HEADER_PD_SELECTED, g_pListRemoveViewHandle->nSelectCounterForEditList);
+
+ g_pListRemoveViewHandle->pNaviFrameItem = elm_naviframe_item_push(g_pListRemoveViewHandle->pNaviFrameHandle, szTitle, NULL, NULL, g_pListRemoveViewWidget->pRemoveViewBaselayout, NULL);
+ elm_object_item_domain_text_translatable_set(g_pListRemoveViewHandle->pNaviFrameItem, VIDEOS_STRING, EINA_TRUE);
+ elm_naviframe_item_pop_cb_set(g_pListRemoveViewHandle->pNaviFrameItem, __mp_remove_view_back_btn_cb, g_pListRemoveViewHandle);
+
+ elm_naviframe_item_title_enabled_set(g_pListRemoveViewHandle->pNaviFrameItem, EINA_TRUE, EINA_FALSE);
+ evas_object_smart_callback_add(g_pListRemoveViewHandle->pNaviFrameHandle, "transition,finished", mp_remove_view_naviframe_transition_effect_cb, NULL);
+
+ /*g_pListRemoveViewWidget->pCancelbtn = mp_widget_ctrl_create_navi_left_btn(g_pListRemoveViewHandle->pNaviFrameHandle, g_pListRemoveViewHandle->pNaviFrameItem, NULL, __mp_remove_view_run_cancel_items_cb, (void *)g_pListRemoveViewHandle);
+ g_pListRemoveViewWidget->pSavebtn = mp_widget_ctrl_create_navi_right_btn(g_pListRemoveViewHandle->pNaviFrameHandle, g_pListRemoveViewHandle->pNaviFrameItem, NULL, __mp_remove_view_run_delete_items_cb, (void *)g_pListRemoveViewHandle);*/
+
+ g_pListRemoveViewWidget->pCancelbtn = elm_button_add(g_pListRemoveViewHandle->pNaviFrameHandle);
+ elm_object_style_set(g_pListRemoveViewWidget->pCancelbtn, "naviframe/title_left");
+ //elm_object_text_set(g_pListRemoveViewWidget->pCancelbtn, VIDEOS_DELETEVIEW_CANCEL_IDS);
+ mp_util_set_translate_str(g_pListRemoveViewWidget->pCancelbtn, "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB");
+ elm_object_signal_callback_add(g_pListRemoveViewWidget->pCancelbtn, "elm,action,click", "", __mp_remove_view_run_cancel_items_cb, (void *)g_pListRemoveViewHandle);
+ elm_object_item_part_content_set(g_pListRemoveViewHandle->pNaviFrameItem, "title_left_btn", g_pListRemoveViewWidget->pCancelbtn);
+ evas_object_show(g_pListRemoveViewWidget->pCancelbtn);
+
+ g_pListRemoveViewWidget->pSavebtn = elm_button_add(g_pListRemoveViewHandle->pNaviFrameHandle);
+ elm_object_style_set(g_pListRemoveViewWidget->pSavebtn, "naviframe/title_right");
+ //elm_object_text_set(g_pListRemoveViewWidget->pSavebtn, VIDEOS_DELETEVIEW_DELETE_IDS);
+ mp_util_set_translate_str(g_pListRemoveViewWidget->pSavebtn, "IDS_TPLATFORM_ACBUTTON_DELETE_ABB");
+ elm_object_signal_callback_add(g_pListRemoveViewWidget->pSavebtn, "elm,action,click", "", __mp_remove_view_run_delete_items_cb, (void *)g_pListRemoveViewHandle);
+ elm_object_item_part_content_set(g_pListRemoveViewHandle->pNaviFrameItem, "title_right_btn", g_pListRemoveViewWidget->pSavebtn);
+ evas_object_show(g_pListRemoveViewWidget->pSavebtn);
+
+ elm_object_disabled_set(g_pListRemoveViewWidget->pSavebtn, EINA_TRUE);
+
+ evas_object_show(g_pListRemoveViewHandle->pObjVideosList);
+ evas_object_show(g_pListRemoveViewWidget->pRemoveViewBaselayout);
+
+ mp_util_db_set_update_fun(g_pListRemoveViewHandle->euLev, __mp_remove_view_db_changed_cb);
+ mp_util_db_set_backup_fun(g_pListRemoveViewHandle->euLev, __mp_remove_view_db_backup_cb);
+
+ MP_FREE_STRING(szTitle);
+ mp_util_hide_indicator();
+}
+
+void mp_remove_view_push(void *pNaviFrame, ListRemoveViewCbFunc pUpdateViewCb, ChangeListRemoveViewCbFunc pChangeViewCb, char *pFolderPath, MpVideoListTabType eTabType)
+{
+ VideoLogInfo("");
+ mp_remove_view_destroy();
+ g_pListRemoveViewHandle = (st_VideoListRemoveViewHandle*)calloc(1, sizeof(st_VideoListRemoveViewHandle));
+ g_pListRemoveViewWidget = (st_VideoListRemoveViewWidget*)calloc(1, sizeof(st_VideoListRemoveViewWidget));
+
+ memset(g_pListRemoveViewHandle, 0, sizeof(st_VideoListRemoveViewHandle));
+ memset(g_pListRemoveViewWidget, 0, sizeof(st_VideoListRemoveViewWidget));
+ mp_remove_view_reset_value();
+
+ g_pListRemoveViewHandle->pNaviFrameHandle = pNaviFrame;
+ g_pListRemoveViewHandle->pChangeViewUserCbFunc = pChangeViewCb;
+ g_pListRemoveViewHandle->pChangeViewUpdateFunc = pUpdateViewCb;
+
+ if (pFolderPath) {
+ g_pListRemoveViewHandle->pFolderPath = strdup(pFolderPath);
+ }
+ g_pListRemoveViewHandle->bUpdateList = FALSE;
+ g_pListRemoveViewHandle->euLev = MP_DB_UPDATE_LEV_1;
+
+ int nViewType = mp_view_as_ctrl_get_type();
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST && g_pListRemoveViewHandle->pFolderPath) {
+ g_pListRemoveViewHandle->euLev = MP_DB_UPDATE_LEV_2;
+ }
+
+ if ((nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) && (!g_pListRemoveViewHandle->pFolderPath) && (LIST_TAB_TYPE_PERSONAL == eTabType)) {
+ g_pListRemoveViewHandle->bFolderDel = TRUE;
+ } else {
+ g_pListRemoveViewHandle->bFolderDel = FALSE;
+ }
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+ if ((nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST || nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) && (LIST_TAB_TYPE_PERSONAL == eTabType)) {
+ g_pListRemoveViewHandle->bThumbnailView = TRUE;
+ } else {
+ g_pListRemoveViewHandle->bThumbnailView = FALSE;
+ }
+#endif //
+ mp_remove_view_init(g_pListRemoveViewHandle->pNaviFrameHandle, eTabType);
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_remove_view_rotate_cb, (void*)g_pListRemoveViewHandle);
+}
+
+void mp_remove_view_pop(void)
+{
+ VideoLogInfo("");
+ if (!g_pListRemoveViewHandle)
+ {
+ VideoLogError("No existed handle of remove view.");
+ return;
+ }
+
+ // KEEP BELOW CALLING SEQUENCE OF FUNCTION.
+ bool bUpdateList = FALSE;
+ if (g_pListRemoveViewHandle->bUpdateList)
+ {
+ if (g_pListRemoveViewHandle->pChangeViewUpdateFunc)
+ {
+ bUpdateList = TRUE;
+ g_pListRemoveViewHandle->pChangeViewUpdateFunc(LIST_UPDATE_TYPE_ALL);
+ }
+ }
+
+ if (!bUpdateList)
+ {
+ if (g_pListRemoveViewHandle->pChangeViewUserCbFunc)
+ {
+ g_pListRemoveViewHandle->pChangeViewUserCbFunc();
+ }
+ }
+
+}
+
+bool mp_remove_view_is_top_view(void)
+{
+ VideoLogInfo("");
+
+ return FALSE;
+}
+
+void mp_remove_view_change_language(void)
+{
+ if (!g_pListRemoveViewHandle || !g_pListRemoveViewWidget)
+ {
+ VideoLogError("No existed handle of remove view.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_remove_view_change_title_info();
+}
+
+
+static void
+__mp_remove_view_base_layout_del_cb(void *pUserData, Evas *e, Evas_Object *pObject, void *pEventInfo)
+{
+ //evas_object_event_callback_del(g_pListRemoveViewWidget->pRemoveViewBaselayout, EVAS_CALLBACK_DEL, __mp_remove_view_base_layout_del_cb);
+
+ __mp_remove_view_reset();
+}
+
diff --git a/src/view/mp-video-list-share-via-view.c b/src/view/mp-video-list-share-via-view.c
new file mode 100644
index 0000000..b27487d
--- /dev/null
+++ b/src/view/mp-video-list-share-via-view.c
@@ -0,0 +1,1987 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+
+#include "mp-util.h"
+#include "vp-file-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-list-share-via-view.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-rotate-ctrl.h"
+#include "videos-view-mgr.h"
+
+#define VIDEO_SELECTED_INFO_TIMER 4.0
+#define FIRST_SHARE_ITEM_OFFSET 1
+#define VIDEO_SHARE_ITEM_MAX 30
+
+typedef struct {
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ /* used for list view ,thumbnail view */
+ void *pObjVideosList;
+
+ Elm_Genlist_Item_Class *pGenListItc;
+ Elm_Genlist_Item_Class *pGenListLandscapeItc;
+ Elm_Gengrid_Item_Class *pGenGridItc_1;
+ Elm_Gengrid_Item_Class *pGenGridItc_2;
+
+ bool *pCheckedItemsEditList;
+ /* save selected video id */
+ char **pSelectedList;
+ bool bSelectallCheckBoxState;
+ int nSelectCounterForEditList;
+ MpMediaSvcSortType nSortType;
+ MpDbUpdateViewLev euLev;
+ ChangeListShareViewCbFunc pChangeViewUserCbFunc;
+ char *pFolderPath;
+
+ MpVideoListTabType eTabType;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ bool bLandscape;
+ bool bThumbnailView;
+#endif
+} st_VideoListShareViaViewHandle;
+
+typedef struct {
+ /* Evas_Object *pSelectionInfoLayout; */
+ Evas_Object *pVideoListBox;
+ Evas_Object *pChareViaViewBaselayout;
+ Evas_Object *pSelectallbtn;
+ Evas_Object *pSelAllLayout;
+ Evas_Object *pSavebtn;
+ Evas_Object *pCancelbtn;
+
+} st_VideoListShareViaViewWidget;
+
+static st_VideoListShareViaViewHandle *g_pShareViaHandle = NULL;
+static st_VideoListShareViaViewWidget *g_pShareViaWidget = NULL;
+
+int mp_share_view_get_sort_type(void);
+bool __mp_share_view_arrange_video_list(void *pObjVideosList, bool bNeedSvc);
+void mp_share_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo);
+void mp_share_view_change_title_info(void);
+static void __mp_share_view_base_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject, void *pEventInfo);
+static void __mp_share_via_view_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+static bool __mp_share_view_get_selected_video_list(int nSelectedSize);
+/* static void __mp_share_view_update_selected_video_list(void); */
+
+static void __mp_share_view_free_selected_list(void)
+{
+ if (!g_pShareViaHandle || !g_pShareViaHandle->pSelectedList) {
+ return;
+ }
+ int nIndex = 0;
+ while (g_pShareViaHandle->pSelectedList[nIndex]) {
+ nIndex++;
+ MP_FREE_STRING(g_pShareViaHandle->pSelectedList[nIndex]);
+ }
+ MP_FREE_STRING(g_pShareViaHandle->pSelectedList);
+}
+
+void mp_share_view_update_all_check_box(void)
+{
+ VideoLogInfo("");
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogInfo("genlist is NULL");
+ return;
+ }
+
+ if (nVideoListSize < 1) {
+ VideoLogInfo("nVideoListSize < 1:%d", nVideoListSize);
+ return;
+ }
+
+ Evas_Object *check_box = NULL;
+ Evas_Object *check_box_layout = NULL;
+ Elm_Object_Item *currentItem = NULL;
+ Elm_Object_Item *currentItemGengrid = NULL;
+ int nVideoItemIndex = 0;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ if (g_pShareViaHandle->bThumbnailView) {
+ currentItem = elm_genlist_first_item_get(
+ g_pShareViaHandle->pObjVideosList);
+ nVideoItemIndex = 0;
+ while (currentItem && (nVideoItemIndex < nVideoListSize)) {
+ Evas_Object *gengrid = elm_object_item_part_content_get(
+ currentItem, "elm.icon");
+ currentItemGengrid = elm_gengrid_first_item_get(gengrid);
+ while (currentItemGengrid && (nVideoItemIndex < nVideoListSize)) {
+ Evas_Object *check_box =
+ elm_object_item_part_content_get(
+ currentItemGengrid,
+ "elm.swallow.end");
+ if (check_box) {
+ elm_check_state_set(check_box,
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex]);
+ }
+ currentItemGengrid = elm_gengrid_item_next_get(currentItemGengrid);
+ nVideoItemIndex++;
+ }
+ currentItem = elm_genlist_item_next_get(currentItem);
+ }
+
+ } else
+#endif
+ {
+ currentItem = elm_genlist_first_item_get(g_pShareViaHandle->pObjVideosList);
+ nVideoItemIndex = 0;
+ while (currentItem && (nVideoItemIndex < nVideoListSize)) {
+ check_box_layout = elm_object_item_part_content_get(
+ currentItem, "elm.icon.2");
+ check_box = elm_object_part_content_get(check_box_layout,
+ "elm.swallow.content");
+ if (check_box) {
+ elm_check_state_set(check_box,
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex]);
+ }
+ currentItem = elm_genlist_item_next_get(currentItem);
+ nVideoItemIndex++;
+ }
+ }
+}
+
+void mp_share_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pShareViaHandle) {
+ evas_object_smart_callback_del(g_pShareViaHandle->pNaviFrameHandle,
+ "transition,finished", mp_share_view_naviframe_transition_effect_cb);
+ __mp_share_view_free_selected_list();
+
+ MP_DEL_OBJ(g_pShareViaHandle->pObjVideosList);
+ MP_DEL_ITC(g_pShareViaHandle->pGenListItc);
+ MP_DEL_ITC(g_pShareViaHandle->pGenListLandscapeItc);
+ MP_DEL_GRID_ITC(g_pShareViaHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pShareViaHandle->pGenGridItc_2);
+ MP_FREE_STRING(g_pShareViaHandle->pCheckedItemsEditList);
+ MP_FREE_STRING(g_pShareViaHandle->pFolderPath);
+ evas_object_smart_callback_del(
+ (Evas_Object *)mp_util_get_main_window_handle(),
+ "wm,rotation,changed", __mp_share_via_view_rotate_cb);
+
+ MP_FREE_STRING(g_pShareViaHandle);
+ }
+
+ if (g_pShareViaWidget) {
+
+ MP_DEL_OBJ(g_pShareViaWidget->pSelectallbtn);
+ MP_DEL_OBJ(g_pShareViaWidget->pSelAllLayout);
+ MP_DEL_OBJ(g_pShareViaWidget->pVideoListBox);
+ MP_DEL_OBJ(g_pShareViaWidget->pChareViaViewBaselayout);
+ MP_DEL_OBJ(g_pShareViaWidget->pSavebtn);
+ MP_DEL_OBJ(g_pShareViaWidget->pCancelbtn);
+
+ MP_FREE_STRING(g_pShareViaWidget);
+ }
+}
+
+static void __mp_share_view_reset(void)
+{
+ VideoLogInfo("");
+
+ if (g_pShareViaHandle) {
+ mp_util_db_set_update_fun(g_pShareViaHandle->euLev, NULL);
+ mp_util_db_set_backup_fun(g_pShareViaHandle->euLev, NULL);
+ evas_object_smart_callback_del(
+ g_pShareViaHandle->pNaviFrameHandle,
+ "transition,finished",
+ mp_share_view_naviframe_transition_effect_cb);
+ evas_object_smart_callback_del((Evas_Object *)mp_util_get_main_window_handle(),
+ "wm,rotation,changed", __mp_share_via_view_rotate_cb);
+ __mp_share_view_free_selected_list();
+
+ g_pShareViaHandle->pObjVideosList = NULL;
+
+ MP_DEL_ITC(g_pShareViaHandle->pGenListItc);
+ MP_DEL_ITC(g_pShareViaHandle->pGenListLandscapeItc);
+ MP_DEL_GRID_ITC(g_pShareViaHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pShareViaHandle->pGenGridItc_2);
+ MP_FREE_STRING(g_pShareViaHandle->pCheckedItemsEditList);
+ MP_FREE_STRING(g_pShareViaHandle->pFolderPath);
+
+ MP_FREE_STRING(g_pShareViaHandle);
+ }
+
+ if (g_pShareViaWidget) {
+ MP_DEL_OBJ(g_pShareViaWidget->pSelectallbtn);
+ g_pShareViaWidget->pVideoListBox = NULL;
+ g_pShareViaWidget->pSelAllLayout = NULL;
+
+ g_pShareViaWidget->pChareViaViewBaselayout = NULL;
+ MP_DEL_OBJ(g_pShareViaWidget->pSavebtn);
+ MP_DEL_OBJ(g_pShareViaWidget->pCancelbtn);
+
+ MP_FREE_STRING(g_pShareViaWidget);
+ }
+}
+
+void mp_share_view_reset_value(void)
+{
+ if (!g_pShareViaHandle) {
+ VideoLogError("[ERR] g_pShareViaHandle is not existed.");
+ return;
+ }
+ VideoLogInfo("");
+
+ g_pShareViaHandle->pNaviFrameHandle = NULL;
+ g_pShareViaHandle->pNaviFrameItem = NULL;
+ g_pShareViaHandle->pChangeViewUserCbFunc = NULL;
+
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ g_pShareViaHandle->nSelectCounterForEditList = 0;
+ g_pShareViaHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+
+ if (g_pShareViaHandle->pNaviFrameItem) {
+ elm_object_item_part_content_unset(g_pShareViaHandle->pNaviFrameItem, "toolbar_more_btn");
+ elm_object_item_part_content_unset(g_pShareViaHandle->pNaviFrameItem, "toolbar");
+ elm_object_item_part_content_unset(g_pShareViaHandle->pNaviFrameItem, "toolbar_button2");
+ }
+}
+
+void mp_share_view_launching_share_panel(void)
+{
+ if (!g_pShareViaHandle || !g_pShareViaHandle->pCheckedItemsEditList) {
+ VideoLogError("g_pShareViaHandle is null.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nErr = 0;
+ int nCounter = 0;
+ int nTotalVideoItem = 0;
+ int nTotalAppendedItem = 0;
+ int nExtraDataSize = 0;
+
+ app_control_h pService = NULL;
+
+ char *pOperation = VIDEO_SHARE_OPERATION_SINGLE;
+ char *szFileUrlForServiceSetUri = NULL;
+ char **szFileUrlArrayForServiceExtraData = NULL;
+
+ nTotalVideoItem = mp_util_svc_get_number_of_video_item_by_type();
+ nExtraDataSize = nTotalVideoItem;
+
+ if (nExtraDataSize) {
+ szFileUrlArrayForServiceExtraData = (char **)calloc(
+ nExtraDataSize, sizeof(char *));
+ }
+
+ /* Extract First URI. */
+ for (nCounter = 0; nCounter < nTotalVideoItem; nCounter++) {
+ if (g_pShareViaHandle->pCheckedItemsEditList[nCounter]) {
+ if (mp_util_svc_is_cloud_storage(nCounter)) {
+ continue;
+ }
+
+ char *szFileUrl = mp_util_svc_get_video_url(nCounter);
+
+ if (szFileUrl) {
+ szFileUrlForServiceSetUri = szFileUrl;
+ nCounter++;
+ break;
+ } else {
+ VideoLogError("szFileUrl is not existed.");
+ }
+ }
+ }
+
+ VideoLogInfo("nCounter = %d", nCounter);
+
+ /* Extract another URI if existing selected items more. */
+ if (nExtraDataSize > 0 && szFileUrlArrayForServiceExtraData) {
+ for (nCounter = 0; nCounter < nTotalVideoItem; nCounter++) {
+ if (g_pShareViaHandle->pCheckedItemsEditList[nCounter]) {
+ if (mp_util_svc_is_cloud_storage(nCounter)) {
+ continue;
+ }
+
+ char *szFileUrl = mp_util_svc_get_video_url(nCounter);
+
+ if (szFileUrl) {
+ if (nTotalAppendedItem < nExtraDataSize) {
+ szFileUrlArrayForServiceExtraData[nTotalAppendedItem] = szFileUrl;
+ VideoSecureLogInfo("Appending share item : %s, Total Appended item : %d", (const char **)szFileUrlArrayForServiceExtraData[nTotalAppendedItem], nTotalAppendedItem);
+ nTotalAppendedItem++;
+ continue;
+ } else {
+ VideoLogWarning("[WARNING] OVERFLOW ALOOCATED MEMORY SIZE.");
+ free(szFileUrl);
+ }
+ } else {
+ VideoLogError("szFileUrl is not existed.");
+ }
+ }
+ }
+ }
+
+ if (nTotalAppendedItem > 1) {
+ pOperation = VIDEO_SHARE_OPERATION_MULTIPLE;
+ }
+
+ if (!szFileUrlForServiceSetUri) {
+ VideoLogWarning("[WARNING] Fail to get uri at first.");
+ goto ERROR_EXCEPTION;
+ }
+
+ nErr = app_control_create(&pService);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("Fail to create ug service handle - [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+
+ nErr = app_control_set_uri(pService, szFileUrlForServiceSetUri);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("Fail to set uri into ug service handle - [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+
+ nErr = app_control_set_operation(pService, pOperation);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("app_control_add_extra_data_array().. [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+ if (nTotalAppendedItem >= 1) {
+ nErr = app_control_add_extra_data_array(pService,
+ "http://tizen.org/appcontrol/data/path",
+ (const char **)szFileUrlArrayForServiceExtraData,
+ nTotalAppendedItem);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogWarning("[WARNING] app_control_add_extra_data_array() [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+ }
+/*
+ nErr = app_control_set_window(pService, elm_win_xwindow_get(
+ mp_util_get_main_window_handle()));
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogWarning("[WARNING] app_control_set_window()... [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+*/
+ nErr = app_control_send_launch_request(pService, NULL, NULL);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogWarning("[WARNING] app_control_send_launch_request().. [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+ elm_naviframe_item_pop(g_pShareViaHandle->pNaviFrameHandle);
+ app_control_destroy(pService);
+ pService = NULL;
+
+ VideoLogInfo("Launching share panel.");
+
+ERROR_EXCEPTION:
+ if (pService) {
+ app_control_destroy(pService);
+ pService = NULL;
+ }
+
+ if (szFileUrlForServiceSetUri) {
+ free(szFileUrlForServiceSetUri);
+ szFileUrlForServiceSetUri = NULL;
+ }
+
+ if (szFileUrlArrayForServiceExtraData) {
+ for (nCounter = 0; nCounter < nExtraDataSize; nCounter++) {
+ if (szFileUrlArrayForServiceExtraData[nCounter]) {
+ free(szFileUrlArrayForServiceExtraData[nCounter]);
+ szFileUrlArrayForServiceExtraData[nCounter] = NULL;
+ }
+ }
+ free(szFileUrlArrayForServiceExtraData);
+ szFileUrlArrayForServiceExtraData = NULL;
+ }
+
+ return;
+}
+
+void __mp_share_view_show_cancel_cb(void *data, Evas_Object *obj,
+ const char *emission, const char *source)
+{
+ if (!g_pShareViaHandle->pNaviFrameHandle) {
+ VideoSecureLogError("g_pShareViaHandle->pNaviFrameHandle is NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_naviframe_item_pop(g_pShareViaHandle->pNaviFrameHandle);
+}
+
+void __mp_share_view_show_share_via_panel_cb(void *data, Evas_Object *obj,
+ const char *emission, const char *source)
+{
+ if (!g_pShareViaHandle) {
+ VideoLogInfo("[ERR] g_pMainViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogInfo("No exist genlist object.");
+ return;
+ }
+
+ VideoLogInfo("[INFO]nSelectCounterForEditList : %d",
+ g_pShareViaHandle->nSelectCounterForEditList);
+ if (g_pShareViaHandle->nSelectCounterForEditList > 0) {
+ mp_share_view_launching_share_panel();
+ /* g_pShareViaHandle->nSelectCounterForEditList = 0; */
+ }
+}
+
+static void __mp_share_view_trans_finished_cb(void *pUserData,
+ Evas_Object *obj, void *event_info)
+{
+ if (!obj) {
+ VideoLogError("[ERR] g_pShareViaHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished",
+ __mp_share_view_trans_finished_cb);
+}
+
+static Eina_Bool mp_share_view_back_btn_cb(void *pUserData,
+ Elm_Object_Item *pItem)
+{
+ if (!g_pShareViaHandle) {
+ VideoLogInfo("[ERR] g_pShareViaHandle is NULL.");
+ return EINA_TRUE;
+ }
+
+ mp_widget_ctrl_disable_navi_handle_focus_except_item(
+ g_pShareViaHandle->pNaviFrameHandle,
+ g_pShareViaHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pShareViaHandle->pNaviFrameHandle,
+ "transition,finished", __mp_share_view_trans_finished_cb,
+ NULL);
+
+ mp_share_view_pop();
+
+ return EINA_TRUE;
+}
+
+void mp_share_view_change_title_info(void)
+{
+ VideoLogInfo("nNumOfSelectdCount : %d",
+ g_pShareViaHandle->nSelectCounterForEditList);
+
+ if (g_pShareViaHandle->nSelectCounterForEditList > 0) {
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_FALSE);
+ } else {
+ VideoLogInfo("Unactivate delete tab.");
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_TRUE);
+ }
+
+ char *szCheckingTotalItem = g_strdup_printf(
+ VIDEOS_SELECTVIEW_HEADER_PD_SELECTED,
+ g_pShareViaHandle->nSelectCounterForEditList);
+ elm_object_item_domain_translatable_part_text_set(
+ g_pShareViaHandle->pNaviFrameItem, "elm.text.title",
+ VIDEOS_STRING, szCheckingTotalItem);
+ MP_FREE_STRING(szCheckingTotalItem);
+}
+
+static void __mp_share_view_select_all_change_check_box_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogError("[ERR]");
+ return;
+ }
+
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogError("No exist pVideoGenlist");
+ return;
+ }
+
+ int nCounter = 0;
+ int nVideoListSize = 0;
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (!g_pShareViaHandle->bSelectallCheckBoxState) {
+ if (nVideoListSize > VIDEO_SHARE_ITEM_MAX) {
+ VideoLogError("nVideoListSize is bigger than VIDEO_SHARE_ITEM_MAX");
+ char *pStrWarning = g_strdup_printf(
+ VIDEOS_NOTIPOP_MSG_SHARE_ITEM_MAX,
+ VIDEO_SHARE_ITEM_MAX);
+ mp_util_ticker_toast_popup(pStrWarning, false, false);
+ MP_FREE_STRING(pStrWarning);
+ elm_check_state_set(g_pShareViaWidget->pSelectallbtn, g_pShareViaHandle->bSelectallCheckBoxState);
+ return;
+ }
+ g_pShareViaHandle->bSelectallCheckBoxState = TRUE;
+ g_pShareViaHandle->nSelectCounterForEditList = nVideoListSize;
+ } else {
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ g_pShareViaHandle->nSelectCounterForEditList = 0;
+
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_TRUE);
+ }
+
+ elm_check_state_set(g_pShareViaWidget->pSelectallbtn,
+ g_pShareViaHandle->bSelectallCheckBoxState);
+
+ mp_share_view_change_title_info();
+
+ for (nCounter = 0; nCounter < nVideoListSize; nCounter++) {
+ g_pShareViaHandle->pCheckedItemsEditList[nCounter] =
+ g_pShareViaHandle->bSelectallCheckBoxState;
+ }
+
+ mp_share_view_update_all_check_box();
+
+ /* elm_genlist_realized_items_update(g_pShareViaHandle->pObjVideosList); */
+}
+
+void mp_share_view_delete_select_all(void)
+{
+ VideoLogInfo("");
+
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ g_pShareViaHandle->nSelectCounterForEditList = 0;
+
+ mp_share_view_change_title_info();
+}
+
+/*
+Check box callback
+*/
+void mp_share_view_change_check_box_state_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogError("[ERR]");
+ return;
+ } else {
+ VideoLogError("pObject : %x", pObject);
+ }
+
+ int nVideoItemIndex = (int)pUserData;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ bool bState = elm_check_state_get(pObject);
+
+ if (bState) {
+ if (g_pShareViaHandle->nSelectCounterForEditList >
+ (VIDEO_SHARE_ITEM_MAX - 1)) {
+ char *pStrWarning = g_strdup_printf(
+ VIDEOS_NOTIPOP_MSG_SHARE_ITEM_MAX,
+ VIDEO_SHARE_ITEM_MAX);
+ mp_util_ticker_toast_popup(pStrWarning, false, false);
+ MP_FREE_STRING(pStrWarning);
+
+ if (pObject) {
+ elm_check_state_set(pObject, FALSE);
+ }
+ return;
+ }
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex] = TRUE;
+ g_pShareViaHandle->nSelectCounterForEditList++;
+ if (nVideoListSize ==
+ g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = TRUE;
+ }
+ } else {
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex] = FALSE;
+ if (nVideoListSize == g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are not true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pShareViaHandle->nSelectCounterForEditList--;
+ if (g_pShareViaHandle->nSelectCounterForEditList < 1) {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_TRUE);
+ }
+ }
+
+ elm_check_state_set(g_pShareViaWidget->pSelectallbtn,
+ g_pShareViaHandle->bSelectallCheckBoxState);
+ mp_share_view_change_title_info();
+/*
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+*/
+}
+
+/*
+Genlist callback
+*/
+void mp_share_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pShareViaHandle) {
+ VideoLogError("[ERR] No exist g_pShareViaHandle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pShareViaHandle->pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ pTmpItem = elm_naviframe_top_item_get(g_pShareViaHandle->pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents) {
+ if (pTmpContents == g_pShareViaWidget->pVideoListBox) {
+ } else {
+ VideoLogInfo("It's not pListShareViaViewTabbarLayout in top screen.");
+ }
+ } else {
+ VideoLogError("[ERR] No exist naviframe top item.");
+ }
+}
+
+void mp_share_view_double_tap_cb(void)
+{
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogError("pObjVideosList is not exist.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_genlist_item_bring_in(elm_genlist_first_item_get(
+ g_pShareViaHandle->pObjVideosList),
+ ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+char *mp_share_view_get_duration_time(int nVideoItemIndex)
+{
+ VideoLogInfo("");
+
+ char szTmpStr[STR_LEN_MAX] = {0,};
+ char szTmpStrDurationTime[STR_LEN_MAX] = {0,};
+ char szTmpStrLastPlayedPos[STR_LEN_MAX] = {0,};
+
+ unsigned int nVideoInfoDuration =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ unsigned int nVideoInfoLastTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+
+ mp_util_convert_time(nVideoInfoDuration, szTmpStrDurationTime, FALSE);
+ mp_util_convert_time(nVideoInfoLastTime, szTmpStrLastPlayedPos, TRUE);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "%s/%s", szTmpStrLastPlayedPos,
+ szTmpStrDurationTime);
+
+ return strdup(szTmpStr);
+}
+
+static void __mp_share_view_select_grid_item_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nVideoItemIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_gengrid_selected_item_get(pObject);
+
+ if (pItem) {
+ nVideoItemIndex = (int)elm_object_item_data_get(pItem);
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoLogInfo("BEFORE : nSelectCounterForEditList : %d", g_pShareViaHandle->nSelectCounterForEditList);
+
+ if (g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex]) {
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex] = FALSE;
+ if (nVideoListSize == g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are not true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pShareViaHandle->nSelectCounterForEditList--;
+ if (g_pShareViaHandle->nSelectCounterForEditList < 1) {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_TRUE);
+ }
+ } else {
+ VideoLogInfo("selected count = %d", g_pShareViaHandle->nSelectCounterForEditList);
+ if (g_pShareViaHandle->nSelectCounterForEditList > (VIDEO_SHARE_ITEM_MAX - 1)) {
+ char *pStrWarning = g_strdup_printf(VIDEOS_NOTIPOP_MSG_SHARE_ITEM_MAX, VIDEO_SHARE_ITEM_MAX);
+ mp_util_ticker_toast_popup(pStrWarning, false, false);
+ MP_FREE_STRING(pStrWarning);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ elm_gengrid_item_update(pSelectedItem);
+ }
+ return;
+ }
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex] = TRUE;
+ g_pShareViaHandle->nSelectCounterForEditList++;
+ if (nVideoListSize == g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = TRUE;
+ }
+ }
+
+ VideoLogInfo("AFTER : nSelectCounterForEditList : %d", g_pShareViaHandle->nSelectCounterForEditList);
+ elm_check_state_set(g_pShareViaWidget->pSelectallbtn, g_pShareViaHandle->bSelectallCheckBoxState);
+
+ mp_share_view_change_title_info();
+ elm_gengrid_item_update(pItem);
+ } else {
+ VideoLogInfo("[ERR]Error item number.");
+ }
+}
+
+void mp_share_view_select_video_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogError("No exist genlist object.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nVideoItemIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+
+ if (pItem) {
+ nVideoItemIndex = (int)elm_object_item_data_get(pItem);
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoLogInfo("BEFORE : nSelectCounterForEditList : %d", g_pShareViaHandle->nSelectCounterForEditList);
+
+ if (g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex]) {
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex] = FALSE;
+ if (nVideoListSize == g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are not true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ g_pShareViaHandle->nSelectCounterForEditList--;
+ if (g_pShareViaHandle->nSelectCounterForEditList < 1) {
+ VideoLogInfo("Unactivate delete button.");
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_TRUE);
+ }
+ } else {
+ VideoLogInfo("Unactivate delete button. = %d", g_pShareViaHandle->nSelectCounterForEditList);
+ if (g_pShareViaHandle->nSelectCounterForEditList > (VIDEO_SHARE_ITEM_MAX - 1)) {
+ char *pStrWarning = g_strdup_printf(VIDEOS_NOTIPOP_MSG_SHARE_ITEM_MAX, VIDEO_SHARE_ITEM_MAX);
+ mp_util_ticker_toast_popup(pStrWarning, false, false);
+ MP_FREE_STRING(pStrWarning);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ return;
+ }
+ g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex] = TRUE;
+ g_pShareViaHandle->nSelectCounterForEditList++;
+ if (nVideoListSize == g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = TRUE;
+ }
+ }
+
+ VideoLogInfo("AFTER : nSelectCounterForEditList : %d", g_pShareViaHandle->nSelectCounterForEditList);
+ elm_check_state_set(g_pShareViaWidget->pSelectallbtn, g_pShareViaHandle->bSelectallCheckBoxState);
+ mp_share_view_change_title_info();
+ Evas_Object *check_box_layout = elm_object_item_part_content_get(pItem, "elm.icon.2");
+ Evas_Object *check_box = elm_object_part_content_get(check_box_layout, "elm.swallow.content");
+ if (check_box) {
+ elm_check_state_set(check_box, g_pShareViaHandle->pCheckedItemsEditList[nVideoItemIndex]);
+ }
+
+ /* elm_genlist_item_fields_update(pSelectedItem, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT); */
+ } else {
+ VideoLogInfo("[ERR]Error item number.");
+ }
+
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static char *__mp_share_view_get_label_of_grid_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2")) {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+
+ return NULL;
+}
+#endif
+
+char *mp_share_view_get_label_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top")) {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.sub.left.bottom")) {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+/*
+ else if (!strcmp(pPart, "elm.text.sub.right.bottom")) {
+ unsigned long long nFilesize = 0;
+
+ nFilesize = mp_util_svc_get_video_item_size(nVideoItemIndex);
+ char *szFileSize = mp_util_get_file_size(nFilesize);
+ char *szTitleUtf8 = NULL;
+ if (szFileSize)
+ {
+ szTitleUtf8 = elm_entry_utf8_to_markup(szFileSize);
+ free(szFileSize);
+ szFileSize = NULL;
+ }
+
+ return szTitleUtf8;
+ }
+*/
+
+ return NULL;
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static Evas_Object *__mp_share_view_get_grid_icon_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.swallow.icon")) {
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ pBg = elm_image_add(pObject);
+ MP_FREE_STRING(pThumbIconUri);
+ evas_object_size_hint_aspect_set(pBg, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ elm_image_file_set(pBg, pThumbIconUri, NULL);
+ } else {
+ pBg = mp_util_create_preload_image(pObject, pThumbIconUri, GRID_VIDEO_ICON_WIDTH);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ return pBg;
+ } else if (!strcmp(pPart, "elm.progressbar.icon")) {
+ int nLastPlayedTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime <= 0) {
+ return NULL;
+ }
+
+ double nRatio = 0.0;
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) / ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ return pProgressBar;
+ } else if (!strcmp(pPart, "elm.lock.icon")) {
+ char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex);
+ bool bRet = mp_util_check_video_personal_status(
+ (const char *)pVideoFile);
+ MP_FREE_STRING(pVideoFile);
+ if (bRet) {
+ Evas_Object *pLockIcon = elm_image_add(pObject);
+ elm_image_file_set(pLockIcon,
+ VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
+ evas_object_size_hint_align_set(pLockIcon,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pLockIcon,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pLockIcon);
+ return pLockIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.dropbox.icon")) {
+ bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex);
+ if (bRet) {
+ Evas_Object *pDropboxIcon = elm_image_add(pObject);
+ elm_image_file_set(pDropboxIcon,
+ VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_DROPBOX);
+ evas_object_size_hint_align_set(pDropboxIcon,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pDropboxIcon,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pDropboxIcon);
+ return pDropboxIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.swallow.end")) {
+ Evas_Object *pCheckBox = elm_check_add(pObject);
+ elm_object_style_set(pCheckBox, "default");
+ elm_check_state_pointer_set(pCheckBox,
+ (Eina_Bool *)&(g_pShareViaHandle->pCheckedItemsEditList
+ [nVideoItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ return pCheckBox;
+ }
+ return NULL;
+}
+#endif
+
+Evas_Object *mp_share_view_get_icon_of_video_item_cb(const void *pUserData,
+ Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+ Evas_Object *pLayout = NULL;
+
+ if (!strcmp(pPart, "elm.icon.1")) {
+ pLayout = elm_layout_add(pObject);
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(
+ nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri,
+ VIDEO_ICON_WIDTH);
+ if (pBg)
+ evas_object_show(pBg);
+
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME,
+ "listview.thumbnail.layout");
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(
+ nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(
+ nVideoItemIndex);
+
+ if (nLastPlayedTime > 0) {
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+ Evas_Object *pProgressBar = elm_progressbar_add(
+ pLayout);
+ elm_object_style_set(pProgressBar,
+ "elm/progressbar/horizontal/default");
+ elm_progressbar_horizontal_set(pProgressBar,
+ EINA_TRUE);
+ elm_progressbar_span_size_set(pProgressBar,
+ VIDEO_LIST_PROGRESSBAR_LENGTH);
+ evas_object_size_hint_align_set(pProgressBar,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ elm_layout_content_set(pLayout, "elm.progress.icon",
+ pProgressBar);
+ }
+
+ if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) {
+ VideoLogWarning("Create sub icon is failed.",
+ nVideoItemIndex);
+ }
+
+ return pLayout;
+ } else if (!strcmp(pPart, "elm.icon.2")) {
+ pLayout = elm_layout_add(pObject);
+ Evas_Object *pCheckBox = elm_check_add(pLayout);
+
+ elm_layout_theme_set(pLayout, "layout", "list/C/type.2",
+ "default");
+ evas_object_propagate_events_set(pCheckBox, EINA_FALSE);
+ evas_object_smart_callback_add(pCheckBox, "changed",
+ mp_share_view_change_check_box_state_cb, pUserData);
+ elm_check_state_pointer_set(pCheckBox,
+ (Eina_Bool *)&(g_pShareViaHandle->pCheckedItemsEditList
+ [nVideoItemIndex]));
+
+ evas_object_show(pCheckBox);
+
+ elm_layout_content_set(pLayout, "elm.swallow.content",
+ pCheckBox);
+
+ return pLayout;
+ }
+
+ MP_DEL_OBJ(pLayout);
+ return NULL;
+}
+
+int mp_share_view_get_sort_type(void)
+{
+ switch (mp_sort_ctrl_get_sort_state()) {
+/*
+ case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ g_pShareViaHandle->nSortType =
+ MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break;
+*/
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ g_pShareViaHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ g_pShareViaHandle->nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+/*
+ case MP_LIST_SORT_BY_SIZE:
+ g_pShareViaHandle->nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ g_pShareViaHandle->nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break;
+*/
+ }
+
+ return g_pShareViaHandle->nSortType;
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static void __mp_share_view_append_grid_items(void *pObjVideosList,
+ int nGenItemIndex)
+{
+ if (!g_pShareViaHandle) {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+ MP_DEL_GRID_ITC(g_pShareViaHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pShareViaHandle->pGenGridItc_2);
+ g_pShareViaHandle->pGenGridItc_1 = elm_gengrid_item_class_new();
+ g_pShareViaHandle->pGenGridItc_1->item_style = "video/album_grid";
+ g_pShareViaHandle->pGenGridItc_1->func.text_get =
+ (void *)__mp_share_view_get_label_of_grid_item_cb;
+ g_pShareViaHandle->pGenGridItc_1->func.content_get =
+ (void *)__mp_share_view_get_grid_icon_cb;
+ g_pShareViaHandle->pGenGridItc_1->func.state_get = NULL;
+ g_pShareViaHandle->pGenGridItc_1->func.del = NULL;
+
+ int nCount = (mp_rotate_ctrl_check_landspace_by_win(
+ (Evas_Object *)mp_util_get_main_window_handle()) ?
+ VP_GENLIST_THUMB_LANDSPACE_COUNT :
+ VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nGenItemIndex * nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
+ gridItem = elm_gengrid_item_append(pObjVideosList, g_pShareViaHandle->pGenGridItc_1, (void *)nIndex, __mp_share_view_select_grid_item_cb, (void *)nIndex);
+ elm_gengrid_item_select_mode_set(gridItem, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_data_set(gridItem, (void *)nIndex);
+ }
+}
+
+static Evas_Object *__mp_share_view_create_gengrid(Evas_Object *parent,
+ int nWidth, int nHeight)
+{
+ Evas_Object *pGengrid;
+ pGengrid = elm_gengrid_add(parent);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid is not existed.");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_gengrid_item_size_set(pGengrid, nWidth, nHeight);
+ elm_gengrid_align_set(pGengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pGengrid, EINA_TRUE);
+
+ return pGengrid;
+}
+
+static void mp_share_view_get_icon_dimensions(int *height, int *width)
+{
+ int winHeight = 0;
+ int winWidth = 0;
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &winWidth, &winHeight);
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win(
+ (Evas_Object *)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ *width = winHeight / VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ } else {
+ *width = winWidth / VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ }
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+}
+
+static Evas_Object *__mp_share_view_get_icon_of_grid_cb(const void *pUserData,
+ Evas_Object *pObject, const char *pPart)
+{
+ if (!g_pShareViaHandle || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfShareList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int)pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_share_view_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid = __mp_share_view_create_gengrid(pObject,
+ nWidth, nHeight);
+ __mp_share_view_append_grid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+int mp_share_view_thumbnail_to_genlist_index(int nVideoItemIndex)
+{
+ if (nVideoItemIndex < 0) {
+ VideoLogDebug("invalid nVideoItemIndex");
+ return 0;
+ }
+ int nGenlistIndex = 0;
+ int nItemCount = (mp_rotate_ctrl_check_landspace_by_win(
+ (Evas_Object *)mp_util_get_main_window_handle()) ?
+ VP_GENLIST_THUMB_LANDSPACE_COUNT :
+ VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ nGenlistIndex = nVideoItemIndex/nItemCount;
+ return nGenlistIndex;
+}
+
+static bool __mp_share_view_append_grid_layout(void *pGenlist)
+{
+ if (!pGenlist || !g_pShareViaHandle) {
+ VideoLogError("error handle.");
+ return FALSE;
+ }
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ return FALSE;
+ } else {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ }
+
+ MP_DEL_ITC(g_pShareViaHandle->pGenListItc);
+ g_pShareViaHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pShareViaHandle->pGenListItc->item_style = "video/1icon.thumbnail";
+ g_pShareViaHandle->pGenListItc->func.text_get = NULL;
+ g_pShareViaHandle->pGenListItc->func.content_get =
+ (void *)__mp_share_view_get_icon_of_grid_cb;
+ g_pShareViaHandle->pGenListItc->func.state_get = NULL;
+ g_pShareViaHandle->pGenListItc->func.del = NULL;
+ g_pShareViaHandle->pGenListItc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pShareViaHandle->pGenListLandscapeItc);
+ g_pShareViaHandle->pGenListLandscapeItc = elm_genlist_item_class_new();
+ g_pShareViaHandle->pGenListLandscapeItc->item_style =
+ "video/1icon.thumbnail.landscape";
+ g_pShareViaHandle->pGenListLandscapeItc->func.text_get = NULL;
+ g_pShareViaHandle->pGenListLandscapeItc->func.content_get =
+ (void *)__mp_share_view_get_icon_of_grid_cb;
+ g_pShareViaHandle->pGenListLandscapeItc->func.state_get = NULL;
+ g_pShareViaHandle->pGenListLandscapeItc->func.del = NULL;
+ g_pShareViaHandle->pGenListLandscapeItc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow = mp_share_view_thumbnail_to_genlist_index(
+ nVideoListSize - 1);
+
+ if (mp_rotate_ctrl_check_landspace_by_win(
+ (Evas_Object *)mp_util_get_main_window_handle())) {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist,
+ g_pShareViaHandle->pGenListLandscapeItc,
+ (void *)nIndex,
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ NULL,
+ NULL);
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist,
+ g_pShareViaHandle->pGenListItc,
+ (void *)nIndex,
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ NULL,
+ NULL);
+ }
+ }
+
+ return TRUE;
+}
+
+static void __mp_share_via_view_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pShareViaHandle) {
+ VideoLogError("__mp_share_via_view_rotate_cb IS null");
+ return;
+ }
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win(
+ (Evas_Object *)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ VideoLogInfo("Landscape mode");
+ g_pShareViaHandle->bLandscape = true;
+ } else {
+ VideoLogInfo("Portrait mode");
+ g_pShareViaHandle->bLandscape = false;
+ }
+ __mp_share_view_arrange_video_list(g_pShareViaHandle->pObjVideosList,
+ TRUE);
+ mp_share_view_change_title_info();
+}
+#endif
+
+static void __mp_share_view_append_video_items(void *pObjVideosList)
+{
+ VideoLogInfo("");
+ if (!g_pShareViaHandle) {
+ VideoLogError("No exist g_pShareViaHandle.");
+ return;
+ }
+
+ int nIndex = 0;
+ int nVideoListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ MP_DEL_ITC(g_pShareViaHandle->pGenListItc);
+ g_pShareViaHandle->pGenListItc = elm_genlist_item_class_new();
+/*
+ g_pShareViaHandle->pGenListItc->item_style = "video/edit_list";
+*/
+ g_pShareViaHandle->pGenListItc->item_style = "2line.top";
+ g_pShareViaHandle->pGenListItc->func.text_get =
+ (void *)mp_share_view_get_label_of_video_item_cb;
+ g_pShareViaHandle->pGenListItc->func.content_get =
+ (void *)mp_share_view_get_icon_of_video_item_cb;
+ g_pShareViaHandle->pGenListItc->func.state_get = NULL;
+ g_pShareViaHandle->pGenListItc->func.del = NULL;
+/*
+ g_pShareViaHandle->pGenListItc->decorate_item_style = "mode/slide4";
+ g_pShareViaHandle->pGenListItc->decorate_all_item_style =
+ "edit_default";
+*/
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++) {
+ elm_genlist_item_append(pObjVideosList,
+ g_pShareViaHandle->pGenListItc, (void *)nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ mp_share_view_select_video_item_cb, NULL);
+ }
+}
+
+void mp_share_view_set_value(int nTotalSize)
+{
+ VideoLogInfo("nTotalSize : [%d]", nTotalSize);
+
+ if (g_pShareViaHandle->pCheckedItemsEditList) {
+ free(g_pShareViaHandle->pCheckedItemsEditList);
+ g_pShareViaHandle->pCheckedItemsEditList = NULL;
+ }
+
+ if (nTotalSize > 0) {
+ g_pShareViaHandle->pCheckedItemsEditList =
+ (bool *)malloc(sizeof(bool)*nTotalSize);
+ memset(g_pShareViaHandle->pCheckedItemsEditList, 0,
+ sizeof(bool)*nTotalSize);
+ }
+
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+}
+
+bool __mp_share_view_arrange_video_list(void *pObjVideosList, bool bNeedSvc)
+{
+ if (!g_pShareViaWidget || !g_pShareViaHandle) {
+ VideoLogError("No exist g_pShareViaListViewWidget.");
+ return FALSE;
+ }
+
+ if (!pObjVideosList) {
+ VideoLogError("No exist genlist object.");
+ return FALSE;
+ }
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ int nSortType = mp_share_view_get_sort_type();
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if ((nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) &&
+ (g_pShareViaHandle->pFolderPath)) {
+ VideoSecureLogInfo("szFolderPath : %s",
+ g_pShareViaHandle->pFolderPath);
+ if (g_pShareViaHandle->pFolderPath) {
+ if (vp_file_exists(g_pShareViaHandle->pFolderPath)) {
+ /* update video-list */
+ VideoLogInfo("update delete item");
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(
+ g_pShareViaHandle->pFolderPath,
+ nSortType,
+ MP_LIST_VIEW_PHONE);
+#ifdef ENABLE_DRM_FEATURE
+ mp_util_svc_filter_drm_video_item_list();
+#endif
+ if (bNeedSvc) {
+/*
+ __mp_share_view_update_selected_video_list();
+*/
+ } else {
+ mp_share_view_set_value(nVideoListSize);
+ }
+ } else {
+ VideoLogInfo("popup folder item");
+ elm_naviframe_item_pop(
+ g_pShareViaHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+ }
+ } else {
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_by_item_type(nSortType,
+ MP_LIST_VIEW_PHONE);
+#ifdef ENABLE_DRM_FEATURE
+ mp_util_svc_filter_drm_video_item_list();
+#endif
+ if (bNeedSvc) {
+ /* __mp_share_view_update_selected_video_list(); */
+ } else {
+ mp_share_view_set_value(nVideoListSize);
+ }
+ }
+
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (nVideoListSize > 0) {
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ if (g_pShareViaHandle->bThumbnailView) {
+ elm_genlist_clear(pObjVideosList);
+ __mp_share_view_append_grid_layout(pObjVideosList);
+ } else
+#endif
+ {
+ elm_genlist_clear(pObjVideosList);
+ __mp_share_view_append_video_items(pObjVideosList);
+ }
+ } else {
+ elm_naviframe_item_pop(g_pShareViaHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ if (!g_pShareViaHandle->bThumbnailView) {
+ elm_genlist_decorate_mode_set(pObjVideosList, EINA_TRUE);
+ }
+#endif
+ evas_object_show(pObjVideosList);
+ return TRUE;
+}
+
+Evas_Object *mp_share_view_create_internal_layout(void *pParent)
+{
+ if (!pParent) {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pShareViaWidget->pChareViaViewBaselayout) {
+ evas_object_del(g_pShareViaWidget->pChareViaViewBaselayout);
+ g_pShareViaWidget->pChareViaViewBaselayout = NULL;
+ }
+
+ g_pShareViaWidget->pChareViaViewBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pShareViaWidget->pChareViaViewBaselayout,
+ VIDEO_PLAYER_REMOVE_LIST_EDJ,
+ REMOVE_LIST_EDJ_GROUP);
+ evas_object_size_hint_weight_set(
+ g_pShareViaWidget->pChareViaViewBaselayout,
+ EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(
+ g_pShareViaWidget->pChareViaViewBaselayout,
+ EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ return g_pShareViaWidget->pChareViaViewBaselayout;
+}
+
+static bool __mp_share_view_get_selected_video_list(int nSelectedSize)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return FALSE;
+ }
+
+ int nVideoListSize = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL != g_pShareViaHandle->eTabType) {
+ return FALSE;
+ }
+
+ if (!g_pShareViaHandle->nSelectCounterForEditList ||
+ nSelectedSize < 1) {
+ return FALSE;
+ }
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ __mp_share_view_free_selected_list();
+
+ int nIndex = 0;
+ int nCounter = 0;
+ char *pMediaId = NULL;
+
+ g_pShareViaHandle->pSelectedList = (char **)calloc(sizeof(char*),
+ nSelectedSize);
+ VideoLogInfo("current edit size===%d", nSelectedSize);
+
+ for (nCounter = 0; nCounter < nVideoListSize; nCounter++) {
+ if (g_pShareViaHandle->pCheckedItemsEditList[nCounter]) {
+ pMediaId = mp_util_svc_get_video_id_by_index(nCounter);
+
+ if (pMediaId) {
+ g_pShareViaHandle->pSelectedList[nIndex] =
+ strdup(pMediaId);
+ MP_FREE_STRING(pMediaId);
+ nIndex++;
+ }
+ }
+ }
+ return TRUE;
+}
+
+/*
+static void __mp_share_view_update_select_all(void)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nVideoListSize = 0;
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ if (nVideoListSize == g_pShareViaHandle->nSelectCounterForEditList) {
+ VideoLogInfo("All check box of edit list state are true.");
+ g_pShareViaHandle->bSelectallCheckBoxState = TRUE;
+ }
+ else
+ {
+ g_pShareViaHandle->bSelectallCheckBoxState = FALSE;
+ }
+
+ VideoLogInfo("nVideoListSize=%d,nSelectCounterForEditList=%d",
+ nVideoListSize, g_pShareViaHandle->nSelectCounterForEditList);
+ elm_check_state_set(g_pShareViaWidget->pSelectallbtn,
+ g_pShareViaHandle->bSelectallCheckBoxState);
+}
+
+static void __mp_share_view_update_selected_video_list(void)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nVideoListSize = 0;
+
+ if (LIST_TAB_TYPE_PERSONAL != g_pShareViaHandle->eTabType) {
+ return;
+ }
+
+ MpMediaType eMediaType = MEDIA_TYPE_FILE;
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ mp_share_view_set_value(nVideoListSize);
+
+ int nIndex = 0;
+ int nCounter = 0;
+ bool bValidMedia = FALSE;
+ int nTotal = g_pShareViaHandle->nSelectCounterForEditList;
+ VideoLogInfo("OldEditList = %d", nTotal);
+ g_pShareViaHandle->nSelectCounterForEditList = 0;
+
+ if (!g_pShareViaHandle->pSelectedList) {
+ return;
+ }
+
+ while ((nIndex < nTotal) && g_pShareViaHandle->pSelectedList[nIndex]) {
+
+ bValidMedia = mp_util_svc_check_valid_media_id(
+ g_pShareViaHandle->pSelectedList[nIndex], eMediaType,
+ &nCounter);
+ if (bValidMedia) {
+ g_pShareViaHandle->pCheckedItemsEditList[nCounter] =
+ TRUE;
+ g_pShareViaHandle->nSelectCounterForEditList++;
+ }
+ nIndex++;
+ }
+
+ __mp_share_view_update_select_all();
+
+ mp_share_view_change_title_info();
+
+ if (g_pShareViaHandle->nSelectCounterForEditList > 0)
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn,
+ EINA_FALSE);
+ else
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn,
+ EINA_TRUE);
+
+}
+*/
+
+
+static void __mp_share_view_db_changed_cb(void *pUserData)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+ bool bNormalShow = TRUE;
+ bNormalShow = __mp_share_view_arrange_video_list(
+ g_pShareViaHandle->pObjVideosList, TRUE);
+ if (!bNormalShow) {
+ VideoLogError("invalid view");
+ return;
+ }
+
+ Elm_Object_Item *pItem = NULL;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ if (g_pShareViaHandle->bThumbnailView) {
+ pItem = elm_gengrid_first_item_get(
+ g_pShareViaHandle->pObjVideosList);
+ if (pItem) {
+ elm_gengrid_item_bring_in(pItem,
+ ELM_GENGRID_ITEM_SCROLLTO_IN);
+ }
+ } else
+#endif
+ {
+ pItem = elm_genlist_first_item_get(
+ g_pShareViaHandle->pObjVideosList);
+ if (pItem) {
+ elm_genlist_item_bring_in(pItem,
+ ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+ }
+}
+
+static void __mp_share_view_db_backup_cb(void *pUserData)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+ __mp_share_view_get_selected_video_list(
+ g_pShareViaHandle->nSelectCounterForEditList);
+}
+
+static void __mp_share_select_all_layout_down_cb(void *data, Evas *evas,
+ Evas_Object *obj, void *event_info)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ Evas_Object *check = elm_object_part_content_get(
+ g_pShareViaWidget->pSelAllLayout, "elm.icon");
+ Eina_Bool state = elm_check_state_get(check);
+
+ if (nVideoListSize <= VIDEO_SHARE_ITEM_MAX) {
+ elm_check_state_set(check, !state);
+ }
+
+ __mp_share_view_select_all_change_check_box_cb(data, check, NULL);
+}
+
+void mp_share_view_init(void *pParent)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ g_pShareViaWidget->pChareViaViewBaselayout =
+ mp_share_view_create_internal_layout(pParent);
+ if (!g_pShareViaWidget->pChareViaViewBaselayout) {
+ VideoLogError("pChareViaViewBaselayout is not existed.");
+ return;
+ }
+ evas_object_event_callback_add(
+ g_pShareViaWidget->pChareViaViewBaselayout,
+ EVAS_CALLBACK_DEL,
+ __mp_share_view_base_layout_del_cb,
+ NULL);
+
+ g_pShareViaWidget->pVideoListBox = elm_box_add(
+ g_pShareViaWidget->pChareViaViewBaselayout);
+ if (!g_pShareViaWidget->pVideoListBox) {
+ VideoLogError("pVideoListBox is not existed.");
+ return;
+ }
+
+ evas_object_size_hint_weight_set(g_pShareViaWidget->pVideoListBox,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pShareViaWidget->pVideoListBox,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ mp_widget_ctrl_create_select_all_layout(
+ g_pShareViaWidget->pVideoListBox,
+ __mp_share_view_select_all_change_check_box_cb,
+ __mp_share_select_all_layout_down_cb,
+ (void *)g_pShareViaWidget,
+ &g_pShareViaWidget->pSelectallbtn,
+ &g_pShareViaWidget->pSelAllLayout);
+
+ if (!g_pShareViaWidget->pSelAllLayout) {
+ VideoLogError("pSelAllLayout is not existed.");
+ return;
+ }
+
+ elm_box_pack_start(g_pShareViaWidget->pVideoListBox,
+ g_pShareViaWidget->pSelAllLayout);
+
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ if (g_pShareViaHandle->bThumbnailView) {
+ g_pShareViaHandle->pObjVideosList = elm_genlist_add(
+ g_pShareViaWidget->pVideoListBox);
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogError("pObjVideosList does not exist.");
+ return;
+ }
+ elm_scroller_bounce_set(g_pShareViaHandle->pObjVideosList,
+ EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(
+ g_pShareViaHandle->pObjVideosList, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(
+ g_pShareViaHandle->pObjVideosList, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pShareViaHandle->pObjVideosList,
+ VIDEO_GENLIST_BLOCK_COUNT);
+ elm_genlist_homogeneous_set(g_pShareViaHandle->pObjVideosList,
+ EINA_TRUE);
+ elm_genlist_mode_set(g_pShareViaHandle->pObjVideosList,
+ ELM_LIST_COMPRESS);
+ } else
+#endif
+ {
+ g_pShareViaHandle->pObjVideosList = elm_genlist_add(
+ g_pShareViaWidget->pVideoListBox);
+ if (!g_pShareViaHandle->pObjVideosList) {
+ VideoLogError("pObjVideosList is not existed.");
+ return;
+ }
+ evas_object_size_hint_weight_set(
+ g_pShareViaHandle->pObjVideosList,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(
+ g_pShareViaHandle->pObjVideosList,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pShareViaHandle->pObjVideosList,
+ VIDEO_GENLIST_BLOCK_COUNT);
+ elm_genlist_homogeneous_set(g_pShareViaHandle->pObjVideosList,
+ EINA_TRUE);
+ elm_genlist_mode_set(g_pShareViaHandle->pObjVideosList,
+ ELM_LIST_COMPRESS);
+ }
+
+ elm_box_pack_end(g_pShareViaWidget->pVideoListBox,
+ g_pShareViaHandle->pObjVideosList);
+ elm_object_part_content_set(g_pShareViaWidget->pChareViaViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT, g_pShareViaWidget->pVideoListBox);
+
+ bool bNormalShow = TRUE;
+ bNormalShow = __mp_share_view_arrange_video_list(
+ g_pShareViaHandle->pObjVideosList, FALSE);
+ if (!bNormalShow) {
+ VideoLogError("invalid view");
+ return;
+ }
+
+ char *szTitle = g_strdup_printf(VIDEOS_SELECTVIEW_HEADER_PD_SELECTED,
+ g_pShareViaHandle->nSelectCounterForEditList);
+
+ g_pShareViaHandle->pNaviFrameItem = elm_naviframe_item_push(
+ g_pShareViaHandle->pNaviFrameHandle, szTitle, NULL, NULL,
+ g_pShareViaWidget->pChareViaViewBaselayout, NULL);
+ elm_object_item_domain_text_translatable_set(
+ g_pShareViaHandle->pNaviFrameItem, VIDEOS_STRING, EINA_TRUE);
+ elm_naviframe_item_pop_cb_set(g_pShareViaHandle->pNaviFrameItem,
+ mp_share_view_back_btn_cb, g_pShareViaHandle);
+
+ elm_naviframe_item_title_enabled_set(g_pShareViaHandle->pNaviFrameItem,
+ EINA_TRUE, EINA_FALSE);
+ evas_object_smart_callback_add(g_pShareViaHandle->pNaviFrameHandle,
+ "transition,finished",
+ mp_share_view_naviframe_transition_effect_cb, NULL);
+
+/*
+ g_pShareViaWidget->pCancelbtn = mp_widget_ctrl_create_navi_left_btn(
+ g_pShareViaHandle->pNaviFrameHandle,
+ g_pShareViaHandle->pNaviFrameItem,
+ NULL,
+ __mp_share_view_show_cancel_cb,
+ (void *)g_pShareViaHandle);
+ g_pShareViaWidget->pSavebtn = mp_widget_ctrl_create_navi_right_btn(
+ g_pShareViaHandle->pNaviFrameHandle,
+ g_pShareViaHandle->pNaviFrameItem,
+ NULL, __mp_share_view_show_share_via_panel_cb,
+ (void *)g_pShareViaHandle);
+*/
+
+ g_pShareViaWidget->pCancelbtn = elm_button_add(
+ g_pShareViaHandle->pNaviFrameHandle);
+ elm_object_style_set(g_pShareViaWidget->pCancelbtn, "naviframe/title_left");
+ //elm_object_text_set(g_pShareViaWidget->pCancelbtn,
+ // VIDEOS_SHAREVIEW_CANCEL_IDS);
+ mp_util_set_translate_str(g_pShareViaWidget->pCancelbtn,
+ "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB");
+ elm_object_signal_callback_add(g_pShareViaWidget->pCancelbtn,
+ "elm,action,click", "", __mp_share_view_show_cancel_cb,
+ (void *)g_pShareViaHandle);
+ elm_object_item_part_content_set(g_pShareViaHandle->pNaviFrameItem,
+ "title_left_btn", g_pShareViaWidget->pCancelbtn);
+ evas_object_show(g_pShareViaWidget->pCancelbtn);
+
+ /* Title Done layout */
+ g_pShareViaWidget->pSavebtn = elm_button_add(
+ g_pShareViaHandle->pNaviFrameHandle);
+ elm_object_style_set(g_pShareViaWidget->pSavebtn, "naviframe/title_right");
+ //elm_object_text_set(g_pShareViaWidget->pSavebtn,
+ // VIDEOS_SHAREVIEW_DONE_IDS);
+ mp_util_set_translate_str(g_pShareViaWidget->pSavebtn,
+ "IDS_TPLATFORM_ACBUTTON_DONE_ABB");
+ elm_object_signal_callback_add(g_pShareViaWidget->pSavebtn,
+ "elm,action,click", "",
+ __mp_share_view_show_share_via_panel_cb,
+ (void *)g_pShareViaHandle);
+ elm_object_item_part_content_set(g_pShareViaHandle->pNaviFrameItem,
+ "title_right_btn", g_pShareViaWidget->pSavebtn);
+ evas_object_show(g_pShareViaWidget->pSavebtn);
+ elm_object_disabled_set(g_pShareViaWidget->pSavebtn, EINA_TRUE);
+
+ evas_object_show(g_pShareViaHandle->pObjVideosList);
+ evas_object_show(g_pShareViaWidget->pChareViaViewBaselayout);
+
+ mp_util_db_set_update_fun(g_pShareViaHandle->euLev,
+ __mp_share_view_db_changed_cb);
+ mp_util_db_set_backup_fun(g_pShareViaHandle->euLev,
+ __mp_share_view_db_backup_cb);
+
+ MP_FREE_STRING(szTitle);
+ mp_util_hide_indicator();
+}
+
+void mp_share_view_push(void *pNaviFrame,
+ ChangeListShareViewCbFunc pChangeViewCb, char *pFolderPath,
+ MpVideoListTabType eTabType)
+{
+ VideoLogInfo("");
+ if (g_pShareViaHandle || g_pShareViaWidget) {
+ mp_share_view_destroy();
+ }
+
+ g_pShareViaHandle = (st_VideoListShareViaViewHandle *)calloc(1,
+ sizeof(st_VideoListShareViaViewHandle));
+ g_pShareViaWidget = (st_VideoListShareViaViewWidget *)calloc(1,
+ sizeof(st_VideoListShareViaViewWidget));
+
+ memset(g_pShareViaHandle, 0, sizeof(st_VideoListShareViaViewHandle));
+ memset(g_pShareViaWidget, 0, sizeof(st_VideoListShareViaViewWidget));
+ mp_share_view_reset_value();
+
+ g_pShareViaHandle->pNaviFrameHandle = pNaviFrame;
+ g_pShareViaHandle->pChangeViewUserCbFunc = pChangeViewCb;
+ if (pFolderPath) {
+ g_pShareViaHandle->pFolderPath = strdup(pFolderPath);
+ }
+
+ g_pShareViaHandle->eTabType = eTabType;
+ g_pShareViaHandle->euLev = MP_DB_UPDATE_LEV_1;
+
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST &&
+ g_pShareViaHandle->pFolderPath) {
+ g_pShareViaHandle->euLev = MP_DB_UPDATE_LEV_2;
+ }
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ if ((nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST ||
+ nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) &&
+ (LIST_TAB_TYPE_PERSONAL == eTabType)) {
+ g_pShareViaHandle->bThumbnailView = TRUE;
+ } else {
+ g_pShareViaHandle->bThumbnailView = FALSE;
+ }
+#endif
+
+ mp_share_view_init(g_pShareViaHandle->pNaviFrameHandle);
+ evas_object_smart_callback_add(
+ (Evas_Object *)mp_util_get_main_window_handle(),
+ "wm,rotation,changed", __mp_share_via_view_rotate_cb,
+ (void *)g_pShareViaHandle);
+}
+
+void mp_share_view_pop(void)
+{
+ VideoLogInfo("");
+
+ /*
+ elm_naviframe_item_pop(g_pShareViaHandle->pNaviFrameHandle);
+ */
+ if (!g_pShareViaHandle) {
+ VideoLogError("No existed handle of share view.");
+ return;
+ }
+ if (g_pShareViaHandle->pChangeViewUserCbFunc) {
+ g_pShareViaHandle->pChangeViewUserCbFunc();
+ }
+
+ mp_util_hide_indicator();
+}
+
+bool mp_share_view_is_top_view(void)
+{
+ VideoLogInfo("");
+
+ return FALSE;
+}
+
+void mp_share_view_change_language(void)
+{
+ if (!g_pShareViaHandle || !g_pShareViaWidget) {
+ VideoLogError("No existed handle of share view.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_share_view_change_title_info();
+}
+
+
+static void
+__mp_share_view_base_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject, void *pEventInfo)
+{
+ /*
+ evas_object_event_callback_del(
+ g_pShareViaWidget->pChareViaViewBaselayout,
+ EVAS_CALLBACK_DEL, __mp_share_view_base_layout_del_cb);
+ */
+
+ __mp_share_view_reset();
+}
+
+
diff --git a/src/view/mp-video-list-view-common.c b/src/view/mp-video-list-view-common.c
new file mode 100644
index 0000000..b9ca221
--- /dev/null
+++ b/src/view/mp-video-list-view-common.c
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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-video-list-view-common.h"
+
+void mp_list_common_set_callabcks(void *viewHandle,
+ Evas_Smart_Cb
+ pGenlistItemtLanguageChangedCb,
+ Evas_Smart_Cb pGenlistItemtRealizeCb,
+ Evas_Smart_Cb pGenlistItemtPressCb,
+ Evas_Smart_Cb pGenlistItemtLongPressCb)
+{
+ st_VideoListViewMainViewHandle *handle =
+ (st_VideoListViewMainViewHandle *) viewHandle;
+ if (handle) {
+ handle->pGenlistItemtLanguageChangedCb =
+ pGenlistItemtLanguageChangedCb;
+ handle->pGenlistItemtRealizeCb = pGenlistItemtRealizeCb;
+ handle->pGenlistItemtPressCb = pGenlistItemtPressCb;
+ handle->pGenlistItemtLongPressCb = pGenlistItemtLongPressCb;
+ }
+}
+
+void mp_list_common_unset_callabcks(void *viewHandle)
+{
+ st_VideoListViewMainViewHandle *handle =
+ (st_VideoListViewMainViewHandle *) viewHandle;
+ if (handle) {
+ handle->pGenlistItemtLanguageChangedCb = NULL;
+ handle->pGenlistItemtRealizeCb = NULL;
+ handle->pGenlistItemtPressCb = NULL;
+ handle->pGenlistItemtLongPressCb = NULL;
+ }
+}
diff --git a/src/view/mp-video-list-view-folder.c b/src/view/mp-video-list-view-folder.c
new file mode 100644
index 0000000..dffe06c
--- /dev/null
+++ b/src/view/mp-video-list-view-folder.c
@@ -0,0 +1,1200 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <glib.h>
+#include <media_content.h>
+
+#include "mp-util.h"
+#include "video-player.h"
+#include "mp-video-log.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+
+#include "mp-util-media-service.h"
+#include "mp-video-list-view-folder.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-footer-toolbar.h"
+#include "mp-video-search-view.h"
+#include "mp-external-ug.h"
+#include "videos-view-mgr.h"
+#include "mp-video-list-view-common.h"
+#include "mp-video-list-view-item-of-folder.h"
+#include "mp-video-list-option-ctrl.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-video-list-view-main.h"
+#include "mp-video-nocontent-layout.h"
+#include "mp-video-list-share-via-view.h"
+#include "mp-video-detail-view.h"
+#include "mp-rotate-ctrl.h"
+
+#define NO_CONTENTS_W 720
+#define NO_CONTENTS_H 897
+
+
+typedef struct {
+ st_VideoListViewMainViewHandle *pMainHandle;
+ st_VideoListViewMainViewWidget *pMainWidget;
+ UpdateListItemsCbFunc fUpdateListItemUserCb;
+
+ Evas_Object *pVideosGenlist;
+ Evas_Object *pNocontentlayout;
+ Elm_Genlist_Item_Class *pFolderList_Itc;
+ Elm_Genlist_Item_Class *pFolderListLandscape_Itc;
+ Elm_Genlist_Item_Class *pGenGridItc;
+
+ bool bItemSelected;
+
+ /*start popup*/
+ Ecore_Idler *pRemoveIdler;
+ Evas_Object *pRemovePopUpHandle;
+ Evas_Object *pProgressbar;
+ Ecore_Timer *pStartDelTimer;
+ Ecore_Timer *pFinishDelTimer;
+ int nCompltedDeleteItem;
+ /*end popup*/
+#ifdef VS_FEATURE_THUMBNAIL_VIEW /**/
+ bool bLandscape;
+#endif
+
+} stFolderView;
+
+
+static stFolderView *g_pFolderView = NULL;
+
+static void __mp_folder_view_button_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo);
+static void __mp_folder_view_delete_popup_handle(void);
+
+void __mp_folder_view_create_no_content()
+{
+ if (!g_pFolderView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_pFolderView->pNocontentlayout) {
+ g_pFolderView->pNocontentlayout =
+ mp_create_nocontent_layout(g_pFolderView->pMainWidget->
+ pListViewBaselayout,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS);
+ elm_object_part_content_unset(g_pFolderView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT);
+ if (g_pFolderView->pVideosGenlist) {
+ evas_object_hide(g_pFolderView->pVideosGenlist);
+ }
+ evas_object_show(g_pFolderView->pMainWidget->pListViewBaselayout);
+ elm_object_part_content_set(g_pFolderView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pFolderView->pNocontentlayout);
+ }
+
+}
+
+bool mp_folder_view_is_top_view(void)
+{
+ VideoLogInfo("");
+
+
+ if (!g_pFolderView) {
+ VideoLogError("g_pFolderView is NULL");
+ return FALSE;
+ }
+
+ if (mp_mgr_get_library_naviframe()) {
+ int count =
+ eina_list_count(elm_naviframe_items_get
+ (mp_mgr_get_library_naviframe()));
+ return (count == 1);
+ }
+ return FALSE;
+}
+
+void mp_folder_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pFolderView) {
+ __mp_folder_view_delete_popup_handle();
+
+ MP_DEL_ITC(g_pFolderView->pFolderList_Itc);
+ g_pFolderView->fUpdateListItemUserCb = NULL;
+ g_pFolderView->pMainHandle = NULL;
+ g_pFolderView->pMainWidget = NULL;
+ MP_DEL_OBJ(g_pFolderView->pNocontentlayout);
+ MP_DEL_OBJ(g_pFolderView->pVideosGenlist);
+ }
+ MP_FREE_STRING(g_pFolderView);
+
+}
+
+static void __mp_folder_view_reset(MpListUpdateType eUpdateType)
+{
+ if (g_pFolderView) {
+ __mp_folder_view_delete_popup_handle();
+
+ MP_DEL_ITC(g_pFolderView->pFolderList_Itc);
+ g_pFolderView->fUpdateListItemUserCb = NULL;
+ g_pFolderView->pMainHandle = NULL;
+ g_pFolderView->pMainWidget = NULL;
+ if (g_pFolderView->pVideosGenlist) {
+ elm_genlist_clear(g_pFolderView->pVideosGenlist);
+ }
+
+ }
+
+}
+
+static void __mp_folder_view_delete_popup_handle(void)
+{
+ VideoLogInfo("");
+ if (g_pFolderView->pRemovePopUpHandle) {
+ eext_object_event_callback_del(g_pFolderView->pRemovePopUpHandle,
+ EEXT_CALLBACK_BACK,
+ __mp_folder_view_button_popup_cb);
+ }
+ MP_DEL_TIMER(g_pFolderView->pStartDelTimer);
+ MP_DEL_TIMER(g_pFolderView->pFinishDelTimer);
+ MP_DEL_IDLER(g_pFolderView->pRemoveIdler);
+ MP_DEL_OBJ(g_pFolderView->pProgressbar);
+ MP_DEL_OBJ(g_pFolderView->pRemovePopUpHandle);
+ g_pFolderView->nCompltedDeleteItem = 0;
+}
+
+void mp_folder_view_warning_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+
+/*//////////////////////////////////////////////////*/
+/* For Folder View*/
+static int mp_folder_view_get_respective_video_no(int nFolderItemIndex)
+{
+ mp_util_svc_destory_video_item_list();
+ char *szPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ mp_util_svc_extract_video_list_from_folder(szPath,
+ mp_sort_ctrl_get_sort_state
+ (), MP_LIST_VIEW_ALL);
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ MP_FREE_STRING(szPath);
+
+ return nVideoListSize;
+}
+
+static char *mp_folder_view_get_label_of_folder_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+
+ int nFolderItemIndex = (int) pUserData;
+
+ if (!g_strcmp0(pPart, "elm.text.main.left.top")) {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ MP_FREE_STRING(szTitle);
+ return szTitleUtf8;
+ } else if (!g_strcmp0(pPart, "elm.text.sub.left.bottom")) {
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ char *pDes_path = mp_util_get_dir_by_path(szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+ char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path);
+ MP_FREE_STRING(pDes_path);
+ return szFolderUtf8;
+
+ } else if (!strcmp(pPart, "elm.text")) {
+ char *szTitle1 = NULL;
+ szTitle1 = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle1);
+
+ MP_FREE_STRING(szTitle1);
+
+ return szTitleUtf8;
+ }
+ else if (!strcmp(pPart, "elm.text.number")) {
+ char szTitle2[10] = {0, };
+ int nVideoListSize =
+ mp_folder_view_get_respective_video_no(nFolderItemIndex);
+ snprintf(szTitle2, 10, "(%d)", nVideoListSize);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle2);
+
+ return szTitleUtf8;
+ }
+ /*else if (!strcmp(pPart, "elm.text.2")) {
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ char *pDes_path = mp_util_get_dir_by_path(szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+ char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path);
+ MP_FREE_STRING(pDes_path);
+ return szFolderUtf8;
+ } */
+ return NULL;
+}
+
+static Evas_Object *mp_folder_view_get_icon_of_folder_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ int nFolderItemIndex = (int) pUserData;
+ VideoLogInfo("Index : %d", nFolderItemIndex);
+
+ if (!g_strcmp0(pPart, "elm.icon.1")) {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pBg = NULL;
+ char *pThumbIconUri =
+ mp_util_get_folder_thumbnail(nFolderItemIndex,
+ mp_sort_ctrl_get_sort_state());
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME,
+ "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg =
+ mp_util_create_preload_image(pLayout, pThumbIconUri,
+ VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+ if (pBg)
+ evas_object_show(pBg);
+
+ if (!mp_util_create_folder_sub_icon(pLayout, nFolderItemIndex)) {
+ VideoLogWarning
+ ("Create sub icon is failed. nFolderItemIndex: %d",
+ nFolderItemIndex);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+ } else if (!strcmp(pPart, "elm.swallow.icon")) {
+ char *pThumbIconUri =
+ mp_util_get_folder_thumbnail(nFolderItemIndex,
+ mp_sort_ctrl_get_sort_state());
+ Evas_Object *thumb = NULL;
+ int nWidth = 0;
+ int nHeight = 0;
+
+ thumb = elm_image_add(pObject);
+
+ elm_image_preload_disabled_set(thumb, EINA_FALSE);
+ elm_image_smooth_set(thumb, EINA_FALSE);
+ elm_image_prescale_set(thumb, 50 * MP_SCALE);
+ elm_image_file_set(thumb, pThumbIconUri, NULL);
+ elm_image_object_size_get(thumb, &nWidth, &nHeight);
+
+ if (nWidth > nHeight) {
+ elm_image_aspect_fixed_set(thumb, EINA_FALSE);
+ }
+ if (thumb)
+ evas_object_show(thumb);
+ MP_FREE_STRING(pThumbIconUri);
+
+ return thumb;
+ } else if (!strcmp(pPart, "elm.sdcard.icon")) {
+ MpMediaStorageType StorageType = MP_MEDIA_TYPE_STORAGE_UNKNOWN;
+ StorageType = mp_util_svc_get_folder_storage(nFolderItemIndex);
+ if (StorageType == MP_MEDIA_TYPE_STORAGE_EXTERNAL) {
+ Evas_Object *pSdcardIcon = elm_image_add(pObject);
+ elm_image_file_set(pSdcardIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_FOLDER_SDCARD);
+ evas_object_size_hint_align_set(pSdcardIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pSdcardIcon,
+ EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pSdcardIcon);
+ return pSdcardIcon;
+ } else {
+ return NULL;
+ }
+ }
+
+ return NULL;
+}
+
+Evas_Object *mp_folder_view_get_icon_of_no_folder_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ VideoSecureLogInfo("");
+
+ if (!strcmp(pPart, "elm.icon")) {
+ int width = NO_ITEM_GENLIST_WIDTH * elm_config_scale_get();
+ int height = NO_ITEM_GENLIST_HEIGHT * elm_config_scale_get();
+
+ Evas_Object *pNoItemLayout = NULL;
+ pNoItemLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pNoItemLayout, VIDEO_PLAYER_NO_ITEM_EDJ,
+ GENLIST_NOITEM_EDJ_GROUP);
+ evas_object_size_hint_min_set(pNoItemLayout, width, height);
+
+ elm_object_part_text_set(pNoItemLayout,
+ SWALLOW_LISTVIEW_NO_ITEM_TEXT,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC);
+ /*elm_object_domain_translatable_part_text_set(pNoItemLayout, SWALLOW_LISTVIEW_NO_ITEM_TEXT, PACKAGE, VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC);*/
+ evas_object_show(pNoItemLayout);
+ return pNoItemLayout;
+ }
+
+ return NULL;
+}
+
+void mp_folder_view_set_is_item_view(bool isSelected)
+{
+ if (g_pFolderView)
+ g_pFolderView->bItemSelected = isSelected;
+}
+
+bool mp_folder_view_is_item_view()
+{
+ if (g_pFolderView)
+ return g_pFolderView->bItemSelected;
+ else
+ return false;
+}
+
+static void mp_folder_view_gen_select_video_folder_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!g_pFolderView || !pObject) {
+ VideoLogWarning
+ ("[WARNING] Main handles of list view are not existed.");
+ return;
+ }
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ VideoLogInfo("pSelectedItem is NULL");
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+ Evas_Object *pPopup = evas_object_data_get(pObject, "popup"); /* Get popup*/
+ if (pPopup) {
+ VideoLogInfo("long press is called");
+ return; /* If popup exists, do nothing*/
+ }
+
+ if (!g_pFolderView->fUpdateListItemUserCb) {
+ VideoLogWarning("[WARNING] No existed pMainViewWidget.");
+ return;
+ }
+
+ if (!pObject) {
+ VideoLogWarning("[WARNING] No have pObject");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nFolderItemIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+
+ if (!pItem) {
+ VideoLogInfo("[ERR]Error item number.");
+ return;
+ }
+ nFolderItemIndex = (int) elm_object_item_data_get(pItem);
+ g_pFolderView->bItemSelected = true;
+
+ VideoLogInfo("nFolderItemIndex:%d", nFolderItemIndex);
+ mp_folder_item_view_push((void *) mp_mgr_get_library_naviframe(),
+ nFolderItemIndex,
+ (UpdateListItemsCbFunc) g_pFolderView->
+ fUpdateListItemUserCb);
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static void __mp_folder_view_append_gengrid_items(void *pObjVideosList,
+ int nGenItemIndex)
+{
+ if (!g_pFolderView) {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+
+ MP_DEL_GRID_ITC(g_pFolderView->pGenGridItc);
+ g_pFolderView->pGenGridItc = elm_gengrid_item_class_new();
+ g_pFolderView->pGenGridItc->item_style = "video/folder_grid";
+ g_pFolderView->pGenGridItc->func.text_get =
+ (void *) mp_folder_view_get_label_of_folder_cb;
+ g_pFolderView->pGenGridItc->func.content_get =
+ (void *) mp_folder_view_get_icon_of_folder_cb;
+ g_pFolderView->pGenGridItc->func.state_get = NULL;
+ g_pFolderView->pGenGridItc->func.del = NULL;
+
+ int nCount =
+ (mp_rotate_ctrl_check_landspace() ?
+ VP_GENLIST_THUMB_LANDSPACE_COUNT :
+ VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nGenItemIndex * nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nVideoListSize = mp_util_svc_get_video_folder_size();
+
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
+ elm_gengrid_item_append(pObjVideosList,
+ g_pFolderView->pGenGridItc,
+ (void *) nIndex,
+ mp_folder_view_gen_select_video_folder_cb,
+ NULL);
+ elm_object_item_data_set(gridItem, (void *) nIndex);
+ }
+}
+
+static Evas_Object *__mp_folder_view_create_gengrid(Evas_Object *parent,
+ int nWidth,
+ int nHeight)
+{
+ Evas_Object *pGengrid;
+ pGengrid = elm_gengrid_add(parent);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid is not existed.");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_gengrid_item_size_set(pGengrid, nWidth, nHeight);
+ elm_gengrid_align_set(pGengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pGengrid, EINA_TRUE);
+
+ return pGengrid;
+}
+
+static void mp_folder_view_get_icon_dimensions(int *height, int *width)
+{
+ int winHeight = 0;
+ int winWidth = 0;
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &winWidth, &winHeight);
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ *width = winHeight / VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ } else {
+ *width = winWidth / VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ }
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+}
+
+static Evas_Object *__mp_folder_view_get_icon_of_grid_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ VideoLogInfo("in __mp_folder_view_get_icon_of_grid_cb");
+ if (!g_pFolderView || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfFolderList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int) pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_folder_view_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid =
+ __mp_folder_view_create_gengrid(pObject, nWidth, nHeight);
+ __mp_folder_view_append_gengrid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+int mp_folder_view_thumbnail_to_genlist_index(int nVideoItemIndex)
+{
+ if (nVideoItemIndex < 0) {
+ VideoLogDebug("invalid nVideoItemIndex");
+ return 0;
+ }
+ int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ int nGenlistIndex = 0;
+ if (g_pFolderView->bLandscape) {
+ nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ }
+ nGenlistIndex = nVideoItemIndex / nItemCount;
+ return nGenlistIndex;
+}
+
+static bool __mp_folder_view_append_grid_layout(void *pGenlist)
+{
+ if (!pGenlist || !g_pFolderView) {
+ VideoLogError("error handle.");
+ return FALSE;
+ }
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_video_folder_size();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ return FALSE;
+ }
+
+ MP_DEL_ITC(g_pFolderView->pGenGridItc);
+ g_pFolderView->pFolderList_Itc = elm_genlist_item_class_new();
+
+ g_pFolderView->pFolderList_Itc->item_style = "video/1icon.thumbnail";
+ g_pFolderView->pFolderList_Itc->func.text_get = NULL;
+ g_pFolderView->pFolderList_Itc->func.content_get =
+ (void *) __mp_folder_view_get_icon_of_grid_cb;
+ g_pFolderView->pFolderList_Itc->func.state_get = NULL;
+ g_pFolderView->pFolderList_Itc->func.del = NULL;
+ g_pFolderView->pFolderList_Itc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pFolderView->pFolderListLandscape_Itc);
+ g_pFolderView->pFolderListLandscape_Itc =
+ elm_genlist_item_class_new();
+ g_pFolderView->pFolderListLandscape_Itc->item_style =
+ "video/1icon.thumbnail.landscape";
+ g_pFolderView->pFolderListLandscape_Itc->func.text_get = NULL;
+ g_pFolderView->pFolderListLandscape_Itc->func.content_get =
+ (void *) __mp_folder_view_get_icon_of_grid_cb;
+ g_pFolderView->pFolderListLandscape_Itc->func.state_get = NULL;
+ g_pFolderView->pFolderListLandscape_Itc->func.del = NULL;
+ g_pFolderView->pFolderListLandscape_Itc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow =
+ mp_folder_view_thumbnail_to_genlist_index(nVideoListSize - 1);
+
+ if (mp_rotate_ctrl_check_landspace()) {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist,
+ g_pFolderView->
+ pFolderListLandscape_Itc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ /*elm_genlist_item_select_mode_set(pTmpVideoGenlistItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);*/
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist,
+ g_pFolderView->pFolderList_Itc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ /*elm_genlist_item_select_mode_set(pTmpVideoGenlistItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);*/
+ }
+ }
+
+ return TRUE;
+}
+#endif
+
+/*void mp_folder_view_append_folder_items(void *pVideosGenlist)
+{
+ int nIndex = 0;
+ int nFolderListSize = 0;
+
+ nFolderListSize = mp_util_svc_get_video_folder_size();
+ VideoLogInfo("nVideoListSize : %d", nFolderListSize);
+
+ if (nFolderListSize > 0)
+ {
+ MP_DEL_ITC(g_pFolderView->pFolderList_Itc);
+ g_pFolderView->pFolderList_Itc = elm_genlist_item_class_new();
+ g_pFolderView->pFolderList_Itc->item_style = "2line.top";
+ g_pFolderView->pFolderList_Itc->func.text_get = (void*)mp_folder_view_get_label_of_folder_cb;
+ g_pFolderView->pFolderList_Itc->func.content_get = (void*)mp_folder_view_get_icon_of_folder_cb;
+ g_pFolderView->pFolderList_Itc->func.state_get = NULL;
+ g_pFolderView->pFolderList_Itc->func.del = NULL;
+ g_pFolderView->pFolderList_Itc->decorate_item_style = NULL;
+
+ for (nIndex = 0; nIndex < nFolderListSize; nIndex++)
+ {
+ VideoLogInfo("nCounter : %d", nIndex);
+ elm_genlist_item_append(pVideosGenlist, g_pFolderView->pFolderList_Itc, (void*)nIndex, NULL, ELM_GENLIST_ITEM_NONE, mp_folder_view_gen_select_video_folder_cb, NULL);
+ }
+ }
+}*/
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_view_delete_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+static void __mp_folder_view_mouse_back_up_popup_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+ if (!pEvent) {
+ return;
+ }
+
+ if (pEvent->button == 3) {
+ mp_util_delete_popup_handle();
+ }
+}
+#endif
+
+void __mp_folder_view_key_back_popup_cb(void *pUserData, Evas *pEvas,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ Evas_Event_Key_Down *pEvent = pEventInfo;
+ if (!pEvent) {
+ return;
+ }
+
+ if (!g_strcmp0(pEvent->keyname, "XF86Back")) {
+ mp_util_delete_popup_handle();
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_view_remove_video_item(int nVideoItemIndex)
+{
+ /*int nVideoTotal = mp_util_svc_get_video_list_size_for_checking_index();*/
+
+ char *szFileUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+ if (szFileUrl) {
+ VideoSecureLogInfo("Delete file url : %s", szFileUrl);
+ mp_util_svc_remove_item_from_db_by_list_index(nVideoItemIndex);
+ unlink(szFileUrl);
+ free(szFileUrl);
+ szFileUrl = NULL;
+
+ }
+}
+
+static Eina_Bool __mp_folder_view_finish_del_timer_cb(void *pUserData)
+{
+
+ g_pFolderView->pFinishDelTimer = NULL;
+ if (pUserData) {
+ int nFolderItemIndex = (int) pUserData;
+ char *szTmpFolderUrl =
+ mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ if (szTmpFolderUrl) {
+ if (vp_file_rmdir(szTmpFolderUrl) == EINA_FALSE) {
+ VideoLogError("vp_file_rmdir failed!");
+ }
+
+ MP_FREE_STRING(szTmpFolderUrl);
+ }
+ }
+ mp_util_svc_destory_video_item_list();
+ __mp_folder_view_delete_popup_handle();
+
+ if (g_pFolderView->fUpdateListItemUserCb) {
+ g_pFolderView->fUpdateListItemUserCb(LIST_UPDATE_TYPE_ALL);
+ }
+
+ return FALSE;
+}
+
+static Eina_Bool __mp_folder_view_delete_item_idler_cb(void *pUserData)
+{
+
+ int nVideoTotal =
+ mp_util_svc_get_video_list_size_for_checking_index();
+ VideoLogInfo("nVideoTotal = %d", nVideoTotal);
+ /* int nVideoItemIndex = 0;*/
+ double nDeleteRate = 0.0;
+
+ __mp_folder_view_remove_video_item(g_pFolderView->
+ nCompltedDeleteItem);
+
+ g_pFolderView->nCompltedDeleteItem++;
+
+ if (g_pFolderView->pProgressbar) {
+ VideoLogInfo("Set progress bar");
+ nDeleteRate =
+ ((double) g_pFolderView->nCompltedDeleteItem) /
+ ((double) nVideoTotal);
+ elm_progressbar_value_set(g_pFolderView->pProgressbar,
+ nDeleteRate);
+ }
+
+ if (g_pFolderView->nCompltedDeleteItem == nVideoTotal) {
+ g_pFolderView->pRemoveIdler = NULL;
+ MP_DEL_TIMER(g_pFolderView->pFinishDelTimer);
+ g_pFolderView->pFinishDelTimer =
+ ecore_timer_add(0.1, __mp_folder_view_finish_del_timer_cb,
+ pUserData);
+
+ return FALSE;
+ }
+ return TRUE;
+}
+#endif
+
+static void __mp_folder_view_button_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+ __mp_folder_view_delete_popup_handle();
+
+ if (g_pFolderView->fUpdateListItemUserCb) {
+ g_pFolderView->fUpdateListItemUserCb(LIST_UPDATE_TYPE_ALL);
+ }
+
+}
+
+#ifdef ENABLE_LONGPRESS
+static Eina_Bool __mp_folder_view_start_del_timer_cb(void *pUserData)
+{
+ g_pFolderView->pStartDelTimer = NULL;
+ g_pFolderView->pRemoveIdler =
+ ecore_idler_add(__mp_folder_view_delete_item_idler_cb, pUserData);
+ return FALSE;
+}
+
+static void __mp_folder_view_respones_delete_popup_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ mp_util_delete_popup_handle();
+
+ int nFolderItemIndex = (int) pUserData;
+ if (nFolderItemIndex < 0
+ || nFolderItemIndex >= mp_util_svc_get_video_folder_size()) {
+ VideoLogError("nFolderItemIndex is invalid");
+ return;
+ }
+
+ char *szTmpFolderUrl =
+ mp_util_svc_get_video_folder_url(nFolderItemIndex);
+
+ VideoSecureLogInfo("folder_index : %d, szTmpFolderUrl : %s",
+ nFolderItemIndex, szTmpFolderUrl);
+ mp_util_svc_destory_video_item_list();
+
+ if (szTmpFolderUrl) {
+ mp_util_svc_extract_video_list_from_folder(szTmpFolderUrl,
+ MP_MEDIA_SORT_BY_NAME,
+ MP_LIST_VIEW_ALL);
+ } else {
+ VideoLogError("folder path is NULL");
+ return;
+ }
+ MP_FREE_STRING(szTmpFolderUrl);
+#ifdef _MULTI_WINDOW
+ g_pFolderView->pRemovePopUpHandle =
+ ea_center_popup_add(mp_util_get_main_window_handle());
+#else
+ g_pFolderView->pRemovePopUpHandle =
+ elm_popup_add(mp_util_get_main_window_handle());
+#endif
+ eext_object_event_callback_add(g_pFolderView->pRemovePopUpHandle,
+ EEXT_CALLBACK_BACK,
+ __mp_folder_view_button_popup_cb,
+ NULL);
+ Evas_Object *pLabel =
+ elm_label_add(g_pFolderView->pRemovePopUpHandle);
+ elm_object_style_set(pLabel, "popup/default");
+ elm_label_line_wrap_set(pLabel, ELM_WRAP_MIXED);
+ elm_object_domain_translatable_text_set(pLabel, MP_SYS_STRING,
+ VIDEOS_DELETEPOP_MSG_DELETING_IDS);
+ evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(pLabel, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_show(pLabel);
+
+ Evas_Object *pPopupLayout =
+ elm_layout_add(g_pFolderView->pRemovePopUpHandle);
+ elm_layout_file_set(pPopupLayout, VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ,
+ "popup_center_text_progressview");
+ evas_object_size_hint_weight_set(pPopupLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ Evas_Object *pProgressbar =
+ elm_progressbar_add(g_pFolderView->pRemovePopUpHandle);
+ elm_object_style_set(pProgressbar, "list_progress");
+ elm_progressbar_horizontal_set(pProgressbar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressbar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressbar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressbar, 0.0);
+
+ evas_object_show(pProgressbar);
+ g_pFolderView->pProgressbar = pProgressbar;
+
+ elm_object_part_content_set(pPopupLayout, "elm.swallow.content",
+ pLabel);
+ elm_object_part_content_set(pPopupLayout, "elm.swallow.end",
+ pProgressbar);
+ elm_object_part_text_set(pPopupLayout, "elm.text.subtext1", "");
+ elm_object_part_text_set(pPopupLayout, "elm.text.subtext2", "");
+
+ elm_object_content_set(g_pFolderView->pRemovePopUpHandle,
+ pPopupLayout);
+ Evas_Object *pButton =
+ elm_button_add(g_pFolderView->pRemovePopUpHandle);
+ elm_object_style_set(pButton, "popup_button/default");
+ elm_object_domain_translatable_text_set(pButton, VIDEOS_STRING,
+ VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_part_content_set(g_pFolderView->pRemovePopUpHandle,
+ "button1", pButton);
+ evas_object_smart_callback_add(pButton, "clicked",
+ __mp_folder_view_button_popup_cb,
+ pUserData);
+
+ evas_object_show(g_pFolderView->pRemovePopUpHandle);
+ g_pFolderView->nCompltedDeleteItem = 0;
+
+ MP_DEL_TIMER(g_pFolderView->pStartDelTimer);
+ g_pFolderView->pStartDelTimer =
+ ecore_timer_add(0.3, __mp_folder_view_start_del_timer_cb,
+ pUserData);
+
+}
+
+static void __mp_folder_view_popup_delete_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pFolderView) {
+ VideoLogError("g_pFolderView of list view are not existed.");
+ return;
+ }
+
+ int nFolderItemIndex = (int) pUserData;
+ MpListViewAsType type = MP_LIST_VIEW_AS_FOLDER_LIST;
+ mp_util_remove_question_popup((void *) nFolderItemIndex, type,
+ __mp_folder_view_respones_delete_popup_cb,
+ __mp_folder_view_delete_popup_cb,
+ __mp_folder_view_mouse_back_up_popup_cb,
+ __mp_folder_view_key_back_popup_cb);
+
+ VideoLogInfo("");
+}
+
+static void __mp_folder_view_share_via_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pFolderView) {
+ VideoLogError("g_pFolderView of list view are not existed.");
+ return;
+ }
+
+ if (!g_pFolderView->pMainHandle) {
+ VideoLogError("pMainHandle is null.");
+ return;
+ }
+
+ int nFolderItemIndex = (int) pUserData;
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ VideoSecureLogInfo("nFolderItemIndex=%d, szFolderPath=%s",
+ nFolderItemIndex, szFolderPath);
+ mp_share_view_push(g_pFolderView->pMainHandle->pNaviFrameHandle,
+ (ChangeListShareViewCbFunc) g_pFolderView->
+ fUpdateListItemUserCb, szFolderPath,
+ LIST_TAB_TYPE_PERSONAL);
+
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+}
+
+static void __mp_folder_view_normal_result_popup()
+{
+ if (!g_pFolderView) {
+ VideoLogError("Invalid list and object");
+ return;
+ }
+ evas_object_data_set(g_pFolderView->pVideosGenlist, "popup", NULL);
+ elm_object_scroll_freeze_pop(g_pFolderView->pVideosGenlist);
+}
+
+static void __mp_folder_view_long_press_item_cb(void *pUserData,
+ Evas_Object *obj,
+ void *event_info)
+{
+
+ if (!g_pFolderView || !event_info || !obj) {
+ VideoLogError("Invalid list and object");
+ return;
+ }
+
+ Elm_Object_Item *long_item = (Elm_Object_Item *) event_info;
+ /*elm_genlist_item_selected_set(long_item, EINA_FALSE);*/
+ int nFolderItemIndex = elm_genlist_item_index_get(long_item);
+ if (nFolderItemIndex < 0) {
+ VideoLogError("nGenlistItemIndex is invalid");
+ return;
+ }
+
+ st_RegisteOptionCbFunc *pRegisteCbFunc =
+ (st_RegisteOptionCbFunc *) calloc(1,
+ sizeof(st_RegisteOptionCbFunc));
+ if (pRegisteCbFunc) {
+ pRegisteCbFunc->ShareViaItemCb =
+ (void *) __mp_folder_view_share_via_cb;
+ pRegisteCbFunc->AddToHomeItemCb = NULL;
+ /*pRegisteCbFunc->DetailsItemCb= NULL;*/
+ pRegisteCbFunc->DeleteItemCb =
+ (void *) __mp_folder_view_popup_delete_cb;
+ }
+
+ VideoLogDebug("nVideoItemIndex=%d", nFolderItemIndex);
+ char *title = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+ mp_option_ctrl_show(g_pFolderView->pMainHandle->pNaviFrameHandle,
+ (const char *) title, nFolderItemIndex,
+ pRegisteCbFunc,
+ __mp_folder_view_normal_result_popup, NULL,
+ MP_LIST_OPTION_DOWNLOAD_NONE);
+ if (mp_option_ctrl_get_handle()) {
+ evas_object_data_set(g_pFolderView->pVideosGenlist, "popup",
+ mp_option_ctrl_get_handle());
+ elm_object_scroll_freeze_push(g_pFolderView->pVideosGenlist);
+ }
+ MP_FREE_STRING(pRegisteCbFunc);
+ MP_FREE_STRING(title);
+
+}
+
+static void __mp_folder_view_del_genlist_cb(Evas_Object *pVideosGenlist)
+{
+ if (!pVideosGenlist) {
+ VideoSecureLogError("pVideosGenlist is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pVideosGenlist, "longpressed",
+ __mp_folder_view_long_press_item_cb);
+}
+
+static void __mp_folder_view_add_genlist_cb(Evas_Object *pVideosGenlist)
+{
+ if (!pVideosGenlist) {
+ VideoSecureLogError("pVideosGenlist is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_add(pVideosGenlist, "longpressed",
+ __mp_folder_view_long_press_item_cb,
+ NULL);
+
+}
+#endif
+
+/* External APIs*/
+static void __mp_folder_view_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pFolderView) {
+ VideoLogError("__mp_folder_view_rotate_cb IS null");
+ return;
+ }
+ if (!mp_folder_view_is_top_view())
+ return;
+ bool bLandscape =
+ mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
+ mp_util_get_main_window_handle
+ ());
+ if (bLandscape) {
+ VideoLogInfo("landscape mode");
+ g_pFolderView->bLandscape = true;
+ } else {
+ g_pFolderView->bLandscape = false;
+ }
+ elm_genlist_clear(g_pFolderView->pVideosGenlist);
+ __mp_folder_view_append_grid_layout(g_pFolderView->pVideosGenlist);
+}
+
+void mp_folder_view_arrange_folder_list(void *pMainViewHandle,
+ void *pMainViewWidget,
+ MpListUpdateType eUpdateType,
+ UpdateListItemsCbFunc
+ pUpdateVideoListUserCb)
+{
+ if (!pMainViewHandle || !pMainViewWidget || !pUpdateVideoListUserCb) {
+ VideoLogInfo
+ ("pMainViewHandle or pMainViewHandle or pUpdateVideoListUserCb are not existed.");
+ return;
+ }
+ if (eUpdateType == LIST_UPDATE_TYPE_NONE) {
+ VideoLogInfo("don't need to update and create");
+ return;
+ }
+
+ __mp_folder_view_reset(eUpdateType);
+
+ if (!g_pFolderView) {
+ g_pFolderView = (stFolderView *) calloc(1, sizeof(stFolderView));
+ }
+
+ g_pFolderView->bItemSelected = false;
+ g_pFolderView->pMainHandle = pMainViewHandle;
+ g_pFolderView->pMainWidget = pMainViewWidget;
+ g_pFolderView->fUpdateListItemUserCb = pUpdateVideoListUserCb;
+ g_pFolderView->bLandscape =
+ mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
+ mp_util_get_main_window_handle
+ ());
+
+ elm_object_item_part_text_set(g_pFolderView->pMainHandle->
+ pNaviFrameItem, "elm.text.title",
+ VIDEOS_TITLE_OPT_FOLDER);
+
+ VideoLogInfo("");
+
+ int nFolderListSize = 0;
+
+ if (eUpdateType == LIST_UPDATE_TYPE_ALL
+ || eUpdateType == LIST_UPDATE_TYPE_DATA) {
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ mp_util_svc_extract_video_folder_list_by_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ }
+
+ nFolderListSize = mp_util_svc_get_video_folder_size();
+ VideoLogInfo("nVideoListSize : %d", nFolderListSize);
+ /*mp_util_svc_set_update_db_cb_func(g_pFolderView->fUpdateListItemUserCb);*/
+
+ if (nFolderListSize > 0) {
+ if (g_pFolderView->pNocontentlayout) {
+ elm_object_part_content_unset(g_pFolderView->pNocontentlayout,
+ SWALLOW_LISTVIEW_CONTENT);
+ MP_DEL_OBJ(g_pFolderView->pNocontentlayout);
+ }
+ if (!g_pFolderView->pVideosGenlist) {
+ g_pFolderView->pVideosGenlist =
+ elm_genlist_add(g_pFolderView->pMainHandle->
+ pNaviFrameHandle);
+ elm_scroller_bounce_set(g_pFolderView->pVideosGenlist,
+ EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pFolderView->
+ pVideosGenlist,
+ EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pFolderView->pVideosGenlist,
+ EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_mode_set(g_pFolderView->pVideosGenlist,
+ ELM_LIST_COMPRESS);
+ elm_genlist_homogeneous_set(g_pFolderView->pVideosGenlist,
+ EINA_TRUE);
+
+ elm_genlist_block_count_set(g_pFolderView->pVideosGenlist,
+ VIDEO_MAIN_LIST_BLOCK_COUNT);
+ elm_scroller_single_direction_set(g_pFolderView->
+ pVideosGenlist,
+ ELM_SCROLLER_SINGLE_DIRECTION_HARD);
+#ifdef ENABLE_LONGPRESS
+ __mp_folder_view_del_genlist_cb(g_pFolderView->
+ pVideosGenlist);
+ __mp_folder_view_add_genlist_cb(g_pFolderView->
+ pVideosGenlist);
+#endif
+ }
+ elm_object_part_content_set(g_pFolderView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pFolderView->pVideosGenlist);
+ /*mp_folder_view_append_folder_items(g_pFolderView->pVideosGenlist);*/
+ __mp_folder_view_append_grid_layout(g_pFolderView->
+ pVideosGenlist);
+ evas_object_smart_callback_add((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "wm,rotation,changed",
+ __mp_folder_view_rotate_cb, NULL);
+ evas_object_show(g_pFolderView->pVideosGenlist);
+ } else {
+ __mp_folder_view_create_no_content();
+ }
+
+ mp_list_view_update_count_layout();
+
+}
+
+void mp_folder_view_update_video_items(void)
+{
+ if (!g_pFolderView->pVideosGenlist) {
+ VideoLogWarning
+ ("[WARNING] g_pFolderView->pFolderItemList is not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nFolderListSize = mp_util_svc_get_video_folder_size();
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+ if (nFolderListSize > 0) {
+
+ pTmpVideoGenlistItem =
+ elm_genlist_first_item_get(g_pFolderView->pVideosGenlist);
+ while (pTmpVideoGenlistItem) {
+ elm_genlist_item_update(pTmpVideoGenlistItem);
+ pTmpVideoGenlistItem =
+ elm_genlist_item_next_get(pTmpVideoGenlistItem);
+ }
+ }
+}
+
+void mp_folder_view_change_language(void)
+{
+ if (!g_pFolderView) {
+ VideoLogInfo("No existed handle of Folder view.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_folder_view_update_video_items();
+}
diff --git a/src/view/mp-video-list-view-item-of-folder.c b/src/view/mp-video-list-view-item-of-folder.c
new file mode 100644
index 0000000..42bac5c
--- /dev/null
+++ b/src/view/mp-video-list-view-item-of-folder.c
@@ -0,0 +1,2024 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-video-log.h"
+#include "mp-util.h"
+#include "video-player.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+
+#include "mp-util-media-service.h"
+#include "mp-video-list-view-item-of-folder.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-footer-toolbar.h"
+#include "mp-video-search-view.h"
+#include "mp-external-ug.h"
+#include "mp-launching-video-displayer.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "mp-drm-ctrl.h"
+#endif
+#include "videos-view-mgr.h"
+#include "mp-video-list-remove-view.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-video-list-option-ctrl.h"
+#include "mp-video-list-share-via-view.h"
+
+#include "mp-video-list-personal-view.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-video-list-view-select.h"
+#include "mp-video-nocontent-layout.h"
+#include "mp-video-detail-view.h"
+#include "mp-rotate-ctrl.h"
+
+#define NO_CONTENTS_W 720
+#define NO_CONTENTS_H 897
+
+
+/****************************folder view***************************/
+
+typedef struct
+{
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ void *pVideosGenlist;
+
+ Elm_Genlist_Item_Class *pGenGridItc;
+ Elm_Genlist_Item_Class *pGenGridLandscapeItc;
+ Elm_Gengrid_Item_Class *pGenGridItc_l;
+
+ int nFolder_index;
+ int currentItemCount;
+ char *pFolderUrl;
+ int nPlayVideoIndex;
+ bool bExist;
+ bool bLandscape;
+ MpDbUpdateViewLev euLev;
+ UpdateListItemsCbFunc pUpdateListUserCbFunc;
+
+}st_VideoFolderViewHandle;
+
+typedef struct
+{
+ Evas_Object *pFolderViewBox;
+ Evas_Object *pFolderViewCountlayout;
+ Evas_Object *pFolderViewBaselayout;
+ Evas_Object *pNocontentsLayout;
+ Evas_Object *pViewButton;
+// Evas_Object *pSearchBtn;
+
+ Evas_Object *pFolderViewGenlistTitle;
+ Elm_Genlist_Item_Class *pFolderViewGenlistTitleItc;
+ Elm_Object_Item *pFolderViewGenlistItemForTitle;
+ Eina_List *pVideolistItemList;
+}st_VideoFolderViewWidget;
+
+st_VideoFolderViewHandle *g_pFolderViewHandle = NULL;
+st_VideoFolderViewWidget *g_pFolderViewWidget = NULL;
+Elm_Genlist_Item_Class VideoFolder_Itc;
+
+
+static bool __mp_folder_item_view_update_video_list(MpListUpdateType eUpdateType);
+static void __mp_folder_item_view_db_changed_cb(void *pUserData);
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_delete_video_items(int nVideoItemIndex);
+#endif
+static void __mp_folder_item_view_db_result_data_update_cb(void);
+static void __mp_folder_item_view_result_user_cb(MpListUpdateType eUpdateType);
+static void __mp_folder_item_view_result_view_update_cb(void);
+//static void __mp_folder_item_view_update_count_layout();
+static void __mp_folder_item_view_rotate_cb(void *data, Evas_Object *obj, void *event_info);
+static void mp_folder_view_cancel_thumbnail_update(int nIndexGenlist);
+static int mp_folder_item_view_thumbnail_to_genlist_index(int nVideoItemIndex);
+static int __mp_folder_item_view_get_sort_type(void);
+
+/*
+void __mp_folder_item_view_check_search_button_enable(void)
+{
+ Eina_Bool bActivateSearchButton = EINA_FALSE;
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (nVideoListSize < 1)
+ {
+ bActivateSearchButton = EINA_TRUE;
+ }
+ else
+ {
+ bActivateSearchButton = EINA_FALSE;
+ }
+
+ elm_object_disabled_set(g_pFolderViewWidget->pSearchBtn, bActivateSearchButton);
+}
+*/
+static bool __mp_folder_item_view_free_video_genlistItem(void)
+{
+ if (!g_pFolderViewWidget || !g_pFolderViewWidget->pVideolistItemList) {
+ VideoLogError("g_pMainViewWidget->pVideoGenlistItemList is already empty.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+ EINA_LIST_FREE(g_pFolderViewWidget->pVideolistItemList, pTmpVideoGenlistItem)
+ {
+ if (pTmpVideoGenlistItem) {
+ int nIndex = (int)elm_object_item_data_get(pTmpVideoGenlistItem);
+ //mp_util_svc_cancel_thumbnail_update(nIndex);
+ mp_folder_view_cancel_thumbnail_update(nIndex);
+ pTmpVideoGenlistItem = NULL;
+ }
+ }
+
+ g_pFolderViewWidget->pVideolistItemList = NULL;
+
+ return TRUE;
+}
+
+static void __mp_folder_item_view_clear_genlist(void *pVideosGenlist)
+{
+ VideoLogInfo("");
+ if (pVideosGenlist && g_pFolderViewWidget) {
+ __mp_folder_item_view_free_video_genlistItem();
+ elm_genlist_clear(pVideosGenlist);
+ }
+}
+
+static void __mp_folder_item_view_destroy(void)
+{
+ VideoLogInfo("");
+ if (g_pFolderViewHandle)
+ {
+ g_pFolderViewHandle->nFolder_index = 0;
+ __mp_folder_item_view_clear_genlist(g_pFolderViewHandle->pVideosGenlist);
+ MP_DEL_OBJ(g_pFolderViewHandle->pVideosGenlist);
+
+ g_pFolderViewHandle->nPlayVideoIndex = -1;
+ MP_FREE_STRING(g_pFolderViewHandle->pFolderUrl);
+
+ free(g_pFolderViewHandle);
+ g_pFolderViewHandle = NULL;
+ }
+
+ if (g_pFolderViewWidget)
+ {
+ MP_DEL_ITC(g_pFolderViewWidget->pFolderViewGenlistTitleItc);
+ MP_DEL_OBJ(g_pFolderViewWidget->pViewButton);
+// MP_DEL_OBJ(g_pFolderViewWidget->pSearchBtn);
+ MP_DEL_OBJ(g_pFolderViewWidget->pNocontentsLayout);
+ MP_DEL_OBJ(g_pFolderViewWidget->pFolderViewBaselayout);
+ MP_DEL_OBJ(g_pFolderViewWidget->pFolderViewCountlayout);
+ MP_DEL_OBJ(g_pFolderViewWidget->pFolderViewBox);
+
+ free(g_pFolderViewWidget);
+ g_pFolderViewWidget = NULL;
+ }
+ evas_object_smart_callback_del((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_folder_item_view_rotate_cb);
+}
+
+static void __mp_folder_item_view_reset(void)
+{
+ VideoLogInfo("");
+ if (g_pFolderViewHandle)
+ {
+ mp_util_db_set_update_fun(g_pFolderViewHandle->euLev, NULL);
+ g_pFolderViewHandle->nFolder_index = 0;
+ __mp_folder_item_view_clear_genlist(g_pFolderViewHandle->pVideosGenlist);
+ g_pFolderViewHandle->pVideosGenlist = NULL;
+
+ MP_FREE_STRING(g_pFolderViewHandle->pFolderUrl);
+
+ g_pFolderViewHandle->nPlayVideoIndex = -1;
+
+ free(g_pFolderViewHandle);
+ g_pFolderViewHandle = NULL;
+ }
+
+ if (g_pFolderViewWidget)
+ {
+ MP_DEL_ITC(g_pFolderViewWidget->pFolderViewGenlistTitleItc);
+ g_pFolderViewWidget->pFolderViewBaselayout = NULL;
+ g_pFolderViewWidget->pNocontentsLayout = NULL;
+// g_pFolderViewWidget->pSearchBtn = NULL;
+ g_pFolderViewWidget->pViewButton = NULL;
+
+ free(g_pFolderViewWidget);
+ g_pFolderViewWidget = NULL;
+ }
+ evas_object_smart_callback_del((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_folder_item_view_rotate_cb);
+}
+
+
+static Evas_Object *__mp_folder_item_view_init_base_layout(void *pParent)
+{
+ if (!pParent)
+ {
+ VideoLogError("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ MP_DEL_OBJ(g_pFolderViewWidget->pFolderViewBaselayout);
+
+ // Create folder view base layout.
+ g_pFolderViewWidget->pFolderViewBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pFolderViewWidget->pFolderViewBaselayout, VIDEO_PLAYER_LISTVIEW_EDJ, LISTVIEW_EDJ_GROUP);
+ evas_object_size_hint_weight_set(g_pFolderViewWidget->pFolderViewBaselayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pFolderViewWidget->pFolderViewBaselayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ return g_pFolderViewWidget->pFolderViewBaselayout;
+}
+
+static void __mp_folder_item_view_pop(void *pNaviFrame, void *pUserData)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("[ERR] g_pFolderViewHandle");
+ return;
+ }
+ mp_ft_ctrl_destroy();
+
+ if (g_pFolderViewHandle && g_pFolderViewHandle->pUpdateListUserCbFunc)
+ {
+ g_pFolderViewHandle->pUpdateListUserCbFunc(LIST_UPDATE_TYPE_ALL);
+
+ VideoLogInfo("");
+ }
+
+ //MpVideoServiceCtrlSetPlayerType(MpVideoServiceCtrlGetPrevPlayerType());
+
+}
+
+static void __mp_folder_item_view_trans_finished_cb(void *pUserData, Evas_Object *obj, void *event_info)
+{
+ if (!obj)
+ {
+ VideoLogError("[ERR] g_pAsfDeviceListViewHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished", __mp_folder_item_view_trans_finished_cb);
+}
+
+// Back button
+static Eina_Bool __mp_folder_item_view_back_btn_cb(void *pUserData, Elm_Object_Item *pItem)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("[ERR] g_pListRemoveViewHandle is NULL.");
+ return EINA_TRUE;
+ }
+ VideoLogInfo("");
+ g_pFolderViewHandle->bExist = true;
+ mp_widget_ctrl_disable_navi_handle_focus_except_item(g_pFolderViewHandle->pNaviFrameHandle, g_pFolderViewHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pFolderViewHandle->pNaviFrameHandle, "transition,finished", __mp_folder_item_view_trans_finished_cb, NULL);
+ __mp_folder_item_view_pop(g_pFolderViewHandle->pNaviFrameHandle, NULL);
+ mp_folder_view_set_is_item_view(false);
+
+ return EINA_TRUE;
+}
+
+static char *__mp_folder_item_view_get_guration_time(int nVideoItemIndex)
+{
+ VideoLogInfo("");
+
+ char szTmpStr[STR_LEN_MAX] = {0, };
+ char szTmpStrDurationTime[STR_LEN_MAX] = {0, };
+ char szTmpStrLastPlayedPos[STR_LEN_MAX] = {0, };
+
+ unsigned int nVideoInfoDuration = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ unsigned int nVideoInfoLastTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+
+ mp_util_convert_time(nVideoInfoDuration, szTmpStrDurationTime, FALSE);
+ if (nVideoInfoLastTime > 0)
+ {
+ mp_util_convert_time(nVideoInfoLastTime, szTmpStrLastPlayedPos, TRUE);
+ snprintf(szTmpStr, STR_LEN_MAX, "<match>%s</match>/%s", szTmpStrLastPlayedPos, szTmpStrDurationTime);
+ }
+ else
+ {
+ snprintf(szTmpStr, STR_LEN_MAX, "%s", szTmpStrDurationTime);
+ }
+
+ return strdup(szTmpStr);
+}
+
+static char *__mp_folder_item_view_get_label_of_video_item_cb(void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ int nVideoItemIndex = (int)pUserData;
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pFolderViewHandle->pFolderUrl, __mp_folder_item_view_get_sort_type(), MP_LIST_VIEW_ALL);
+ if (!strcmp(pPart, "elm.text.main.left.top")) {
+ char *szTitle;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+ VideoLogWarning("testestesteste = %d, %s", nVideoItemIndex, szTitleUtf8);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.sub.left.bottom"))
+ {
+ return __mp_folder_item_view_get_guration_time(nVideoItemIndex);
+ } else if (!strcmp(pPart, "elm.text"))
+ {
+ char *szTitle;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+ VideoLogInfo("%s",szTitle);
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2"))
+ {
+ return __mp_folder_item_view_get_guration_time(nVideoItemIndex);
+ }
+ /*else if (!strcmp(pPart, "elm.text.sub.right.bottom"))
+ {
+ unsigned long long nFilesize = 0;
+
+ nFilesize = mp_util_svc_get_video_item_size(nVideoItemIndex);
+ char *szFileSize = mp_util_get_file_size(nFilesize);
+ char *szTitleUtf8 = NULL;
+ if (szFileSize)
+ {
+ szTitleUtf8 = elm_entry_utf8_to_markup(szFileSize);
+ free(szFileSize);
+ szFileSize = NULL;
+ }
+
+ return szTitleUtf8;
+ }*/
+
+ return NULL;
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_HW_mouse_back_up_popup_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+
+ if (pEvent->button == 3)
+ {
+ mp_util_delete_popup_handle();
+ }
+}
+
+static void __mp_folder_item_view_HW_key_back_popup_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo)
+{
+ Evas_Event_Key_Down *pEvent = pEventInfo;
+
+ if (!g_strcmp0(pEvent->keyname, "XF86Back"))
+ {
+ mp_util_delete_popup_handle();
+ }
+}
+#endif
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_respones_delete_popup_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ mp_util_delete_popup_handle();
+
+ int nVideoItemIndex = (int)pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index())
+ {
+ VideoLogError("[ERR] list item index.");
+ return;
+ }
+
+ char *szFileUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+ if (szFileUrl)
+ {
+ VideoLogInfo("Delete file url : %s", szFileUrl);
+ vp_file_unlink(szFileUrl);
+ free(szFileUrl);
+ szFileUrl = NULL;
+
+ mp_util_svc_remove_item_by_list_index(nVideoItemIndex);
+ __mp_folder_item_view_delete_video_items(nVideoItemIndex);
+
+ //__mp_folder_item_view_update_count_layout();
+ }
+}
+
+static void __mp_folder_item_view_respones_cancel_popup_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+static void __mp_folder_item_view_delete_btn_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+ mp_option_ctrl_delete_handle();
+
+ int nVideoItemIndex = (int)pUserData;
+ MpListViewAsType type = MP_LIST_VIEW_AS_THUMBNAIL_LIST;
+ mp_util_remove_question_popup((void*)nVideoItemIndex, type, __mp_folder_item_view_respones_delete_popup_cb, __mp_folder_item_view_respones_cancel_popup_cb, __mp_folder_item_view_HW_mouse_back_up_popup_cb, __mp_folder_item_view_HW_key_back_popup_cb);
+}
+#endif
+
+Evas_Object *__mp_folder_item_view_get_icon_of_video_item_cb(void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ Evas_Object *pLayout = NULL;
+
+ int nVideoItemIndex = (int)pUserData;
+ if (!pPart || !pObject)
+ {
+ return NULL;
+ }
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pFolderViewHandle->pFolderUrl, __mp_folder_item_view_get_sort_type(), MP_LIST_VIEW_ALL);
+ if (!strcmp(pPart, "elm.icon.1"))
+ {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri, VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+
+ if (pBg)
+ evas_object_show(pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime > 0 && nDurationTime > 0) {
+ double nRatio = ((double)nLastPlayedTime) / ((double)nDurationTime);
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = mp_widget_ctrl_create_progressbar(pLayout, nRatio);
+ elm_layout_content_set(pLayout, "elm.progressbar.icon", pProgressBar);
+
+ if (pProgressBar) {
+ evas_object_show(pProgressBar);
+ }
+ }
+
+ if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) {
+ VideoLogWarning("Local File or Create sub icon is failed.", nVideoItemIndex);
+ }
+
+ if (pLayout) {
+ evas_object_show(pLayout);
+ }
+
+ return pLayout;
+ } else if (!strcmp(pPart, "elm.swallow.icon"))
+ {
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *thumb = NULL;
+ int nWidth = 0;
+ int nHeight = 0;
+
+ thumb = elm_image_add(pObject);
+ elm_image_preload_disabled_set(thumb, EINA_FALSE);
+ elm_image_smooth_set(thumb, EINA_FALSE);
+ elm_image_prescale_set(thumb, 50*MP_SCALE);
+ elm_image_file_set(thumb, pThumbIconUri, NULL);
+ elm_image_object_size_get(thumb, &nWidth, &nHeight);
+
+ if (nWidth > nHeight) {
+ elm_image_aspect_fixed_set(thumb, EINA_FALSE);
+ }
+ if (thumb)
+ evas_object_show(thumb);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ return thumb;
+ } else if (!strcmp(pPart, "elm.progressbar.icon"))
+ {
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime <= 0) {
+ return NULL;
+ }
+
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ return pProgressBar;
+ }
+
+ MP_DEL_OBJ(pLayout);
+
+ return NULL;
+}
+
+// Genlist item callback.
+static void __mp_folder_item_view_warning_popup_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+static void __mp_folder_item_view_select_video_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+ Evas_Object *pPopup = evas_object_data_get(pObject, "popup"); // Get popup
+ if (pPopup)
+ {
+ VideoLogError("long press is called");
+ return; // If popup exists, do nothing
+ }
+
+ if (!mp_util_call_off()) {
+ mp_util_ticker_toast_popup(VIDEOS_NOTIPOP_MSG_UNABLE_TO_PLAY_VIDEO_DURING_CALL, false, false);
+ return;
+ }
+
+ if (!mp_launch_video_allow_check()) {
+ VideoLogWarning("nVideoItemIndex < 0 ===>>> RETURN");
+ return;
+ }
+
+ int nVideoItemIndex = (int)pUserData;
+ int nVideoListSize = g_pFolderViewHandle->currentItemCount;
+
+ VideoLogDebug("nVideoItemIndex = %d--%d", nVideoItemIndex, nVideoListSize);
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= nVideoListSize) {
+ VideoLogError("nVideoItemIndex < 0 ===>>> RETURN");
+ return;
+ }
+
+ g_pFolderViewHandle->nPlayVideoIndex = nVideoItemIndex;
+
+ char *szVideoUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+
+ if (szVideoUrl) {
+ if (!mp_util_check_local_file_exist(szVideoUrl)) {
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR, VIDEOS_NOTIPOP_MSG_FILE_NOT_EXIST, __mp_folder_item_view_warning_popup_cb);
+ MP_FREE_STRING(szVideoUrl);
+ return;
+ }
+ mp_launch_video_play(szVideoUrl, MP_PLAYER_TYPE_VIDEO, NULL);
+ } else {
+ VideoLogInfo("[Err] Fail to get video uri from media service.");
+ return;
+ }
+
+ MP_FREE_STRING(szVideoUrl);
+}
+
+static void mp_folder_view_cancel_thumbnail_update(int nIndexGenlist)
+{
+ if (!g_pFolderViewWidget) {
+ VideoLogError("");
+ return;
+ }
+ bool bLandscape = mp_rotate_ctrl_check_landspace();
+ int nVideoItemIndex = 0;
+ int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT;
+
+ if (bLandscape) {
+ nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ }
+
+ nVideoItemIndex = nIndexGenlist * nItemCount;
+ int nVideoListSize = g_pFolderViewHandle->currentItemCount;
+ VideoLogInfo("realize is %d--%d--%d", nItemCount, nVideoItemIndex, nVideoListSize);
+
+ int nIndex = 0;
+ for (; (nIndex < nItemCount) && (nVideoItemIndex < nVideoListSize); nIndex++) {
+ mp_util_svc_cancel_thumbnail_update(nVideoItemIndex);
+ nVideoItemIndex++;
+ }
+}
+
+static void __mp_folder_item_view_video_item_del_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pFolderViewWidget || !event_info || !g_pFolderViewWidget->pVideolistItemList)
+ {
+ VideoLogError("g_pMainViewWidge is NULL");
+ return;
+ }
+
+ int nIndexGenlist = 0;
+ Elm_Object_Item *pCurrentItem = (Elm_Object_Item *)event_info;
+ Eina_List *pCurList = NULL;
+ Elm_Object_Item *pTmpVideoItem = NULL;
+ EINA_LIST_FOREACH(g_pFolderViewWidget->pVideolistItemList, pCurList, pTmpVideoItem)
+ {
+ if (pCurrentItem == pTmpVideoItem)
+ {
+ nIndexGenlist = (int)elm_object_item_data_get(pCurrentItem);
+ mp_folder_view_cancel_thumbnail_update(nIndexGenlist);
+ pTmpVideoItem = NULL;
+ pCurList->data = NULL;
+ break;
+ }
+ }
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static void __mp_folder_item_view_append_gengrid_items(Evas_Object *pObjVideosList, int nGenItemIndex)
+{
+ if (!g_pFolderViewHandle) {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+ MP_DEL_GRID_ITC(g_pFolderViewHandle->pGenGridItc_l);
+ g_pFolderViewHandle->pGenGridItc_l = elm_gengrid_item_class_new();
+ g_pFolderViewHandle->pGenGridItc_l->item_style = "video/album_grid";
+ g_pFolderViewHandle->pGenGridItc_l->func.text_get = (void*)__mp_folder_item_view_get_label_of_video_item_cb;
+ g_pFolderViewHandle->pGenGridItc_l->func.content_get = (void*)__mp_folder_item_view_get_icon_of_video_item_cb;
+ g_pFolderViewHandle->pGenGridItc_l->func.state_get = NULL;
+ g_pFolderViewHandle->pGenGridItc_l->func.del = NULL;
+
+ int nCount = (mp_rotate_ctrl_check_landspace() ? VP_GENLIST_THUMB_LANDSPACE_COUNT : VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nGenItemIndex*nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nVideoListSize = g_pFolderViewHandle->currentItemCount;
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
+ gridItem = elm_gengrid_item_append(pObjVideosList, g_pFolderViewHandle->pGenGridItc_l, (void *)nIndex, __mp_folder_item_view_select_video_item_cb, (void *)nIndex);
+ elm_gengrid_item_select_mode_set(gridItem, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_data_set(gridItem, (void *)nIndex);
+ }
+}
+
+static Evas_Object *__mp_folder_item_view_create_gengrid(Evas_Object *parent, int nWidth, int nHeight)
+{
+ Evas_Object *pGengrid;
+ pGengrid = elm_gengrid_add(parent);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid is not existed.");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_gengrid_item_size_set(pGengrid, nWidth, nHeight);
+ elm_gengrid_align_set(pGengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pGengrid, EINA_TRUE);
+
+ return pGengrid;
+}
+
+static void mp_item_of_folder_view_get_icon_dimensions(int *height, int *width)
+{
+ int winHeight = 0;
+ int winWidth = 0;
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &winWidth, &winHeight);
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ *width = winHeight / VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ } else {
+ *width = winWidth / VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ }
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+}
+
+static Evas_Object *__mp_folder_item_view_get_icon_of_grid_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ if (!g_pFolderViewHandle || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfFolderItemList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int)pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_item_of_folder_view_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid = __mp_folder_item_view_create_gengrid(pObject, nWidth, nHeight);
+ __mp_folder_item_view_append_gengrid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+static int mp_folder_item_view_thumbnail_to_genlist_index(int nVideoItemIndex)
+{
+ if (nVideoItemIndex < 0)
+ {
+ VideoLogDebug("invalid nVideoItemIndex");
+ return 0;
+ }
+ int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ int nGenlistIndex = 0;
+ if (g_pFolderViewHandle->bLandscape)
+ {
+ nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ }
+ nGenlistIndex = nVideoItemIndex/nItemCount;
+ return nGenlistIndex;
+}
+
+static void __mp_folder_item_view_append_grid_layout(void *pGenlist)
+{
+ if (!pGenlist || !g_pFolderViewHandle) {
+ VideoLogError("error handle.");
+ return;
+ }
+ int nIndex = 0;
+ int nVideoListSize = g_pFolderViewHandle->currentItemCount;
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ return;
+ }
+
+ MP_DEL_ITC(g_pFolderViewHandle->pGenGridItc);
+ g_pFolderViewHandle->pGenGridItc = elm_genlist_item_class_new();
+ g_pFolderViewHandle->pGenGridItc->item_style = "video/1icon.thumbnail";
+ g_pFolderViewHandle->pGenGridItc->func.text_get = NULL;
+ g_pFolderViewHandle->pGenGridItc->func.content_get = (void *)__mp_folder_item_view_get_icon_of_grid_cb;
+ g_pFolderViewHandle->pGenGridItc->func.state_get = NULL;
+ g_pFolderViewHandle->pGenGridItc->func.del = NULL;
+ g_pFolderViewHandle->pGenGridItc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pFolderViewHandle->pGenGridLandscapeItc);
+ g_pFolderViewHandle->pGenGridLandscapeItc = elm_genlist_item_class_new();
+ g_pFolderViewHandle->pGenGridLandscapeItc->item_style = "video/1icon.thumbnail.landscape";
+ g_pFolderViewHandle->pGenGridLandscapeItc->func.text_get = NULL;
+ g_pFolderViewHandle->pGenGridLandscapeItc->func.content_get = (void *)__mp_folder_item_view_get_icon_of_grid_cb;
+ g_pFolderViewHandle->pGenGridLandscapeItc->func.state_get = NULL;
+ g_pFolderViewHandle->pGenGridLandscapeItc->func.del = NULL;
+ g_pFolderViewHandle->pGenGridLandscapeItc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow = mp_folder_item_view_thumbnail_to_genlist_index(nVideoListSize - 1);
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+
+ if (mp_rotate_ctrl_check_landspace()) {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ pTmpVideoGenlistItem = elm_genlist_item_append(pGenlist, g_pFolderViewHandle->pGenGridItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ g_pFolderViewWidget->pVideolistItemList = eina_list_append(g_pFolderViewWidget->pVideolistItemList, pTmpVideoGenlistItem);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem, __mp_folder_item_view_video_item_del_cb);
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ pTmpVideoGenlistItem = elm_genlist_item_append(pGenlist, g_pFolderViewHandle->pGenGridLandscapeItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ g_pFolderViewWidget->pVideolistItemList = eina_list_append(g_pFolderViewWidget->pVideolistItemList, pTmpVideoGenlistItem);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem, __mp_folder_item_view_video_item_del_cb);
+ }
+ }
+}
+#endif
+
+/*static void __mp_folder_item_view_append_video_items(void *pVideosGenlist)
+{
+ VideoLogInfo("");
+
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoFolder_Itc.item_style = "2line.top";
+ VideoFolder_Itc.func.text_get = (void*)__mp_folder_item_view_get_label_of_video_item_cb;
+ VideoFolder_Itc.func.content_get = (void*)__mp_folder_item_view_get_icon_of_video_item_cb;
+ VideoFolder_Itc.func.state_get = NULL;
+ VideoFolder_Itc.func.del = NULL;
+ VideoFolder_Itc.decorate_item_style = NULL;//"mode/slide4";
+ VideoFolder_Itc.decorate_all_item_style = NULL;//"edit_default";
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++)
+ {
+ pTmpVideoGenlistItem = elm_genlist_item_append(pVideosGenlist, &VideoFolder_Itc,
+ (void*)nIndex, NULL, ELM_GENLIST_ITEM_NONE, __mp_folder_item_view_select_video_item_cb, NULL);
+
+ g_pFolderViewWidget->pVideolistItemList = eina_list_append(g_pFolderViewWidget->pVideolistItemList, pTmpVideoGenlistItem);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem, __mp_folder_item_view_video_item_del_cb);
+ }
+}*/
+
+
+static void __mp_folder_item_view_hide_genlist(void)
+{
+ if (!g_pFolderViewWidget || !g_pFolderViewHandle)
+ {
+ VideoLogError("g_pSearchViewWidget == NULL");
+ return;
+ }
+
+ elm_object_part_content_unset(g_pFolderViewWidget->pFolderViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+ if (g_pFolderViewHandle->pVideosGenlist)
+ {
+ evas_object_hide(g_pFolderViewHandle->pVideosGenlist);
+ }
+}
+
+static void __mp_folder_item_view_hide_no_layout(void)
+{
+ if (!g_pFolderViewWidget || !g_pFolderViewHandle)
+ {
+ VideoLogError("g_pSearchViewWidget == NULL");
+ return;
+ }
+ if (g_pFolderViewWidget->pNocontentsLayout)
+ {
+ elm_object_part_content_unset(g_pFolderViewWidget->pFolderViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+ MP_DEL_OBJ(g_pFolderViewWidget->pNocontentsLayout);
+ }
+}
+
+static Evas_Object *__mp_folder_item_view_add_no_contents_layout()
+{
+ if (!g_pFolderViewWidget)
+ {
+ VideoLogError("g_pFolderViewWidget is not existed.");
+ return NULL;
+ }
+ VideoLogInfo("");
+ MP_DEL_OBJ(g_pFolderViewWidget->pNocontentsLayout);
+ g_pFolderViewWidget->pNocontentsLayout = mp_create_nocontent_layout(g_pFolderViewWidget->pFolderViewBaselayout,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
+ NULL);
+ return g_pFolderViewWidget->pNocontentsLayout;
+}
+
+static bool __mp_folder_item_view_arrange_video_list(int nItemSortType, MpListUpdateType eUpdateType, void *pVideosGenlist)
+{
+ if (!g_pFolderViewWidget || !g_pFolderViewHandle)
+ {
+ VideoLogError("No exist g_pSearchViewWidget.");
+ return false;
+ }
+
+ int nVideoListSize = 0;
+ bool bUnset = FALSE;
+ if (eUpdateType == LIST_UPDATE_TYPE_ALL || eUpdateType == LIST_UPDATE_TYPE_DATA)
+ {
+ mp_util_svc_destory_video_item_list();
+ if (g_pFolderViewHandle->pFolderUrl)
+ {
+ mp_util_svc_extract_video_list_from_folder(g_pFolderViewHandle->pFolderUrl, nItemSortType, MP_LIST_VIEW_ALL);
+ }
+ }
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ g_pFolderViewHandle->currentItemCount = nVideoListSize;
+
+ elm_genlist_clear(pVideosGenlist);
+
+ //__mp_folder_item_view_update_count_layout();
+
+ if (nVideoListSize > 0)
+ {
+ __mp_folder_item_view_free_video_genlistItem();
+ if (g_pFolderViewWidget->pNocontentsLayout) {
+ __mp_folder_item_view_hide_no_layout();
+ bUnset = TRUE;
+ }
+ //__mp_folder_item_view_append_video_items(pVideosGenlist);
+ __mp_folder_item_view_append_grid_layout(pVideosGenlist);
+ if (bUnset) {
+ elm_object_part_content_set(g_pFolderViewWidget->pFolderViewBaselayout, SWALLOW_LISTVIEW_CONTENT, pVideosGenlist);
+ evas_object_show(pVideosGenlist);
+ }
+ }
+ else
+ {
+ __mp_folder_item_view_hide_genlist();
+ __mp_folder_item_view_add_no_contents_layout();
+ elm_object_part_content_set(g_pFolderViewWidget->pFolderViewBaselayout, SWALLOW_LISTVIEW_CONTENT, g_pFolderViewWidget->pNocontentsLayout);
+ evas_object_show(g_pFolderViewWidget->pNocontentsLayout);
+ }
+ //__mp_folder_item_view_update_count_layout();
+
+ return true;
+}
+
+void __mp_folder_item_view_show_search_view(void)
+{
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+ mp_search_view_push((void *)mp_mgr_get_library_naviframe(), szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+
+ mp_search_view_register_update_list_func(__mp_folder_item_view_result_user_cb, __mp_folder_item_view_result_view_update_cb);
+}
+
+void __mp_folder_item_view_search_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ __mp_folder_item_view_show_search_view();
+}
+
+// Naviframe title button
+Evas_Object *__mp_folder_item_view_create_title_btn(Evas_Object *pParent, Evas_Smart_Cb pFunc)
+{
+ VideoLogInfo("");
+
+ Evas_Object *search_ic = elm_image_add(pParent);
+ elm_image_file_set(search_ic, VIDEO_PLAYER_IMAGE_NAME_EDJ, VIDEO_LIST_VIEW_ICON_SEARCH);
+ elm_image_resizable_set(search_ic, EINA_TRUE, EINA_TRUE);
+ evas_object_show(search_ic);
+
+ Evas_Object *pTitleBtn = elm_button_add(pParent);
+ elm_object_style_set(pTitleBtn, "naviframe/title_icon");
+ elm_object_part_content_set(pTitleBtn, "icon", search_ic);
+ evas_object_smart_callback_add(pTitleBtn, "clicked", pFunc, NULL);
+
+ return pTitleBtn;
+}
+
+// Smart callback of Genlist.
+
+/*static void __mp_folder_item_view_thumbnail_update_cb(int nError, const char *szPath, void *pUserData)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ VideoLogInfo("Index : %d", nVideoItemIndex);
+
+ if (!g_pFolderViewHandle) {
+ VideoLogError("g_pFolderViewWidget is not existed.");
+ return;
+ }
+
+ if (!g_pFolderViewWidget) {
+ VideoLogError("g_pFolderViewWidget is not existed.");
+ return;
+ }
+
+ mp_util_svc_update_thumbnail_info(nVideoItemIndex);
+
+ if (g_pFolderViewWidget->pVideolistItemList) {
+ Elm_Object_Item *pTmpVideoGenlistItem = (Elm_Object_Item*)eina_list_nth(g_pFolderViewWidget->pVideolistItemList, nVideoItemIndex);
+ if (pTmpVideoGenlistItem) {
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ } else {
+ VideoLogInfo("[ERR] Fail to update genlist filed thumbnail icon.");
+ }
+ } else {
+ VideoLogInfo("[ERR] No exist g_pFolderViewWidget->pVideolistItemList.");
+ }
+ // elm_genlist_realized_items_update(g_pMainViewHandle->pVideosGenlist);
+}*/
+
+
+static void __mp_folder_item_view_realize_genlist_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pEventInfo) {
+ VideoLogError("invalid pEveninfo");
+ return;
+ }
+ if (elm_config_access_get()) {
+ VideoLogWarning("Support TTS.");
+ const Eina_List *org = elm_object_item_access_order_get(pEventInfo);
+ Evas_Object *content = elm_object_item_part_content_get(pEventInfo, "elm.icon");
+ if (content && !eina_list_data_find(org, content)) {
+ Evas_Object *tmp;
+ Eina_List *l;
+ Eina_List *items = NULL;
+ // Duplicate original access order
+ EINA_LIST_FOREACH((Eina_List *)org, l, tmp)
+ items = eina_list_append(items, tmp);
+ Evas_Object *ao = elm_access_object_register(content, pObject);
+ items = eina_list_append(items, ao);
+ elm_object_item_access_order_set(pEventInfo, items);
+ }
+ }
+}
+
+static int __mp_folder_item_view_get_sort_type(void)
+{
+
+ int nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+
+ switch (mp_sort_ctrl_get_sort_state())
+ {
+ /*case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break;*/
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ nSortType = MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+ /*case MP_LIST_SORT_BY_SIZE:
+ nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break;*/
+ }
+
+ VideoLogInfo("current sorttype = %d", nSortType);
+
+ return nSortType;
+}
+
+static void __mp_folder_item_view_update_video_items(void *pVideosGenlist)
+{
+ if (!pVideosGenlist) {
+ VideoLogInfo("[ERR] pVideosGenlist or g_pMainViewWidget are NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Elm_Object_Item *pNextGenlistItem = NULL;
+ Elm_Object_Item *pCurrGenlistItem = elm_genlist_first_item_get(pVideosGenlist);
+
+ while (pCurrGenlistItem)
+ {
+
+ pNextGenlistItem = elm_genlist_item_next_get(pCurrGenlistItem);
+ elm_genlist_item_update(pCurrGenlistItem);
+ pCurrGenlistItem = pNextGenlistItem;
+ }
+}
+
+static void __mp_folder_item_view_db_result_data_update_cb(void)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("g_pFolderViewHandle handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!g_pFolderViewHandle->pVideosGenlist)
+ {
+ VideoLogInfo("g_pMainViewHandle->pVideosGenlist is NULL.");
+ return;
+ }
+ if (g_pFolderViewHandle->pFolderUrl)
+ {
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pFolderViewHandle->pFolderUrl, __mp_folder_item_view_get_sort_type(), MP_LIST_VIEW_ALL);
+ //mp_util_svc_ctrl_sort_list(mp_sort_ctrl_get_sort_state());
+ }
+ else
+ {
+ VideoLogError("url is NULL.");
+ }
+
+ __mp_folder_item_view_update_video_items(g_pFolderViewHandle->pVideosGenlist);
+}
+
+static void __mp_folder_item_view_result_view_update_cb(void)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+ VideoLogInfo("");
+ if (g_pFolderViewHandle->pFolderUrl)
+ {
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pFolderViewHandle->pFolderUrl, mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+ }
+ else
+ {
+ VideoLogError("url is NULL.");
+ }
+// __mp_folder_item_view_check_search_button_enable();
+ __mp_folder_item_view_update_video_list(LIST_UPDATE_TYPE_ALL);
+
+ VideoLogInfo("");
+}
+
+
+static void __mp_folder_item_view_result_user_cb(MpListUpdateType eUpdateType)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ if (__mp_folder_item_view_update_video_list(eUpdateType))
+ {
+ Elm_Object_Item *pItem = elm_genlist_first_item_get(g_pFolderViewHandle->pVideosGenlist);
+ if (pItem)
+ {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+ }
+}
+
+
+static void __mp_folder_item_view_delete_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogError("g_pFolderViewHandle == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+
+ mp_remove_view_push(g_pFolderViewHandle->pNaviFrameHandle, __mp_folder_item_view_result_user_cb, __mp_folder_item_view_result_view_update_cb, szFolderPath, LIST_TAB_TYPE_PERSONAL);
+ MP_FREE_STRING(szFolderPath);
+
+}
+
+static void __mp_folder_item_view_sort_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+
+ mp_sort_ctrl_show(__mp_folder_item_view_db_result_data_update_cb);
+}
+
+void __mp_folder_item_view_rename_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogError("g_pFolderViewHandle == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+ mp_select_view_push((void *)mp_mgr_get_library_naviframe(), g_pFolderViewHandle->pNaviFrameItem,__mp_folder_item_view_result_user_cb, szFolderPath, SELECT_TYPE_RENAME, LIST_TAB_TYPE_PERSONAL);
+ MP_FREE_STRING(szFolderPath);
+
+}
+
+/*void __mp_folder_item_view_details_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogError("g_pFolderViewHandle == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+ mp_select_view_push((void *)mp_mgr_get_library_naviframe(), g_pFolderViewHandle->pNaviFrameItem, NULL, szFolderPath, SELECT_TYPE_DETAIL, LIST_TAB_TYPE_PERSONAL);
+ MP_FREE_STRING(szFolderPath);
+
+}*/
+
+static void __mp_folder_item_view_download_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogError("g_pFolderViewHandle == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+}
+
+static void __mp_folder_item_view_share_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+
+ mp_share_view_push(g_pFolderViewHandle->pNaviFrameHandle, __mp_folder_item_view_result_view_update_cb, szFolderPath, LIST_TAB_TYPE_PERSONAL);
+ MP_FREE_STRING(szFolderPath);
+}
+#ifdef ENABLE_PRIVATE_MODE
+static void __mp_folder_item_view_add_personal_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+
+ mp_personal_view_push(g_pFolderViewHandle->pNaviFrameHandle, __mp_folder_item_view_result_user_cb, szFolderPath, 0);
+ MP_FREE_STRING(szFolderPath);
+}
+
+static void __mp_folder_item_view_remove_personal_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(g_pFolderViewHandle->nFolder_index);
+ mp_personal_view_push(g_pFolderViewHandle->pNaviFrameHandle, __mp_folder_item_view_result_user_cb, szFolderPath, 1);
+ MP_FREE_STRING(szFolderPath);
+}
+#endif
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_share_via_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogError("g_pFolderViewHandle of list view are not existed.");
+ return;
+ }
+
+ int videoItemIndex = (int)pUserData;
+ char *pVideo_url = mp_util_svc_get_video_url(videoItemIndex);
+#ifdef ENABLE_DRM_FEATURE
+ bool bDRMLock = FALSE;
+ mp_util_check_drm_lock((const char*)pVideo_url, &bDRMLock);
+ if (bDRMLock)
+ {
+ MP_FREE_STRING(pVideo_url);
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR, VIDEOS_NOTIPOP_MSG_UNABLE_TO_SHARE_DRM_FILE, __mp_folder_item_view_warning_popup_cb);
+ return;
+ }
+#endif
+ mp_external_service_share_panel(pVideo_url);
+ MP_FREE_STRING(pVideo_url);
+ //to do share
+}
+#endif
+
+void mp_folder_item_view_result_user_cb(void)
+{
+ VideoLogInfo("");
+ __mp_folder_item_view_update_video_list(LIST_UPDATE_TYPE_ALL);
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_add_to_home_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogInfo("g_pFolderViewHandle of list view are not existed.");
+ return;
+ }
+
+ int nVideoItemIndex = (int)pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+
+ char *pVideo_id = mp_util_svc_get_video_id_by_index(nVideoItemIndex);
+ char *pVideo_thumbnail = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ if (pVideo_id)
+ {
+// if (!mp_util_add_to_home(pVideo_id, pVideo_thumbnail))
+ {
+ mp_util_status_bar_noti_popup_show(MP_COM_OPT_UNABLE_ADDED);
+ }
+ }
+ else
+ {
+ VideoLogError("[ERR] No exist file uri.");
+ }
+ MP_FREE_STRING(pVideo_id);
+ MP_FREE_STRING(pVideo_thumbnail);
+
+ //to do share
+}
+#endif
+
+#if 0 //Unused function
+bool __mp_folder_item_view_get_detail_info(int nVideoItemIndex, stDetailInfo **pDetailInfo)
+{
+ char *szFilePath = NULL;
+ char *szVideoTitle = NULL;
+
+ char szTmpStr[FORMAT_LEN_MAX] = {0,};
+ char szTmpFileDate[FORMAT_LEN_MAX] = {0,};
+ char szTmpFileExtension[FORMAT_LEN_MAX] = {0,};
+ char szTmpFileSize[FORMAT_LEN_MAX] = {0,};
+ char *szTmpModifiedTime = NULL;
+
+ //double dLongitude = 0.0;
+ //double dLatitude = 0.0;
+
+ int nWidth = 0;
+ int nHeight = 0;
+ stDetailInfo *pDetail = NULL;
+
+ szFilePath = mp_util_svc_get_video_url(nVideoItemIndex);
+ szVideoTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+
+ mp_info_ctrl_get_file_info(szFilePath, szTmpFileDate, FORMAT_LEN_MAX-1, szTmpFileExtension, FORMAT_LEN_MAX-1, szTmpFileSize, FORMAT_LEN_MAX-1);
+
+ nWidth = mp_util_svc_get_video_item_width(nVideoItemIndex);
+ nHeight = mp_util_svc_get_video_item_height(nVideoItemIndex);
+ //dLongitude = mp_util_svc_get_video_item_longitude(nVideoItemIndex);
+ //dLatitude = mp_util_svc_get_video_item_latitude(nVideoItemIndex);
+ szTmpModifiedTime = mp_util_svc_get_video_item_modified_time(nVideoItemIndex);
+
+ pDetail = calloc(1, sizeof(stDetailInfo));
+ if (!pDetail) {
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szVideoTitle);
+ VideoLogError("pDetailPopup alloc fail");
+ return FALSE;
+ }
+
+ pDetail->szTitle = g_strdup(szVideoTitle);
+ pDetail->szLocation = vp_util_convert_file_location(szFilePath);
+ MP_FREE_STRING(szFilePath);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%s", szTmpFileExtension);
+ pDetail->szFormat= g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ /*snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%s", szTmpFileDate);
+ pDetail->szDate = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);*/
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%s", szTmpFileSize);
+ pDetail->szSize = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ pDetail->szLastModifiedTime = g_strdup(szTmpModifiedTime);
+ MP_FREE_STRING(szTmpModifiedTime);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%d X %d", nWidth, nHeight);
+ pDetail->szResolution = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ /*snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%f", dLatitude);
+ pDetail->szLatitude = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%f", dLongitude);
+ pDetail->szLongitude = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);*/
+ *pDetailInfo = pDetail;
+ return TRUE;
+}
+#endif
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_normal_result_popup()
+{
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogError("Invalid list and object");
+ return;
+ }
+ evas_object_data_set(g_pFolderViewHandle->pVideosGenlist, "popup", NULL);
+ elm_object_scroll_freeze_pop(g_pFolderViewHandle->pVideosGenlist);
+}
+
+static void __mp_folder_item_view_long_press_item_cb(void *data, Evas_Object *obj, void *pEventInfo)
+{
+ if (!g_pFolderViewHandle || !pEventInfo) {
+ VideoLogError("Invalid list");
+ return;
+ }
+
+ Elm_Object_Item *long_item = (Elm_Object_Item *)pEventInfo;
+
+ //elm_genlist_item_selected_set(long_item, EINA_FALSE);
+ int nIndexGenlist = elm_genlist_item_index_get(long_item);
+ VideoLogDebug("nIndexGenlist : %d", nIndexGenlist);
+
+ if (nIndexGenlist < 0 || nIndexGenlist >= mp_util_svc_get_video_list_size_for_checking_index())
+ {
+ VideoSecureLogError("nVideoItemIndex is invalid");
+ return;
+ }
+ st_RegisteOptionCbFunc *pRegisteCbFunc = (st_RegisteOptionCbFunc*)calloc(1, sizeof(st_RegisteOptionCbFunc));
+ if (pRegisteCbFunc) {
+ pRegisteCbFunc->ShareViaItemCb= (void*)__mp_folder_item_view_share_via_cb;
+ pRegisteCbFunc->AddToHomeItemCb= (void*)__mp_folder_item_view_add_to_home_cb;
+ //pRegisteCbFunc->RenameItemCb = (void*)__mp_folder_item_view_rename_popup_cb;
+ //pRegisteCbFunc->DetailsItemCb= (void*)__mp_folder_item_view_detail_cb;
+ pRegisteCbFunc->DeleteItemCb = (void*)__mp_folder_item_view_delete_btn_cb;
+ }
+
+ char *title = mp_util_svc_get_video_title(nIndexGenlist);
+ mp_option_ctrl_show(g_pFolderViewHandle->pNaviFrameHandle,
+ (const char*)title, nIndexGenlist, pRegisteCbFunc, __mp_folder_item_view_normal_result_popup, NULL, 0);
+ if (mp_option_ctrl_get_handle())
+ {
+ evas_object_data_set(g_pFolderViewHandle->pVideosGenlist, "popup", mp_option_ctrl_get_handle());
+ elm_object_scroll_freeze_push(g_pFolderViewHandle->pVideosGenlist);
+ }
+ MP_FREE_STRING(pRegisteCbFunc);
+ MP_FREE_STRING(title);
+
+}
+#endif
+
+void __mp_folder_item_view_language_changed(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!pObject) {
+ VideoSecureLogError("error genlist handle");
+ }
+ elm_genlist_realized_items_update(pObject);
+}
+
+
+/*internal*/
+static void __mp_folder_item_view_del_genlist_cb(void)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewHandle->pVideosGenlist) {
+ VideoSecureLogError("g_pFolderViewHandle or pVideosGenlist is NULL");
+ return;
+ }
+ VideoLogInfo("");
+ evas_object_smart_callback_del(g_pFolderViewHandle->pVideosGenlist, "language,changed", __mp_folder_item_view_language_changed);
+ evas_object_smart_callback_del(g_pFolderViewHandle->pVideosGenlist, "realized", __mp_folder_item_view_realize_genlist_item_cb);
+#ifdef ENABLE_LONGPRESS
+ evas_object_smart_callback_del(g_pFolderViewHandle->pVideosGenlist, "longpressed", __mp_folder_item_view_long_press_item_cb);
+#endif
+}
+
+/*internal*/
+static void __mp_folder_item_view_add_genlist_cb(void *pVideosGenlist)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewHandle->pVideosGenlist) {
+ VideoSecureLogError("g_pFolderViewHandle is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ evas_object_smart_callback_add(g_pFolderViewHandle->pVideosGenlist, "language,changed", __mp_folder_item_view_language_changed, NULL);
+ evas_object_smart_callback_add(g_pFolderViewHandle->pVideosGenlist, "realized", __mp_folder_item_view_realize_genlist_item_cb, NULL);
+#ifdef ENABLE_LONGPRESS
+ evas_object_smart_callback_add(g_pFolderViewHandle->pVideosGenlist, "longpressed", __mp_folder_item_view_long_press_item_cb, NULL);
+#endif
+}
+
+static bool __mp_folder_item_view_update_video_list(MpListUpdateType eUpdateType)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget || !g_pFolderViewHandle->pVideosGenlist) {
+ VideoLogError("handles of list view are not existed.");
+ return false;
+ }
+
+ __mp_folder_item_view_del_genlist_cb();
+
+ bool bRet = __mp_folder_item_view_arrange_video_list(__mp_folder_item_view_get_sort_type(), eUpdateType, g_pFolderViewHandle->pVideosGenlist);
+ int nVideoListSize = 0;
+ if (bRet) {
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ if (nVideoListSize > 0) {
+ VideoLogInfo("listsize:%d", nVideoListSize);
+ g_pFolderViewHandle->currentItemCount = nVideoListSize;
+ __mp_folder_item_view_add_genlist_cb(g_pFolderViewHandle->pVideosGenlist);
+ }
+ }
+
+ return bRet;
+}
+
+static void __mp_folder_item_view_db_changed_cb(void *pUserData)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ if (g_pFolderViewHandle->pFolderUrl) {
+ VideoSecureLogInfo("szFolderPath : %s", g_pFolderViewHandle->pFolderUrl);
+ if (vp_file_exists(g_pFolderViewHandle->pFolderUrl))
+ {
+ //update video-list
+ VideoLogInfo("update folder item");
+ __mp_folder_item_view_result_user_cb(LIST_UPDATE_TYPE_ALL);
+ }
+ else
+ {
+ VideoLogInfo("pop folder item");
+ elm_naviframe_item_pop(g_pFolderViewHandle->pNaviFrameHandle);
+ }
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_folder_item_view_delete_video_items(int nVideoItemIndex)
+{
+ int nVideoListSize = g_pFolderViewHandle->currentItemCount;
+
+ if (nVideoListSize == 0)
+ {
+ __mp_folder_item_view_update_video_list(LIST_UPDATE_TYPE_ALL);
+ return;
+ }
+
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget || !g_pFolderViewWidget->pVideolistItemList)
+ {
+ VideoLogWarning("[WARNING] g_pFolderViewWidget is not existed.");
+ return;
+ }
+
+ Elm_Object_Item *pTmpVideoGenlistItem = (Elm_Object_Item*)eina_list_nth(g_pFolderViewWidget->pVideolistItemList, nVideoItemIndex);
+ if (!pTmpVideoGenlistItem)
+ {
+ VideoLogWarning("[WARNING] pVideolistItemList is not existed.");
+ return;
+ }
+
+
+ Elm_Object_Item *pNextGenlistItem = NULL;
+ Elm_Object_Item *pCurrGenlistItem = elm_genlist_item_next_get(pTmpVideoGenlistItem);
+
+ g_pFolderViewWidget->pVideolistItemList = eina_list_remove(g_pFolderViewWidget->pVideolistItemList, pTmpVideoGenlistItem);
+ elm_object_item_del(pTmpVideoGenlistItem);
+
+ if (!pCurrGenlistItem)
+ {
+ return;
+ }
+
+ while (pCurrGenlistItem)
+ {
+ pNextGenlistItem = elm_genlist_item_next_get(pCurrGenlistItem);
+ g_pFolderViewWidget->pVideolistItemList = eina_list_remove(g_pFolderViewWidget->pVideolistItemList, pCurrGenlistItem);
+ elm_object_item_del(pCurrGenlistItem);
+ pCurrGenlistItem = pNextGenlistItem;
+ }
+
+ int nIndex = nVideoItemIndex;
+ for (nIndex = nVideoItemIndex; nIndex < nVideoListSize; nIndex++)
+ {
+ pTmpVideoGenlistItem = elm_genlist_item_append(g_pFolderViewHandle->pVideosGenlist, &VideoFolder_Itc,
+ (void*)nIndex, NULL, ELM_GENLIST_ITEM_NONE, __mp_folder_item_view_select_video_item_cb, NULL);
+ g_pFolderViewWidget->pVideolistItemList = eina_list_append(g_pFolderViewWidget->pVideolistItemList, pTmpVideoGenlistItem);
+
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem, __mp_folder_item_view_video_item_del_cb);
+ }
+}
+#endif
+
+static void
+__mp_folder_item_view_base_layout_del_cb(void *pUserData, Evas *e, Evas_Object *pObject, void *pEventInfo)
+{
+ //evas_object_event_callback_del(g_pListRemoveViewWidget->pRemoveViewBaselayout, EVAS_CALLBACK_DEL, __mp_remove_view_base_layout_del_cb);
+ VideoLogInfo("");
+ __mp_folder_item_view_reset();
+}
+
+static void __mp_folder_item_view_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pFolderViewWidget || !g_pFolderViewHandle) {
+ VideoLogError("__mp_folder_view_rotate_cb IS null");
+ return;
+ }
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ g_pFolderViewHandle->bLandscape = true;
+ } else {
+ g_pFolderViewHandle->bLandscape = false;
+ }
+ elm_genlist_clear(g_pFolderViewHandle->pVideosGenlist);
+ __mp_folder_item_view_append_grid_layout(g_pFolderViewHandle->pVideosGenlist);
+}
+
+void __mp_folder_soft_back_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ VideoLogInfo(" ");
+ Evas_Object *pTopNaviFrame = NULL;
+ pTopNaviFrame = elm_naviframe_item_pop(g_pFolderViewHandle->pNaviFrameHandle);
+ evas_object_del(pTopNaviFrame);
+}
+
+static void __mp_folder_item_view_init(void *pParent)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ g_pFolderViewWidget->pFolderViewBox = elm_box_add((Evas_Object*)pParent);
+ elm_box_horizontal_set(g_pFolderViewWidget->pFolderViewBox , EINA_FALSE);
+ evas_object_show(g_pFolderViewWidget->pFolderViewBox);
+
+ g_pFolderViewWidget->pFolderViewBaselayout = __mp_folder_item_view_init_base_layout(g_pFolderViewWidget->pFolderViewBox);
+ evas_object_show(g_pFolderViewWidget->pFolderViewBaselayout);
+
+ elm_box_pack_end(g_pFolderViewWidget->pFolderViewBox, g_pFolderViewWidget->pFolderViewBaselayout);
+
+ evas_object_event_callback_add(g_pFolderViewWidget->pFolderViewBaselayout, EVAS_CALLBACK_DEL, __mp_folder_item_view_base_layout_del_cb, NULL);
+
+ g_pFolderViewHandle->pVideosGenlist = elm_genlist_add(g_pFolderViewWidget->pFolderViewBaselayout);
+ elm_scroller_bounce_set(g_pFolderViewHandle->pVideosGenlist, EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pFolderViewHandle->pVideosGenlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pFolderViewHandle->pVideosGenlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pFolderViewHandle->pVideosGenlist, VIDEO_GENLIST_BLOCK_COUNT);
+ elm_scroller_single_direction_set(g_pFolderViewHandle->pVideosGenlist, ELM_SCROLLER_SINGLE_DIRECTION_HARD);
+ elm_genlist_mode_set(g_pFolderViewHandle->pVideosGenlist, ELM_LIST_COMPRESS);
+ elm_object_part_content_set(g_pFolderViewWidget->pFolderViewBaselayout, SWALLOW_LISTVIEW_CONTENT, g_pFolderViewHandle->pVideosGenlist);
+ __mp_folder_item_view_update_video_list(LIST_UPDATE_TYPE_ALL);
+ evas_object_show(g_pFolderViewHandle->pVideosGenlist);
+ g_pFolderViewHandle->bLandscape = false;
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_folder_item_view_rotate_cb, NULL);
+
+ Evas_Object * pLeftbtn = elm_button_add(g_pFolderViewHandle->pNaviFrameHandle);
+ elm_object_style_set(pLeftbtn, "naviframe/end_btn/default");
+ evas_object_smart_callback_add(pLeftbtn, "clicked", __mp_folder_soft_back_button_cb, NULL);
+
+ char *folder_name = mp_util_svc_get_video_folder_name(g_pFolderViewHandle->nFolder_index);
+
+ g_pFolderViewHandle->pNaviFrameItem = elm_naviframe_item_push( g_pFolderViewHandle->pNaviFrameHandle,
+ (const char*)folder_name,
+ pLeftbtn,
+ NULL,
+ g_pFolderViewWidget->pFolderViewBox,
+ NULL );
+
+ elm_naviframe_item_pop_cb_set(g_pFolderViewHandle->pNaviFrameItem , __mp_folder_item_view_back_btn_cb, g_pFolderViewHandle);
+
+ MP_FREE_STRING(folder_name);
+
+ mp_folder_item_view_check_more_button_of_toolbar();
+
+ elm_naviframe_item_title_enabled_set(g_pFolderViewHandle->pNaviFrameItem, TRUE, EINA_FALSE);
+
+ mp_util_db_set_update_fun(g_pFolderViewHandle->euLev, __mp_folder_item_view_db_changed_cb);
+
+ mp_util_hide_indicator();
+
+}
+
+bool mp_folder_item_view_is_current_view()
+{
+ return (g_pFolderViewHandle != NULL && !g_pFolderViewHandle->bExist);
+}
+
+void mp_folder_item_view_check_more_button_of_toolbar(void)
+{
+ if (!g_pFolderViewHandle) {
+ VideoLogError("g_pFolderViewHandle is null");
+ return;
+ }
+
+ st_RegisteCbFunc *pRegisteCbFunc = (st_RegisteCbFunc*)calloc(1, sizeof(st_RegisteCbFunc));
+ if (!pRegisteCbFunc) {
+ VideoLogError("failed to allocate memory");
+ return;
+ }
+
+ pRegisteCbFunc->DownloadCb = (void*)__mp_folder_item_view_download_cb;
+ pRegisteCbFunc->SearchCb = (void*)__mp_folder_item_view_search_item_cb;
+ pRegisteCbFunc->ShareViaCb = (void*)__mp_folder_item_view_share_cb;
+ pRegisteCbFunc->DeleteCb = (void*)__mp_folder_item_view_delete_cb;
+ pRegisteCbFunc->SortItemCb = (void*)__mp_folder_item_view_sort_item_cb;
+ pRegisteCbFunc->RenameCb = (void*)__mp_folder_item_view_rename_cb;
+// pRegisteCbFunc->DetailsCb= (void*)__mp_folder_item_view_details_cb;
+#ifdef ENABLE_PRIVATE_MODE
+ pRegisteCbFunc->AddToPersonalCB = (void*)__mp_folder_item_view_add_personal_cb;
+ pRegisteCbFunc->RemoveFromPersonalCB = (void*)__mp_folder_item_view_remove_personal_cb;
+#endif
+ mp_ft_ctrl_create(g_pFolderViewHandle->pNaviFrameHandle, g_pFolderViewHandle->pNaviFrameItem, FOOTER_TAB_TYPE_PERSONAL, pRegisteCbFunc);
+ free(pRegisteCbFunc);
+
+ elm_naviframe_item_title_enabled_set(g_pFolderViewHandle->pNaviFrameItem, EINA_TRUE, EINA_FALSE);
+ mp_util_db_set_update_fun(g_pFolderViewHandle->euLev, __mp_folder_item_view_db_changed_cb);
+
+ mp_util_hide_indicator();
+}
+
+char*
+__mp_folder_item_view_text_get_video_number_cb(void *pUserData, Evas_Object *pObj, const char *part)
+{
+ VideoLogInfo("");
+
+ if (!g_pFolderViewHandle)
+ {
+ VideoLogWarning("g_pFolderViewHandle is NULL.");
+ return NULL;
+ }
+
+ if (!g_pFolderViewWidget)
+ {
+ VideoLogWarning("g_pFolderViewWidget is NULL.");
+ return NULL;
+ }
+
+ if (!g_strcmp0(part, "elm.text.sub"))
+ {
+ int nCount = (int)pUserData;
+
+ if (nCount == 1)
+ {
+ return g_strdup_printf(VIDEOS_LISTVIEW_BODY_ONE_VIDEO);
+ }
+ else
+ {
+ return g_strdup_printf(VIDEOS_LISTVIEW_BODY_PD_VIDEOS, nCount);
+ }
+ }
+
+ return NULL;
+}
+
+
+/*static void __mp_folder_item_title_layout_del_cb(void *pUserData, Evas *e, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pFolderViewWidget)
+ {
+ VideoLogError("g_pMainViewWidget == NUL!!!");
+ return;
+ }
+
+ g_pFolderViewWidget->pFolderViewCountlayout = NULL;
+ g_pFolderViewWidget->pFolderViewGenlistTitle = NULL;
+ g_pFolderViewWidget->pFolderViewGenlistItemForTitle = NULL;
+}*/
+
+/*static void __mp_folder_video_index_item_del_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pFolderViewWidget)
+ {
+ VideoLogError("g_pMainViewWidget == NUL!!!");
+ return;
+ }
+
+ g_pFolderViewWidget->pFolderViewGenlistItemForTitle = NULL;
+}*/
+
+
+/*static void
+__mp_folder_item_view_update_count_layout()
+{
+ unsigned int nCount = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoLogInfo("nCount : [%d]", nCount);
+
+ if (nCount == 0)
+ {
+ if (g_pFolderViewWidget->pFolderViewCountlayout != NULL)
+ {
+ elm_box_unpack(g_pFolderViewWidget->pFolderViewBox, g_pFolderViewWidget->pFolderViewCountlayout);
+ evas_object_del(g_pFolderViewWidget->pFolderViewCountlayout);
+ g_pFolderViewWidget->pFolderViewCountlayout = NULL;
+ }
+ }
+ else
+ {
+ if (g_pFolderViewWidget->pFolderViewGenlistItemForTitle != NULL) {
+ elm_object_item_del(g_pFolderViewWidget->pFolderViewGenlistItemForTitle);
+ }
+
+ if (g_pFolderViewWidget->pFolderViewGenlistTitleItc == NULL) {
+
+ g_pFolderViewWidget->pFolderViewGenlistTitleItc = elm_genlist_item_class_new();
+ g_pFolderViewWidget->pFolderViewGenlistTitleItc->item_style = "groupindex.sub";
+ g_pFolderViewWidget->pFolderViewGenlistTitleItc->func.text_get = __mp_folder_item_view_text_get_video_number_cb;
+ g_pFolderViewWidget->pFolderViewGenlistTitleItc->func.content_get = NULL;
+ g_pFolderViewWidget->pFolderViewGenlistTitleItc->func.del = NULL;
+ }
+
+ if (g_pFolderViewWidget->pFolderViewGenlistTitle == NULL) {
+ g_pFolderViewWidget->pFolderViewGenlistTitle = elm_genlist_add(g_pFolderViewWidget->pFolderViewBox);
+ elm_genlist_mode_set(g_pFolderViewWidget->pFolderViewGenlistTitle, ELM_LIST_COMPRESS);
+ evas_object_show(g_pFolderViewWidget->pFolderViewGenlistTitle);
+ }
+
+ if (g_pFolderViewWidget->pFolderViewCountlayout == NULL) {
+ // create layout
+ g_pFolderViewWidget->pFolderViewCountlayout = elm_layout_add(g_pFolderViewWidget->pFolderViewBox);
+ evas_object_size_hint_weight_set(g_pFolderViewWidget->pFolderViewCountlayout, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(g_pFolderViewWidget->pFolderViewCountlayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_layout_file_set(g_pFolderViewWidget->pFolderViewCountlayout, VIDEO_CUSTOM_THEME, "count_info_groupindex");
+ evas_object_event_callback_add(g_pFolderViewWidget->pFolderViewCountlayout, EVAS_CALLBACK_DEL, __mp_folder_item_title_layout_del_cb, NULL);
+
+ evas_object_show(g_pFolderViewWidget->pFolderViewCountlayout);
+
+ elm_layout_content_set(g_pFolderViewWidget->pFolderViewCountlayout, "elm.swallow.groupindex", g_pFolderViewWidget->pFolderViewGenlistTitle);
+
+ elm_box_pack_start(g_pFolderViewWidget->pFolderViewBox, g_pFolderViewWidget->pFolderViewCountlayout);
+ }
+
+ g_pFolderViewWidget->pFolderViewGenlistItemForTitle = elm_genlist_item_append(g_pFolderViewWidget->pFolderViewGenlistTitle,
+ g_pFolderViewWidget->pFolderViewGenlistTitleItc,
+ (void *)nCount,
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ NULL,
+ NULL);
+ elm_object_item_del_cb_set(g_pFolderViewWidget->pFolderViewGenlistItemForTitle, __mp_folder_video_index_item_del_cb);
+ }
+}*/
+
+
+void mp_folder_item_view_push(void *pNaviFrame, int folder_index, UpdateListItemsCbFunc pChangeViewCb)
+{
+ if (!pNaviFrame)
+ {
+ VideoLogError("[ERR] pNaviFrame");
+ return;
+ }
+
+ VideoLogInfo("");
+ __mp_folder_item_view_destroy();
+ g_pFolderViewHandle = (st_VideoFolderViewHandle*)calloc(1, sizeof(st_VideoFolderViewHandle));
+ g_pFolderViewWidget = (st_VideoFolderViewWidget*)calloc(1, sizeof(st_VideoFolderViewWidget));
+
+ memset(g_pFolderViewHandle, 0, sizeof(st_VideoFolderViewHandle));
+ memset(g_pFolderViewWidget, 0, sizeof(st_VideoFolderViewWidget));
+
+ g_pFolderViewHandle->pNaviFrameHandle = pNaviFrame;
+ g_pFolderViewHandle->pUpdateListUserCbFunc = pChangeViewCb;
+ g_pFolderViewHandle->nFolder_index = folder_index;
+ g_pFolderViewHandle->bExist = false;
+ g_pFolderViewHandle->bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ char *szPath = mp_util_svc_get_video_folder_url(folder_index);
+ g_pFolderViewHandle->pFolderUrl = g_strdup(szPath);
+ VideoSecureLogInfo("folder path = %s", szPath);
+ MP_FREE_STRING(szPath);
+
+ g_pFolderViewHandle->euLev = MP_DB_UPDATE_LEV_1;
+
+ __mp_folder_item_view_init(g_pFolderViewHandle->pNaviFrameHandle);
+ g_pFolderViewHandle->nPlayVideoIndex = -1;
+
+}
+
+void mp_folder_item_view_update_played_item(void)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget) {
+ VideoLogInfo("Folderitem View does not exist.");
+ return;
+ }
+ VideoLogInfo("");
+
+ if (g_pFolderViewHandle->pVideosGenlist) {
+ int nGenItemIndex = g_pFolderViewHandle->nPlayVideoIndex;
+ VideoLogInfo("%d", nGenItemIndex);
+
+ int nGenlistIndex = nGenItemIndex;
+ if (!g_pFolderViewHandle->bLandscape)
+ nGenlistIndex = nGenlistIndex / VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ else
+ nGenlistIndex = nGenlistIndex / VP_GENLIST_THUMB_LANDSPACE_COUNT;
+
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+ pTmpVideoGenlistItem = elm_genlist_nth_item_get((const Evas_Object *)g_pFolderViewHandle->pVideosGenlist, nGenlistIndex);
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pFolderViewHandle->pFolderUrl, __mp_folder_item_view_get_sort_type(), MP_LIST_VIEW_ALL);
+ mp_util_svc_update_thumbnail_info(g_pFolderViewHandle->nPlayVideoIndex);
+ elm_genlist_item_update(pTmpVideoGenlistItem);
+ if (pTmpVideoGenlistItem) {
+ elm_genlist_clear(g_pFolderViewHandle->pVideosGenlist);
+ __mp_folder_item_view_append_grid_layout(g_pFolderViewHandle->pVideosGenlist);
+ //elm_genlist_item_update(pTmpVideoGenlistItem);
+ //elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ elm_genlist_item_selected_set(pTmpVideoGenlistItem, EINA_FALSE);
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nGenItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nGenItemIndex);
+ Evas_Object *pIconContent = elm_object_item_part_content_get(pTmpVideoGenlistItem, "elm.icon.1");
+ if (!pIconContent) {
+ VideoLogError("");
+ return;
+ }
+ Evas_Object *pProgressbar = elm_layout_content_get(pIconContent, "elm.progressbar.icon");
+
+ if (nLastPlayedTime > 0 && nDurationTime > 0) {
+ double nRatio = ((double)nLastPlayedTime) / ((double)nDurationTime);
+ if (!pProgressbar) {
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ } else {
+ elm_progressbar_value_set(pProgressbar, nRatio);
+ }
+ } else {
+ if (pProgressbar) {
+ elm_layout_content_unset(pIconContent, "elm.progressbar.icon");
+ MP_DEL_OBJ(pProgressbar);
+ }
+ }
+
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.text.sub.left.bottom", ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+ }
+}
+
+void mp_folder_item_view_change_language(void)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget)
+ {
+ VideoLogError("No existed handle of Folder item view.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ //__mp_folder_item_view_update_count_layout();
+}
+
+/*external interface*/
+void mp_folder_item_view_update_video_list(MpListUpdateType eUpdateType)
+{
+ if (!g_pFolderViewHandle || !g_pFolderViewWidget || !g_pFolderViewHandle->pVideosGenlist)
+ {
+ VideoLogError("handles of list view are not existed.");
+ return;
+ }
+ if (eUpdateType != LIST_UPDATE_TYPE_NONE) {
+ __mp_folder_item_view_update_video_list(eUpdateType);
+ }
+}
+
+
diff --git a/src/view/mp-video-list-view-main.c b/src/view/mp-video-list-view-main.c
new file mode 100644
index 0000000..f550c4c
--- /dev/null
+++ b/src/view/mp-video-list-view-main.c
@@ -0,0 +1,1366 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <glib.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <media_content.h>
+
+
+#include "mp-util.h"
+#include "vp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-util-media-service.h"
+
+#include "mp-footer-toolbar.h"
+#include "mp-video-list-view-main.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-remove-ctrl.h"
+#include "mp-video-list-remove-view.h"
+#include "mp-video-search-view.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-launching-video-displayer.h"
+#include "mp-video-list-view-normal.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-rotate-ctrl.h"
+#include "mp-video-list-view-thumbnail.h"
+#include "mp-video-list-view-item-of-folder.h"
+#include "mp-util-widget-ctrl.h"
+
+#include "videos-view-mgr.h"
+#include "mp-video-list-view-folder.h"
+#include "mp-video-list-share-via-view.h"
+#include "mp-video-list-view-common.h"
+#include "mp-video-list-option-ctrl.h"
+#include "mp-video-list-personal-view.h"
+#include "mp-video-nocontent-layout.h"
+
+#include "mp-video-rename-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-video-list-view-select.h"
+#include "mp-video-list-folder-share-via-view.h"
+
+#include "mp-util-preference.h"
+#include "mp-util-config.h"
+
+
+static st_VideoListViewMainViewHandle *g_pMainViewHandle = NULL;
+static st_VideoListViewMainViewWidget *g_pMainViewWidget = NULL;
+
+
+/*///////////////////////////////////////////////////*/
+/* Pre-define function for building.*/
+static void __mp_list_view_update_list(int nListTabType,
+ MpListUpdateType eUpdateType);
+/*static void mp_list_view_check_center_button_of_toolbar(void);*/
+static void mp_list_view_check_more_button_of_toolbar(void);
+
+static bool __mp_list_view_is_top_view(void);
+
+/*use used for poping view situation,update data list-->reset DB callback*/
+static void __mp_list_view_result_view_update_cb(void);
+
+/*use used for popup situation,update data list-->update videos items*/
+static void __mp_list_view_result_data_update_cb(void);
+
+/*use used for whole update, clear videos items -->update data list-->append video items*/
+static void __mp_list_view_result_user_cb(MpListUpdateType eUpdateType);
+
+/*use used for personal storage style -->update data list-->update video items*/
+static void __mp_list_view_result_media_data_update_cb(void);
+
+static char *__mp_list_view_count_layout_tts_cb(void *data,
+ Evas_Object *obj);
+
+
+static void __mp_list_view_recently_change_cb(const char *key, void *data)
+{
+ VideoLogInfo("");
+ char *pszVideo = mp_util_config_get_preview();
+ if (!pszVideo) {
+ return;
+ }
+ MP_FREE_STRING(pszVideo);
+
+ mp_list_view_update_widget();
+}
+
+static void __mp_list_view_register_recently_config()
+{
+ mp_util_config_ignore_preview_key_changed_cb();
+ mp_util_config_preview_key_changed_cb(__mp_list_view_recently_change_cb, NULL);
+}
+
+void mp_list_view_free_main_view_widget(void)
+{
+ VideoLogInfo("");
+
+ if (g_pMainViewWidget) {
+ if (g_pMainViewWidget->pToolBar) {
+ evas_object_del(g_pMainViewWidget->pToolBar);
+ g_pMainViewWidget->pToolBar = NULL;
+ }
+
+ if (g_pMainViewWidget->pListViewBaselayout) {
+ evas_object_del(g_pMainViewWidget->pListViewBaselayout);
+ g_pMainViewWidget->pListViewBaselayout = NULL;
+ }
+
+ if (g_pMainViewWidget->pListViewTitlelayout) {
+ evas_object_del(g_pMainViewWidget->pListViewTitlelayout);
+ g_pMainViewWidget->pListViewTitlelayout = NULL;
+ }
+
+ if (g_pMainViewWidget->pBox) {
+ evas_object_del(g_pMainViewWidget->pBox);
+ g_pMainViewWidget->pBox = NULL;
+ }
+ /*
+ if (g_pMainViewWidget->pSearchBtn)
+ {
+ evas_object_del(g_pMainViewWidget->pSearchBtn);
+ g_pMainViewWidget->pSearchBtn = NULL;
+ }
+ */
+ free(g_pMainViewWidget);
+ g_pMainViewWidget = NULL;
+ }
+}
+
+
+/*//////////////////////////////////////////////////*/
+/* Callback function of more of footer widget.*/
+
+void mp_list_view_delete_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogWarning
+ ("[WARNING] Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+
+ MpFooterLibraryMainListTabType footerTabType =
+ (MpFooterLibraryMainListTabType) pUserData;
+ if (FOOTER_TAB_TYPE_PERSONAL == footerTabType) {
+ mp_remove_view_push((void *) mp_mgr_get_library_naviframe(),
+ (void *) __mp_list_view_result_user_cb,
+ (void *) __mp_list_view_result_view_update_cb,
+ NULL, LIST_TAB_TYPE_PERSONAL);
+ } else {
+ VideoLogError("invalid footer type");
+ }
+}
+
+void mp_list_view_sort_item_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+
+ mp_ft_ctrl_hide_more_popup();
+
+ MpFooterLibraryMainListTabType footerTabType =
+ (MpFooterLibraryMainListTabType) pUserData;
+ if (FOOTER_TAB_TYPE_PERSONAL == footerTabType) {
+ mp_sort_ctrl_show((void *) __mp_list_view_result_data_update_cb);
+ } else {
+ VideoLogError("invalid footer type");
+ }
+}
+
+static void __mp_list_view_view_as_result_user_cb(void)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogWarning("g_pMainViewHandle == NULL");
+ return;
+ }
+
+ int nPreViewType = g_pMainViewHandle->nCurrentViewType;
+ g_pMainViewHandle->nCurrentViewType = mp_view_as_ctrl_get_type();
+
+ if (g_pMainViewHandle->nCurrentViewType != nPreViewType) {
+
+ elm_object_part_content_unset(g_pMainViewWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT);
+#ifdef VS_FEATURE_LIST_VIEW
+ if (nPreViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ mp_normal_view_destroy();
+ } else
+#endif
+ if (nPreViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ mp_folder_view_destroy();
+ } else if (nPreViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ mp_thumbnail_view_destroy();
+ } else {
+ VideoLogError("invalid type");
+#ifdef VS_FEATURE_LIST_VIEW
+ mp_normal_view_destroy();
+#endif
+ mp_folder_view_destroy();
+ mp_thumbnail_view_destroy();
+ }
+ }
+ __mp_list_view_result_user_cb(MP_LIST_VIEW_ALL);
+}
+
+void mp_list_view_view_as_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+
+ mp_ft_ctrl_hide_more_popup();
+
+ MpFooterLibraryMainListTabType footerTabType =
+ (MpFooterLibraryMainListTabType) pUserData;
+ if (FOOTER_TAB_TYPE_PERSONAL == footerTabType) {
+ mp_view_as_ctrl_show(footerTabType,
+ (void *)
+ __mp_list_view_view_as_result_user_cb);
+ } else {
+ VideoLogError("invalid footer type");
+ }
+}
+
+void mp_list_view_rename_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogWarning
+ ("[WARNING] Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+ mp_select_view_push((void *) mp_mgr_get_library_naviframe(),
+ g_pMainViewHandle->pNaviFrameItem,
+ __mp_list_view_result_user_cb, NULL,
+ SELECT_TYPE_RENAME, LIST_TAB_TYPE_PERSONAL);
+}
+
+/*void mp_list_view_details_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pMainViewHandle)
+ {
+ VideoLogWarning("[WARNING] Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+ mp_select_view_push((void *)mp_mgr_get_library_naviframe(), g_pMainViewHandle->pNaviFrameItem, NULL, NULL, SELECT_TYPE_DETAIL, LIST_TAB_TYPE_PERSONAL);
+}*/
+
+void mp_list_view_content_to_display_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_ft_ctrl_hide_more_popup();
+
+ mp_view_ctrl_show((void *) __mp_list_view_result_user_cb);
+}
+
+void mp_list_view_sign_in_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+
+ mp_ft_ctrl_hide_more_popup();
+
+ /*mp_sign_ctrl_request_everglades_sign_in(NULL, NULL);*/
+}
+
+void mp_list_view_share_via_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+
+ if (mp_view_as_ctrl_get_type() == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogWarning("Select folder for sharing.");
+ mp_folder_share_view_push((void *) mp_mgr_get_library_naviframe(),
+ (void *)
+ __mp_list_view_result_view_update_cb,
+ LIST_TAB_TYPE_PERSONAL);
+ } else {
+ mp_share_view_push((void *) mp_mgr_get_library_naviframe(),
+ (void *) __mp_list_view_result_view_update_cb,
+ NULL, LIST_TAB_TYPE_PERSONAL);
+ }
+}
+
+void mp_list_view_add_personal_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+
+ mp_personal_view_push((void *) mp_mgr_get_library_naviframe(),
+ (void *)
+ __mp_list_view_result_media_data_update_cb,
+ NULL, 0);
+}
+
+void mp_list_view_remove_personal_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+
+ mp_personal_view_push((void *) mp_mgr_get_library_naviframe(),
+ (void *)
+ __mp_list_view_result_media_data_update_cb,
+ NULL, 1);
+}
+
+
+/**/
+/*//////////////////////////////////////////////////*/
+
+/*//////////////////////////////////////////////////*/
+/* Footer widgets*/
+
+void mp_list_view_check_more_button_of_toolbar(void)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("g_pMainViewHandle == NULL");
+ return;
+ }
+
+ VideoLogInfo("nListTabType=%d", g_pMainViewHandle->nListTabType);
+
+ if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) {
+ if (mp_folder_item_view_is_current_view()) {
+ VideoLogInfo("Update more button of folder item view");
+ mp_folder_item_view_check_more_button_of_toolbar();
+ } else {
+ VideoLogInfo("Update more button of main list view");
+ st_RegisteCbFunc *pRegisteCbFunc =
+ (st_RegisteCbFunc *) calloc(1, sizeof(st_RegisteCbFunc));
+ if (!pRegisteCbFunc) {
+ VideoLogError("failed to allocate memory");
+ return;
+ }
+
+ pRegisteCbFunc->SearchCb =
+ (void *) mp_list_view_search_item_cb;
+ pRegisteCbFunc->DeleteCb = (void *) mp_list_view_delete_cb;
+ pRegisteCbFunc->ViewAsCb = (void *) mp_list_view_view_as_cb;
+ if (mp_view_as_ctrl_get_type() != MP_LIST_VIEW_AS_FOLDER_LIST) {
+ pRegisteCbFunc->SortItemCb =
+ (void *) mp_list_view_sort_item_cb;
+ pRegisteCbFunc->RenameCb =
+ (void *) mp_list_view_rename_cb;
+ /*pRegisteCbFunc->DetailsCb= (void*)mp_list_view_details_cb;*/
+ pRegisteCbFunc->ShareViaCb =
+ (void *) mp_list_view_share_via_cb;
+ }
+ pRegisteCbFunc->SignInCb = (void *) mp_list_view_sign_in_cb;
+
+#ifdef ENABLE_PRIVATE_MODE
+ pRegisteCbFunc->AddToPersonalCB =
+ (void *) mp_list_view_add_personal_cb;
+ pRegisteCbFunc->RemoveFromPersonalCB =
+ (void *) mp_list_view_remove_personal_cb;
+#endif
+ bool bShowFT = mp_ft_ctrl_is_show();
+ if (bShowFT == FALSE) {
+ mp_ft_ctrl_create(g_pMainViewHandle->pNaviFrameHandle,
+ g_pMainViewHandle->pNaviFrameItem,
+ g_pMainViewHandle->nListTabType,
+ pRegisteCbFunc);
+ }
+ free(pRegisteCbFunc);
+ }
+ } else {
+ mp_ft_ctrl_disable();
+ }
+}
+
+/**/
+/*//////////////////////////////////////////////////*/
+
+/*//////////////////////////////////////////////////*/
+/* Search view*/
+void mp_list_view_show_search_view(void)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+
+ mp_search_view_push((void *) mp_mgr_get_library_naviframe(), NULL);
+
+ mp_search_view_register_update_list_func((void *)
+ __mp_list_view_result_user_cb,
+ (void *)
+ __mp_list_view_result_view_update_cb);
+}
+
+/**/
+/*//////////////////////////////////////////////////*/
+
+/*//////////////////////////////////////////////////*/
+/* Callback function of base widget in main list view.*/
+void mp_list_view_naviframe_transition_effect_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pMainViewHandle->pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ pTmpItem =
+ elm_naviframe_top_item_get(g_pMainViewHandle->pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents) {
+ } else {
+ VideoLogInfo("[ERR] No exist naviframe top item.");
+ }
+}
+
+void mp_list_view_double_tap_sensor_cb(void)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!__mp_list_view_is_top_view()) {
+ VideoLogInfo("Main list view is not top view.");
+ return;
+ }
+
+}
+
+static void __mp_list_view_result_media_data_update_cb(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+
+ int nViewType = mp_view_as_ctrl_get_type();
+#ifdef VS_FEATURE_LIST_VIEW
+ if (nViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ mp_normal_view_update_video_list();
+ } else
+#endif
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ mp_folder_view_update_video_items();
+ mp_util_svc_extract_video_folder_list_by_type
+ (mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+ } else {
+ VideoLogError("");
+ }
+
+ mp_list_view_check_more_button_of_toolbar();
+ /*mp_list_view_check_center_button_of_toolbar();*/
+}
+
+static void __mp_list_view_result_user_cb(MpListUpdateType eUpdateType)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ elm_object_item_part_text_set(g_pMainViewHandle->pNaviFrameItem,
+ "elm.text.title", VIDEOS_TITLE_VIDEO);
+
+ __mp_list_view_update_list(g_pMainViewHandle->nListTabType,
+ eUpdateType);
+
+ mp_list_view_check_more_button_of_toolbar();
+ /*mp_list_view_check_center_button_of_toolbar();*/
+}
+
+static void __mp_list_view_result_data_update_cb(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ /* mp_util_svc_ctrl_sort_list(mp_sort_ctrl_get_sort_state());*/
+ int nViewType = mp_view_as_ctrl_get_type();
+#ifdef VS_FEATURE_LIST_VIEW
+ if (nViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ mp_normal_view_update_video_list();
+ } else
+#endif
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ mp_util_svc_destory_video_folder_list();
+ mp_util_svc_extract_video_folder_list_by_type
+ (mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+ mp_folder_view_update_video_items();
+ } else if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ mp_thumbnail_view_update_video_list();
+ } else {
+
+ VideoLogError("");
+ }
+
+ mp_list_view_check_more_button_of_toolbar();
+ /*mp_list_view_check_center_button_of_toolbar();*/
+}
+
+static void __mp_list_view_result_view_update_cb(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+ VideoLogInfo("");
+ int nViewType = mp_view_as_ctrl_get_type();
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ /*refresh folder view */
+ mp_util_svc_extract_video_folder_list_by_type
+ (mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+ if (!mp_folder_view_is_item_view() && !mp_search_view_get_active_view())
+ mp_folder_view_arrange_folder_list(g_pMainViewHandle,
+ g_pMainViewWidget,
+ LIST_UPDATE_TYPE_VIEW,
+ (void *)
+ __mp_list_view_result_user_cb);
+ }
+ if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ /*refresh thumbnail view */
+ mp_thumbnail_view_update_video_list();
+ }
+ mp_list_view_check_more_button_of_toolbar();
+
+ /*mp_list_view_check_center_button_of_toolbar();*/
+}
+
+static void __mp_list_view_db_update(int nUpdateStyle)
+{
+
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_util_db_run_backup_fun_except_lev0(NULL, NULL, NULL, NULL);
+ __mp_list_view_update_list(g_pMainViewHandle->nListTabType,
+ LIST_UPDATE_TYPE_ALL);
+
+ mp_util_db_run_update_fun_except_lev0(NULL, NULL, NULL, NULL);
+
+ g_pMainViewHandle->pDbUpdateTimer = NULL;
+ VideoLogInfo("db change ----update");
+}
+
+/*pUserData = update style, insert, delete, update or -1*/
+static Eina_Bool __mp_list_view_db_update_timer_cb(void *pUserData)
+{
+
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ if (!g_pMainViewHandle->pDbUpdateTimer) {
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ int nUpdateStyle = (int) pUserData;
+
+ __mp_list_view_db_update(nUpdateStyle);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __mp_list_view_db_change_cb(void *pUserData, float fTime,
+ int nUpdateStyle)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("db change----");
+
+ MP_DEL_TIMER(g_pMainViewHandle->pDbUpdateTimer);
+ g_pMainViewHandle->pDbUpdateTimer =
+ ecore_timer_add(fTime, __mp_list_view_db_update_timer_cb,
+ (void *) nUpdateStyle);
+
+}
+
+void mp_list_view_search_item_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ mp_list_view_show_search_view();
+}
+
+Eina_Bool mp_list_view_back_btn_cb(void *pUserData,
+ Elm_Object_Item *pItem)
+{
+ VideoLogInfo("");
+
+ if (mp_util_get_main_window_handle()) {
+ elm_win_lower(mp_util_get_main_window_handle());
+ }
+
+ return EINA_FALSE;
+}
+
+void mp_list_view_launching_video_player_cb(void *pUserData,
+ void *pBuffer,
+ unsigned int nBufferSize)
+{
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+
+}
+
+
+/*//////////////////////////////////////////////////*/
+/**/
+void __mp_list_view_update_list(int nListTabType,
+ MpListUpdateType eUpdateType)
+{
+ VideoLogInfo("");
+
+ mp_option_ctrl_delete_handle();
+ mp_util_delete_popup_handle();
+ //mp_rename_ctrl_delete_handle();
+
+ int nViewType = mp_view_as_ctrl_get_type();
+#ifdef VS_FEATURE_LIST_VIEW
+ if (nViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ mp_normal_view_arrange_list_item(g_pMainViewHandle,
+ g_pMainViewWidget, eUpdateType,
+ (void *)
+ __mp_list_view_result_user_cb);
+ } else
+#endif
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ mp_folder_view_arrange_folder_list(g_pMainViewHandle,
+ g_pMainViewWidget, eUpdateType,
+ (void *)
+ __mp_list_view_result_user_cb);
+ } else if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ mp_thumbnail_view_arrange_list_item(g_pMainViewHandle,
+ g_pMainViewWidget,
+ eUpdateType,
+ (void *)
+ __mp_list_view_result_user_cb);
+ }
+
+ mp_list_view_check_more_button_of_toolbar();
+
+ /*mp_list_view_check_center_button_of_toolbar();*/
+
+}
+
+char *__mp_list_view_text_get_video_number_cb(void *pUserData,
+ Evas_Object *pObj,
+ const char *part)
+{
+ VideoLogInfo("");
+
+ if (g_pMainViewHandle == NULL) {
+ VideoLogError("g_pMainViewHandle == NUL!!!");
+ VideoLogAssert(0);
+ return NULL;
+ }
+
+ if (g_pMainViewWidget == NULL) {
+ VideoLogError("g_pMainViewWidget == NUL!!!");
+ VideoLogAssert(0);
+ return NULL;
+ }
+
+ if (!strcmp(part, "elm.text.sub")) {
+ unsigned int nCount = 0;
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ nCount = mp_util_svc_get_video_folder_size();
+ } else {
+ nCount = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ VideoLogInfo("nViewType : [%d], nCount : [%d]", nViewType,
+ nCount);
+
+ if (nCount == 1) {
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ return g_strdup_printf("%s",
+ VIDEOS_FOLDERVIEW_BODY_ONE_FOLDER);
+ } else {
+ return g_strdup_printf("%s",
+ VIDEOS_LISTVIEW_BODY_ONE_VIDEO);
+ }
+ } else {
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ return g_strdup_printf(VIDEOS_FOLDERVIEW_BODY_PD_FOLDERS,
+ nCount);
+ } else {
+ return g_strdup_printf(VIDEOS_LISTVIEW_BODY_PD_VIDEOS,
+ nCount);
+ }
+ }
+ }
+
+ return NULL;
+}
+
+/**/
+/*//////////////////////////////////////////////////*/
+
+void mp_list_view_update_whole_genlist(MpListUpdateType eUpdateType)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("[ERR] g_pMainViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) {
+ int nViewType = mp_view_as_ctrl_get_type();
+#ifdef VS_FEATURE_LIST_VIEW
+ if (nViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ mp_normal_view_arrange_list_item(g_pMainViewHandle,
+ g_pMainViewWidget,
+ eUpdateType,
+ (void *)
+ __mp_list_view_result_user_cb);
+ } else
+#endif
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ mp_folder_view_arrange_folder_list(g_pMainViewHandle,
+ g_pMainViewWidget,
+ eUpdateType,
+ (void *)
+ __mp_list_view_result_user_cb);
+ mp_folder_item_view_update_video_list(LIST_UPDATE_TYPE_NONE); /*folder item view, update NONE*/
+ }
+ if (mp_personal_view_is_top_view()) {
+ mp_personal_view_update();
+ }
+ } else {
+ VideoLogInfo("It's not relevant list arrange.");
+ }
+
+ mp_ft_ctrl_rotate_update();
+ /*mp_list_view_check_center_button_of_toolbar();*/
+}
+
+void mp_list_view_rotate_view(MpListUpdateType eUpdateType)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("[ERR] g_pMainViewHandle is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ mp_ft_ctrl_rotate_update();
+}
+
+static void __mp_main_title_layout_del_cb(void *pUserData, Evas *e,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pMainViewWidget) {
+ VideoLogError("g_pMainViewWidget == NUL!!!");
+ return;
+ }
+
+ g_pMainViewWidget->pListViewTitlelayout = NULL;
+ g_pMainViewWidget->pVideoGenlistTitle = NULL;
+ g_pMainViewWidget->pVideoGenlistItemForTitle = NULL;
+}
+
+static void __mp_main_video_index_item_del_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pMainViewWidget) {
+ VideoLogError("g_pMainViewWidget == NUL!!!");
+ return;
+ }
+ g_pMainViewWidget->pVideoGenlistItemForTitle = NULL;
+}
+
+
+void mp_list_view_update_count_layout()
+{
+ unsigned int nCount = 0;
+ int nViewType = mp_view_as_ctrl_get_type();
+
+ if (g_pMainViewHandle == NULL) {
+ VideoLogError("g_pMainViewHandle == NUL!!!");
+ VideoLogAssert(0);
+
+ return;
+ }
+
+ if (g_pMainViewWidget == NULL) {
+ VideoLogError("g_pMainViewWidget == NUL!!!");
+ VideoLogAssert(0);
+
+ return;
+ }
+
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ nCount = mp_util_svc_get_video_folder_size();
+ } else {
+ nCount = mp_util_svc_get_number_of_video_item_by_type();
+ }
+
+ VideoLogInfo("nViewType : [%d], nCount : [%d]", nViewType, nCount);
+
+ if (nCount == 0) {
+ if (g_pMainViewWidget->pListViewTitlelayout != NULL) {
+ elm_box_unpack(g_pMainViewWidget->pBox,
+ g_pMainViewWidget->pListViewTitlelayout);
+ evas_object_del(g_pMainViewWidget->pListViewTitlelayout);
+ g_pMainViewWidget->pListViewTitlelayout = NULL;
+ }
+ } else {
+ /* genlist - groupindex*/
+ if (g_pMainViewWidget->pVideoGenlistItemForTitle != NULL) {
+ elm_object_item_del(g_pMainViewWidget->
+ pVideoGenlistItemForTitle);
+ }
+
+ if (g_pMainViewWidget->pVideoGenlistTitleItc == NULL) {
+ g_pMainViewWidget->pVideoGenlistTitleItc =
+ elm_genlist_item_class_new();
+ g_pMainViewWidget->pVideoGenlistTitleItc->item_style =
+ "groupindex.sub";
+ g_pMainViewWidget->pVideoGenlistTitleItc->func.text_get =
+ __mp_list_view_text_get_video_number_cb;
+ g_pMainViewWidget->pVideoGenlistTitleItc->func.content_get =
+ NULL;
+ g_pMainViewWidget->pVideoGenlistTitleItc->func.del = NULL;
+ }
+
+ if (g_pMainViewWidget->pVideoGenlistTitle == NULL) {
+ g_pMainViewWidget->pVideoGenlistTitle =
+ elm_genlist_add(g_pMainViewWidget->pBox);
+ elm_genlist_mode_set(g_pMainViewWidget->pVideoGenlistTitle,
+ ELM_LIST_COMPRESS);
+ evas_object_show(g_pMainViewWidget->pVideoGenlistTitle);
+ }
+
+ if (g_pMainViewWidget->pListViewTitlelayout == NULL) {
+ Evas_Object *pTTSObject = NULL;
+
+ /* create layout*/
+ g_pMainViewWidget->pListViewTitlelayout =
+ elm_layout_add(g_pMainViewWidget->pBox);
+ evas_object_size_hint_weight_set(g_pMainViewWidget->
+ pListViewTitlelayout,
+ EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(g_pMainViewWidget->
+ pListViewTitlelayout,
+ EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_layout_file_set(g_pMainViewWidget->pListViewTitlelayout,
+ VIDEO_CUSTOM_THEME,
+ "count_info_groupindex");
+ evas_object_event_callback_add(g_pMainViewWidget->
+ pListViewTitlelayout,
+ EVAS_CALLBACK_DEL,
+ __mp_main_title_layout_del_cb,
+ NULL);
+
+ evas_object_show(g_pMainViewWidget->pListViewTitlelayout);
+
+ pTTSObject =
+ elm_access_object_register(g_pMainViewWidget->
+ pListViewTitlelayout,
+ g_pMainViewWidget->pBox);
+ elm_access_info_cb_set(pTTSObject, ELM_ACCESS_TYPE,
+ __mp_list_view_count_layout_tts_cb,
+ NULL);
+
+ elm_layout_content_set(g_pMainViewWidget->
+ pListViewTitlelayout,
+ "elm.swallow.groupindex",
+ g_pMainViewWidget->pVideoGenlistTitle);
+
+ elm_box_pack_start(g_pMainViewWidget->pBox,
+ g_pMainViewWidget->pListViewTitlelayout);
+ }
+
+ g_pMainViewWidget->pVideoGenlistItemForTitle =
+ elm_genlist_item_append(g_pMainViewWidget->pVideoGenlistTitle,
+ g_pMainViewWidget->
+ pVideoGenlistTitleItc, NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_object_item_del_cb_set(g_pMainViewWidget->
+ pVideoGenlistItemForTitle,
+ __mp_main_video_index_item_del_cb);
+ }
+}
+
+Evas_Object *mp_list_view_create_base_layout(void *pParent)
+{
+ if (!g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return NULL;
+ }
+
+ if (!pParent) {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pMainViewWidget->pListViewBaselayout) {
+ evas_object_del(g_pMainViewWidget->pListViewBaselayout);
+ g_pMainViewWidget->pListViewBaselayout = NULL;
+ }
+
+ g_pMainViewWidget->pListViewBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pMainViewWidget->pListViewBaselayout,
+ VIDEO_PLAYER_LISTVIEW_EDJ, LISTVIEW_EDJ_GROUP);
+ evas_object_size_hint_weight_set(g_pMainViewWidget->
+ pListViewBaselayout,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pMainViewWidget->
+ pListViewBaselayout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ return g_pMainViewWidget->pListViewBaselayout;
+}
+
+static void __mp_list_personal_view_display(void)
+{
+ if (g_pMainViewHandle == NULL) {
+ VideoLogError("g_pMainViewHandle == NULL!!!");
+ VideoLogAssert(0);
+ return;
+ }
+
+ if (g_pMainViewWidget == NULL) {
+ VideoLogError("g_pMainViewWidget == NULL!!!");
+ VideoLogAssert(0);
+ return;
+ }
+ /* if (g_pMainViewWidget->pListViewBaselayout == NULL)*/
+ /* {*/
+ /* g_pMainViewWidget->pListViewBaselayout = mp_list_view_create_base_layout(g_pMainViewWidget->pBox);*/
+ /* }*/
+
+ evas_object_show(g_pMainViewWidget->pListViewBaselayout);
+ /*elm_box_pack_end(g_pMainViewWidget->pBox, g_pMainViewWidget->pListViewBaselayout);*/
+ /*elm_box_pack_end(g_pMainViewWidget->pBox, g_pMainViewWidget->pListViewBaselayout);*/
+ mp_list_view_check_more_button_of_toolbar();
+ __mp_list_view_update_list(g_pMainViewHandle->nListTabType,
+ LIST_UPDATE_TYPE_ALL);
+}
+
+void mp_list_view_init_widget(void *pNaviFrameHandle)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget || !pNaviFrameHandle) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ g_pMainViewHandle->nListTabType = mp_util_get_main_tab_type();
+
+ VideoLogInfo("g_pMainViewHandle->nListTabType : [%d]",
+ g_pMainViewHandle->nListTabType);
+
+ if (g_pMainViewHandle->nListTabType != LIST_TAB_TYPE_PERSONAL
+ && g_pMainViewHandle->nListTabType != LIST_TAB_TYPE_DEVICES) {
+ VideoLogError("ListTabType error : [%d]!!!",
+ g_pMainViewHandle->nListTabType);
+ g_pMainViewHandle->nListTabType = LIST_TAB_TYPE_PERSONAL;
+ mp_util_set_main_tab_type(g_pMainViewHandle->nListTabType);
+ }
+
+ g_pMainViewHandle->pNaviFrameHandle = pNaviFrameHandle;
+
+ /* g_pMainViewWidget->pBox = elm_box_add((Evas_Object*)pNaviFrameHandle);*/
+ /* elm_box_horizontal_set(g_pMainViewWidget->pBox, EINA_FALSE);*/
+ /* evas_object_show(g_pMainViewWidget->pBox);*/
+
+
+ if (g_pMainViewWidget->pListViewBaselayout == NULL) {
+ g_pMainViewWidget->pListViewBaselayout =
+ mp_list_view_create_base_layout(g_pMainViewHandle->
+ pNaviFrameHandle);
+ }
+
+ g_pMainViewHandle->pNaviFrameItem =
+ elm_naviframe_item_push(g_pMainViewHandle->pNaviFrameHandle,
+ VIDEOS_TITLE_VIDEO, NULL, NULL,
+ g_pMainViewWidget->pListViewBaselayout,
+ NULL);
+
+ elm_naviframe_item_pop_cb_set(g_pMainViewHandle->pNaviFrameItem,
+ mp_list_view_back_btn_cb,
+ g_pMainViewHandle);
+ elm_naviframe_item_title_enabled_set(g_pMainViewHandle->
+ pNaviFrameItem, EINA_TRUE,
+ EINA_FALSE);
+ evas_object_smart_callback_add(g_pMainViewHandle->pNaviFrameHandle,
+ "transition,finished",
+ mp_list_view_naviframe_transition_effect_cb,
+ NULL);
+
+ __mp_list_view_register_recently_config();
+ /* mp_util_cloud_change_callback_register((void*)__mp_list_view_result_user_cb);*/
+ mp_util_svc_set_update_db_cb_func((UpdateDatabaseCbFunc)
+ __mp_list_view_db_change_cb);
+ mp_util_hide_indicator();
+
+ g_pMainViewHandle->nListTabType = mp_util_get_main_tab_type();
+
+ if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) {
+ __mp_list_personal_view_display();
+ }
+}
+
+void mp_list_view_init_handles(void)
+{
+ VideoLogInfo("");
+
+ if (g_pMainViewHandle) {
+ free(g_pMainViewHandle);
+ g_pMainViewHandle = NULL;
+ }
+
+ if (g_pMainViewWidget) {
+ free(g_pMainViewWidget);
+ g_pMainViewWidget = NULL;
+ }
+
+ g_pMainViewHandle =
+ (st_VideoListViewMainViewHandle *) calloc(1,
+ sizeof
+ (st_VideoListViewMainViewHandle));
+ g_pMainViewWidget =
+ (st_VideoListViewMainViewWidget *) calloc(1,
+ sizeof
+ (st_VideoListViewMainViewWidget));
+}
+
+
+/*///////////////////////////////////////////////////////////////*/
+/* External APIs*/
+void mp_list_view_push(void *pNaviFrame)
+{
+ VideoLogInfo("");
+
+ mp_list_view_init_handles();
+ mp_list_view_init_widget(pNaviFrame);
+}
+
+void mp_list_view_destroy(void)
+{
+ if (!g_pMainViewHandle) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+#ifdef VS_FEATURE_LIST_VIEW
+ mp_normal_view_destroy();
+#endif
+ mp_folder_view_destroy();
+ mp_thumbnail_view_destroy();
+ VideoLogInfo("");
+
+ mp_util_db_reset_all_update_fun();
+ mp_util_db_reset_all_backup_fun();
+
+ mp_ft_ctrl_destroy();
+ mp_ft_ctrl_delete_center_toolbar();
+
+ mp_list_view_free_main_view_widget();
+ mp_util_svc_unset_update_db_cb_func();
+ mp_util_config_ignore_preview_key_changed_cb();
+
+ if (g_pMainViewHandle) {
+ g_pMainViewHandle->pNaviFrameHandle = NULL;
+ g_pMainViewHandle->pNaviFrameItem = NULL;
+ g_pMainViewHandle->nListTabType = LIST_TAB_TYPE_PERSONAL;
+ MP_DEL_TIMER(g_pMainViewHandle->pDbUpdateTimer);
+ MP_DEL_ITC(g_pMainViewWidget->pVideoGenlistTitleItc);
+
+ free(g_pMainViewHandle);
+ g_pMainViewHandle = NULL;
+ }
+}
+
+static bool __mp_list_view_is_top_view(void)
+{
+
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return FALSE;
+ }
+
+ if (!g_pMainViewHandle->pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return FALSE;
+ }
+ if (mp_mgr_get_library_naviframe()) {
+ int count =
+ eina_list_count(elm_naviframe_items_get
+ (mp_mgr_get_library_naviframe()));
+ VideoLogInfo("eina_list_count = %d", count);
+ return (count == 1);
+ }
+ return FALSE;
+
+}
+
+static char *__mp_list_view_count_layout_tts_cb(void *data,
+ Evas_Object *obj)
+{
+ Elm_Object_Item *pItem = NULL;
+ const char *pText = NULL;
+
+ if (g_pMainViewHandle == NULL) {
+ VideoLogError("g_pMainViewHandle == NULL!!!");
+ return NULL;
+ }
+
+ if (g_pMainViewWidget == NULL) {
+ VideoLogError("g_pMainViewWidget == NULL!!!");
+ return NULL;
+ }
+
+ if (g_pMainViewWidget->pListViewTitlelayout == NULL) {
+ VideoLogError
+ ("g_pMainViewWidget->pListViewTitlelayout == NULL!!!");
+ return NULL;
+ }
+
+ pItem =
+ elm_genlist_first_item_get(g_pMainViewWidget->pVideoGenlistTitle);
+ pText = elm_object_item_part_text_get(pItem, "elm.text.sub");
+ if (pText != NULL) {
+ VideoLogInfo("pText : [%s]", pText);
+ return g_strdup(pText);
+ } else {
+ VideoLogError("pText == NULL!!!");
+ }
+
+ return NULL;
+}
+
+/* update---------------------------------------------- situation *
+ * 1,When it is folder view or download view, *
+ * only update recently played part; *
+ * 2,When it is normal view or thumbnail view, *
+ * update both recently played part and genlist item. *
+ * Consider different situation for clicking recently played part and genlist item, *
+ * First to get just played url,Get genlist index by this url, *
+ * If url is NULL, get genlist index by related view. */
+
+void mp_list_view_update_widget(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ int nViewType = mp_view_as_ctrl_get_type();
+ int nVideoCount = mp_util_svc_get_number_of_video_item_by_type();
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ nVideoCount = mp_util_svc_get_video_folder_size();
+ }
+
+ if (nVideoCount < 1) {
+ VideoLogWarning("No video item");
+ return;
+ }
+
+ mp_ft_ctrl_hide_more_popup();
+
+ if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) {
+ int nSortType = mp_sort_ctrl_get_sort_state();
+ if (MP_LIST_SORT_BY_RECENTLY_ADDED == nSortType) {
+ char *pFirstPath = mp_util_svc_get_video_url(0);
+ char *pVideoPath = mp_util_config_get_preview();
+ if (g_strcmp0(pFirstPath, pVideoPath) != 0) {
+ MP_FREE_STRING(pVideoPath);
+ MP_FREE_STRING(pFirstPath);
+ __mp_list_view_db_update(-1);
+ return;
+ }
+ MP_FREE_STRING(pVideoPath);
+ MP_FREE_STRING(pFirstPath);
+ }
+ /*if (MP_LIST_SORT_BY_RECENTLY_VIEWED == nSortType)
+ {
+ mp_search_view_update_played_item(0);
+ } */
+ else {
+ mp_search_view_update_played_item(-1);
+ }
+#ifdef VS_FEATURE_LIST_VIEW
+ if (nViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ int nSelectedVideoItemIndex =
+ mp_normal_view_get_selected_video_item_index();
+ if (MP_LIST_SORT_BY_RECENTLY_ADDED == nSortType) {
+ nSelectedVideoItemIndex = 0;
+ }
+ mp_util_svc_update_thumbnail_info(nSelectedVideoItemIndex);
+ mp_normal_view_update_video_items(nSelectedVideoItemIndex);
+ } else
+#endif
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogInfo("MP_LIST_VIEW_AS_FOLDER_LIST");
+ mp_folder_item_view_update_played_item();
+ mp_search_view_update_genlist();
+ } else if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ VideoLogInfo("MP_LIST_VIEW_AS_THUMBNAIL_LIST");
+ mp_thumbnail_view_update_played_item();
+ } else {
+ VideoLogInfo("Don't need to update video item");
+ }
+
+ }
+
+}
+
+void mp_list_view_update_widget_resume(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ __mp_list_view_result_view_update_cb();
+ int nViewType = mp_view_as_ctrl_get_type();
+ mp_search_view_update_played_item(-1);
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ VideoLogInfo("MP_LIST_VIEW_AS_FOLDER_LIST");
+ mp_folder_item_view_update_played_item();
+ mp_search_view_update_genlist();
+ } else if (nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ VideoLogInfo("MP_LIST_VIEW_AS_THUMBNAIL_LIST");
+ mp_thumbnail_view_update_played_item();
+ } else {
+ VideoLogInfo("Don't need to update video item");
+ }
+}
+void mp_list_view_change_language(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_object_item_domain_translatable_part_text_set(g_pMainViewHandle->
+ pNaviFrameItem,
+ "elm.text.title",
+ PACKAGE,
+ VIDEOS_TITLE_VIDEO);
+#ifdef VS_FEATURE_LIST_VIEW
+ mp_normal_view_change_language();
+#endif
+ mp_folder_item_view_change_language();
+ mp_remove_view_change_language();
+ mp_sort_ctrl_change_language();
+ mp_folder_view_change_language();
+ mp_view_ctrl_change_language();
+ mp_search_view_change_language();
+ mp_share_view_change_language();
+ mp_select_view_change_language();
+ mp_view_as_ctrl_change_language();
+ mp_option_ctrl_change_language();
+ mp_list_view_update_count_layout();
+}
+
+void mp_list_view_change_color(void)
+{
+ if (!g_pMainViewHandle || !g_pMainViewWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+}
+
+void mp_list_view_destroy_player(void)
+{
+ mp_launch_video_stop();
+}
diff --git a/src/view/mp-video-list-view-normal.c b/src/view/mp-video-list-view-normal.c
new file mode 100644
index 0000000..fc14228
--- /dev/null
+++ b/src/view/mp-video-list-view-normal.c
@@ -0,0 +1,1204 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <glib.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-util.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "mp-drm-ctrl.h"
+#endif
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+
+#include "mp-footer-toolbar.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-common.h"
+#include "mp-video-list-view-normal.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-launching-video-displayer.h"
+#include "mp-video-list-option-ctrl.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-external-ug.h"
+#include "videos-view-mgr.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-video-list-view-main.h"
+#include "mp-video-nocontent-layout.h"
+#include "mp-video-list-personal-ctrl.h"
+#include "mp-video-detail-view.h"
+#include "mp-util-preference.h"
+#include "mp-util-config.h"
+#include "mp-util-widget-ctrl.h"
+
+#ifdef VS_FEATURE_LIST_VIEW
+typedef struct {
+ st_VideoListViewMainViewHandle *pMainHandle;
+ st_VideoListViewMainViewWidget *pMainWidget;
+ UpdateListItemsCbFunc fUpdateListItemUserCb;
+
+ Evas_Object *pVideosGenlist;
+ Evas_Object *pNocontentlayout;
+ Elm_Genlist_Item_Class *pVideoList_Itc;
+
+ Eina_List *pVideoItemList;
+
+ int nSelectedVideoItem;
+ bool bRunLongPress;
+
+} stNormalView;
+
+
+static stNormalView *g_pNormalView = NULL;
+
+void __mp_normal_view_create_no_content()
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_pNormalView->pNocontentlayout) {
+ g_pNormalView->pNocontentlayout =
+ mp_create_nocontent_layout(g_pNormalView->pMainWidget->
+ pListViewBaselayout,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS);
+ elm_object_part_content_unset(g_pNormalView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT);
+ if (g_pNormalView->pVideosGenlist) {
+ evas_object_hide(g_pNormalView->pVideosGenlist);
+ }
+ evas_object_show(g_pNormalView->pMainWidget->pListViewBaselayout);
+ elm_object_part_content_set(g_pNormalView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pNormalView->pNocontentlayout);
+ }
+
+}
+
+static bool __mp_normal_view_clear_genlist_item(void)
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return FALSE;
+ }
+ if (g_pNormalView->pVideoItemList) {
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+ EINA_LIST_FREE(g_pNormalView->pVideoItemList,
+ pTmpVideoGenlistItem) {
+ if (pTmpVideoGenlistItem) {
+ int nIndex =
+ (int) elm_object_item_data_get(pTmpVideoGenlistItem);
+ mp_util_svc_cancel_thumbnail_update(nIndex);
+ elm_object_item_del(pTmpVideoGenlistItem);
+ }
+
+ pTmpVideoGenlistItem = NULL;
+ }
+
+ g_pNormalView->pVideoItemList = NULL;
+ }
+
+ return TRUE;
+}
+
+void mp_normal_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pNormalView) {
+ __mp_normal_view_clear_genlist_item();
+
+ MP_DEL_ITC(g_pNormalView->pVideoList_Itc);
+ g_pNormalView->bRunLongPress = FALSE;
+ g_pNormalView->fUpdateListItemUserCb = NULL;
+ g_pNormalView->pMainHandle = NULL;
+ g_pNormalView->pMainWidget = NULL;
+ g_pNormalView->nSelectedVideoItem = -1;
+ MP_DEL_OBJ(g_pNormalView->pNocontentlayout);
+ MP_DEL_OBJ(g_pNormalView->pVideosGenlist);
+ }
+ MP_FREE_STRING(g_pNormalView);
+
+}
+
+static void __mp_normal_view_reset(MpListUpdateType eUpdateType)
+{
+ if (g_pNormalView) {
+ __mp_normal_view_clear_genlist_item();
+
+ MP_DEL_ITC(g_pNormalView->pVideoList_Itc);
+ g_pNormalView->bRunLongPress = FALSE;
+ g_pNormalView->fUpdateListItemUserCb = NULL;
+ g_pNormalView->pMainHandle = NULL;
+ g_pNormalView->pMainWidget = NULL;
+ if (g_pNormalView->pVideosGenlist) {
+ elm_genlist_clear(g_pNormalView->pVideosGenlist);
+ }
+
+ }
+
+}
+
+void mp_normal_view_update_video_items(int nVideoItemIndex)
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_pNormalView->pVideoItemList) {
+ VideoLogWarning
+ ("[WARNING] g_pNormalView->pVideoItemList is not existed.");
+ return;
+ }
+
+ Elm_Object_Item *pTmpVideoGenlistItem =
+ (Elm_Object_Item *) eina_list_nth(g_pNormalView->pVideoItemList,
+ nVideoItemIndex);
+ if (pTmpVideoGenlistItem) {
+ /*elm_genlist_item_update(pTmpVideoGenlistItem);*/
+ /*elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);*/
+ elm_genlist_item_selected_set(pTmpVideoGenlistItem, EINA_FALSE);
+ int nLastPlayedTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ Evas_Object *pIconContent =
+ elm_object_item_part_content_get(pTmpVideoGenlistItem,
+ "elm.icon.1");
+ if (!pIconContent) {
+ VideoLogError("");
+ return;
+ }
+ Evas_Object *pProgressbar =
+ elm_layout_content_get(pIconContent, "elm.progressbar.icon");
+ if (nLastPlayedTime > 0) {
+ double nRatio =
+ ((double) nLastPlayedTime) / ((double) nDurationTime);
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ if (!pProgressbar) {
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem,
+ "elm.icon.1",
+ ELM_GENLIST_ITEM_FIELD_CONTENT);
+ } else {
+ elm_progressbar_value_set(pProgressbar, nRatio);
+ }
+
+ } else {
+ if (pProgressbar) {
+ elm_layout_content_unset(pIconContent,
+ "elm.progressbar.icon");
+ MP_DEL_OBJ(pProgressbar);
+ }
+ }
+
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem,
+ "elm.text.sub.left.bottom",
+ ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+}
+
+bool mp_normal_view_is_top_view(void)
+{
+ VideoLogInfo("");
+
+
+ if (!g_pNormalView || !g_pNormalView->pMainHandle) {
+ VideoLogError("g_pNormalView->pMainHandle is NULL");
+ return FALSE;
+ }
+ if (!g_pNormalView->pMainHandle->pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return FALSE;
+ }
+ if (mp_mgr_get_library_naviframe()) {
+ int count =
+ eina_list_count(elm_naviframe_items_get
+ (mp_mgr_get_library_naviframe()));
+ return (count == 1);
+ }
+ return FALSE;
+}
+
+static void __mp_normal_view_warning_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+bool mp_normal_view_is_normal_list(void)
+{
+ if (!g_pNormalView || !g_pNormalView->pMainHandle) {
+ VideoLogError("");
+ return FALSE;
+ }
+
+ if (mp_view_as_ctrl_get_type() != MP_LIST_VIEW_AS_NORMAL_LIST) {
+ VideoLogError("Invalid to call realize function.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**/
+/*////////////////////////////////////////////////////////////*/
+
+
+/*////////////////////////////////////////////////////////////*/
+/**/
+void mp_normal_view_thumbnail_update_cb(int nError, const char *szPath,
+ void *pUserData)
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (mp_normal_view_is_normal_list() == FALSE) {
+ VideoLogError("Current list is not for normal video item.");
+ return;
+ }
+
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("Index : %d", nVideoItemIndex);
+
+ if (!g_pNormalView->pMainHandle) {
+ VideoLogError("g_pNormalView->pMainHandle is not existed.");
+ return;
+ }
+
+ if (!g_pNormalView->pMainWidget) {
+ VideoLogError("g_pNormalView->pMainWidget is not existed.");
+ return;
+ }
+
+ if (!mp_normal_view_is_top_view()) {
+ VideoLogError("Main list view is not top view.");
+ return;
+ }
+
+ mp_util_svc_update_thumbnail_info(nVideoItemIndex);
+
+ if (g_pNormalView->pVideoItemList) {
+ Elm_Object_Item *pTmpVideoGenlistItem =
+ (Elm_Object_Item *) eina_list_nth(g_pNormalView->
+ pVideoItemList,
+ nVideoItemIndex);
+ if (pTmpVideoGenlistItem) {
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem,
+ "elm.icon.1",
+ ELM_GENLIST_ITEM_FIELD_CONTENT);
+ } else {
+ VideoLogError
+ ("[ERR] Fail to update genlist filed thumbnail icon.");
+ }
+ } else {
+ VideoLogError("[ERR] No exist g_pNormalView->pVideoItemList.");
+ }
+
+ /* elm_genlist_realized_items_update(g_pNormalView->pVideosGenlist);*/
+}
+
+/**/
+/*////////////////////////////////////////////////////////////*/
+
+/*////////////////////////////////////////////////////////////*/
+/* Smart callback of Genlist about normal.*/
+static void __mp_normal_view_genlist_language_changed_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (mp_normal_view_is_normal_list() == FALSE) {
+ VideoLogError("Current list is not for normal video item.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_genlist_realized_items_update(pObject);
+}
+
+static void __mp_normal_view_realize_genlist_item_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("Invalid pEveninfo.");
+ return;
+ }
+
+ int nIndexGenlist = elm_genlist_item_index_get(pEventInfo);
+
+ if (nIndexGenlist < 0) {
+ VideoLogError("nIndexGenlist < 0 = RETURN");
+ return;
+ }
+
+ if ((nIndexGenlist < 0)
+ || (nIndexGenlist >=
+ mp_util_svc_get_number_of_video_item_by_type())) {
+ VideoLogError("nIndexGenlist < 0 = RETURN = %d", nIndexGenlist);
+ return;
+ }
+
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nIndexGenlist);
+ if (!pThumbIconUri) {
+ VideoLogInfo("nIndexGenlist : %d", nIndexGenlist);
+ mp_util_svc_register_thumbnail_update_func(nIndexGenlist,
+ (void *)
+ mp_normal_view_thumbnail_update_cb,
+ (void *)
+ nIndexGenlist);
+ } else {
+ free(pThumbIconUri);
+ pThumbIconUri = NULL;
+ }
+}
+
+/*////////////////////////////////////////////////////////////*/
+/* Content/Text Callback of Elm_Genlist_Item_Class.*/
+char *mp_normal_view_get_label_of_video_item_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ int nVideoItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top")) {
+ char *szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.sub.left.bottom")) {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+ return NULL;
+}
+
+Evas_Object *mp_normal_view_get_icon_of_video_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char *pPart)
+{
+ Evas_Object *pLayout = NULL;
+
+ int nVideoItemIndex = (int) pUserData;
+ if (!pPart || !pObject) {
+ return NULL;
+ }
+
+ if (!strcmp(pPart, "elm.icon.1")) {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ char *pThumbIconUri =
+ mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME,
+ "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg =
+ mp_util_create_preload_image(pLayout, pThumbIconUri,
+ VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+
+ if (pBg)
+ evas_object_show(pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ int nLastPlayedTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime > 0) {
+ double nRatio =
+ ((double) nLastPlayedTime) / ((double) nDurationTime);
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar =
+ mp_widget_ctrl_create_progressbar(pLayout, nRatio);
+ elm_layout_content_set(pLayout, "elm.progressbar.icon",
+ pProgressBar);
+
+ if (pProgressBar) {
+ evas_object_show(pProgressBar);
+ }
+ }
+
+ if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) {
+ VideoLogWarning("Local File or Create sub icon is failed.",
+ nVideoItemIndex);
+ }
+
+ if (pLayout) {
+ evas_object_show(pLayout);
+ }
+
+ return pLayout;
+ }
+
+ MP_DEL_OBJ(pLayout);
+
+ return NULL;
+}
+
+Evas_Object *mp_normal_view_get_icon_of_no_item_cb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+
+ if (!strcmp(pPart, "elm.icon")) {
+ int width = NO_ITEM_GENLIST_WIDTH * elm_config_scale_get();
+ int height = NO_ITEM_GENLIST_HEIGHT * elm_config_scale_get();
+
+ Evas_Object *pNoItemLayout = NULL;
+ pNoItemLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pNoItemLayout, VIDEO_PLAYER_NO_ITEM_EDJ,
+ GENLIST_NOITEM_EDJ_GROUP);
+ evas_object_size_hint_min_set(pNoItemLayout, width, height);
+
+ elm_object_part_text_set(pNoItemLayout,
+ SWALLOW_LISTVIEW_NO_ITEM_TEXT,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC);
+ evas_object_show(pNoItemLayout);
+ return pNoItemLayout;
+ }
+
+ return NULL;
+}
+
+
+/*////////////////////////////////////////////////////////////*/
+/**/
+static void mp_normal_view_select_video_item_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ Elm_Object_Item *pSelectedItem =
+ elm_genlist_selected_item_get(pObject);
+ if (!pSelectedItem) {
+ VideoLogInfo("pSelectedItem is NULL");
+ return;
+ } else {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+
+ if (g_pNormalView->bRunLongPress) {
+ VideoLogInfo("run long pressed event");
+ g_pNormalView->bRunLongPress = false;
+
+ return;
+ }
+
+ if (!mp_launch_video_allow_check()) {
+ return;
+ }
+ Evas_Object *pPopup = evas_object_data_get(pObject, "popup"); /* Get popup*/
+ if (pPopup) {
+ VideoLogError("long press is called");
+ return; /* If popup exists, do nothing*/
+ }
+
+ int nTotal = elm_genlist_items_count(pObject);
+
+ /*int nVideoItemIndex = elm_genlist_item_index_get(pSelectedItem);*/
+ int nVideoItemIndex = (int) elm_object_item_data_get(pSelectedItem);
+
+ if (nVideoItemIndex < 0) {
+ VideoLogError("nGenlistItemIndex is invalid");
+ return;
+ }
+
+ VideoLogInfo("nVideoIndex:ngenIndex : %d:%d", nVideoItemIndex,
+ nTotal);
+
+
+ if (nVideoItemIndex < 0) {
+ VideoLogWarning("nVideoItemIndex < 0 ===>>> RETURN");
+ return;
+ }
+
+ if (!mp_util_call_off()) {
+ mp_util_ticker_toast_popup
+ (VIDEOS_NOTIPOP_MSG_UNABLE_TO_PLAY_VIDEO_DURING_CALL, false,
+ false);
+ return;
+ }
+
+ g_pNormalView->nSelectedVideoItem = nVideoItemIndex;
+
+ char *szMediaUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+
+ if (szMediaUrl) {
+ if (!mp_util_check_local_file_exist(szMediaUrl)) {
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_FILE_NOT_EXIST,
+ __mp_normal_view_warning_popup_cb);
+ free(szMediaUrl);
+ return;
+ }
+ mp_launch_video_play(szMediaUrl, MP_PLAYER_TYPE_VIDEO, NULL);
+ } else {
+ VideoLogInfo("[Err] Fail to get video uri from media service.");
+ return;
+ }
+
+ if (szMediaUrl) {
+ free(szMediaUrl);
+ }
+}
+
+/**/
+/*////////////////////////////////////////////////////////////*/
+
+/*////////////////////////////////////////////////////////////*/
+/* Append item into genlist.*/
+
+static void __mp_normal_view_video_item_del_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_pNormalView->pVideoItemList || !event_info) {
+ VideoLogError("g_pMainViewWidge is NULL");
+ return;
+ }
+
+ int nIndexGenlist = 0;
+ Elm_Object_Item *pCurrentItem = (Elm_Object_Item *) event_info;
+
+ Eina_List *pCurList = NULL;
+ Elm_Object_Item *pTmpVideoItem = NULL;
+ EINA_LIST_FOREACH(g_pNormalView->pVideoItemList, pCurList,
+ pTmpVideoItem) {
+ if (pCurrentItem == pTmpVideoItem) {
+ mp_util_svc_cancel_thumbnail_update(nIndexGenlist);
+ VideoLogInfo("testestesteste=%p", pCurrentItem);
+ pTmpVideoItem = NULL;
+ pCurList->data = NULL;
+ break;
+ }
+ nIndexGenlist++;
+ }
+}
+
+
+void mp_normal_view_append_video_items(void *pVideosGenlist)
+{
+ VideoLogInfo("");
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+
+ MP_DEL_ITC(g_pNormalView->pVideoList_Itc);
+ g_pNormalView->pVideoList_Itc = elm_genlist_item_class_new();
+ g_pNormalView->pVideoList_Itc->item_style = "2line.top";
+ g_pNormalView->pVideoList_Itc->func.text_get =
+ (void *) mp_normal_view_get_label_of_video_item_cb;
+ g_pNormalView->pVideoList_Itc->func.content_get =
+ (void *) mp_normal_view_get_icon_of_video_item_cb;
+ g_pNormalView->pVideoList_Itc->func.state_get = NULL;
+ g_pNormalView->pVideoList_Itc->func.del = NULL;
+ g_pNormalView->pVideoList_Itc->decorate_item_style = NULL;
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++) {
+ pTmpVideoGenlistItem =
+ elm_genlist_item_append(pVideosGenlist,
+ g_pNormalView->pVideoList_Itc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ mp_normal_view_select_video_item_cb,
+ NULL);
+ g_pNormalView->pVideoItemList =
+ eina_list_append(g_pNormalView->pVideoItemList,
+ pTmpVideoGenlistItem);
+ elm_object_item_data_set(pTmpVideoGenlistItem, (void *) nIndex);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem,
+ __mp_normal_view_video_item_del_cb);
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_normal_view_share_via_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pNormalView->pMainHandle) {
+ VideoLogInfo
+ ("g_pNormalView->pMainHandle of list view are not existed.");
+ return;
+ }
+ VideoLogInfo("");
+
+ int videoItemIndex = (int) pUserData;
+ char *pVideo_url = mp_util_svc_get_video_url(videoItemIndex);
+#ifdef ENABLE_DRM_FEATURE
+ bool bDRMLock = FALSE;
+ mp_util_check_drm_lock((const char *) pVideo_url, &bDRMLock);
+ if (bDRMLock) {
+ MP_FREE_STRING(pVideo_url);
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_UNABLE_TO_SHARE_DRM_FILE,
+ __mp_normal_view_warning_popup_cb);
+ return;
+ }
+#endif
+ if (g_pNormalView->pMainHandle) {
+ mp_external_service_share_panel(pVideo_url); /*, g_pNormalView->pMainHandle->pNaviFrameHandle);*/
+ }
+ MP_FREE_STRING(pVideo_url);
+}
+
+static void __mp_normal_view_add_to_home_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pNormalView->pMainHandle) {
+ VideoLogError
+ ("g_pNormalView->pMainHandle of list view are not existed.");
+ return;
+ }
+
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+
+ char *pVideo_id = mp_util_svc_get_video_id_by_index(nVideoItemIndex);
+ char *pVideo_thumbnail =
+ mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+
+ if (pVideo_id) {
+ /* if (!mp_util_add_to_home(pVideo_id, pVideo_thumbnail))*/
+ {
+ mp_util_status_bar_noti_popup_show(MP_COM_OPT_UNABLE_ADDED);
+ }
+ } else {
+ VideoLogError("[ERR] No exist file uri.");
+ }
+ MP_FREE_STRING(pVideo_id);
+ MP_FREE_STRING(pVideo_thumbnail);
+
+ /*to do share*/
+}
+#endif
+
+void mp_normal_view_result_user_cb(void)
+{
+ VideoLogInfo("");
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+ if (g_pNormalView->fUpdateListItemUserCb) {
+ g_pNormalView->fUpdateListItemUserCb(LIST_UPDATE_TYPE_ALL);
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void mp_normal_view_detail_video_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_util_delete_popup_handle();
+}
+
+static void mp_normal_view_detail_mouse_back_popup_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+ if (!pEvent) {
+ return;
+ }
+
+ if (pEvent->button == 3) {
+ mp_util_delete_popup_handle();
+ }
+}
+#endif
+
+void mp_normal_view_detail_key_back_popup_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ Evas_Event_Key_Down *pEvent = pEventInfo;
+ if (!pEvent) {
+ return;
+ }
+
+ if (!g_strcmp0(pEvent->keyname, "XF86Back")) {
+ mp_util_delete_popup_handle();
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_normal_view_delete_video_items(int nVideoItemIndex)
+{
+ if (!g_pNormalView->pVideoItemList || !g_pNormalView->pMainHandle) {
+ VideoLogWarning
+ ("[WARNING] g_pNormalView->pVideoItemList is not existed.");
+ return;
+ }
+
+ Elm_Object_Item *pTmpVideoGenlistItem =
+ (Elm_Object_Item *) eina_list_nth(g_pNormalView->pVideoItemList,
+ nVideoItemIndex);
+ if (!pTmpVideoGenlistItem) {
+ VideoLogWarning
+ ("[WARNING] g_pNormalView->pVideoItemList is not existed.");
+ return;
+ }
+
+
+ Elm_Object_Item *pNextGenlistItem = NULL;
+ Elm_Object_Item *pCurrGenlistItem =
+ elm_genlist_item_next_get(pTmpVideoGenlistItem);
+
+ g_pNormalView->pVideoItemList =
+ eina_list_remove(g_pNormalView->pVideoItemList,
+ pTmpVideoGenlistItem);
+ elm_object_item_del(pTmpVideoGenlistItem);
+
+ if (!pCurrGenlistItem) {
+ return;
+ }
+
+ while (pCurrGenlistItem) {
+ pNextGenlistItem = elm_genlist_item_next_get(pCurrGenlistItem);
+ g_pNormalView->pVideoItemList =
+ eina_list_remove(g_pNormalView->pVideoItemList,
+ pCurrGenlistItem);
+ elm_object_item_del(pCurrGenlistItem);
+ pCurrGenlistItem = pNextGenlistItem;
+ }
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ int nIndex = nVideoItemIndex;
+ for (nIndex = nVideoItemIndex; nIndex < nVideoListSize; nIndex++) {
+ pTmpVideoGenlistItem =
+ elm_genlist_item_append(g_pNormalView->pVideosGenlist,
+ g_pNormalView->pVideoList_Itc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ mp_normal_view_select_video_item_cb,
+ NULL);
+ g_pNormalView->pVideoItemList =
+ eina_list_append(g_pNormalView->pVideoItemList,
+ pTmpVideoGenlistItem);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem,
+ __mp_normal_view_video_item_del_cb);
+ }
+
+ if (nVideoListSize == 0) {
+ if (g_pNormalView->fUpdateListItemUserCb) {
+ g_pNormalView->fUpdateListItemUserCb(LIST_UPDATE_TYPE_VIEW);
+ }
+ }
+
+
+}
+
+
+static void mp_normal_view_respones_delete_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_util_delete_popup_handle();
+
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("[ERR] list item index.");
+ return;
+ }
+
+ char *szFileUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+ if (szFileUrl) {
+
+ char *szMediaUrlForPreview = mp_util_config_get_preview();
+ if (szMediaUrlForPreview) {
+ if (!g_strcmp0(szMediaUrlForPreview, szFileUrl)) {
+ VideoLogInfo("Erase preview url.");
+ mp_util_config_set_preview(NULL);
+ }
+ }
+ MP_FREE_STRING(szMediaUrlForPreview);
+ VideoSecureLogInfo("Delete file url : %s", szFileUrl);
+
+ vp_file_unlink(szFileUrl);
+ free(szFileUrl);
+ szFileUrl = NULL;
+ mp_util_svc_remove_item_by_list_index(nVideoItemIndex);
+
+ __mp_normal_view_delete_video_items(nVideoItemIndex);
+
+ mp_list_view_update_count_layout();
+ int nCount = mp_util_svc_get_number_of_video_item_by_type();
+ if (nCount < 1) {
+ __mp_normal_view_create_no_content();
+ }
+ }
+}
+
+static void __mp_normal_view_delete_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pNormalView->pMainHandle) {
+ VideoLogError
+ ("g_pNormalView->pMainHandle of list view are not existed.");
+ return;
+ }
+
+ int nVideoItemIndex = (int) pUserData;
+ MpListViewAsType type = MP_LIST_VIEW_AS_NORMAL_LIST;
+ mp_util_remove_question_popup((void *) nVideoItemIndex, type,
+ mp_normal_view_respones_delete_popup_cb,
+ mp_normal_view_detail_video_popup_cb,
+ mp_normal_view_detail_mouse_back_popup_cb,
+ mp_normal_view_detail_mouse_back_popup_cb);
+
+}
+
+static void __mp_normal_view_result_pop_up()
+{
+ if (!g_pNormalView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_pNormalView->pMainHandle) {
+ VideoLogError("Invalid list and object");
+ return;
+ }
+ evas_object_data_set(g_pNormalView->pVideosGenlist, "popup", NULL);
+ elm_object_scroll_freeze_pop(g_pNormalView->pVideosGenlist);
+}
+
+/**/
+/*////////////////////////////////////////////////////////////*/
+
+static void __mp_normal_view_long_pressed_item_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pNormalView || !event_info || !obj) {
+ VideoLogError("Invalid list and object");
+ return;
+ }
+ g_pNormalView->bRunLongPress = true;
+
+ Elm_Object_Item *long_item = (Elm_Object_Item *) event_info;
+ /*elm_genlist_item_selected_set(long_item, EINA_FALSE);*/
+ int nVideoItemIndex = elm_genlist_item_index_get(long_item);
+ if (nVideoItemIndex < 0) {
+ VideoLogError("nGenlistItemIndex is invalid");
+ return;
+ }
+
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoSecureLogError("nVideoItemIndex is invalid");
+ return;
+ }
+
+ st_RegisteOptionCbFunc *pRegisteCbFunc =
+ (st_RegisteOptionCbFunc *) calloc(1,
+ sizeof(st_RegisteOptionCbFunc));
+ if (pRegisteCbFunc) {
+ pRegisteCbFunc->ShareViaItemCb =
+ (void *) __mp_normal_view_share_via_cb;
+ pRegisteCbFunc->AddToHomeItemCb =
+ (void *) __mp_normal_view_add_to_home_cb;
+ pRegisteCbFunc->DeleteItemCb =
+ (void *) __mp_normal_view_delete_cb;
+ }
+
+ VideoLogDebug("nVideoItemIndex=:%d", nVideoItemIndex);
+
+ char *szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ mp_option_ctrl_show(g_pNormalView->pMainHandle->pNaviFrameHandle,
+ (const char *) szTitle, nVideoItemIndex,
+ pRegisteCbFunc, __mp_normal_view_result_pop_up,
+ NULL, 0);
+ if (mp_option_ctrl_get_handle()) {
+ evas_object_data_set(g_pNormalView->pVideosGenlist, "popup",
+ mp_option_ctrl_get_handle());
+ elm_object_scroll_freeze_push(g_pNormalView->pVideosGenlist);
+ }
+
+ MP_FREE_STRING(pRegisteCbFunc);
+ MP_FREE_STRING(szTitle);
+}
+#endif
+
+static void __mp_normal_view_pressed_item_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pNormalView) {
+ VideoLogError("Invalid list");
+ return;
+ }
+ VideoLogInfo("");
+ g_pNormalView->bRunLongPress = false;
+}
+
+static void __mp_normal_view_del_genlist_cb(Evas_Object *pVideosGenlist)
+{
+ if (!pVideosGenlist) {
+ VideoSecureLogError("pVideosGenlist is NULL");
+ return;
+ }
+ evas_object_smart_callback_del(pVideosGenlist, "language,changed",
+ __mp_normal_view_genlist_language_changed_cb);
+ evas_object_smart_callback_del(pVideosGenlist, "realized",
+ __mp_normal_view_realize_genlist_item_cb);
+#ifdef ENABLE_LONGPRESS
+ evas_object_smart_callback_del(pVideosGenlist, "longpressed",
+ __mp_normal_view_long_pressed_item_cb);
+#endif
+ evas_object_smart_callback_del(pVideosGenlist, "pressed",
+ __mp_normal_view_pressed_item_cb);
+}
+
+static void __mp_normal_view_add_genlist_cb(Evas_Object *pVideosGenlist)
+{
+ if (!pVideosGenlist) {
+ VideoSecureLogError("pVideosGenlist is NULL");
+ return;
+ }
+
+ evas_object_smart_callback_add(pVideosGenlist, "language,changed",
+ __mp_normal_view_genlist_language_changed_cb,
+ NULL);
+ evas_object_smart_callback_add(pVideosGenlist, "realized",
+ __mp_normal_view_realize_genlist_item_cb,
+ NULL);
+#ifdef ENABLE_LONGPRESS
+ evas_object_smart_callback_add(pVideosGenlist, "longpressed",
+ __mp_normal_view_long_pressed_item_cb,
+ NULL);
+#endif
+ evas_object_smart_callback_add(pVideosGenlist, "pressed",
+ __mp_normal_view_pressed_item_cb,
+ NULL);
+
+}
+
+/*//////////////////////////////////////////////////*/
+/* External APIs*/
+bool mp_normal_view_arrange_list_item(void *pMainViewHandle,
+ void *pMainViewWidget,
+ MpListUpdateType eUpdateType,
+ UpdateListItemsCbFunc
+ pUpdateVideoListUserCb)
+{
+ if (!pMainViewHandle || !pMainViewWidget || !pUpdateVideoListUserCb) {
+ VideoLogError
+ ("pMainViewHandle or pMainViewHandle or pUpdateVideoListUserCb are not existed.");
+ return FALSE;
+ }
+
+ if (eUpdateType == LIST_UPDATE_TYPE_NONE) {
+ VideoLogInfo("don't need to update and create");
+ return TRUE;
+ }
+
+ __mp_normal_view_reset(eUpdateType);
+
+ if (!g_pNormalView) {
+ g_pNormalView = (stNormalView *) calloc(1, sizeof(stNormalView));
+ }
+
+ g_pNormalView->pMainHandle = pMainViewHandle;
+ g_pNormalView->pMainWidget = pMainViewWidget;
+ g_pNormalView->fUpdateListItemUserCb = pUpdateVideoListUserCb;
+
+ int nVideoListSize = 0;
+
+ if (eUpdateType == LIST_UPDATE_TYPE_ALL
+ || eUpdateType == LIST_UPDATE_TYPE_DATA) {
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ }
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+ /*mp_util_svc_set_update_db_cb_func(g_pNormalView->fUpdateListItemUserCb);*/
+ mp_list_view_update_count_layout();
+
+ if (nVideoListSize > 0) {
+ if (g_pNormalView->pNocontentlayout) {
+ elm_object_part_content_unset(g_pNormalView->pNocontentlayout,
+ SWALLOW_LISTVIEW_CONTENT);
+ MP_DEL_OBJ(g_pNormalView->pNocontentlayout);
+ }
+ if (!g_pNormalView->pVideosGenlist) {
+ g_pNormalView->pVideosGenlist =
+ elm_genlist_add(g_pNormalView->pMainWidget->
+ pListViewBaselayout);
+ elm_scroller_bounce_set(g_pNormalView->pVideosGenlist,
+ EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pNormalView->
+ pVideosGenlist,
+ EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pNormalView->pVideosGenlist,
+ EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_mode_set(g_pNormalView->pVideosGenlist,
+ ELM_LIST_COMPRESS);
+ elm_genlist_homogeneous_set(g_pNormalView->pVideosGenlist,
+ EINA_TRUE);
+
+ elm_genlist_block_count_set(g_pNormalView->pVideosGenlist,
+ VIDEO_MAIN_LIST_BLOCK_COUNT);
+ elm_scroller_single_direction_set(g_pNormalView->
+ pVideosGenlist,
+ ELM_SCROLLER_SINGLE_DIRECTION_HARD);
+ evas_object_show(g_pNormalView->pMainWidget->
+ pListViewBaselayout);
+ __mp_normal_view_del_genlist_cb(g_pNormalView->
+ pVideosGenlist);
+ __mp_normal_view_add_genlist_cb(g_pNormalView->
+ pVideosGenlist);
+ }
+ elm_object_part_content_set(g_pNormalView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pNormalView->pVideosGenlist);
+
+ mp_normal_view_append_video_items(g_pNormalView->pVideosGenlist);
+
+ evas_object_show(g_pNormalView->pVideosGenlist);
+ } else {
+ __mp_normal_view_create_no_content();
+ }
+
+ return TRUE;
+}
+
+int mp_normal_view_get_selected_video_item_index(void)
+{
+
+ return g_pNormalView->nSelectedVideoItem;
+}
+
+void mp_normal_view_change_language(void)
+{
+ if (!mp_normal_view_is_top_view()) {
+ VideoLogError("Main list view is not top view.");
+ return;
+ }
+
+ VideoLogInfo("");
+}
+
+void mp_normal_view_update_video_list(void)
+{
+ if (!g_pNormalView || !g_pNormalView->pVideosGenlist) {
+ VideoLogWarning
+ ("[ERR] pVideosGenlist or g_pMainViewWidget are NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Elm_Object_Item *pNextGenlistItem = NULL;
+ Elm_Object_Item *pCurrGenlistItem =
+ elm_genlist_first_item_get(g_pNormalView->pVideosGenlist);
+
+ while (pCurrGenlistItem) {
+ elm_genlist_item_update(pCurrGenlistItem);
+ pNextGenlistItem = elm_genlist_item_next_get(pCurrGenlistItem);
+ pCurrGenlistItem = pNextGenlistItem;
+ }
+}
+#endif
diff --git a/src/view/mp-video-list-view-select.c b/src/view/mp-video-list-view-select.c
new file mode 100644
index 0000000..307e356
--- /dev/null
+++ b/src/view/mp-video-list-view-select.c
@@ -0,0 +1,1183 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-list-view-select.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-video-detail-view.h"
+#include "vp-file-util.h"
+#include "mp-rotate-ctrl.h"
+#include "videos-view-mgr.h"
+
+typedef struct
+{
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ void *pPreNaviItem;
+ void *pGenlist;
+ Elm_Genlist_Item_Class *pGenListItc;
+ Elm_Genlist_Item_Class *pGenListLandscapeItc;
+ Elm_Gengrid_Item_Class *pGenGridItc_1;
+ Elm_Gengrid_Item_Class *pGenGridItc_2;
+ MpMediaSvcSortType nSortType;
+ MpDbUpdateViewLev euLev;
+ ChangeSelectViewCbFunc pChangeViewUserCbFunc;
+ char *pFolderUrl;
+ MpVideoListTabType eTabType;
+ SelectType eSelType;
+ int nViewType;
+ bool bRename;
+#ifdef VS_FEATURE_THUMBNAIL_VIEW //
+ bool bLandscape;
+#endif
+}st_SelectViewHandle;
+
+typedef struct
+{
+ Evas_Object *pBox;
+ Evas_Object *pBaselayout;
+}st_SelectViewWidget;
+
+static st_SelectViewHandle *g_pSelectHandle = NULL;
+static st_SelectViewWidget *g_pSelectWidget = NULL;
+
+static Evas_Object *g_pRenameLayout = NULL;
+
+// Pre define function
+int mp_select_view_get_sort_type(void);
+bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc);
+void mp_select_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+static void __mp_select_view_base_layout_del_cb(void *pUserData, Evas *e, Evas_Object *pObject, void *pEventInfo);
+
+void mp_select_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pSelectHandle)
+ {
+ evas_object_smart_callback_del(g_pSelectHandle->pNaviFrameHandle, "transition,finished", mp_select_view_naviframe_transition_effect_cb);
+
+ MP_DEL_OBJ(g_pSelectHandle->pGenlist);
+ MP_DEL_ITC(g_pSelectHandle->pGenListItc);
+ MP_FREE_STRING(g_pSelectHandle->pFolderUrl);
+ MP_FREE_STRING(g_pSelectHandle);
+ }
+
+ if (g_pSelectWidget)
+ {
+ MP_DEL_OBJ(g_pSelectWidget->pBox);
+
+ if (g_pSelectWidget->pBaselayout != NULL)
+ {
+ evas_object_event_callback_del(g_pSelectWidget->pBaselayout, EVAS_CALLBACK_DEL, __mp_select_view_base_layout_del_cb);
+ MP_DEL_OBJ(g_pSelectWidget->pBaselayout);
+ }
+ MP_FREE_STRING(g_pSelectWidget);
+ }
+}
+
+static void __mp_select_view_reset(void)
+{
+ VideoLogInfo("");
+
+ if (g_pSelectHandle)
+ {
+ MP_FREE_STRING(g_pSelectHandle->pFolderUrl);
+ mp_util_db_set_update_fun(g_pSelectHandle->euLev, NULL);
+ mp_util_db_set_backup_fun(g_pSelectHandle->euLev, NULL);
+ evas_object_smart_callback_del(g_pSelectHandle->pNaviFrameHandle, "transition,finished", mp_select_view_naviframe_transition_effect_cb);
+ g_pSelectHandle->pGenlist = NULL;
+ MP_FREE_STRING(g_pSelectHandle);
+ }
+
+ if (g_pSelectWidget)
+ {
+
+ g_pSelectWidget->pBox = NULL;
+ g_pSelectWidget->pBaselayout = NULL;
+
+ MP_FREE_STRING(g_pSelectWidget);
+ }
+}
+
+void mp_select_view_reset_value(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pSelectHandle)
+ {
+ VideoLogError("[ERR] g_pSelectHandle is not existed.");
+ return;
+ }
+
+ g_pSelectHandle->pNaviFrameHandle = NULL;
+ g_pSelectHandle->pNaviFrameItem = NULL;
+ g_pSelectHandle->pChangeViewUserCbFunc = NULL;
+ g_pSelectHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+}
+
+static void __mp_select_view_trans_finished_cb(void *pUserData, Evas_Object *obj, void *event_info)
+{
+ if (!obj)
+ {
+ VideoLogError("[ERR] g_pSelectHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished", __mp_select_view_trans_finished_cb);
+}
+
+static Eina_Bool mp_select_view_back_btn_cb(void *pUserData, Elm_Object_Item *pItem)
+{
+ if (!g_pSelectHandle)
+ {
+ VideoLogInfo("[ERR] g_pSelectHandle is NULL.");
+ return EINA_TRUE;
+ }
+
+ // Register transition finished callback.
+ mp_widget_ctrl_disable_navi_handle_focus_except_item(g_pSelectHandle->pNaviFrameHandle, g_pSelectHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pSelectHandle->pNaviFrameHandle, "transition,finished", __mp_select_view_trans_finished_cb, NULL);
+
+ mp_select_view_pop();
+
+ return EINA_TRUE;
+}
+
+void mp_select_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pSelectHandle)
+ {
+ VideoLogError("[ERR] No exist g_pSelectHandle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pSelectHandle->pNaviFrameHandle)
+ {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ pTmpItem = elm_naviframe_top_item_get(g_pSelectHandle->pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+
+ if (g_pRenameLayout) {
+ mp_rename_ctrl_set_focus();
+ }
+
+ if (pTmpContents)
+ {
+ if (pTmpContents == g_pSelectWidget->pBox)
+ {
+ }
+ else
+ {
+ VideoLogInfo("It's not pListShareViaViewTabbarLayout in top screen.");
+ }
+ }
+ else
+ {
+ VideoLogError("[ERR] No exist naviframe top item.");
+ }
+}
+
+static char *__mp_select_view_get_label_of_folder_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ int nFolderItemIndex = (int)pUserData;
+
+ if (!g_strcmp0(pPart, "elm.text.main.left.top"))
+ {
+ char *szTitle = NULL;
+ szTitle = mp_util_svc_get_video_folder_name(nFolderItemIndex);
+
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ MP_FREE_STRING(szTitle);
+ return szTitleUtf8;
+ }
+ else if (!g_strcmp0(pPart, "elm.text.sub.left.bottom"))
+ {
+ char *szFolderPath = NULL;
+ szFolderPath = mp_util_svc_get_video_folder_url(nFolderItemIndex);
+ char *pDes_path = mp_util_get_dir_by_path(szFolderPath);
+ MP_FREE_STRING(szFolderPath);
+ char *szFolderUtf8 = elm_entry_utf8_to_markup(pDes_path);
+ MP_FREE_STRING(pDes_path);
+ return szFolderUtf8;
+
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__mp_select_view_get_icon_of_folder_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nFolderItemIndex = (int)pUserData;
+ VideoLogInfo("Index : %d", nFolderItemIndex);
+
+ if (!g_strcmp0(pPart, "elm.icon.1"))
+ {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pBg = NULL;
+ char *pThumbIconUri = mp_util_get_folder_thumbnail(nFolderItemIndex, mp_sort_ctrl_get_sort_state());
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri))
+ {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri, VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+ if (pBg)
+ evas_object_show(pBg);
+
+ if (!mp_util_create_folder_sub_icon(pLayout, nFolderItemIndex)) {
+ VideoLogWarning("Create sub icon is failed. nFolderItemIndex: %d", nFolderItemIndex);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ evas_object_show(pLayout);
+
+ return pLayout;
+ }
+
+ return NULL;
+}
+
+int mp_select_view_get_sort_type(void)
+{
+
+ switch (mp_sort_ctrl_get_sort_state())
+ {
+ /*case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ g_pSelectHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break;*/
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ g_pSelectHandle->nSortType = MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ g_pSelectHandle->nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+ /*case MP_LIST_SORT_BY_SIZE:
+ g_pSelectHandle->nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ g_pSelectHandle->nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break;*/
+ }
+
+ return g_pSelectHandle->nSortType;
+}
+
+#ifdef VS_FEATURE_LIST_VIEW
+static char *__mp_select_view_get_label_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top"))
+ {
+ char *szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+ if (szTitle)
+ {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ }
+ else if (!strcmp(pPart, "elm.text.sub.left.bottom"))
+ {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+ /*else if (!strcmp(pPart, "elm.text.sub.right.bottom"))
+ {
+ unsigned long long nFilesize = 0;
+
+ nFilesize = mp_util_svc_get_video_item_size(nVideoItemIndex);
+ char *szFileSize = mp_util_get_file_size(nFilesize);
+ char *szTitleUtf8 = NULL;
+
+ if (szFileSize)
+ {
+ szTitleUtf8 = elm_entry_utf8_to_markup(szFileSize);
+ free(szFileSize);
+ szFileSize = NULL;
+ }
+
+ return szTitleUtf8;
+ }*/
+
+ return NULL;
+}
+
+static Evas_Object *__mp_select_view_get_icon_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ Evas_Object *pLayout = NULL;
+
+ int nVideoItemIndex = (int)pUserData;
+ if (!pPart || !pObject)
+ {
+ return NULL;
+ }
+
+ if (!strcmp(pPart, "elm.icon.1"))
+ {
+ VideoLogInfo("pPart: elm.icon.1 - thumbnail");
+
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri))
+ {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri, VIDEO_ICON_WIDTH);
+ elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg);
+
+ if (pBg)
+ evas_object_show(pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime > 0)
+ {
+ double nRatio = ((double)nLastPlayedTime) / ((double)nDurationTime);
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pLayout);
+ elm_object_style_set(pProgressBar, "elm/progressbar/horizontal/default");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ elm_progressbar_span_size_set(pProgressBar, VIDEO_LIST_PROGRESSBAR_LENGTH);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ elm_layout_content_set(pLayout, "elm.progressbar.icon", pProgressBar);
+
+ if (pProgressBar) {
+ evas_object_show(pProgressBar);
+ }
+ }
+
+ if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) {
+ VideoLogWarning("Local File or Create sub icon is failed.", nVideoItemIndex);
+ }
+
+ if (pLayout) {
+ evas_object_show(pLayout);
+ }
+
+ return pLayout;
+ }
+
+ MP_DEL_OBJ(pLayout);
+
+ return NULL;
+}
+#endif
+
+/*if other view need update select view, need register this update callback*/
+static void __mp_select_view_result_view_update_cb(void)
+{
+ if (!g_pSelectHandle)
+ {
+ VideoLogInfo("g_pSelectHandle is null.");
+ return;
+ }
+ if (!g_pSelectHandle->bRename)
+ g_pSelectHandle->bRename = TRUE;
+
+
+ bool bNormalShow = mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, TRUE);
+ if (bNormalShow)
+ {
+ Elm_Object_Item *pItem = NULL;
+ pItem = elm_genlist_first_item_get(g_pSelectHandle->pGenlist);
+ if (pItem)
+ {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle);
+ }
+ g_pSelectHandle->pChangeViewUserCbFunc(MP_LIST_VIEW_ALL);
+ elm_naviframe_item_pop_to(g_pSelectHandle->pPreNaviItem);
+}
+
+static void __mp_select_view_show_detail_view(int nIndex, bool IsFolder)
+{
+
+ if (!g_pSelectHandle)
+ {
+ VideoLogInfo("g_pSelectHandle of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("nVideoItemIndex : %d", nIndex);
+
+ stDetailInfo *pDetail = NULL;
+ char *pMediaId = NULL;
+ if (IsFolder) {
+ mp_detail_view_get_folder_detail_info(nIndex, &pDetail);
+ pMediaId = mp_util_svc_get_video_folder_id(nIndex);
+ }
+ else
+ {
+ mp_detail_view_get_video_detail_info(nIndex, &pDetail);
+ pMediaId = mp_util_svc_get_video_id_by_index(nIndex);
+ }
+
+ mp_detail_view_push((void *)g_pSelectHandle->pNaviFrameHandle, IsFolder, pMediaId, pDetail);
+ mp_detail_view_free_detail_info(pDetail);
+ MP_FREE_STRING(pMediaId);
+}
+
+static void __mp_select_view_genlist_selected_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pSelectHandle || !pObject)
+ {
+ VideoLogWarning("[WARNING] Main handles of list view are not existed.");
+ return;
+ }
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ Elm_Object_Item *pSelectedItem = elm_gengrid_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_gengrid_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+#else
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem) {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+#endif
+ int nSelectedIndex = (int)pUserData;
+ VideoLogInfo("selected index is %d", nSelectedIndex);
+
+ if (SELECT_TYPE_DETAIL == g_pSelectHandle->eSelType) {
+ VideoLogInfo("Show detail view");
+ /*Todo: show detail view*/
+ if (MP_LIST_VIEW_AS_THUMBNAIL_LIST == g_pSelectHandle->nViewType) {
+ __mp_select_view_show_detail_view(nSelectedIndex, FALSE);
+ } else if (MP_LIST_VIEW_AS_FOLDER_LIST == g_pSelectHandle->nViewType) {
+ if (g_pSelectHandle->pFolderUrl) {
+ VideoLogWarning("Folder item view");
+ __mp_select_view_show_detail_view(nSelectedIndex, FALSE);
+ } else {
+ VideoLogWarning("Folder view");
+ __mp_select_view_show_detail_view(nSelectedIndex, TRUE);
+ }
+ }
+ }
+ else if (SELECT_TYPE_RENAME == g_pSelectHandle->eSelType)
+ {
+ VideoLogInfo("Show rename popup");
+
+ char *szTitle = NULL;
+ szTitle = g_strdup(VIDEOS_SELECTVIEW_HEADER_SELECT_VIDEO);
+ g_pRenameLayout = mp_rename_ctrl_show(g_pSelectHandle->pNaviFrameHandle, NULL, (void*)__mp_select_view_result_view_update_cb, nSelectedIndex);
+ Evas_Object * pLeftbtn = elm_button_add(g_pSelectHandle->pNaviFrameHandle);
+ elm_object_style_set(pLeftbtn, "naviframe/end_btn/default");
+ elm_naviframe_item_push(g_pSelectHandle->pNaviFrameHandle, szTitle, pLeftbtn, NULL, g_pRenameLayout, NULL);
+ }
+}
+
+static void __mp_select_view_append_folder_items(void *pFolderGenlist)
+{
+ VideoLogInfo("");
+ int nIndex = 0;
+ int nFolderListSize = 0;
+
+ nFolderListSize = mp_util_svc_get_video_folder_size();
+ VideoLogInfo("nVideoListSize : %d", nFolderListSize);
+
+ if (nFolderListSize > 0)
+ {
+ MP_DEL_ITC(g_pSelectHandle->pGenListItc);
+ g_pSelectHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pSelectHandle->pGenListItc->item_style = "2line.top";
+ g_pSelectHandle->pGenListItc->func.text_get = (void*)__mp_select_view_get_label_of_folder_cb;
+ g_pSelectHandle->pGenListItc->func.content_get = (void*)__mp_select_view_get_icon_of_folder_cb;
+ g_pSelectHandle->pGenListItc->func.state_get = NULL;
+ g_pSelectHandle->pGenListItc->func.del = NULL;
+ g_pSelectHandle->pGenListItc->decorate_item_style = NULL;
+
+ for (nIndex = 0; nIndex < nFolderListSize; nIndex++)
+ {
+ VideoLogInfo("nCounter : %d", nIndex);
+ elm_genlist_item_append(pFolderGenlist, g_pSelectHandle->pGenListItc, (void*)nIndex, NULL, ELM_GENLIST_ITEM_NONE, __mp_select_view_genlist_selected_cb, (void *)nIndex);
+ }
+ }
+}
+
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+static Evas_Object *__mp_select_view_create_gengrid(Evas_Object *parent, int nWidth, int nHeight)
+{
+ Evas_Object *pGengrid;
+ pGengrid = elm_gengrid_add(parent);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid does not exist.");
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(pGengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_gengrid_item_size_set(pGengrid, nWidth, nHeight);
+ elm_gengrid_align_set(pGengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(pGengrid, EINA_TRUE);
+
+ return pGengrid;
+}
+
+static char *__mp_select_view_get_label_of_grid_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ char *szTitle;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2"))
+ {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__mp_select_view_get_grid_icon_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.swallow.icon")) {
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri)) {
+ pBg = elm_image_add(pObject);
+ MP_FREE_STRING(pThumbIconUri);
+ evas_object_size_hint_aspect_set(pBg, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ elm_image_file_set(pBg, pThumbIconUri, NULL);
+ } else {
+ pBg = mp_util_create_preload_image(pObject, pThumbIconUri, GRID_VIDEO_ICON_WIDTH);
+ }
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ return pBg;
+ } else if (!strcmp(pPart, "elm.progressbar.icon"))
+ {
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime <= 0) {
+ return NULL;
+ }
+
+ double nRatio = 0.0;
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) / ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ return pProgressBar;
+ } else if (!strcmp(pPart, "elm.lock.icon"))
+ {
+ char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex);
+ bool bRet = mp_util_check_video_personal_status((const char*)pVideoFile);
+ MP_FREE_STRING(pVideoFile);
+ if (bRet) {
+ Evas_Object *pLockIcon = elm_image_add(pObject);
+ elm_image_file_set(pLockIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ, VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
+ evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pLockIcon);
+ return pLockIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.dropbox.icon"))
+ {
+ bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex);
+ if (bRet) {
+ Evas_Object *pDropboxIcon = elm_image_add(pObject);
+ elm_image_file_set(pDropboxIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ, VIDEO_LIST_VIEW_ICON_DROPBOX);
+ evas_object_size_hint_align_set(pDropboxIcon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pDropboxIcon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(pDropboxIcon);
+ return pDropboxIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.swallow.end"))
+ {
+ }
+ return NULL;
+}
+
+static void __mp_select_view_append_grid_items(void *pObjVideosList, int nGenItemIndex)
+{
+ if (!g_pSelectHandle) {
+ VideoLogInfo("invalid handle");
+ return;
+ }
+
+ MP_DEL_GRID_ITC(g_pSelectHandle->pGenGridItc_1);
+ MP_DEL_GRID_ITC(g_pSelectHandle->pGenGridItc_2);
+ g_pSelectHandle->pGenGridItc_1 = elm_gengrid_item_class_new();
+ g_pSelectHandle->pGenGridItc_1->item_style = "video/album_grid";
+ g_pSelectHandle->pGenGridItc_1->func.text_get = (void*)__mp_select_view_get_label_of_grid_item_cb;
+ g_pSelectHandle->pGenGridItc_1->func.content_get = (void*)__mp_select_view_get_grid_icon_cb;
+ g_pSelectHandle->pGenGridItc_1->func.state_get = NULL;
+ g_pSelectHandle->pGenGridItc_1->func.del = NULL;
+
+ g_pSelectHandle->pGenGridItc_2 = elm_gengrid_item_class_new();
+ g_pSelectHandle->pGenGridItc_2->item_style = "video/album_grid";
+ g_pSelectHandle->pGenGridItc_2->func.text_get = (void*)__mp_select_view_get_label_of_grid_item_cb;
+ g_pSelectHandle->pGenGridItc_2->func.content_get = (void*)__mp_select_view_get_grid_icon_cb;
+ g_pSelectHandle->pGenGridItc_2->func.state_get = NULL;
+ g_pSelectHandle->pGenGridItc_2->func.del = NULL;
+
+ int nCount = (mp_rotate_ctrl_check_landspace() ? VP_GENLIST_THUMB_LANDSPACE_COUNT : VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nGenItemIndex*nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
+ if (nIndex%2 == 0) {
+ elm_gengrid_item_append(pObjVideosList, g_pSelectHandle->pGenGridItc_1, (void *)nIndex, __mp_select_view_genlist_selected_cb, (void *)nIndex);
+ } else {
+ elm_gengrid_item_append(pObjVideosList, g_pSelectHandle->pGenGridItc_2, (void *)nIndex, __mp_select_view_genlist_selected_cb, (void *)nIndex);
+ }
+ elm_object_item_data_set(gridItem, (void *)nIndex);
+ }
+}
+
+static void mp_select_view_get_icon_dimensions(int *height, int *width)
+{
+ int winHeight = 0;
+ int winWidth = 0;
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &winWidth, &winHeight);
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ *width = winHeight / VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ } else {
+ *width = winWidth / VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ }
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+}
+
+static Evas_Object *__mp_select_view_get_icon_of_grid_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ VideoLogInfo("in __mp_select_view_get_icon_of_grid_cb");
+ if (!g_pSelectHandle || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfSelectList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int)pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_select_view_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid = __mp_select_view_create_gengrid(pObject, nWidth, nHeight);
+ __mp_select_view_append_grid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+int mp_select_view_thumbnail_to_genlist_index(int nVideoItemIndex)
+{
+ /*nVideoItemIndex = 0-->max*/
+ if (nVideoItemIndex < 0) {
+ VideoLogDebug("invalid nVideoItemIndex");
+ return 0;
+ }
+ g_pSelectHandle->bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT;
+ int nGenlistIndex = 0;
+ if (g_pSelectHandle->bLandscape) {
+ nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ }
+ nGenlistIndex = nVideoItemIndex/nItemCount;
+ VideoLogWarning("in mp_select_view_thumbnail_to_genlist_index %d",nGenlistIndex);
+ return nGenlistIndex;
+}
+
+static bool __mp_select_view_append_grid_layout(void *pGenlist)
+{
+ VideoLogInfo("in append grid layout");
+ if (!pGenlist || !g_pSelectHandle) {
+ VideoLogError("error handle.");
+ return FALSE;
+ }
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ return FALSE;
+ } else
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+
+ MP_DEL_ITC(g_pSelectHandle->pGenListItc);
+ g_pSelectHandle->pGenListItc = elm_genlist_item_class_new();
+
+ g_pSelectHandle->pGenListItc->item_style = "video/1icon.thumbnail";
+ g_pSelectHandle->pGenListItc->func.text_get = NULL;
+ g_pSelectHandle->pGenListItc->func.content_get = (void *)__mp_select_view_get_icon_of_grid_cb;
+ g_pSelectHandle->pGenListItc->func.state_get = NULL;
+ g_pSelectHandle->pGenListItc->func.del = NULL;
+ g_pSelectHandle->pGenListItc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pSelectHandle->pGenListLandscapeItc);
+ g_pSelectHandle->pGenListLandscapeItc = elm_genlist_item_class_new();
+ g_pSelectHandle->pGenListLandscapeItc->item_style = "video/1icon.thumbnail.landscape";
+ g_pSelectHandle->pGenListLandscapeItc->func.text_get = NULL;
+ g_pSelectHandle->pGenListLandscapeItc->func.content_get = (void *)__mp_select_view_get_icon_of_grid_cb;
+ g_pSelectHandle->pGenListLandscapeItc->func.state_get = NULL;
+ g_pSelectHandle->pGenListLandscapeItc->func.del = NULL;
+ g_pSelectHandle->pGenListLandscapeItc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow = mp_select_view_thumbnail_to_genlist_index(nVideoListSize - 1);
+
+ if (g_pSelectHandle->bLandscape) {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist, g_pSelectHandle->pGenListLandscapeItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ elm_genlist_item_append(pGenlist, g_pSelectHandle->pGenListItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ }
+
+ return TRUE;
+}
+#endif
+
+#ifdef VS_FEATURE_LIST_VIEW
+static void __mp_select_view_append_video_items(void *pVideosGenlist)
+{
+ VideoLogInfo("");
+ if (!g_pSelectHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ MP_DEL_ITC(g_pSelectHandle->pGenListItc);
+ g_pSelectHandle->pGenListItc = elm_genlist_item_class_new();
+ g_pSelectHandle->pGenListItc->item_style = "2line.top";
+ g_pSelectHandle->pGenListItc->func.text_get = (void*)__mp_select_view_get_label_of_video_item_cb;
+ g_pSelectHandle->pGenListItc->func.content_get = (void*)__mp_select_view_get_icon_of_video_item_cb;
+ g_pSelectHandle->pGenListItc->func.state_get = NULL;
+ g_pSelectHandle->pGenListItc->func.del = NULL;
+ g_pSelectHandle->pGenListItc->decorate_item_style = NULL;
+
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++)
+ {
+ elm_genlist_item_append(pVideosGenlist, g_pSelectHandle->pGenListItc, (void *)nIndex, NULL, ELM_GENLIST_ITEM_NONE, __mp_select_view_genlist_selected_cb, (void *)nIndex);
+ }
+}
+#endif
+
+bool mp_select_view_arrange_video_list(void *pGenlist, bool bNeedSvc)
+{
+ if (!g_pSelectWidget || !g_pSelectHandle) {
+ VideoLogError("No exist g_pSelectListViewWidget.");
+ return FALSE;
+ }
+
+ if (!pGenlist) {
+ VideoLogError("No exist genlist object.");
+ return FALSE;
+ }
+
+ int nVideoListSize = 0;
+#ifdef VS_FEATURE_LIST_VIEW
+ if (g_pSelectHandle->nViewType == MP_LIST_VIEW_AS_NORMAL_LIST) {
+ /*update video list data*/
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type(mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0)
+ {
+ VideoLogWarning("nVideoListSize=%d", nVideoListSize);
+ //elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+
+ elm_genlist_clear(pGenlist);
+ __mp_select_view_append_video_items(pGenlist);
+ } else
+#endif
+ if (g_pSelectHandle->nViewType == MP_LIST_VIEW_AS_FOLDER_LIST) {
+ if (g_pSelectHandle->pFolderUrl) {
+ VideoLogWarning("Folder item view");
+ /*update folder item list data*/
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pSelectHandle->pFolderUrl, mp_sort_ctrl_get_sort_state(), MP_LIST_VIEW_ALL);
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize=%d", nVideoListSize);
+ //elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+
+ elm_genlist_clear(pGenlist);
+ //__mp_select_view_append_video_items(pGenlist);
+ __mp_select_view_append_grid_layout(pGenlist);
+ } else {
+ VideoLogWarning("Folder view");
+ /*update folder list data*/
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type(mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ mp_util_svc_extract_video_folder_list_by_type(mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+
+ nVideoListSize = mp_util_svc_get_video_folder_size();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize=%d", nVideoListSize);
+ //elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+
+ elm_genlist_clear(pGenlist);
+ __mp_select_view_append_folder_items(pGenlist);
+ }
+ } else if (g_pSelectHandle->nViewType == MP_LIST_VIEW_AS_THUMBNAIL_LIST) {
+ /*update video list data*/
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type(mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize=%d", nVideoListSize);
+ //elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle);
+ return FALSE;
+ }
+
+ elm_genlist_clear(pGenlist);
+ __mp_select_view_append_grid_layout(pGenlist);
+ }
+
+ evas_object_show(pGenlist);
+ return TRUE;
+}
+
+Evas_Object *mp_select_view_create_internal_layout(void *pParent)
+{
+ if (!pParent)
+ {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pSelectWidget->pBaselayout)
+ {
+ evas_object_del(g_pSelectWidget->pBaselayout);
+ g_pSelectWidget->pBaselayout = NULL;
+ }
+
+ g_pSelectWidget->pBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pSelectWidget->pBaselayout, VIDEO_PLAYER_REMOVE_LIST_EDJ, REMOVE_LIST_EDJ_GROUP);
+ evas_object_size_hint_weight_set(g_pSelectWidget->pBaselayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pSelectWidget->pBaselayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ return g_pSelectWidget->pBaselayout;
+}
+
+static void __mp_select_view_db_changed_cb(void *pUserData)
+{
+ VideoLogWarning("Video DB has been changed.");
+ if (!g_pSelectHandle || !g_pSelectWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ bool bNormalShow = TRUE;
+
+ bNormalShow = mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, TRUE);
+ if (bNormalShow)
+ {
+ Elm_Object_Item *pItem = NULL;
+ pItem = elm_genlist_first_item_get(g_pSelectHandle->pGenlist);
+ if (pItem)
+ {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+ if (SELECT_TYPE_DETAIL == g_pSelectHandle->eSelType) {
+ mp_detail_view_update();
+ } else if (SELECT_TYPE_RENAME == g_pSelectHandle->eSelType) {
+ //if needed, todo;
+ }
+ }
+ mp_rename_ctrl_focus_out_cb();
+ g_pSelectHandle->pChangeViewUserCbFunc(MP_LIST_VIEW_ALL);
+ elm_naviframe_item_pop_to(g_pSelectHandle->pPreNaviItem);
+}
+
+void __mp_select_soft_back_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *pTopNaviFrame = NULL;
+ pTopNaviFrame = elm_naviframe_item_pop(g_pSelectHandle->pNaviFrameHandle);
+ evas_object_del(pTopNaviFrame);
+}
+
+void mp_select_view_create_genlist()
+{
+ if (!g_pSelectHandle || !g_pSelectWidget) {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ g_pSelectHandle->pGenlist = elm_genlist_add(g_pSelectWidget->pBox);
+ if (!g_pSelectHandle->pGenlist) {
+ VideoLogError("pGenlist is not existed.");
+ return;
+ }
+ elm_scroller_bounce_set(g_pSelectHandle->pGenlist, EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pSelectHandle->pGenlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pSelectHandle->pGenlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pSelectHandle->pGenlist, VIDEO_GENLIST_BLOCK_COUNT);
+ elm_genlist_homogeneous_set(g_pSelectHandle->pGenlist, EINA_TRUE);
+ elm_genlist_mode_set(g_pSelectHandle->pGenlist, ELM_LIST_COMPRESS);
+
+ elm_box_pack_end(g_pSelectWidget->pBox, g_pSelectHandle->pGenlist);
+ elm_object_part_content_set(g_pSelectWidget->pBaselayout, SWALLOW_LISTVIEW_CONTENT, g_pSelectWidget->pBox);
+
+ bool bNormalShow = TRUE;
+ bNormalShow = mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, FALSE);
+ if (!bNormalShow) {
+ VideoLogError("invalid view");
+ mp_select_view_destroy();
+ return;
+ }
+ evas_object_show(g_pSelectHandle->pGenlist);
+}
+
+void mp_select_view_init(void *pParent)
+{
+ if (!g_pSelectHandle || !g_pSelectWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+ VideoLogInfo("");
+ g_pSelectWidget->pBaselayout = mp_select_view_create_internal_layout(pParent);
+ if (!g_pSelectWidget->pBaselayout) {
+ VideoLogError("pBaselayout is not existed.");
+ return;
+ }
+ evas_object_event_callback_add(g_pSelectWidget->pBaselayout, EVAS_CALLBACK_DEL, __mp_select_view_base_layout_del_cb, NULL);
+
+ g_pSelectWidget->pBox = elm_box_add(g_pSelectWidget->pBaselayout);
+ if (!g_pSelectWidget->pBox) {
+ VideoLogError("pBox is not existed.");
+ return;
+ }
+
+ mp_select_view_create_genlist();
+
+ Evas_Object *pLeftbtn = elm_button_add(pParent);
+ elm_object_style_set(pLeftbtn, "naviframe/end_btn/default");
+ evas_object_smart_callback_add(pLeftbtn, "clicked", __mp_select_soft_back_button_cb, NULL);
+
+ char *szTitle = NULL;
+ szTitle = g_strdup(VIDEOS_SELECTVIEW_HEADER_SELECT_VIDEO);
+
+ g_pSelectHandle->pNaviFrameItem = elm_naviframe_item_push(g_pSelectHandle->pNaviFrameHandle,
+ szTitle,
+ pLeftbtn,
+ NULL,
+ g_pSelectWidget->pBaselayout,
+ NULL);
+
+ elm_object_item_domain_text_translatable_set(g_pSelectHandle->pNaviFrameItem, VIDEOS_STRING, EINA_TRUE);
+ elm_naviframe_item_pop_cb_set(g_pSelectHandle->pNaviFrameItem, mp_select_view_back_btn_cb, g_pSelectHandle);
+ g_free(szTitle);
+
+ elm_naviframe_item_title_enabled_set(g_pSelectHandle->pNaviFrameItem, EINA_TRUE, EINA_FALSE);
+ evas_object_smart_callback_add(g_pSelectHandle->pNaviFrameHandle, "transition,finished", mp_select_view_naviframe_transition_effect_cb, NULL);
+
+ evas_object_show(g_pSelectWidget->pBaselayout);
+
+ mp_util_db_set_update_fun(g_pSelectHandle->euLev, __mp_select_view_db_changed_cb);
+
+ mp_util_hide_indicator();
+}
+
+static void __mp_select_view_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pSelectHandle) {
+ VideoLogError("__mp_select_view_rotate_cb IS null");
+ return;
+ }
+ bool bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+ if (bLandscape) {
+ g_pSelectHandle->bLandscape = true;
+ } else {
+ g_pSelectHandle->bLandscape = false;
+ }
+
+ mp_select_view_arrange_video_list(g_pSelectHandle->pGenlist, TRUE);
+}
+
+void mp_select_view_push(void *pNaviFrame, void *pNaviItem, ChangeSelectViewCbFunc pChangeViewCb, char *pFolderUrl, SelectType eSelType, MpVideoListTabType eTabType)
+{
+ VideoLogInfo("");
+ if (g_pSelectHandle || g_pSelectWidget) {
+ mp_select_view_destroy();
+ }
+
+ g_pSelectHandle = (st_SelectViewHandle*)calloc(1, sizeof(st_SelectViewHandle));
+ g_pSelectWidget = (st_SelectViewWidget*)calloc(1, sizeof(st_SelectViewWidget));
+
+ memset(g_pSelectHandle, 0, sizeof(st_SelectViewHandle));
+ memset(g_pSelectWidget, 0, sizeof(st_SelectViewWidget));
+ mp_select_view_reset_value();
+
+ g_pSelectHandle->pNaviFrameHandle = pNaviFrame;
+ g_pSelectHandle->pPreNaviItem = pNaviItem;
+ g_pSelectHandle->pChangeViewUserCbFunc = pChangeViewCb;
+ g_pSelectHandle->pFolderUrl = g_strdup(pFolderUrl);
+ g_pSelectHandle->eSelType = eSelType;
+ g_pSelectHandle->eTabType = eTabType;
+ g_pSelectHandle->euLev = pFolderUrl ? MP_DB_UPDATE_LEV_2 : MP_DB_UPDATE_LEV_1;
+ g_pSelectHandle->nViewType = mp_view_as_ctrl_get_type();
+ g_pSelectHandle->bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object*)mp_util_get_main_window_handle());
+
+ mp_select_view_init(g_pSelectHandle->pNaviFrameHandle);
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_select_view_rotate_cb, (void*)g_pSelectHandle);
+
+}
+
+void mp_select_view_pop(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pSelectHandle)
+ {
+ VideoLogError("No existed handle of select view.");
+ return;
+ }
+ if (g_pSelectHandle->bRename && g_pSelectHandle->pChangeViewUserCbFunc)
+ {
+ g_pSelectHandle->pChangeViewUserCbFunc(MP_LIST_VIEW_ALL);
+ }
+
+ mp_util_hide_indicator();
+}
+
+void mp_select_view_change_language(void)
+{
+ if (!g_pSelectHandle || !g_pSelectWidget)
+ {
+ VideoLogError("No existed handle of select view.");
+ return;
+ }
+
+ VideoLogInfo("");
+ char *szTitle = NULL;
+ if (SELECT_TYPE_DETAIL == g_pSelectHandle->eSelType) {
+ szTitle = g_strdup(VIDEOS_DETAILVIEW_HEADER_DETAILS_IDS);
+ } else if (SELECT_TYPE_RENAME == g_pSelectHandle->eSelType) {
+ szTitle = g_strdup(VIDEOS_RENAMEVIEW_HEADER_RENAME_IDS);
+ }
+ elm_object_item_domain_translatable_part_text_set(g_pSelectHandle->pNaviFrameItem, "elm.text.title", VIDEOS_STRING, szTitle);
+ g_free(szTitle);
+}
+
+static void __mp_select_view_base_layout_del_cb(void *pUserData, Evas *e ,Evas_Object *pObject, void *pEventInfo)
+{
+ __mp_select_view_reset();
+}
+
+
diff --git a/src/view/mp-video-list-view-thumbnail.c b/src/view/mp-video-list-view-thumbnail.c
new file mode 100644
index 0000000..a0ce9c9
--- /dev/null
+++ b/src/view/mp-video-list-view-thumbnail.c
@@ -0,0 +1,1560 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <glib.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "vp-pinch-zoom.h"
+#include "mp-util.h"
+#ifdef ENABLE_DRM_FEATURE
+#include "mp-drm-ctrl.h"
+#endif
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+
+
+#include "mp-video-list-view-thumbnail.h"
+
+#include "mp-footer-toolbar.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-normal.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-launching-video-displayer.h"
+#include "mp-video-list-option-ctrl.h"
+#include "mp-external-ug.h"
+#include "videos-view-mgr.h"
+#include "mp-rotate-ctrl.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-video-list-view-main.h"
+#include "mp-video-detail-view.h"
+
+#include "mp-util-preference.h"
+#include "mp-util-config.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-video-nocontent-layout.h"
+
+
+#define VIDEO_WALL_UPDATE_TIMER 0.3
+/*the max update waiting time is VIDEO_WALL_UPDATE_TIMER*VIDEO_WALL_UPDATE_TIMER_COUNTER*/
+#define VIDEO_WALL_UPDATE_TIMER_COUNTER 6
+
+typedef struct {
+ UpdateListItemsCbFunc fViewCbFunc;
+ st_VideoListViewMainViewHandle *pMainHandle;
+ st_VideoListViewMainViewWidget *pMainWidget;
+
+ Evas_Object *pVideosGenlist;
+
+ Eina_List *pVideoItemList;
+ Ecore_Idler *pPlayIdler;
+ Ecore_Timer *pStartWallTimer;
+ Ecore_Idler *pWallResolutionIdler;
+ MpListUpdateType eUpdateType;
+
+ /*wall*/
+ Eina_List *pWallHandleList;
+ Evas_Object *pNocontentlayout;
+
+ Elm_Genlist_Item_Class *pGenGridItc;
+ Elm_Genlist_Item_Class *pGenGridZoomItc;
+ Elm_Genlist_Item_Class *pNoItemItc;
+ Elm_Gengrid_Item_Class *pGenGridItc_l;
+ Elm_Gengrid_Item_Class *pGenGridItc_r;
+
+ bool bLandscape;
+ int nSelectedVideoItem;
+ int nUpdateTimerCounter;
+
+ int zoom_level;
+} stThumbnailView;
+
+
+static stThumbnailView *g_pThumbnailView = NULL;
+
+
+static void __mp_thumbnail_view_update_cb(int nError, const char *szPath,
+ void *pUserData);
+static void __mp_thumbnail_view_language_changed_genlist_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo);
+static void __mp_thumbnail_view_realize_genlist_item_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo);
+static void __mp_thumbnail_view_append_gengrid_items(Evas_Object *
+ pGengrid,
+ int nGenItemIndex);
+static Evas_Object *__mp_thumbnail_view_create_gengrid(Evas_Object *
+ parent, int nWidth,
+ int nHeight);
+static void __mp_thumbnail_view_reset(MpListUpdateType eUpdateType);
+
+static int mp_thumbnail_get_portrait_count()
+{
+ if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX)
+ return VP_GENLIST_THUMB_PORTRAIT_COUNT_ZOOM_IN;
+
+ return VP_GENLIST_THUMB_PORTRAIT_COUNT;
+}
+
+static int mp_thumbnail_get_landscape_count()
+{
+ if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX)
+ return VP_GENLIST_THUMB_LANDSPACE_COUNT_ZOOM_IN;
+
+ return VP_GENLIST_THUMB_LANDSPACE_COUNT;
+}
+
+void mp_thumbnail_get_icon_dimensions(int *height, int *width)
+{
+ int winHeight = 0;
+ int winWidth = 0;
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
+ &winWidth, &winHeight);
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace();
+ if (bLandscape) {
+ *width = winHeight / mp_thumbnail_get_landscape_count();
+ } else {
+ *width = winWidth / mp_thumbnail_get_portrait_count();
+ }
+
+ if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX)
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT_ZOOM_IN * MP_SCALE;
+ else
+ *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
+}
+
+void mp_thumbnail_view_cancel_thumbnail_update(int nIndexGenlist)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+
+ bool bLandscape = mp_rotate_ctrl_check_landspace();
+ int nVideoItemIndex = 0;
+ int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT;
+
+ if (bLandscape) {
+ nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT;
+ }
+
+ nVideoItemIndex = nIndexGenlist * nItemCount;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("realize is %d--%d--%d", nItemCount, nVideoItemIndex,
+ nVideoListSize);
+
+ int nIndex = 0;
+ for (; (nIndex < nItemCount) && (nVideoItemIndex < nVideoListSize);
+ nIndex++) {
+ nVideoItemIndex = nVideoItemIndex + nIndex;
+
+ mp_util_svc_cancel_thumbnail_update(nVideoItemIndex);
+ }
+
+}
+
+int mp_thumbnail_view_thumbnail_to_genlist_index(int nVideoItemIndex)
+{
+ /*nVideoItemIndex = 0-->max */
+ if (nVideoItemIndex < 0) {
+ VideoLogDebug("invalid nVideoItemIndex");
+ return 0;
+ }
+ int nItemCount = mp_thumbnail_get_portrait_count();
+ int nGenlistIndex = 0;
+ if (g_pThumbnailView->bLandscape) {
+ nItemCount = mp_thumbnail_get_landscape_count();
+ }
+ nGenlistIndex = nVideoItemIndex / nItemCount;
+ return nGenlistIndex;
+}
+
+void __mp_thumbnail_view_warning_popup_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+static Eina_Bool __mp_thumbnail_view_play_video_idler_cb(void *pUserData)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ g_pThumbnailView->pPlayIdler = NULL;
+
+ int nVideoItemIndex = (int) pUserData;
+
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogError("[ERR] list item index.");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ VideoLogInfo("nVideoItemIndex %d", nVideoItemIndex);
+
+ char *szMediaUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+
+ if (szMediaUrl) {
+ if (!mp_util_check_local_file_exist(szMediaUrl)) {
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_FILE_NOT_EXIST,
+ __mp_thumbnail_view_warning_popup_cb);
+ free(szMediaUrl);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ mp_launch_video_play(szMediaUrl, MP_PLAYER_TYPE_VIDEO, NULL);
+ } else {
+ VideoLogInfo("[Err] Fail to get video uri from media service.");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ MP_FREE_STRING(szMediaUrl);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Evas_Object *__mp_thumbnail_view_get_icon_of_grid_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ if (!g_pThumbnailView || !pObject) {
+ VideoLogError("g_pMainViewWidgetOfThumbnailList is NULL");
+ return NULL;
+ }
+
+ int nGenItemIndex = (int) pUserData;
+ int nHeight = 0;
+ int nWidth = 0;
+ mp_thumbnail_get_icon_dimensions(&nHeight, &nWidth);
+
+ Evas_Object *pGengrid =
+ __mp_thumbnail_view_create_gengrid(pObject, nWidth, nHeight);
+ __mp_thumbnail_view_append_gengrid_items(pGengrid, nGenItemIndex);
+
+ return pGengrid;
+}
+
+static void __mp_thumbnail_view_video_item_del_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pThumbnailView || !event_info
+ || !g_pThumbnailView->pVideoItemList) {
+ VideoLogError("g_pMainViewWidge is NULL");
+ return;
+ }
+ int nIndexGenlist = 0;
+ Elm_Object_Item *pCurrentItem = (Elm_Object_Item *) event_info;
+
+ Eina_List *pCurList = NULL;
+ Elm_Object_Item *pTmpVideoItem = NULL;
+ EINA_LIST_FOREACH(g_pThumbnailView->pVideoItemList, pCurList,
+ pTmpVideoItem) {
+ if (pCurrentItem == pTmpVideoItem) {
+ nIndexGenlist = (int) elm_object_item_data_get(pCurrentItem);
+ mp_thumbnail_view_cancel_thumbnail_update(nIndexGenlist);
+ pTmpVideoItem = NULL;
+ pCurList->data = NULL;
+ break;
+ }
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_thumbnail_view_free_video_wall_item(char *pVideoItemId)
+{
+ if (!pVideoItemId || !g_pThumbnailView
+ || !g_pThumbnailView->pWallHandleList) {
+ VideoLogError("");
+ return;
+ }
+}
+#endif
+
+static bool __mp_thumbnail_view_append_grid_layout(void *pGenlist)
+{
+ if (!pGenlist || !g_pThumbnailView) {
+ VideoLogError("error handle.");
+ return FALSE;
+ }
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ if (nVideoListSize <= 0) {
+ VideoLogWarning("nVideoListSize = %d", nVideoListSize);
+ return FALSE;
+ }
+
+ MP_DEL_ITC(g_pThumbnailView->pGenGridItc);
+ g_pThumbnailView->pGenGridItc = elm_genlist_item_class_new();
+
+ g_pThumbnailView->pGenGridItc->item_style = "video/1icon.thumbnail";
+ g_pThumbnailView->pGenGridItc->func.text_get = NULL;
+ g_pThumbnailView->pGenGridItc->func.content_get =
+ (void *) __mp_thumbnail_view_get_icon_of_grid_cb;
+ g_pThumbnailView->pGenGridItc->func.state_get = NULL;
+ g_pThumbnailView->pGenGridItc->func.del = NULL;
+ g_pThumbnailView->pGenGridItc->decorate_item_style = NULL;
+
+ MP_DEL_ITC(g_pThumbnailView->pGenGridZoomItc);
+ g_pThumbnailView->pGenGridZoomItc = elm_genlist_item_class_new();
+ g_pThumbnailView->pGenGridZoomItc->item_style =
+ "video/1icon.thumbnail.zoom";
+ g_pThumbnailView->pGenGridZoomItc->func.text_get = NULL;
+ g_pThumbnailView->pGenGridZoomItc->func.content_get =
+ (void *) __mp_thumbnail_view_get_icon_of_grid_cb;
+ g_pThumbnailView->pGenGridZoomItc->func.state_get = NULL;
+ g_pThumbnailView->pGenGridZoomItc->func.del = NULL;
+ g_pThumbnailView->pGenGridZoomItc->decorate_item_style = NULL;
+
+ int nGenlistRow = 0;
+ nGenlistRow =
+ mp_thumbnail_view_thumbnail_to_genlist_index(nVideoListSize - 1);
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+
+ if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX) {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ pTmpVideoGenlistItem =
+ elm_genlist_item_append(pGenlist,
+ g_pThumbnailView->pGenGridZoomItc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ /*elm_genlist_item_select_mode_set(pTmpVideoGenlistItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);*/
+
+ g_pThumbnailView->pVideoItemList =
+ eina_list_append(g_pThumbnailView->pVideoItemList,
+ pTmpVideoGenlistItem);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem,
+ __mp_thumbnail_view_video_item_del_cb);
+ }
+ } else {
+ for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
+ pTmpVideoGenlistItem =
+ elm_genlist_item_append(pGenlist,
+ g_pThumbnailView->pGenGridItc,
+ (void *) nIndex, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL,
+ NULL);
+ /*elm_genlist_item_select_mode_set(pTmpVideoGenlistItem, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);*/
+
+ g_pThumbnailView->pVideoItemList =
+ eina_list_append(g_pThumbnailView->pVideoItemList,
+ pTmpVideoGenlistItem);
+ elm_object_item_del_cb_set(pTmpVideoGenlistItem,
+ __mp_thumbnail_view_video_item_del_cb);
+ }
+ }
+
+
+ MP_DEL_TIMER(g_pThumbnailView->pStartWallTimer);
+ g_pThumbnailView->nUpdateTimerCounter = 0;
+
+ return TRUE;
+}
+
+Evas_Object *__mp_thumbnail_view_get_icon_of_no_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char *pPart)
+{
+ if (!strcmp(pPart, "elm.icon")) {
+ int width = NO_ITEM_GENLIST_WIDTH * elm_config_scale_get();
+ int height = NO_ITEM_GENLIST_HEIGHT * elm_config_scale_get();
+
+ Evas_Object *pNoItemLayout = NULL;
+ pNoItemLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pNoItemLayout, VIDEO_PLAYER_NO_ITEM_EDJ,
+ GENLIST_NOITEM_EDJ_GROUP);
+ evas_object_size_hint_min_set(pNoItemLayout, width, height);
+
+ elm_object_part_text_set(pNoItemLayout,
+ SWALLOW_LISTVIEW_NO_ITEM_TEXT,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC);
+ evas_object_show(pNoItemLayout);
+ return pNoItemLayout;
+ }
+
+ return NULL;
+}
+
+
+/*//////////////////////////////////////////////////*/
+/* External APIs*/
+
+static void __mp_thumbnail_view_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("__mp_thumbnail_view_rotate_cb IS null");
+ return;
+ }
+ bool bLandscape =
+ mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
+ mp_util_get_main_window_handle
+ ());
+ if (bLandscape) {
+ VideoLogInfo("landscape mode");
+ g_pThumbnailView->bLandscape = true;
+ } else {
+ g_pThumbnailView->bLandscape = false;
+ }
+ elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
+ __mp_thumbnail_view_append_grid_layout(g_pThumbnailView->
+ pVideosGenlist);
+}
+
+int _grid_view_zoom_out(void *data, Evas_Object *view)
+{
+ st_VideoListViewMainViewWidget *ad =
+ (st_VideoListViewMainViewWidget *) data;
+
+ g_pThumbnailView->zoom_level = ad->zoom_level;
+ elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
+ __mp_thumbnail_view_append_grid_layout(g_pThumbnailView->
+ pVideosGenlist);
+
+ return 0;
+}
+
+int _grid_view_zoom_in(void *data, Evas_Object *view)
+{
+ st_VideoListViewMainViewWidget *ad =
+ (st_VideoListViewMainViewWidget *) data;
+
+ g_pThumbnailView->zoom_level = ad->zoom_level;
+ elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
+ __mp_thumbnail_view_append_grid_layout(g_pThumbnailView->
+ pVideosGenlist);
+
+ return 0;
+}
+
+bool mp_thumbnail_view_arrange_list_item(void *pMainViewHandle,
+ void *pMainViewWidget,
+ MpListUpdateType eUpdateType,
+ UpdateListItemsCbFunc
+ pUpdateVideoListUserCb)
+{
+ VideoLogInfo("");
+
+ if (!pMainViewHandle || !pMainViewWidget || !pUpdateVideoListUserCb) {
+ VideoLogInfo("Main handles of list view are not existed.");
+ return FALSE;
+ }
+
+ if (eUpdateType == LIST_UPDATE_TYPE_NONE) {
+ VideoLogInfo("don't need to update and create");
+ return TRUE;
+ }
+
+ __mp_thumbnail_view_reset(eUpdateType);
+
+ if (!g_pThumbnailView) {
+ g_pThumbnailView =
+ (stThumbnailView *) calloc(1, sizeof(stThumbnailView));
+ }
+
+ g_pThumbnailView->fViewCbFunc = pUpdateVideoListUserCb;
+ g_pThumbnailView->pMainHandle = pMainViewHandle;
+ g_pThumbnailView->pMainWidget = pMainViewWidget;
+ g_pThumbnailView->eUpdateType = eUpdateType;
+ g_pThumbnailView->zoom_level = VP_ZOOM_IN_DEFAULT;
+ g_pThumbnailView->bLandscape =
+ mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
+ mp_util_get_main_window_handle
+ ());
+
+ st_VideoListViewMainViewHandle *pMainHandle =
+ g_pThumbnailView->pMainHandle;
+ g_pThumbnailView->pVideosGenlist = pMainHandle->pVideosGenlist;
+
+ int nVideoListSize = 0;
+
+ if (g_pThumbnailView->eUpdateType == LIST_UPDATE_TYPE_ALL
+ || g_pThumbnailView->eUpdateType == LIST_UPDATE_TYPE_DATA) {
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type
+ (mp_sort_ctrl_get_sort_state(), mp_view_ctrl_get_list_type());
+ }
+
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ /*mp_list_view_update_count_layout();*/
+ /*mp_list_view_update_base_layout();*/
+
+ if (!g_pThumbnailView->pVideosGenlist) {
+ g_pThumbnailView->pVideosGenlist =
+ elm_genlist_add(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout);
+ elm_scroller_bounce_set(g_pThumbnailView->pVideosGenlist,
+ EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pThumbnailView->pVideosGenlist,
+ EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pThumbnailView->pVideosGenlist,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_mode_set(g_pThumbnailView->pVideosGenlist,
+ ELM_LIST_COMPRESS);
+ elm_scroller_single_direction_set(g_pThumbnailView->
+ pVideosGenlist,
+ ELM_SCROLLER_SINGLE_DIRECTION_HARD);
+ evas_object_show(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout);
+ }
+
+ elm_object_part_content_set(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pThumbnailView->pVideosGenlist);
+ if (nVideoListSize > 0) {
+ if (g_pThumbnailView->pNocontentlayout) {
+ elm_object_part_content_unset(g_pThumbnailView->
+ pNocontentlayout,
+ SWALLOW_LISTVIEW_CONTENT);
+ MP_DEL_OBJ(g_pThumbnailView->pNocontentlayout);
+ }
+ _vp_pinch_add_event(g_pThumbnailView->pMainWidget,
+ g_pThumbnailView->pMainWidget->
+ pListViewBaselayout);
+ __mp_thumbnail_view_append_grid_layout(g_pThumbnailView->
+ pVideosGenlist);
+
+ } else {
+ g_pThumbnailView->pNocontentlayout =
+ mp_create_nocontent_layout(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
+ VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS);
+ elm_object_part_content_unset(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT);
+ if (g_pThumbnailView->pVideosGenlist) {
+ evas_object_hide(g_pThumbnailView->pVideosGenlist);
+ }
+ evas_object_show(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout);
+ elm_object_part_content_set(g_pThumbnailView->pMainWidget->
+ pListViewBaselayout,
+ SWALLOW_LISTVIEW_CONTENT,
+ g_pThumbnailView->
+ pNocontentlayout);
+ }
+
+ evas_object_smart_callback_add((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "wm,rotation,changed",
+ __mp_thumbnail_view_rotate_cb, NULL);
+ mp_list_common_set_callabcks(g_pThumbnailView->pMainHandle,
+ __mp_thumbnail_view_language_changed_genlist_cb,
+ __mp_thumbnail_view_realize_genlist_item_cb,
+ NULL, NULL);
+
+ evas_object_show(g_pThumbnailView->pVideosGenlist);
+
+ return TRUE;
+}
+
+int mp_thumbnail_view_get_selected_video_item_index(void)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return 0;
+ }
+
+ VideoLogInfo("g_pThumbnailView->nSelectedVideoItem : %d",
+ g_pThumbnailView->nSelectedVideoItem);
+
+ return g_pThumbnailView->nSelectedVideoItem;
+}
+
+static void __mp_thumbnail_view_update_video_items(int nVideoItemIndex)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError
+ ("g_pMainViewHandleOfThumbnailList are not existed.");
+ return;
+ }
+
+ mp_util_svc_update_thumbnail_info(nVideoItemIndex);
+}
+
+void mp_thumbnail_view_update_genlist_item(int nVideoItemIndex)
+{
+
+ if (!g_pThumbnailView || !g_pThumbnailView->pVideosGenlist) {
+ VideoSecureLogError("invalid handle.");
+ return;
+ }
+
+ if (!g_pThumbnailView->pVideoItemList) {
+ VideoSecureLogError
+ ("g_pThumbnailView->pVideosGenlist is not existed.");
+ return;
+ }
+
+ int nGenistIndex =
+ mp_thumbnail_view_thumbnail_to_genlist_index(nVideoItemIndex);
+ Elm_Object_Item *pTmpVideoGenlistItem =
+ (Elm_Object_Item *) eina_list_nth(g_pThumbnailView->
+ pVideoItemList, nGenistIndex);
+ if (pTmpVideoGenlistItem) {
+ VideoLogWarning("Update index: %d", nVideoItemIndex);
+ Evas_Object *gengrid =
+ elm_object_item_part_content_get(pTmpVideoGenlistItem,
+ "elm.icon");
+ if (gengrid) {
+ int nCount =
+ (mp_rotate_ctrl_check_landspace() ?
+ VP_GENLIST_THUMB_LANDSPACE_COUNT :
+ VP_GENLIST_THUMB_PORTRAIT_COUNT);
+ int nIndex = nVideoItemIndex % nCount;
+ Elm_Object_Item *updateItem =
+ elm_gengrid_first_item_get(gengrid);
+ while (nIndex > 0 && updateItem) {
+ updateItem = elm_gengrid_item_next_get(updateItem);
+ --nIndex;
+ }
+
+ VideoLogWarning("updateItem: %p", updateItem);
+ if (updateItem)
+ elm_gengrid_item_update(updateItem);
+ }
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_thumbnail_view_share_via_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+ if (!g_pThumbnailView) {
+ VideoLogError("g_pThumbnailView of list view is not existed.");
+ return;
+ }
+
+ int videoItemIndex = (int) pUserData;
+ char *pVideo_url = mp_util_svc_get_video_url(videoItemIndex);
+ bool bDRMLock = FALSE;
+#ifdef ENABLE_DRM_FEATURE
+ mp_util_check_drm_lock((const char *) pVideo_url, &bDRMLock);
+#endif
+ if (bDRMLock) {
+ MP_FREE_STRING(pVideo_url);
+ mp_util_notify_popup(NULL, VIDEOS_COMMON_HEADER_ERROR,
+ VIDEOS_NOTIPOP_MSG_UNABLE_TO_SHARE_DRM_FILE,
+ __mp_thumbnail_view_warning_popup_cb);
+ return;
+ }
+
+ mp_external_service_share_panel(pVideo_url);
+ MP_FREE_STRING(pVideo_url);
+}
+#endif
+
+void __mp_thumbnail_view_result_user_cb(void)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+ if (g_pThumbnailView->fViewCbFunc) {
+ g_pThumbnailView->fViewCbFunc(LIST_UPDATE_TYPE_ALL);
+ }
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_thumbnail_view_add_to_home_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pThumbnailView) {
+ VideoLogInfo("g_pThumbnailView is not existed.");
+ return;
+ }
+
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+
+ char *pVideo_id = mp_util_svc_get_video_id_by_index(nVideoItemIndex);
+ char *pVideo_thumbnail =
+ mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+
+ if (pVideo_id) {
+ /* if (!mp_util_add_to_home(pVideo_id, pVideo_thumbnail))*/
+ {
+ mp_util_status_bar_noti_popup_show(MP_COM_OPT_UNABLE_ADDED);
+ }
+ } else {
+ VideoLogError("[ERR] No exist file uri.");
+ }
+ MP_FREE_STRING(pVideo_id);
+ MP_FREE_STRING(pVideo_thumbnail);
+
+}
+
+static void __mp_thumbnail_view_detail_video_popup_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+
+static void __mp_thumbnail_view_detail_mouse_back_popup_cb(void
+ *pUserData,
+ Evas *pEvas,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+ if (!pEvent) {
+ return;
+ }
+ if (pEvent->button == 3) {
+ mp_util_delete_popup_handle();
+ }
+}
+#endif
+
+void __mp_thumbnail_view_detail_key_back_popup_cb(void *pUserData,
+ Evas *pEvas,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ Evas_Event_Key_Down *pEvent = pEventInfo;
+ if (!pEvent) {
+ return;
+ }
+
+ if (!g_strcmp0(pEvent->keyname, "XF86Back")) {
+ mp_util_delete_popup_handle();
+ }
+}
+
+#if 0 /*Unused function*/
+bool __mp_thumbnail_view_get_detail_info(int nVideoItemIndex,
+ stDetailInfo **pDetailInfo)
+{
+ char *szFilePath = NULL;
+ char *szVideoTitle = NULL;
+
+ char szTmpStr[FORMAT_LEN_MAX] = { 0, };
+ char szTmpFileDate[FORMAT_LEN_MAX] = { 0, };
+ char szTmpFileExtension[FORMAT_LEN_MAX] = { 0, };
+ char szTmpFileSize[FORMAT_LEN_MAX] = { 0, };
+
+ /*double dLongitude = 0.0;*/
+ /*double dLatitude = 0.0;*/
+
+ int nWidth = 0;
+ int nHeight = 0;
+ stDetailInfo *pDetail = NULL;
+
+ szFilePath = mp_util_svc_get_video_url(nVideoItemIndex);
+ szVideoTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+
+ mp_info_ctrl_get_file_info(szFilePath, szTmpFileDate,
+ FORMAT_LEN_MAX - 1, szTmpFileExtension,
+ FORMAT_LEN_MAX - 1, szTmpFileSize,
+ FORMAT_LEN_MAX - 1);
+
+ nWidth = mp_util_svc_get_video_item_width(nVideoItemIndex);
+ nHeight = mp_util_svc_get_video_item_height(nVideoItemIndex);
+ /*mp_info_ctrl_get_gps(szFilePath, &dLongitude, &dLatitude);*/
+
+ pDetail = calloc(1, sizeof(stDetailInfo));
+ if (!pDetail) {
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szVideoTitle);
+ VideoLogError("pDetailPopup alloc fail");
+ return FALSE;
+ }
+
+ pDetail->szTitle = g_strdup(szVideoTitle);
+ pDetail->szLocation = vp_util_convert_file_location(szFilePath);
+ MP_FREE_STRING(szFilePath);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%s", szTmpFileExtension);
+ pDetail->szFormat = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ /*snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%s", szTmpFileDate);
+ pDetail->szDate = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX); */
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%s", szTmpFileSize);
+ pDetail->szSize = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX - 1, "%d X %d", nWidth, nHeight);
+ pDetail->szResolution = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ /*snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%f", dLatitude);
+ pDetail->szLatitude = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX);
+
+ snprintf(szTmpStr, FORMAT_LEN_MAX-1, "%f", dLongitude);
+ pDetail->szLongitude = g_strdup(szTmpStr);
+ memset(szTmpStr, 0, FORMAT_LEN_MAX); */
+ *pDetailInfo = pDetail;
+ return TRUE;
+}
+#endif
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_thumbnail_view_cloud_download_btn_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+}
+
+static void __mp_thumbnail_view_respones_delete_popup_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+
+ mp_util_delete_popup_handle();
+
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoLogInfo("[ERR] list item index.");
+ return;
+ }
+
+ char *szFileUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+ if (szFileUrl) {
+ char *szMediaUrlForPreview = mp_util_config_get_preview();
+ if (szMediaUrlForPreview) {
+ if (!g_strcmp0(szMediaUrlForPreview, szFileUrl)) {
+ VideoLogInfo("Erase preview url.");
+ mp_util_config_set_preview(NULL);
+ }
+ }
+ MP_FREE_STRING(szMediaUrlForPreview);
+ VideoLogInfo("Delete file url : %s", szFileUrl);
+ vp_file_unlink(szFileUrl);
+ free(szFileUrl);
+ szFileUrl = NULL;
+ char *pVideoId = NULL;
+ pVideoId = mp_util_svc_get_video_id_by_index(nVideoItemIndex);
+ __mp_thumbnail_view_free_video_wall_item(pVideoId);
+ MP_FREE_STRING(pVideoId);
+ mp_util_svc_remove_item_by_list_index(nVideoItemIndex);
+
+ mp_list_view_update_count_layout();
+ /*mp_list_view_update_base_layout();*/
+
+ if (g_pThumbnailView->fViewCbFunc) {
+ g_pThumbnailView->fViewCbFunc(LIST_UPDATE_TYPE_VIEW);
+ }
+
+ }
+
+}
+
+static void __mp_thumbnail_view_pop_up_delete_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ mp_option_ctrl_delete_handle();
+
+ if (!g_pThumbnailView) {
+ VideoLogError("g_pThumbnailView of list view are not existed.");
+ return;
+ }
+ int nVideoItemIndex = (int) pUserData;
+ mp_util_remove_question_popup((void *) nVideoItemIndex,
+ (MpListViewAsType) 0,
+ __mp_thumbnail_view_respones_delete_popup_cb,
+ __mp_thumbnail_view_detail_video_popup_cb,
+ __mp_thumbnail_view_detail_mouse_back_popup_cb,
+ __mp_thumbnail_view_detail_key_back_popup_cb);
+
+}
+
+static void __mp_thumbnail_view_result_pop_up(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("Invalid list and object");
+ return;
+ }
+ Evas_Object *pGrid = (Evas_Object *) pUserData;
+ evas_object_data_set(pGrid, "popup", NULL);
+ elm_object_scroll_freeze_pop(pGrid);
+}
+#endif
+
+static bool __mp_thumbnail_view_normal_is_top_view(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pThumbnailView) {
+ VideoLogError("g_pThumbnailView is NULL");
+ return FALSE;
+ }
+ if (!g_pThumbnailView->pMainHandle->pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return FALSE;
+ }
+ if (mp_mgr_get_library_naviframe()) {
+ int count =
+ eina_list_count(elm_naviframe_items_get
+ (mp_mgr_get_library_naviframe()));
+ return (count == 1);
+ }
+ return FALSE;
+}
+
+static void __mp_thumbnail_view_update_cb(int nError, const char *szPath,
+ void *pUserData)
+{
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ if (!g_pThumbnailView) {
+ VideoLogError("g_pMainViewHandleOfThumbnailView is not existed.");
+ return;
+ }
+
+ if (!g_pThumbnailView) {
+ VideoLogError("g_pMainViewWidgetOfThumbnailView is not existed.");
+ return;
+ }
+
+ if (!__mp_thumbnail_view_normal_is_top_view()) {
+ VideoLogError("Main list view is not top view.");
+ return;
+ }
+
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoSecureLogError("nVideoItemIndex is invalid = %d",
+ nVideoItemIndex);
+ return;
+ }
+
+ __mp_thumbnail_view_update_video_items(nVideoItemIndex);
+
+
+ if (g_pThumbnailView->pVideosGenlist) {
+ mp_thumbnail_view_update_genlist_item(nVideoItemIndex);
+ } else {
+ VideoLogError
+ ("[ERR] No exist g_pMainViewWidgetOfNormalList->pVideolistItemList.");
+ }
+}
+
+static void __mp_thumbnail_view_update_empty_cb(int nError,
+ const char *szPath,
+ void *pUserData)
+{
+ int nVideoItemIndex = (int) pUserData;
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+}
+
+static void __mp_thumbnail_view_realize_genlist_item_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!pEventInfo || !g_pThumbnailView) {
+ VideoLogError
+ ("invalid pEveninfo 0r g_pMainViewWidgetOfThumbnailList");
+ return;
+ }
+}
+
+static void __mp_thumbnail_view_language_changed_genlist_cb(void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ void
+ *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!pObject) {
+ VideoLogError("pObject is NULL");
+ return;
+ }
+ elm_genlist_realized_items_update(pObject);
+}
+
+void mp_thumbnail_view_change_language(void)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("No existed handle of thumbnail view.");
+ return;
+ }
+
+ VideoLogInfo("");
+}
+
+#ifdef ENABLE_LONGPRESS
+static void __mp_thumbnail_view_gengrid_long_press_cb(void *pUserData,
+ Evas_Object *
+ pObject,
+ void *pEventInfo)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is not existed.");
+ return;
+ }
+
+ int nVideoItemIndex =
+ (int) elm_object_item_data_get((Elm_Object_Item *) pEventInfo);
+ VideoLogInfo("Select nVideoItemIndex: %d", nVideoItemIndex);
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoSecureLogError("nVideoItemIndex is invalid = %d",
+ nVideoItemIndex);
+ return;
+ }
+
+ st_RegisteOptionCbFunc *pRegisteCbFunc =
+ (st_RegisteOptionCbFunc *) calloc(1,
+ sizeof(st_RegisteOptionCbFunc));
+ if (pRegisteCbFunc) {
+ pRegisteCbFunc->ShareViaItemCb =
+ (void *) __mp_thumbnail_view_share_via_cb;
+ pRegisteCbFunc->AddToHomeItemCb =
+ (void *) __mp_thumbnail_view_add_to_home_cb;
+ /*pRegisteCbFunc->RenameItemCb = (void*)__mp_thumbnail_view_rename_popup_cb;*/
+ /*pRegisteCbFunc->DetailsItemCb= (void*)__mp_thumbnail_view_pop_up_detail_cb;*/
+ pRegisteCbFunc->DeleteItemCb =
+ (void *) __mp_thumbnail_view_pop_up_delete_cb;
+ pRegisteCbFunc->DownloadCb =
+ (void *) __mp_thumbnail_view_cloud_download_btn_cb;
+ }
+
+ char *title = mp_util_svc_get_video_title(nVideoItemIndex);
+
+ mp_option_ctrl_show(g_pThumbnailView->pMainHandle->pNaviFrameHandle,
+ (const char *) title, nVideoItemIndex,
+ pRegisteCbFunc, __mp_thumbnail_view_result_pop_up,
+ g_pThumbnailView->pVideosGenlist,
+ MP_LIST_OPTION_CLOUD_DOWNLOAD_ITEM);
+ if (mp_option_ctrl_get_handle()) {
+ evas_object_data_set(g_pThumbnailView->pVideosGenlist, "popup",
+ mp_option_ctrl_get_handle());
+ elm_object_scroll_freeze_push(g_pThumbnailView->pVideosGenlist);
+ }
+ MP_FREE_STRING(pRegisteCbFunc);
+ MP_FREE_STRING(title);
+}
+#endif
+
+static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is not existed.");
+ return;
+ }
+
+ int nVideoItemIndex =
+ (int) elm_object_item_data_get((Elm_Object_Item *) pEventInfo);
+ VideoLogInfo("Select nVideoItemIndex: %d", nVideoItemIndex);
+ if (nVideoItemIndex < 0
+ || nVideoItemIndex >=
+ mp_util_svc_get_video_list_size_for_checking_index()) {
+ VideoSecureLogError("nVideoItemIndex is invalid = %d",
+ nVideoItemIndex);
+ return;
+ }
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ char *pThumbIconUri =
+ mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ VideoSecureLogInfo("pThumbIconUri = %s:%d", pThumbIconUri,
+ nVideoItemIndex);
+ if (!pThumbIconUri) {
+ if (nVideoItemIndex < nVideoListSize - 1) {
+ mp_util_svc_register_thumbnail_update_func(nVideoItemIndex,
+ __mp_thumbnail_view_update_empty_cb,
+ (void *)
+ nVideoItemIndex);
+ } else {
+ mp_util_svc_register_thumbnail_update_func(nVideoItemIndex,
+ (void *)
+ __mp_thumbnail_view_update_cb,
+ (void *)
+ nVideoItemIndex);
+ }
+ } else {
+ free(pThumbIconUri);
+ pThumbIconUri = NULL;
+ }
+}
+
+static Evas_Object *__mp_thumbnail_view_create_gengrid(Evas_Object *
+ parent, int nWidth,
+ int nHeight)
+{
+ Evas_Object *pGengrid =
+ mp_util_create_gengrid(parent, nWidth, nHeight, EINA_TRUE);
+ if (!pGengrid) {
+ VideoLogError("pVideoGrid is not existed.");
+ return NULL;
+ }
+#ifdef ENABLE_LONGPRESS
+ evas_object_smart_callback_add(pGengrid, "longpressed",
+ __mp_thumbnail_view_gengrid_long_press_cb,
+ NULL);
+#endif
+ evas_object_smart_callback_add(pGengrid, "realized",
+ __mp_thumbnail_view_gengrid_realize_cb,
+ NULL);
+
+ return pGengrid;
+}
+
+static char *__mp_thumbnail_view_get_label_of_grid_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ int nVideoItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ char *szTitle;
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle) {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ } else if (!strcmp(pPart, "elm.text.2")) {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ } else {
+ }
+
+ return NULL;
+}
+
+static Evas_Object *__mp_thumbnail_view_get_grid_icon_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char
+ *pPart)
+{
+ int nVideoItemIndex = (int) pUserData;
+
+ if (!strcmp(pPart, "elm.swallow.icon")) {
+ char *pThumbIconUri =
+ mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *thumb = NULL;
+ int nWidth = 0;
+ int nHeight = 0;
+
+ thumb = elm_image_add(pObject);
+ elm_image_preload_disabled_set(thumb, EINA_FALSE);
+ elm_image_smooth_set(thumb, EINA_FALSE);
+ elm_image_prescale_set(thumb, 50 * MP_SCALE);
+ elm_image_file_set(thumb, pThumbIconUri, NULL);
+ elm_image_object_size_get(thumb, &nWidth, &nHeight);
+ if (nWidth > nHeight) {
+ elm_image_aspect_fixed_set(thumb, EINA_FALSE);
+ }
+ if (thumb)
+ evas_object_show(thumb);
+ MP_FREE_STRING(pThumbIconUri);
+ return thumb;
+ } else if (!strcmp(pPart, "elm.progressbar.icon")) {
+ int nLastPlayedTime =
+ mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime =
+ mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime <= 0) {
+ return NULL;
+ }
+
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+ evas_object_show(pProgressBar);
+
+ return pProgressBar;
+ } else if (!strcmp(pPart, "elm.lock.icon")) {
+ char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex);
+ bool bRet =
+ mp_util_check_video_personal_status((const char *)
+ pVideoFile);
+ MP_FREE_STRING(pVideoFile);
+ if (bRet) {
+ Evas_Object *pLockIcon = elm_image_add(pObject);
+ elm_image_file_set(pLockIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
+ evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pLockIcon);
+ return pLockIcon;
+ } else {
+ return NULL;
+ }
+ } else if (!strcmp(pPart, "elm.dropbox.icon")) {
+ bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex);
+ if (bRet) {
+ Evas_Object *pDropboxIcon = elm_image_add(pObject);
+ elm_image_file_set(pDropboxIcon, VIDEO_PLAYER_IMAGE_NAME_EDJ,
+ VIDEO_LIST_VIEW_ICON_DROPBOX);
+ evas_object_size_hint_align_set(pDropboxIcon, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pDropboxIcon,
+ EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(pDropboxIcon);
+ return pDropboxIcon;
+ } else {
+ return NULL;
+ }
+ }
+
+ return NULL;
+}
+
+static void __mp_thumbnail_view_select_grid_item_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (!pObject) {
+ VideoLogInfo("[ERR]No have pUserData");
+ return;
+ }
+ Evas_Object *pPopup = evas_object_data_get(g_pThumbnailView->pVideosGenlist, "popup"); /* Get popup*/
+ if (pPopup) {
+ VideoLogInfo("long press is called");
+ return; /* If popup exists, do nothing*/
+ }
+
+ if (!mp_util_call_off()) {
+ mp_util_ticker_toast_popup
+ (VIDEOS_NOTIPOP_MSG_UNABLE_TO_PLAY_VIDEO_DURING_CALL, false,
+ false);
+ return;
+ }
+
+ if (!mp_launch_video_allow_check()) {
+ return;
+ }
+
+ int nVideoItemIndex = (int) pUserData;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ VideoLogDebug("nVideoItemIndex = %d--%d", nVideoItemIndex,
+ nVideoListSize);
+
+ if (nVideoItemIndex < 0 || nVideoItemIndex >= nVideoListSize) {
+ VideoLogError("nVideoItemIndex < 0 ===>>> RETURN");
+ return;
+ }
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ g_pThumbnailView->nSelectedVideoItem = nVideoItemIndex;
+
+ MP_DEL_IDLER(g_pThumbnailView->pPlayIdler);
+ g_pThumbnailView->pPlayIdler =
+ ecore_idler_add(__mp_thumbnail_view_play_video_idler_cb,
+ (void *) nVideoItemIndex);
+}
+
+static void __mp_thumbnail_view_grid_item_del_cb(void *pUserdata,
+ Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pThumbnailView || !event_info
+ || !g_pThumbnailView->pVideoItemList) {
+ VideoLogError("g_pMainViewWidge is NULL");
+ return;
+ }
+}
+
+static void __mp_thumbnail_view_append_gengrid_items(Evas_Object *
+ pGengrid,
+ int nGenItemIndex)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+
+ MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_l);
+ g_pThumbnailView->pGenGridItc_l = elm_gengrid_item_class_new();
+
+ g_pThumbnailView->pGenGridItc_l->item_style = "video/album_grid";
+ g_pThumbnailView->pGenGridItc_l->func.text_get =
+ (void *) __mp_thumbnail_view_get_label_of_grid_item_cb;
+ g_pThumbnailView->pGenGridItc_l->func.content_get =
+ (void *) __mp_thumbnail_view_get_grid_icon_cb;
+ g_pThumbnailView->pGenGridItc_l->func.state_get = NULL;
+ g_pThumbnailView->pGenGridItc_l->func.del = NULL;
+
+
+ int nCount =
+ (mp_rotate_ctrl_check_landspace() ?
+ mp_thumbnail_get_landscape_count() :
+ mp_thumbnail_get_portrait_count());
+ int nIndex = nGenItemIndex * nCount;
+ int nMaxIndex = nIndex + nCount;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ Elm_Object_Item *gridItem = NULL;
+ for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
+ gridItem =
+ elm_gengrid_item_append(pGengrid,
+ g_pThumbnailView->pGenGridItc_l,
+ (void *) nIndex,
+ __mp_thumbnail_view_select_grid_item_cb,
+ (void *) nIndex);
+ elm_gengrid_item_select_mode_set(gridItem,
+ ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_item_del_cb_set(gridItem,
+ __mp_thumbnail_view_grid_item_del_cb);
+ elm_object_item_data_set(gridItem, (void *) nIndex);
+ }
+}
+
+static void __mp_thumbnail_view_free_genlist_item_list(void)
+{
+ if (!g_pThumbnailView) {
+ VideoLogError("");
+ return;
+ }
+
+ if (g_pThumbnailView->pVideoItemList) {
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+ EINA_LIST_FREE(g_pThumbnailView->pVideoItemList,
+ pTmpVideoGenlistItem) {
+ if (pTmpVideoGenlistItem) {
+ int nIndex =
+ (int) elm_object_item_data_get(pTmpVideoGenlistItem);
+ mp_thumbnail_view_cancel_thumbnail_update(nIndex);
+ elm_object_item_del(pTmpVideoGenlistItem);
+ }
+
+ pTmpVideoGenlistItem = NULL;
+ }
+
+ g_pThumbnailView->pVideoItemList = NULL;
+ }
+
+}
+
+void mp_thumbnail_view_destroy(void)
+{
+ VideoLogInfo("");
+
+ if (g_pThumbnailView) {
+ __mp_thumbnail_view_free_genlist_item_list();
+
+ MP_DEL_ITC(g_pThumbnailView->pGenGridItc);
+ MP_DEL_ITC(g_pThumbnailView->pGenGridZoomItc);
+ MP_DEL_IDLER(g_pThumbnailView->pPlayIdler);
+ MP_DEL_TIMER(g_pThumbnailView->pStartWallTimer);
+ MP_DEL_IDLER(g_pThumbnailView->pWallResolutionIdler);
+ MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_l);
+ MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_r);
+ MP_DEL_OBJ(g_pThumbnailView->pVideosGenlist);
+
+ free(g_pThumbnailView);
+ g_pThumbnailView = NULL;
+ evas_object_smart_callback_del((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "wm,rotation,changed",
+ __mp_thumbnail_view_rotate_cb);
+ }
+}
+
+static void __mp_thumbnail_view_reset(MpListUpdateType eUpdateType)
+{
+ if (g_pThumbnailView) {
+ __mp_thumbnail_view_free_genlist_item_list();
+
+ MP_DEL_ITC(g_pThumbnailView->pGenGridItc);
+ MP_DEL_ITC(g_pThumbnailView->pGenGridZoomItc);
+ MP_DEL_IDLER(g_pThumbnailView->pPlayIdler);
+ MP_DEL_TIMER(g_pThumbnailView->pStartWallTimer);
+ MP_DEL_IDLER(g_pThumbnailView->pWallResolutionIdler);
+
+ MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_l);
+ MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_r);
+
+ g_pThumbnailView->fViewCbFunc = NULL;
+ g_pThumbnailView->pMainHandle = NULL;
+ g_pThumbnailView->pMainWidget = NULL;
+ g_pThumbnailView->nSelectedVideoItem = 0;
+ g_pThumbnailView->nUpdateTimerCounter = 0;
+ g_pThumbnailView->pVideosGenlist = NULL;
+ g_pThumbnailView->eUpdateType = LIST_UPDATE_TYPE_NONE;
+ if (g_pThumbnailView->pVideosGenlist) {
+ elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
+ }
+ evas_object_smart_callback_del((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "wm,rotation,changed",
+ __mp_thumbnail_view_rotate_cb);
+ }
+
+}
+
+void mp_thumbnail_view_update_played_item(void)
+{
+ if (!g_pThumbnailView || (g_pThumbnailView->nSelectedVideoItem < 0)) {
+ VideoLogInfo("No item to update.");
+ return;
+ }
+ VideoLogInfo("%d", g_pThumbnailView->nSelectedVideoItem);
+
+ if (g_pThumbnailView->pVideosGenlist) {
+ int nGenItemIndex = g_pThumbnailView->nSelectedVideoItem;
+
+ int nGenlistIndex = nGenItemIndex;
+ g_pThumbnailView->bLandscape =
+ mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
+ mp_util_get_main_window_handle
+ ());
+ if (g_pThumbnailView->bLandscape) {
+ nGenlistIndex = nGenlistIndex / mp_thumbnail_get_landscape_count();
+ } else {
+ nGenlistIndex = nGenlistIndex / mp_thumbnail_get_portrait_count();
+ }
+ Elm_Object_Item *pTmpVideoGenlistItem = NULL;
+ pTmpVideoGenlistItem =
+ elm_genlist_nth_item_get((const Evas_Object *)
+ g_pThumbnailView->pVideosGenlist,
+ nGenlistIndex);
+ mp_util_svc_update_thumbnail_info(g_pThumbnailView->
+ nSelectedVideoItem);
+
+ Evas_Object *pGengrid = elm_object_item_part_content_get(pTmpVideoGenlistItem, "elm.icon");
+ Elm_Object_Item *pTmpVideoGengridItem = NULL;
+ pTmpVideoGengridItem = elm_gengrid_selected_item_get(pGengrid);
+ elm_gengrid_item_update(pTmpVideoGengridItem);
+ }
+}
+
+void mp_thumbnail_view_update_video_list(void)
+{
+ if (!g_pThumbnailView || !g_pThumbnailView->pVideosGenlist) {
+ VideoLogWarning
+ ("[ERR] pVideosGenlist or g_pMainViewWidget are NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ Elm_Object_Item *pNextGenlistItem = NULL;
+ Elm_Object_Item *pCurrGenlistItem =
+ elm_genlist_first_item_get(g_pThumbnailView->pVideosGenlist);
+
+ while (pCurrGenlistItem) {
+ elm_genlist_item_update(pCurrGenlistItem);
+ pNextGenlistItem = elm_genlist_item_next_get(pCurrGenlistItem);
+ pCurrGenlistItem = pNextGenlistItem;
+ }
+}
diff --git a/src/view/mp-video-search-view.c b/src/view/mp-video-search-view.c
new file mode 100644
index 0000000..6912986
--- /dev/null
+++ b/src/view/mp-video-search-view.c
@@ -0,0 +1,1700 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <glib.h>
+#include <stdbool.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-video-search-view.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-launching-video-displayer.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-util-db-controller.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-video-list-option-ctrl.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-video-info-ctrl.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-external-ug.h"
+#include "mp-video-nocontent-layout.h"
+#include "mp-rotate-ctrl.h"
+
+#define DEF_BUF_STR_LEN 512
+#define DEF_BUF_STR_LEN_MAX 4096
+#define SEARCH_CHAR_LEN (VIDEO_FILE_SEARCH_CHAR_LEN_MAX*4+1)
+
+#define PREEDIT_START "<preedit>"
+#define PREEDIT_END "</preedit>"
+
+typedef struct
+{
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+ void *pVideosGenlist;
+
+ char szSearchWord[SEARCH_CHAR_LEN];
+ char *szMediaUrl;
+ Eina_List *SearchedIndexList;
+ int nPlayVideoIndex;
+ bool bShowNormalLayout;
+ MpDbUpdateViewLev euLev;
+ bool bUpdateList;
+ char *pFolderPath;
+ int nViewType;
+ bool isViewActive;
+
+ ListViewUpdateListItemCbFunc pChangeViewUserCbFunc;
+ ViewUpdateListItemCbFunc pChangeViewUpdateFunc;
+}st_VideoSearchViewHandle;
+
+typedef struct
+{
+ //Evas_Object *pDimminglayout;
+ Evas_Object *pSearchViewBaselayout;
+ Evas_Object *pSearchBarlayout;
+ Evas_Object *pSearchBarEntry;
+ Evas_Object *pCancelButton;
+ Evas_Object *pClearButton;
+ Evas_Object *pNocontentsLayout;
+}st_VideoSearchViewWidget;
+
+
+st_VideoSearchViewHandle *g_pSearchViewHandle = NULL;
+st_VideoSearchViewWidget *g_pSearchViewWidget = NULL;
+
+
+Elm_Genlist_Item_Class VideoSearch_Itc;
+
+
+
+// Pre-define function for building.
+static void __mp_search_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+static void __mp_search_view_append_video_items(void *pVideosGenlist, bool bSearchedView);
+static int __mp_search_view_get_sort_type(void);
+static void __mp_search_view_arrange_video_list(int nItemSortType, void *pVideosGenlist);
+static void __mp_search_view_base_layout_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __mp_search_view_pop(void *pNaviFrame);
+//static void __mp_search_view_warning_popup_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+static void __mp_search_view_db_changed_cb(void *pUserData);
+static void __mp_search_view_reset(void);
+static void __mp_search_view_update_video_items(Evas_Object *pGenlist, int nGenItemIndex, int nPlayVideoIndex);
+
+
+
+/*
+static void __MpVideoSearchViewDimmingMouseUpCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pSearchViewWidget) {
+ VideoLogInfo("[ERR] g_pSearchViewWidget is NULL.");
+ return ;
+ }
+
+ VideoLogInfo("");
+ if (g_pSearchViewWidget->pDimminglayout) {
+ elm_object_signal_emit(g_pSearchViewWidget->pDimminglayout, SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_HIDE, "");
+ }
+}
+*/
+
+static void __mp_search_view_reset(void)
+{
+ if (g_pSearchViewHandle)
+ {
+ mp_util_db_set_update_fun(g_pSearchViewHandle->euLev, NULL);
+ g_pSearchViewHandle->nPlayVideoIndex = -1;
+ evas_object_smart_callback_del(g_pSearchViewHandle->pNaviFrameHandle, "transition,finished", __mp_search_view_naviframe_transition_effect_cb);
+
+ MP_DEL_OBJ(g_pSearchViewHandle->pVideosGenlist);
+
+ MP_FREE_STRING(g_pSearchViewHandle->szMediaUrl);
+ MP_FREE_STRING(g_pSearchViewHandle->pFolderPath);
+
+ if (g_pSearchViewHandle->SearchedIndexList) {
+ eina_list_free(g_pSearchViewHandle->SearchedIndexList);
+ g_pSearchViewHandle->SearchedIndexList = NULL;
+ }
+ g_pSearchViewHandle->pNaviFrameHandle = NULL;
+ g_pSearchViewHandle->pNaviFrameItem = NULL;
+ g_pSearchViewHandle->pChangeViewUserCbFunc = NULL;
+ g_pSearchViewHandle->pChangeViewUpdateFunc = NULL;
+
+ free(g_pSearchViewHandle);
+ g_pSearchViewHandle = NULL;
+ }
+
+ if (g_pSearchViewWidget)
+ {
+ /*
+ if (g_pSearchViewWidget->pDimminglayout)
+ {
+ evas_object_event_callback_del(g_pSearchViewWidget->pDimminglayout, EVAS_CALLBACK_MOUSE_UP, __MpVideoSearchViewDimmingMouseUpCb);
+ evas_object_del(g_pSearchViewWidget->pDimminglayout);
+ g_pSearchViewWidget->pDimminglayout = NULL;
+ }
+ */
+
+ g_pSearchViewWidget->pSearchViewBaselayout = NULL;
+
+ g_pSearchViewWidget->pSearchBarlayout = NULL;
+
+ g_pSearchViewWidget->pSearchBarEntry = NULL;
+
+ g_pSearchViewWidget->pCancelButton = NULL;
+
+ g_pSearchViewWidget->pNocontentsLayout = NULL;
+
+
+ free(g_pSearchViewWidget);
+ g_pSearchViewWidget = NULL;
+ }
+
+}
+
+void mp_search_view_destroy(void)
+{
+
+ if (g_pSearchViewHandle)
+ {
+ mp_util_db_set_update_fun(g_pSearchViewHandle->euLev, NULL);
+ mp_util_db_set_backup_fun(g_pSearchViewHandle->euLev, NULL);
+ g_pSearchViewHandle->nPlayVideoIndex = -1;
+ evas_object_smart_callback_del(g_pSearchViewHandle->pNaviFrameHandle, "transition,finished", __mp_search_view_naviframe_transition_effect_cb);
+
+ MP_DEL_OBJ(g_pSearchViewHandle->pVideosGenlist);
+ MP_FREE_STRING(g_pSearchViewHandle->szMediaUrl);
+ MP_FREE_STRING(g_pSearchViewHandle->pFolderPath);
+
+ if (g_pSearchViewHandle->SearchedIndexList) {
+ eina_list_free(g_pSearchViewHandle->SearchedIndexList);
+ g_pSearchViewHandle->SearchedIndexList = NULL;
+ }
+
+ free(g_pSearchViewHandle);
+ g_pSearchViewHandle = NULL;
+ }
+
+ if (g_pSearchViewWidget)
+ {
+ /*
+ if (g_pSearchViewWidget->pDimminglayout)
+ {
+ evas_object_event_callback_del(g_pSearchViewWidget->pDimminglayout, EVAS_CALLBACK_MOUSE_UP, __MpVideoSearchViewDimmingMouseUpCb);
+ evas_object_del(g_pSearchViewWidget->pDimminglayout);
+ g_pSearchViewWidget->pDimminglayout = NULL;
+ }
+ */
+
+ MP_DEL_OBJ(g_pSearchViewWidget->pCancelButton);
+ MP_DEL_OBJ(g_pSearchViewWidget->pSearchBarEntry);
+ MP_DEL_OBJ(g_pSearchViewWidget->pSearchBarlayout);
+ MP_DEL_OBJ(g_pSearchViewWidget->pNocontentsLayout);
+
+ if (g_pSearchViewWidget->pSearchViewBaselayout != NULL)
+ {
+ evas_object_event_callback_del(g_pSearchViewWidget->pSearchViewBaselayout, EVAS_CALLBACK_DEL, __mp_search_view_base_layout_del_cb);
+ MP_DEL_OBJ(g_pSearchViewWidget->pSearchViewBaselayout);
+ }
+
+ free(g_pSearchViewWidget);
+ g_pSearchViewWidget = NULL;
+ }
+}
+
+char *mp_search_view_search_markup_keyword(char *szOriginStr, char *szSearchWord, bool *bResult)
+{
+ if (!szOriginStr) {
+ VideoLogError("[ERR] szOriginStr is NULL.");
+ return NULL;
+ }
+
+ if (!szSearchWord) {
+ VideoLogError("[ERR] szSearchWord is NULL.");
+ return NULL;
+ }
+
+ if (!bResult) {
+ VideoLogError("[ERR] bResult is NULL.");
+ return NULL;
+ }
+
+ char szStr[DEF_BUF_STR_LEN + 1] = {0,};
+ static char szTargetStr[DEF_BUF_STR_LEN + 1] = { 0, };
+ int nWordLength = 0;
+ int nSearchLength = 0;
+ int nCounter = 0;
+ bool bFound = FALSE;
+ gchar *szMarkupTextStart = NULL;
+ gchar *szMarkupTextEnd= NULL;
+ gchar *szMarkupText= NULL;
+ int r = 222;
+ int g = 111;
+ int b = 31;
+ int a = 255;
+
+ *bResult = TRUE;
+
+ if (g_utf8_validate(szOriginStr, -1, NULL)) {
+ strncpy(szStr, szOriginStr, DEF_BUF_STR_LEN);
+
+ nWordLength = strlen(szStr);
+ nSearchLength = strlen(szSearchWord);
+
+ for (nCounter = 0; nCounter < nWordLength; nCounter++)
+ {
+ if (!strncasecmp(szSearchWord, &szStr[nCounter], nSearchLength)) {
+ bFound = TRUE;
+ break;
+ }
+ }
+
+ *bResult = bFound;
+ memset(szTargetStr, 0x00, DEF_BUF_STR_LEN + 1);
+
+ if (bFound) {
+ if (nCounter == 0) {
+ szMarkupText = g_markup_escape_text(&szStr[0], nSearchLength);
+ szMarkupTextEnd = g_markup_escape_text(&szStr[nSearchLength], nWordLength - nSearchLength);
+
+ if (!szMarkupText && !szMarkupTextEnd) {
+ VideoLogInfo("szMarkupText and szMarkupTextEnd are NULL.");
+ return NULL;
+ }
+
+ //snprintf(szTargetStr, DEF_BUF_STR_LEN, "<match>%s</match>%s", szMarkupText, (char*)szMarkupTextEnd);
+ snprintf(szTargetStr, DEF_BUF_STR_LEN, "<color=#%02x%02x%02x%02x>%s</color>%s", r, g, b, a,
+ szMarkupText, (char*)szMarkupTextEnd);
+
+ if (szMarkupText) {
+ free(szMarkupText);
+ szMarkupText = NULL;
+ }
+
+ if (szMarkupTextEnd) {
+ free(szMarkupTextEnd);
+ szMarkupTextEnd = NULL;
+ }
+ }
+ else {
+ szMarkupTextStart = g_markup_escape_text(&szStr[0], nCounter);
+ szMarkupText = g_markup_escape_text(&szStr[nCounter], nSearchLength);
+ szMarkupTextEnd = g_markup_escape_text(&szStr[nCounter + nSearchLength], nWordLength - (nCounter + nSearchLength));
+
+ if (!szMarkupTextStart && !szMarkupText && !szMarkupTextEnd) {
+ VideoLogInfo("szMarkupTextStart and szMarkupText and szMarkupTextEnd are NULL.");
+ return NULL;
+ }
+
+ //snprintf(szTargetStr, DEF_BUF_STR_LEN, "%s<match>%s</match>%s", (char*)szMarkupTextStart, szMarkupText, (char*)szMarkupTextEnd);
+ snprintf(szTargetStr, DEF_BUF_STR_LEN, "%s<color=#%02x%02x%02x%02x>%s</color>%s", (char*)szMarkupTextStart,
+ r, g, b, a, szMarkupText, (char*)szMarkupTextEnd);
+
+ if (szMarkupText) {
+ free(szMarkupText);
+ szMarkupText = NULL;
+ }
+
+ if (szMarkupTextStart) {
+ free(szMarkupTextStart);
+ szMarkupTextStart = NULL;
+ }
+
+ if (szMarkupTextEnd) {
+ free(szMarkupTextEnd);
+ szMarkupTextEnd = NULL;
+ }
+ }
+ }
+ else {
+ snprintf(szTargetStr, DEF_BUF_STR_LEN, "%s", szStr);
+ }
+ }
+
+ VideoSecureLogInfo("szTargetStr=%s", szTargetStr);
+
+ return szTargetStr;
+}
+
+
+static void __mp_search_view_trans_finished_cb(void *pUserData, Evas_Object *obj, void *event_info)
+{
+ if (!obj)
+ {
+ VideoLogError("[ERR] g_pListRemoveViewHandle is NULL.");
+ return;
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(obj);
+
+ evas_object_smart_callback_del(obj, "transition,finished", __mp_search_view_trans_finished_cb);
+}
+
+static Eina_Bool mp_search_view_back_btn_cb(void *pUserData, Elm_Object_Item *pItem)
+{
+ if (!g_pSearchViewHandle)
+ {
+ VideoLogInfo("[ERR] g_pListRemoveViewHandle is NULL.");
+ return EINA_TRUE;
+ }
+
+ // Register transition finished callback.
+ mp_widget_ctrl_disable_navi_handle_focus_except_item(g_pSearchViewHandle->pNaviFrameHandle, g_pSearchViewHandle->pNaviFrameItem);
+ evas_object_smart_callback_add(g_pSearchViewHandle->pNaviFrameHandle, "transition,finished", __mp_search_view_trans_finished_cb, (void *)g_pSearchViewHandle->pNaviFrameHandle);
+
+ __mp_search_view_pop(g_pSearchViewHandle->pNaviFrameHandle);
+
+ return EINA_TRUE;
+}
+
+////////////////////////////////////////////////
+// Genlist callback
+void __mp_search_view_naviframe_transition_effect_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pSearchViewHandle)
+ {
+ VideoLogError("[ERR] No exist g_pSearchViewHandle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ //Evas_Object *pTmpContents = NULL;
+ //Elm_Object_Item *pTmpItem = NULL;
+
+ if (!g_pSearchViewHandle->pNaviFrameHandle)
+ {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return;
+ }
+
+ //pTmpItem = elm_naviframe_top_item_get(g_pSearchViewHandle->pNaviFrameHandle);
+ //pTmpContents = elm_object_item_content_get(pTmpItem);
+
+ elm_object_focus_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+}
+
+
+// Genlist item callback.
+/*
+static void __mp_search_view_warning_popup_cb(void *pUserData,
+ Evas_Object *pObject, void *pEventInfo)
+{
+
+ VideoLogInfo("");
+
+ mp_util_delete_popup_handle();
+}
+*/
+
+static void __mp_search_view_select_video_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pSearchViewHandle)
+ {
+ VideoLogError("g_pSearchViewHandle is not exist.");
+ return;
+ }
+
+ int nVideoItemIndex = 0;
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+
+ if (pItem)
+ {
+ nVideoItemIndex = (int)elm_object_item_data_get(pItem);
+ }
+ else
+ {
+
+ if (pSelectedItem)
+ {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+
+ return;
+ }
+
+ VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
+
+ if (!pSelectedItem)
+ {
+ VideoLogError("pSelectedItem is NULL");
+ return;
+ }
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+
+ Evas_Object *pPopup = evas_object_data_get(pObject, "popup"); // Get popup
+ if (pPopup)
+ {
+ VideoLogError("long press is called");
+ return; // If popup exists, do nothing
+ }
+
+ if (!mp_launch_video_allow_check())
+ {
+ return;
+ }
+
+ if (nVideoItemIndex < 0)
+ {
+ VideoLogWarning("nVideoItemIndex < 0 ===>>> RETURN");
+ return;
+ }
+
+ if (!mp_util_call_off())
+ {
+ mp_util_ticker_toast_popup(VIDEOS_NOTIPOP_MSG_UNABLE_TO_PLAY_VIDEO_DURING_CALL, false, false);
+ return;
+ }
+
+ g_pSearchViewHandle->nPlayVideoIndex = nVideoItemIndex;
+
+ if (g_pSearchViewHandle->szMediaUrl)
+ {
+ free(g_pSearchViewHandle->szMediaUrl);
+ g_pSearchViewHandle->szMediaUrl = NULL;
+ }
+
+ g_pSearchViewHandle->szMediaUrl = mp_util_svc_get_video_url(nVideoItemIndex);
+
+ if (g_pSearchViewHandle->szMediaUrl)
+ {
+ elm_object_focus_allow_set(g_pSearchViewWidget->pSearchBarlayout, EINA_FALSE);
+ elm_object_focus_allow_set(g_pSearchViewWidget->pSearchBarEntry, EINA_FALSE);
+ elm_object_focus_set(pObject, EINA_TRUE);
+ mp_launch_video_play(g_pSearchViewHandle->szMediaUrl, MP_PLAYER_TYPE_VIDEO, NULL);
+
+ free(g_pSearchViewHandle->szMediaUrl);
+ g_pSearchViewHandle->szMediaUrl = NULL;
+ }
+ else
+ {
+ VideoLogError("[Err] Fail to get video uri from media service.");
+ }
+}
+
+char *mp_search_view_get_duration_time(int nVideoItemIndex)
+{
+
+ char szTmpStr[DEF_BUF_STR_LEN_MAX] = {0, };
+ char szTmpStrDurationTime[DEF_BUF_STR_LEN_MAX] = {0, };
+ char szTmpStrLastPlayedPos[DEF_BUF_STR_LEN_MAX] = {0, };
+
+ unsigned int nVideoInfoDuration = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+ unsigned int nVideoInfoLastTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+
+ mp_util_convert_time(nVideoInfoDuration, szTmpStrDurationTime, FALSE);
+ mp_util_convert_time(nVideoInfoLastTime, szTmpStrLastPlayedPos, TRUE);
+
+ snprintf(szTmpStr, DEF_BUF_STR_LEN_MAX, "%s/%s", szTmpStrLastPlayedPos, szTmpStrDurationTime);
+
+ return strdup(szTmpStr);
+}
+
+char *mp_search_view_get_label_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ int nVideoItemIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text.main.left.top"))
+ {
+ char *szTitle = NULL;
+ char *szTitleUtf8 = NULL;
+ char *szTitleWithSearchWordColor = NULL;
+ bool bResult = FALSE;
+
+ szTitle = mp_util_svc_get_video_title(nVideoItemIndex);
+
+ if (strlen(g_pSearchViewHandle->szSearchWord) > 0)
+ {
+ szTitleWithSearchWordColor = mp_search_view_search_markup_keyword(szTitle, (char*)g_pSearchViewHandle->szSearchWord, &bResult);
+ if (bResult)
+ {
+ if (szTitle)
+ {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ if (szTitleWithSearchWordColor) {
+ VideoLogInfo("szTitleWithSearchWordColor : %s", szTitleWithSearchWordColor);
+ return strdup(szTitleWithSearchWordColor);
+ } else {
+ return NULL;
+ }
+ }
+ }
+ szTitleUtf8 = elm_entry_utf8_to_markup(szTitle);
+
+ if (szTitle)
+ {
+ free(szTitle);
+ szTitle = NULL;
+ }
+
+ return szTitleUtf8;
+ }
+ else if (!strcmp(pPart, "elm.text.sub.left.bottom"))
+ {
+ return mp_util_svc_get_duration_str_time(nVideoItemIndex);
+ }
+/*
+// else if (!strcmp(pPart, "elm.text.3"))
+ else if (!strcmp(pPart, "elm.text.sub.right.bottom"))
+ {
+ unsigned long long nFilesize = 0;
+
+ nFilesize = mp_util_svc_get_video_item_size(nVideoItemIndex);
+ char *szFileSize = mp_util_get_file_size(nFilesize);
+ char *szTitleUtf8 = NULL;
+ if (szFileSize)
+ {
+ szTitleUtf8 = elm_entry_utf8_to_markup(szFileSize);
+ free(szFileSize);
+ szFileSize = NULL;
+ }
+
+ return szTitleUtf8;
+ }
+*/ else
+ {
+ }
+
+ return NULL;
+}
+
+Evas_Object *mp_search_view_get_icon_of_video_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ if (!strcmp(pPart, "elm.icon.1"))
+ {
+ VideoLogError("pPart: elm.icon.1 - thumbnail");
+
+ int nVideoItemIndex = (int)pUserData;
+ Evas_Object *pLayout = elm_layout_add(pObject);
+
+ char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+ Evas_Object *pBg = NULL;
+
+ pLayout = elm_layout_add(pObject);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "listview.thumbnail.layout");
+
+ if (!pThumbIconUri || !vp_file_exists(pThumbIconUri))
+ {
+ MP_FREE_STRING(pThumbIconUri);
+ }
+
+ pBg = mp_util_create_preload_image(pLayout, pThumbIconUri, VIDEO_ICON_WIDTH);
+
+ if (!elm_layout_content_set(pLayout, "elm.thumbnail.icon", pBg))
+ VideoLogError("elm_layout_content_set() is failed.");
+
+ if (pBg)
+ evas_object_show(pBg);
+
+ MP_FREE_STRING(pThumbIconUri);
+
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nVideoItemIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nVideoItemIndex);
+
+ if (nLastPlayedTime > 0)
+ {
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+
+ Evas_Object *pProgressBar = elm_progressbar_add(pObject);
+ elm_object_style_set(pProgressBar, "video/list_progress");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, nRatio);
+
+ if (!elm_layout_content_set(pLayout, "elm.progressbar.icon", pProgressBar))
+ VideoLogError("elm_layout_content_set() is failed.");
+
+ if (pProgressBar) {
+ evas_object_show(pProgressBar);
+ }
+ }
+
+ if (!mp_util_create_video_sub_icon(pLayout, nVideoItemIndex)) {
+ VideoLogWarning("Local File or Create sub icon is failed.", nVideoItemIndex);
+ }
+
+ if (pLayout) {
+ evas_object_show(pLayout);
+ }
+
+ return pLayout;
+ }
+
+ return NULL;
+}
+//
+////////////////////////////////////////////////
+
+////////////////////////////////////////////////
+// Search bar widget about relevant items of genlist.
+static void __mp_search_view_del_no_contents_layout(void)
+{
+ VideoLogInfo("");
+
+ if (g_pSearchViewWidget->pNocontentsLayout)
+ {
+ evas_object_del(g_pSearchViewWidget->pNocontentsLayout);
+ g_pSearchViewWidget->pNocontentsLayout = NULL;
+ }
+}
+
+static void *__mp_search_view_add_no_contents_layout(void *pParent)
+{
+ if (!g_pSearchViewWidget) {
+ VideoLogError("g_pSearchViewWidget == NULL");
+ return NULL;
+ }
+ VideoLogInfo("");
+
+ __mp_search_view_del_no_contents_layout();
+
+ if (elm_entry_is_empty(g_pSearchViewWidget->pSearchBarEntry)) {
+ VideoLogInfo("entry is empty, no need append no search view");
+ return NULL;
+ }
+
+ //mp_util_virtual_keypad_disabled_set(EINA_TRUE);
+ g_pSearchViewWidget->pNocontentsLayout = mp_create_nocontent_layout(pParent, VIDEOS_SEARCHVIEW_MSG_NO_SEARCH_RESULTS, NULL);
+
+ evas_object_show(g_pSearchViewWidget->pNocontentsLayout);
+
+ return g_pSearchViewWidget->pNocontentsLayout;
+}
+
+static void __mp_search_view_is_existed_no_content_layout(void)
+{
+ if (!g_pSearchViewWidget)
+ {
+ VideoLogError("g_pSearchViewWidget == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pSearchViewWidget->pNocontentsLayout)
+ {
+ elm_object_part_content_unset(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content");
+ __mp_search_view_del_no_contents_layout();
+ //mp_util_virtual_keypad_disabled_set(EINA_FALSE);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", g_pSearchViewHandle->pVideosGenlist);
+ //elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", g_pSearchViewWidget->pDimminglayout);
+ //evas_object_show(g_pSearchViewWidget->pDimminglayout);
+ if (g_pSearchViewHandle->pVideosGenlist)
+ evas_object_show(g_pSearchViewHandle->pVideosGenlist);
+ }
+}
+
+static void __mp_search_view_is_existed_genlist(void)
+{
+ if (!g_pSearchViewWidget)
+ {
+ VideoLogError("g_pSearchViewWidget == NULL");
+ return;
+ }
+
+
+ if (!g_pSearchViewWidget->pNocontentsLayout)
+ {
+ elm_object_part_content_unset(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content");
+ //evas_object_hide(g_pSearchViewWidget->pDimminglayout);
+ if (g_pSearchViewHandle->pVideosGenlist)
+ evas_object_hide(g_pSearchViewHandle->pVideosGenlist);
+ }
+ else
+ {
+ VideoLogError("g_pSearchViewWidget->pNocontentsLayout is existed.");
+ }
+}
+
+void mp_search_view_search_genlist_item(const char *szSearchWord)
+{
+ if (!g_pSearchViewHandle)
+ {
+ VideoLogError("g_pSearchViewHandle == NULL");
+ return;
+ }
+
+ if (!szSearchWord)
+ {
+ VideoLogError("szSearchWord == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ //int nVideoListSize = 0;
+
+ //mp_util_svc_destory_video_list();
+ //mp_util_svc_extract_video_list_for_search_view(szSearchWord, g_pSearchViewHandle->nViewType);
+ //nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ //VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (g_pSearchViewHandle->SearchedIndexList) {
+ eina_list_free(g_pSearchViewHandle->SearchedIndexList);
+ g_pSearchViewHandle->SearchedIndexList = NULL;
+ }
+ mp_util_svc_index_list_for_search_view(szSearchWord, (void **)&g_pSearchViewHandle->SearchedIndexList);
+
+ if (g_pSearchViewHandle->SearchedIndexList)
+ {
+ memset(g_pSearchViewHandle->szSearchWord, 0, sizeof(char) * SEARCH_CHAR_LEN);
+ strncpy(g_pSearchViewHandle->szSearchWord, szSearchWord, SEARCH_CHAR_LEN - 1);
+ __mp_search_view_is_existed_no_content_layout();
+ elm_genlist_clear(g_pSearchViewHandle->pVideosGenlist);
+ __mp_search_view_append_video_items(g_pSearchViewHandle->pVideosGenlist, true);
+ //elm_object_signal_emit(g_pSearchViewWidget->pDimminglayout, SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_HIDE, "");
+ }
+ else
+ {
+ __mp_search_view_is_existed_genlist();
+ void *pNoContentLayout = __mp_search_view_add_no_contents_layout(g_pSearchViewWidget->pSearchViewBaselayout);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", pNoContentLayout);
+ }
+}
+
+static char *mp_search_view_get_fact_str(const char *str)
+{
+ if (!str)
+ {
+ VideoLogWarning("str == NULL");
+ return NULL;
+ }
+
+ int nLen = strlen(str);
+ if (nLen >= SEARCH_CHAR_LEN -1)
+ {
+ VideoLogError("str length is too large : [%d]", nLen);
+ return NULL;
+ }
+
+ char des_str[SEARCH_CHAR_LEN] = {0,};
+ char *temp_str = strstr(str, PREEDIT_START);
+ char *pTempStr2 = strstr(str, PREEDIT_END);
+
+ if (temp_str != NULL && pTempStr2 != NULL)
+ {
+ if (str != temp_str)
+ {
+ strncpy(des_str, str, temp_str - str);
+ }
+
+ if (strlen(des_str) != 0)
+ {
+ strncat(des_str, temp_str + strlen(PREEDIT_START), pTempStr2 - temp_str - strlen(PREEDIT_START));
+ }
+ else
+ {
+ strncpy(des_str, temp_str + strlen(PREEDIT_START), pTempStr2 - temp_str - strlen(PREEDIT_START));
+ }
+ }
+ else
+ {
+ strncpy(des_str, str, SEARCH_CHAR_LEN -1);
+ }
+ VideoSecureLogInfo("get string = %s:%s", des_str, str);
+ return strdup(des_str);
+
+}
+
+static void mp_search_view_check_landscape()
+{
+ if (!g_pSearchViewWidget) {
+ return;
+ }
+ bool bLandscape = mp_rotate_ctrl_check_landspace();
+
+ const char *temp = elm_object_text_get(g_pSearchViewWidget->pSearchBarEntry);
+ char *TempUtf8 = elm_entry_markup_to_utf8(temp);
+ char *szChangedStr = mp_search_view_get_fact_str(TempUtf8);
+
+ if (bLandscape) {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,landscape", "elm");
+
+ if (szChangedStr != NULL && strlen(szChangedStr) > 0) {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,clear_button,landscape", "elm");
+ }
+ } else {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,portrait", "elm");
+
+ if (szChangedStr != NULL && strlen(szChangedStr) > 0) {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,clear_button,portrait", "elm");
+ }
+ }
+
+ MP_FREE_STRING(szChangedStr);
+ MP_FREE_STRING(TempUtf8);
+}
+
+static void __mp_search_view_entry_changed_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle || !pUserData || !pObject) {
+ VideoLogError("g_pSearchViewHandle == NULL");
+ return;
+ }
+
+ char *szChangedStr = NULL;
+
+// if (elm_object_focus_get(pUserData)) {
+ if (elm_entry_is_empty(pObject)) {
+ elm_object_signal_emit(pUserData, "elm,state,eraser,hide", "elm");
+ elm_object_disabled_set(g_pSearchViewWidget->pClearButton, EINA_TRUE);
+ elm_object_style_set(g_pSearchViewWidget->pClearButton, "clear_dim");
+ } else {
+ elm_object_signal_emit(pUserData, "elm,state,eraser,show", "elm");
+ elm_object_disabled_set(g_pSearchViewWidget->pClearButton, EINA_FALSE);
+ elm_object_style_set(g_pSearchViewWidget->pClearButton, "clear");
+ }
+// }
+
+ if (!elm_entry_is_empty(pObject)) {
+ elm_object_signal_emit(pUserData, "elm,state,guidetext,hide", "elm");
+ }
+
+ if (mp_util_svc_get_number_of_video_item_by_type() < 1) {
+ VideoLogWarning("There don't have any videos.");
+ __mp_search_view_is_existed_genlist();
+ void *pNoContentLayout = __mp_search_view_add_no_contents_layout(g_pSearchViewWidget->pSearchViewBaselayout);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", pNoContentLayout);
+ return;
+ }
+
+ const char *temp = elm_object_text_get(pObject);
+ char *TempUtf8 = elm_entry_markup_to_utf8(temp);
+ szChangedStr = mp_search_view_get_fact_str(TempUtf8);
+ MP_FREE_STRING(TempUtf8);
+
+ VideoSecureLogInfo("Changed word in entry widget : %s", szChangedStr);
+
+ if (szChangedStr != NULL && strlen(szChangedStr) > 0) {
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchBarlayout, "searchbar_clear_btn", g_pSearchViewWidget->pClearButton);
+ mp_search_view_check_landscape();
+ mp_search_view_search_genlist_item(szChangedStr);
+ } else {
+ elm_object_part_content_unset(g_pSearchViewWidget->pSearchBarlayout, "searchbar_clear_btn");
+ evas_object_hide(g_pSearchViewWidget->pClearButton);
+ memset(g_pSearchViewHandle->szSearchWord, 0, sizeof(char) * SEARCH_CHAR_LEN);
+ //strncpy(g_pSearchViewHandle->szSearchWord, szChangedStr, SEARCH_CHAR_LEN - 1);
+ __mp_search_view_is_existed_no_content_layout();
+ __mp_search_view_arrange_video_list(__mp_search_view_get_sort_type(), g_pSearchViewHandle->pVideosGenlist);
+ //elm_object_signal_emit(g_pSearchViewWidget->pDimminglayout, SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_SHOW, "");
+ }
+ MP_FREE_STRING(szChangedStr);
+
+}
+
+static void __mp_search_view_focused_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !g_pSearchViewWidget || !g_pSearchViewHandle)
+ {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ if (elm_entry_is_empty(pObject))
+ {
+ elm_object_signal_emit(pUserData, "elm,state,eraser,hide", "elm");
+ }
+ else
+ {
+ elm_object_signal_emit(pUserData, "elm,state,eraser,show", "elm");
+ }
+
+ elm_object_signal_emit(pUserData, "elm,state,guidetext,hide", "elm");
+ elm_object_signal_emit(pUserData, "cancel,in", "");
+ elm_object_focus_allow_set(pObject,EINA_TRUE);
+}
+
+static void __mp_search_view_unfocused_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !g_pSearchViewWidget || !g_pSearchViewHandle)
+ {
+ VideoLogError("[ERR]No have pUserData");
+ return;
+ }
+
+ if (elm_entry_is_empty(pObject))
+ {
+ elm_object_signal_emit(pUserData, "elm,state,guidetext,show", "elm");
+ }
+ elm_object_signal_emit(pUserData, "elm,state,eraser,hide", "elm");
+ //elm_object_focus_allow_set(pObject, EINA_FALSE);
+}
+
+
+static void __mp_search_view_activated_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pObject)
+ {
+ VideoLogError("[ERR]No have pObject");
+ return;
+ }
+
+ elm_object_focus_set(pObject, FALSE);
+}
+
+static void __mp_search_view_entry_max_len_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_util_ticker_toast_popup(VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, false, false);
+ //mp_util_info_popup(VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, ___MpVideoSearchViewPopUpBackCb, pUserData, VIDEOS_STRING);
+}
+
+static void __mp_search_view_eraser_clicked_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!pUserData)
+ {
+ VideoLogError("error userdata");
+ return;
+ }
+ elm_object_part_content_unset(g_pSearchViewWidget->pSearchBarlayout, "searchbar_clear_btn");
+ evas_object_hide(g_pSearchViewWidget->pClearButton);
+ Evas_Object *pEntry = (Evas_Object *)pUserData;
+ elm_entry_entry_set(pEntry, "");
+ elm_object_focus_allow_set(pObject,EINA_TRUE);
+ elm_object_focus_set(pObject, EINA_TRUE);
+}
+
+static void __mp_search_view_bg_clicked_cb(void *pUserData, Evas_Object *pObject, const char *emission, const char *source)
+{
+ VideoLogInfo("");
+ if (!pUserData)
+ {
+ VideoLogError("error userdata");
+ return;
+ }
+
+ //elm_object_focus_set(pUserData, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pUserData, EINA_TRUE);
+}
+
+/*void mp_search_view_search_cancel_btn_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle)
+ {
+ VideoLogError("g_pSearchViewHandle is not exist.");
+ return;
+ }
+
+ elm_naviframe_item_pop(g_pSearchViewHandle->pNaviFrameHandle);
+}*/
+
+static void __mp_search_view_search_symbol_clicked_cb(void *pUserData, Evas_Object *pObject, const char *emission, const char *source)
+{
+ VideoLogInfo("");
+ if (!pUserData)
+ {
+ VideoLogError("error userdata");
+ return;
+ }
+ elm_object_focus_set(pUserData, EINA_TRUE);
+}
+//
+////////////////////////////////////////////////
+
+////////////////////////////////////////////////
+//
+int __mp_search_view_get_sort_type(void)
+{
+
+ int nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+
+ switch (mp_sort_ctrl_get_sort_state())
+ {
+ /*case MP_LIST_SORT_BY_RECENTLY_VIEWED:
+ nSortType = MP_MEDIA_SORT_BY_RECENTLY_VIEWED;
+ break;*/
+
+ case MP_LIST_SORT_BY_RECENTLY_ADDED:
+ nSortType = MP_MEDIA_SORT_BY_RECENTLY_ADDED;
+ break;
+
+ case MP_LIST_SORT_BY_NAME:
+ nSortType = MP_MEDIA_SORT_BY_NAME;
+ break;
+
+ /*case MP_LIST_SORT_BY_SIZE:
+ nSortType = MP_MEDIA_SORT_BY_SIZE;
+ break;
+
+ case MP_LIST_SORT_BY_TYPE:
+ nSortType = MP_MEDIA_SORT_BY_TYPE;
+ break;*/
+ }
+
+ return nSortType;
+}
+
+void __mp_search_view_append_video_items(void *pVideosGenlist, bool bSearchedView)
+{
+ VideoLogInfo("");
+
+ if (!pVideosGenlist)
+ {
+ VideoLogInfo("No exist genlist object.");
+ return;
+ }
+
+ int nIndex = 0;
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+// VideoSearch_Itc.item_style = "video/search_list";
+ VideoSearch_Itc.item_style = "2line.top";
+ VideoSearch_Itc.func.text_get = (void*)mp_search_view_get_label_of_video_item_cb;
+ VideoSearch_Itc.func.content_get = (void*)mp_search_view_get_icon_of_video_item_cb;
+ VideoSearch_Itc.func.state_get = NULL;
+ VideoSearch_Itc.func.del = NULL;
+ if (bSearchedView) {
+ Eina_List *pIterateList = NULL;
+ void *nTempIndex = (void *)0;
+ EINA_LIST_FOREACH(g_pSearchViewHandle->SearchedIndexList, pIterateList, nTempIndex)
+ {
+ nIndex = (int)nTempIndex;
+ VideoLogInfo("searched nIndex : %d", nIndex);
+ elm_genlist_item_append(pVideosGenlist, &VideoSearch_Itc, (void*)nIndex,
+ NULL, ELM_GENLIST_ITEM_NONE, __mp_search_view_select_video_item_cb, NULL);
+ }
+
+ } else {
+ for (nIndex = 0; nIndex < nVideoListSize; nIndex++)
+ {
+ VideoLogInfo("nIndex : %d", nIndex);
+ elm_genlist_item_append(pVideosGenlist, &VideoSearch_Itc, (void*)nIndex,
+ NULL, ELM_GENLIST_ITEM_NONE, __mp_search_view_select_video_item_cb, NULL);
+ }
+ }
+}
+
+void __mp_search_view_arrange_video_list(int nItemSortType, void *pVideosGenlist)
+{
+ VideoLogInfo("");
+
+ if (!pVideosGenlist)
+ {
+ VideoLogInfo("No exist genlist object.");
+ return;
+ }
+
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget)
+ {
+ VideoLogInfo("Handles are not existed about search view.");
+ return;
+ }
+ if (g_pSearchViewHandle->SearchedIndexList) {
+ eina_list_free(g_pSearchViewHandle->SearchedIndexList);
+ g_pSearchViewHandle->SearchedIndexList = NULL;
+ }
+ VideoLogInfo("");
+
+ int nVideoListSize = 0;
+ /*Don't need to re-make new video list, because searched data only works current video list*/
+ if (g_pSearchViewHandle->nViewType == MP_LIST_VIEW_AS_FOLDER_LIST && !mp_folder_view_is_item_view()) {
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type(nItemSortType, mp_view_ctrl_get_list_type());
+ }
+ //MpUtilMediaSvcExtractVideoListByViewType(nItemSortType, nViewType);
+ nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ elm_genlist_clear(pVideosGenlist);
+
+ if (nVideoListSize > 0)
+ {
+ __mp_search_view_append_video_items(pVideosGenlist, false);
+ }
+
+ evas_object_show(pVideosGenlist);
+}
+
+static void __mp_search_view_clicked_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!pObject)
+ {
+ VideoLogError("[ERR]No have pObject");
+ return;
+ }
+ elm_object_focus_allow_set(pObject,EINA_TRUE);
+ elm_object_focus_set(pObject, EINA_TRUE);
+}
+
+static void __mp_search_view_soft_back_button_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ VideoLogInfo(" ");
+ Evas_Object *pTopNaviFrame = NULL;
+ pTopNaviFrame = elm_naviframe_item_pop(g_pSearchViewHandle->pNaviFrameHandle);
+ evas_object_del(pTopNaviFrame);
+}
+
+static void __mp_search_view_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pSearchViewWidget) {
+ VideoLogError("__mp_search_view_rotate_cb IS null");
+ return;
+ }
+ //mp_util_virtual_keypad_disabled_set(EINA_TRUE);
+ bool bLandscape = mp_rotate_ctrl_check_landspace();
+
+ const char *temp = elm_object_text_get(g_pSearchViewWidget->pSearchBarEntry);
+ char *TempUtf8 = elm_entry_markup_to_utf8(temp);
+ char *szChangedStr = mp_search_view_get_fact_str(TempUtf8);
+
+ if (bLandscape) {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,portrait", "elm");
+
+ if (szChangedStr != NULL && strlen(szChangedStr) > 0) {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,clear_button,portrait", "elm");
+ }
+ } else {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,landscape", "elm");
+
+ if (szChangedStr != NULL && strlen(szChangedStr) > 0) {
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,clear_button,landscape", "elm");
+ }
+ }
+
+ MP_FREE_STRING(szChangedStr);
+ MP_FREE_STRING(TempUtf8);
+}
+
+static Evas_Object *__mp_search_view_init_internal_layout(void *pParent)
+{
+ VideoLogInfo("");
+
+ if (!pParent) {
+ VideoLogError("[ERR]");
+ return NULL;
+ }
+
+ if (g_pSearchViewWidget->pSearchViewBaselayout) {
+ evas_object_del(g_pSearchViewWidget->pSearchViewBaselayout);
+ g_pSearchViewWidget->pSearchViewBaselayout = NULL;
+ }
+
+ // Create search view base layout.
+ g_pSearchViewWidget->pSearchViewBaselayout = elm_layout_add(pParent);
+ elm_layout_file_set(g_pSearchViewWidget->pSearchViewBaselayout, VIDEO_BASIC_NAVIFRAME_EDJ, "search_view_layout");
+
+ // Create search bar layout.
+ g_pSearchViewWidget->pSearchBarlayout = elm_layout_add(g_pSearchViewWidget->pSearchViewBaselayout);
+ elm_layout_file_set(g_pSearchViewWidget->pSearchBarlayout, VIDEO_BASIC_NAVIFRAME_EDJ, "searchbar_video");
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "search_bar", g_pSearchViewWidget->pSearchBarlayout);
+ elm_object_signal_callback_add(g_pSearchViewWidget->pSearchBarlayout, "elm,action,click", "back_button_callback", __mp_search_view_soft_back_button_cb, NULL);
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,show,searchbar", "elm");
+
+ // Create entry.
+ g_pSearchViewWidget->pSearchBarEntry = elm_entry_add(g_pSearchViewWidget->pSearchBarlayout);
+ elm_entry_single_line_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+ elm_entry_scrollable_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+ elm_object_domain_translatable_part_text_set(g_pSearchViewWidget->pSearchBarEntry, "elm.guide", VIDEOS_STRING, VIDEOS_CTXPOP_MENU_SEARCH_IDS);
+ elm_object_domain_part_text_translatable_set(g_pSearchViewWidget->pSearchBarEntry, "elm.guide", VIDEOS_STRING, EINA_TRUE);
+
+ elm_entry_scrollable_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+ elm_entry_single_line_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+ elm_entry_cnp_mode_set(g_pSearchViewWidget->pSearchBarEntry, ELM_CNP_MODE_PLAINTEXT);
+ elm_entry_prediction_allow_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "changed", __mp_search_view_entry_changed_cb, g_pSearchViewWidget->pSearchBarlayout);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "focused", __mp_search_view_focused_cb, g_pSearchViewWidget->pSearchBarlayout);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "unfocused", __mp_search_view_unfocused_cb, g_pSearchViewWidget->pSearchBarlayout);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "preedit,changed", __mp_search_view_entry_changed_cb, g_pSearchViewWidget->pSearchBarlayout);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "activated", __mp_search_view_activated_cb, g_pSearchViewWidget->pSearchBarlayout);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "clicked", __mp_search_view_clicked_cb, g_pSearchViewWidget->pSearchBarlayout);
+
+ g_pSearchViewWidget->pClearButton = elm_button_add(g_pSearchViewWidget->pSearchBarlayout);
+ elm_object_style_set(g_pSearchViewWidget->pClearButton, "clear_dim");
+ elm_object_disabled_set(g_pSearchViewWidget->pClearButton, EINA_TRUE);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pClearButton, "clicked", __mp_search_view_eraser_clicked_cb, g_pSearchViewWidget->pSearchBarEntry);
+
+ static Elm_Entry_Filter_Limit_Size limit_filter_data;
+ limit_filter_data.max_char_count = VIDEO_FILE_SEARCH_CHAR_LEN_MAX;
+ limit_filter_data.max_byte_count = 0;
+ elm_entry_markup_filter_append(g_pSearchViewWidget->pSearchBarEntry, elm_entry_filter_limit_size, &limit_filter_data);
+ evas_object_smart_callback_add(g_pSearchViewWidget->pSearchBarEntry, "maxlength,reached", __mp_search_view_entry_max_len_cb,NULL);
+
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchBarlayout, "searchbar", g_pSearchViewWidget->pSearchBarEntry);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "search_bar", g_pSearchViewWidget->pSearchBarlayout);
+ //elm_object_signal_callback_add(g_pSearchViewWidget->pSearchViewBaselayout, "elm,eraser,clicked", "elm", __mp_search_view_eraser_clicked_cb, g_pSearchViewWidget->pSearchBarEntry);
+ elm_object_signal_callback_add(g_pSearchViewWidget->pSearchViewBaselayout, "elm,bg,clicked", "elm", __mp_search_view_bg_clicked_cb, g_pSearchViewWidget->pSearchBarEntry);
+ elm_entry_input_panel_layout_set(g_pSearchViewWidget->pSearchBarEntry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ elm_entry_input_panel_return_key_type_set(g_pSearchViewWidget->pSearchBarEntry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH);
+ evas_object_size_hint_weight_set(g_pSearchViewWidget->pSearchViewBaselayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pSearchViewWidget->pSearchViewBaselayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_signal_callback_add(g_pSearchViewWidget->pSearchViewBaselayout, "elm,action,click", "", __mp_search_view_search_symbol_clicked_cb, g_pSearchViewWidget->pSearchBarEntry);
+
+ return g_pSearchViewWidget->pSearchViewBaselayout;
+}
+
+static void __mp_search_view_update_genlist_item(const char *szSearchWord)
+{
+ if (!g_pSearchViewHandle)
+ {
+ VideoLogError("g_pSearchViewHandle == NULL");
+ return;
+ }
+
+ if (!szSearchWord)
+ {
+ VideoLogError("szSearchWord == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ //int nVideoListSize = 0;
+
+ //mp_util_svc_destory_video_list();
+ //mp_util_svc_extract_video_list_for_search_view(szSearchWord, g_pSearchViewHandle->nViewType);
+ //nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ //VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+
+ if (g_pSearchViewHandle->SearchedIndexList) {
+ eina_list_free(g_pSearchViewHandle->SearchedIndexList);
+ g_pSearchViewHandle->SearchedIndexList = NULL;
+ }
+ mp_util_svc_index_list_for_search_view(szSearchWord, (void **)&g_pSearchViewHandle->SearchedIndexList);
+
+ if (g_pSearchViewHandle->pVideosGenlist)
+ elm_genlist_clear(g_pSearchViewHandle->pVideosGenlist);
+
+ if (g_pSearchViewHandle->SearchedIndexList)
+ {
+ memset(g_pSearchViewHandle->szSearchWord, 0, sizeof(char) * SEARCH_CHAR_LEN);
+ strncpy(g_pSearchViewHandle->szSearchWord, szSearchWord, SEARCH_CHAR_LEN - 1);
+ __mp_search_view_is_existed_no_content_layout();
+ __mp_search_view_append_video_items(g_pSearchViewHandle->pVideosGenlist, true);
+ //elm_object_signal_emit(g_pSearchViewWidget->pDimminglayout, SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_HIDE, "");
+ }
+ else
+ {
+ __mp_search_view_is_existed_genlist();
+ void *pNoContentLayout = __mp_search_view_add_no_contents_layout(g_pSearchViewWidget->pSearchViewBaselayout);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", pNoContentLayout);
+ }
+}
+
+void mp_search_view_update_genlist()
+{
+ if (g_pSearchViewHandle && g_pSearchViewHandle->pVideosGenlist) {
+ if (g_pSearchViewHandle->nViewType == MP_LIST_VIEW_AS_FOLDER_LIST && mp_folder_view_is_item_view()) {
+ Elm_Object_Item *currItem = NULL;
+ Elm_Object_Item *nextItem = NULL;
+ currItem = elm_genlist_first_item_get(g_pSearchViewHandle->pVideosGenlist);
+ int index = 0;
+ while (currItem) {
+ nextItem = elm_genlist_item_next_get(currItem);
+ elm_genlist_item_update(currItem);
+ mp_util_svc_update_thumbnail_info(g_pSearchViewHandle->nPlayVideoIndex);
+ __mp_search_view_update_video_items((Evas_Object *)g_pSearchViewHandle->pVideosGenlist, index, g_pSearchViewHandle->nPlayVideoIndex);
+ currItem = nextItem;
+ index++;
+ }
+ }
+ }
+}
+
+static void __mp_search_view_db_data_changed(void *pUserData, Evas_Object *pObject)
+{
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle || !pUserData || !pObject)
+ {
+ VideoLogError("g_pSearchViewHandle == NULL");
+ return;
+ }
+
+ char *szChangedStr = NULL;
+
+ const char *temp = elm_object_text_get(pObject);
+ char *TempUtf8 = elm_entry_markup_to_utf8(temp);
+ szChangedStr = mp_search_view_get_fact_str(TempUtf8);
+ MP_FREE_STRING(TempUtf8);
+
+ VideoLogInfo("Changed word in entry widget : %s", szChangedStr);
+
+ if (szChangedStr != NULL && strlen(szChangedStr) > 0)
+ {
+ __mp_search_view_update_genlist_item(szChangedStr);
+ }
+ else
+ {
+ memset(g_pSearchViewHandle->szSearchWord, 0, sizeof(char) * SEARCH_CHAR_LEN);
+ //strncpy(g_pSearchViewHandle->szSearchWord, szChangedStr, SEARCH_CHAR_LEN - 1);
+ __mp_search_view_is_existed_no_content_layout();
+ __mp_search_view_arrange_video_list(__mp_search_view_get_sort_type(), g_pSearchViewHandle->pVideosGenlist);
+ //elm_object_signal_emit(g_pSearchViewWidget->pDimminglayout, SIGNAL_SEARCH_VIEW_INTERNAL_DIMMING_SHOW, "");
+ elm_object_focus_set(g_pSearchViewWidget->pSearchBarEntry, EINA_TRUE);
+ }
+ MP_FREE_STRING(szChangedStr);
+
+}
+
+static void __mp_search_view_db_changed_cb(void *pUserData)
+{
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget)
+ {
+ VideoLogError("Main handles of list view are not existed.");
+ return;
+ }
+
+
+ int nSortType = __mp_search_view_get_sort_type();
+ if (g_pSearchViewHandle->pFolderPath)
+ {
+ if (g_pSearchViewHandle->pFolderPath)
+ {
+ VideoSecureLogDebug("szFolderPath : %s", g_pSearchViewHandle->pFolderPath);
+ if (vp_file_exists(g_pSearchViewHandle->pFolderPath))
+ {
+ //update video-list
+ mp_util_svc_destory_video_item_list();
+ mp_util_svc_extract_video_list_from_folder(g_pSearchViewHandle->pFolderPath, nSortType, MP_LIST_VIEW_ALL);
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+ if (nVideoListSize > 0)
+ {
+ __mp_search_view_db_data_changed(g_pSearchViewWidget->pSearchBarlayout, g_pSearchViewWidget->pSearchBarEntry);
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pSearchViewHandle->pNaviFrameHandle);
+ }
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pSearchViewHandle->pNaviFrameHandle);
+ }
+ }
+ }
+ else
+ {
+ mp_util_svc_destory_video_list();
+ mp_util_svc_extract_video_list_by_item_type(nSortType, mp_view_ctrl_get_list_type());
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("nVideoListSize : %d", nVideoListSize);
+ if (nVideoListSize > 0)
+ {
+ __mp_search_view_db_data_changed(g_pSearchViewWidget->pSearchBarlayout, g_pSearchViewWidget->pSearchBarEntry);
+ }
+ else
+ {
+ elm_naviframe_item_pop(g_pSearchViewHandle->pNaviFrameHandle);
+ }
+ }
+ Elm_Object_Item *pItem = elm_genlist_first_item_get(g_pSearchViewHandle->pVideosGenlist);
+ if (pItem)
+ {
+ elm_genlist_item_bring_in(pItem, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+
+}
+
+bool mp_search_view_get_active_view()
+{
+ if (!g_pSearchViewHandle)
+ return false;
+ return g_pSearchViewHandle->isViewActive;
+}
+
+void mp_search_view_init(void *pParent)
+{
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget)
+ {
+ VideoLogInfo("Handles are not existed about search view.");
+ return;
+ }
+ g_pSearchViewHandle->bShowNormalLayout = TRUE;
+ g_pSearchViewWidget->pSearchViewBaselayout = __mp_search_view_init_internal_layout(pParent);
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_search_view_rotate_cb, NULL);
+ mp_search_view_check_landscape();
+ g_pSearchViewHandle->pVideosGenlist = elm_genlist_add(g_pSearchViewWidget->pSearchViewBaselayout);
+ evas_object_size_hint_weight_set(g_pSearchViewHandle->pVideosGenlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pSearchViewHandle->pVideosGenlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_block_count_set(g_pSearchViewHandle->pVideosGenlist, VIDEO_GENLIST_BLOCK_COUNT);
+ elm_genlist_mode_set(g_pSearchViewHandle->pVideosGenlist, ELM_LIST_COMPRESS);
+ elm_genlist_homogeneous_set(g_pSearchViewHandle->pVideosGenlist, EINA_TRUE);
+
+ //g_pSearchViewWidget->pDimminglayout = elm_layout_add(pParent);
+ //elm_layout_file_set(g_pSearchViewWidget->pDimminglayout, VIDEO_PLAYER_SEARCH_VIEW_DIM_EDJ, SEARCH_VIEW_DIM_EDJ_GROUP);
+ //evas_object_size_hint_weight_set(g_pSearchViewWidget->pDimminglayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ //evas_object_size_hint_align_set(g_pSearchViewWidget->pDimminglayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ //elm_object_part_content_set(g_pSearchViewWidget->pDimminglayout, "search.view.content", g_pSearchViewHandle->pVideosGenlist);
+ //evas_object_show(g_pSearchViewWidget->pDimminglayout);
+ //register db callback
+ //mp_util_svc_set_update_db_cb_func(__mp_search_view_db_changed_cb);
+
+ g_pSearchViewHandle->isViewActive = true;
+ __mp_search_view_arrange_video_list(__mp_search_view_get_sort_type(), g_pSearchViewHandle->pVideosGenlist);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", g_pSearchViewHandle->pVideosGenlist);
+ evas_object_event_callback_add(g_pSearchViewWidget->pSearchViewBaselayout, EVAS_CALLBACK_DEL, __mp_search_view_base_layout_del_cb, NULL);
+
+ g_pSearchViewHandle->pNaviFrameItem = elm_naviframe_item_push(g_pSearchViewHandle->pNaviFrameHandle, NULL, NULL, NULL, g_pSearchViewWidget->pSearchViewBaselayout, NULL);
+ elm_naviframe_item_pop_cb_set(g_pSearchViewHandle->pNaviFrameItem, mp_search_view_back_btn_cb, g_pSearchViewHandle);
+ evas_object_smart_callback_add(g_pSearchViewHandle->pNaviFrameHandle, "transition,finished", __mp_search_view_naviframe_transition_effect_cb, NULL);
+ elm_naviframe_item_title_enabled_set(g_pSearchViewHandle->pNaviFrameItem, EINA_FALSE, EINA_FALSE);
+
+ if (mp_util_svc_get_number_of_video_item_by_type() < 1)
+ {
+ __mp_search_view_is_existed_genlist();
+ void *pNoContentLayout = __mp_search_view_add_no_contents_layout(g_pSearchViewWidget->pSearchViewBaselayout);
+ elm_object_part_content_set(g_pSearchViewWidget->pSearchViewBaselayout, "elm.swallow.content", pNoContentLayout);
+ }
+
+ //mp_util_virtual_keypad_disabled_set(EINA_TRUE);
+ mp_util_db_set_update_fun(g_pSearchViewHandle->euLev, __mp_search_view_db_changed_cb);
+
+ mp_util_hide_indicator();
+
+ elm_object_signal_emit(g_pSearchViewWidget->pSearchBarlayout, "elm,state,eraser,hide", "elm");
+}
+
+void mp_search_view_push(void *pNaviFrame, char *pFolderPath)
+{
+ if (!pNaviFrame)
+ {
+ VideoLogError("[ERR] No existed pNaviFrame.");
+ return;
+ }
+
+ VideoLogInfo("");
+ mp_search_view_destroy();
+
+ g_pSearchViewHandle = (st_VideoSearchViewHandle*)calloc(1, sizeof(st_VideoSearchViewHandle));
+ g_pSearchViewWidget = (st_VideoSearchViewWidget*)calloc(1, sizeof(st_VideoSearchViewWidget));
+
+ memset(g_pSearchViewHandle, 0, sizeof(st_VideoSearchViewHandle));
+ memset(g_pSearchViewWidget, 0, sizeof(st_VideoSearchViewWidget));
+ g_pSearchViewHandle->pNaviFrameHandle = pNaviFrame;
+ if (pFolderPath)
+ {
+ g_pSearchViewHandle->pFolderPath = strdup(pFolderPath);
+ }
+
+ g_pSearchViewHandle->nPlayVideoIndex = -1;
+
+ int nViewType = mp_view_as_ctrl_get_type();
+ g_pSearchViewHandle->nViewType = nViewType;
+ g_pSearchViewHandle->euLev = MP_DB_UPDATE_LEV_1;
+ if (nViewType == MP_LIST_VIEW_AS_FOLDER_LIST && g_pSearchViewHandle->pFolderPath)
+ {
+ g_pSearchViewHandle->euLev = MP_DB_UPDATE_LEV_2;
+ }
+
+ mp_search_view_init(g_pSearchViewHandle->pNaviFrameHandle);
+}
+
+static void __mp_search_view_pop(void *pNaviFrame)
+{
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget)
+ {
+ VideoLogError("Handles are not existed about search view.");
+ return;
+ }
+
+ bool bUpdateList = FALSE;
+ g_pSearchViewHandle->isViewActive = false;
+ if (g_pSearchViewHandle->bUpdateList) {
+ if (g_pSearchViewHandle->pChangeViewUpdateFunc) {
+ bUpdateList = TRUE;
+ g_pSearchViewHandle->pChangeViewUpdateFunc(LIST_UPDATE_TYPE_ALL);
+ }
+ }
+
+ if (!bUpdateList) {
+ if (g_pSearchViewHandle->pChangeViewUserCbFunc) {
+ g_pSearchViewHandle->pChangeViewUserCbFunc();
+ }
+ }
+}
+
+void mp_search_view_register_update_list_func(ViewUpdateListItemCbFunc pUpdateViewCb, ListViewUpdateListItemCbFunc pChangeViewCb)
+{
+ if (!pUpdateViewCb || !pChangeViewCb) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget) {
+ VideoLogError("Handles are not existed about search view.");
+ return;
+ }
+
+ g_pSearchViewHandle->pChangeViewUserCbFunc = pChangeViewCb;
+ g_pSearchViewHandle->pChangeViewUpdateFunc = pUpdateViewCb;
+}
+
+static void __mp_search_view_update_video_items(Evas_Object *pGenlist, int nGenItemIndex, int nPlayVideoIndex)
+{
+ if (!pGenlist)
+ {
+ VideoLogWarning("[WARNING] pNormalVideoItemList is not existed.");
+ return;
+ }
+
+ VideoLogInfo("%d", nGenItemIndex);
+
+ Elm_Object_Item *pTmpVideoGenlistItem = elm_genlist_nth_item_get((const Evas_Object *)pGenlist, nGenItemIndex);
+ if (pTmpVideoGenlistItem)
+ {
+ //elm_genlist_item_update(pTmpVideoGenlistItem);
+ //elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ elm_genlist_item_selected_set(pTmpVideoGenlistItem, EINA_FALSE);
+ int nLastPlayedTime = mp_util_svc_get_video_last_played_pos(nPlayVideoIndex);
+ int nDurationTime = mp_util_svc_get_video_duration_time(nPlayVideoIndex);
+ Evas_Object *pIconContent = elm_object_item_part_content_get(pTmpVideoGenlistItem, "elm.icon.1");
+ if (!pIconContent)
+ {
+ VideoLogError("");
+ return;
+ }
+ Evas_Object *pProgressbar = elm_layout_content_get(pIconContent, "elm.progressbar.icon");
+
+ if (nLastPlayedTime > 0)
+ {
+ double nRatio = 0.0;
+
+ if (nDurationTime > 0) {
+ nRatio = ((double)nLastPlayedTime) /
+ ((double)nDurationTime);
+ }
+ if (nRatio < 0.05) {
+ nRatio = 0.05;
+ }
+ if (!pProgressbar)
+ {
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ }
+ else
+ {
+ elm_progressbar_value_set(pProgressbar, nRatio);
+ }
+ }
+ else
+ {
+ if (pProgressbar)
+ {
+ elm_layout_content_unset(pIconContent, "elm.progressbar.icon");
+ MP_DEL_OBJ(pProgressbar);
+ }
+ }
+
+ elm_genlist_item_fields_update(pTmpVideoGenlistItem, "elm.text.sub.left.bottom", ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+
+}
+
+void mp_search_view_update_played_item(int nIndex)
+{
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget || (g_pSearchViewHandle->nPlayVideoIndex < 0))
+ {
+ VideoLogInfo("SearchView of list view are not existed.");
+ return;
+ }
+ if (nIndex >= 0)
+ {
+ g_pSearchViewHandle->nPlayVideoIndex = nIndex;
+ }
+ VideoLogInfo("");
+
+ if (g_pSearchViewHandle->pVideosGenlist)
+ {
+ int nGenItemIndex = g_pSearchViewHandle->nPlayVideoIndex;
+ if (g_pSearchViewHandle->SearchedIndexList)
+ {
+ Eina_List *pIterateList = NULL;
+ void *nTempIndex = (void *)0;
+ int nIndex = 0;
+ EINA_LIST_FOREACH(g_pSearchViewHandle->SearchedIndexList, pIterateList, nTempIndex)
+ {
+ VideoLogInfo("nTempIndex:index==%d:%d:%d", (int)nTempIndex, nIndex, nGenItemIndex);
+ if (g_pSearchViewHandle->nPlayVideoIndex == (int)nTempIndex)
+ {
+ nGenItemIndex = nIndex;
+ break;
+ }
+ nIndex++;
+ }
+ }
+ mp_util_svc_update_thumbnail_info(g_pSearchViewHandle->nPlayVideoIndex);
+ __mp_search_view_update_video_items((Evas_Object *)g_pSearchViewHandle->pVideosGenlist, nGenItemIndex, g_pSearchViewHandle->nPlayVideoIndex);
+ }
+}
+
+void mp_search_view_change_language(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pSearchViewHandle || !g_pSearchViewWidget)
+ {
+ VideoLogError("Handles are not existed about search view.");
+ return;
+ }
+
+ //elm_object_item_domain_translatable_part_text_set(g_pSearchViewHandle->pNaviFrameItem, "elm.text.title", MP_SYS_STRING, VIDEOS_CTXPOP_MENU_SEARCH);
+ //elm_object_domain_translatable_text_set(g_pSearchViewWidget->pCancelButton, VIDEOS_STRING, MP_SK_CANCEL);
+ elm_object_domain_translatable_part_text_set(g_pSearchViewWidget->pSearchBarlayout, "elm.guidetext", VIDEOS_STRING, VIDEOS_CTXPOP_MENU_SEARCH);
+}
+
+
+static void
+__mp_search_view_base_layout_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ //evas_object_event_callback_del(g_pSearchViewWidget->pSearchViewBaselayout, EVAS_CALLBACK_DEL, __mp_search_view_base_layout_del_cb);
+
+ __mp_search_view_reset();
+}
+
diff --git a/src/viewMgr/videos-view-mgr.c b/src/viewMgr/videos-view-mgr.c
new file mode 100644
index 0000000..fa3ae58
--- /dev/null
+++ b/src/viewMgr/videos-view-mgr.c
@@ -0,0 +1,380 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <stdbool.h>
+
+#include "videos-view-mgr.h"
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-library-view-mgr.h"
+#include "mp-rotate-ctrl.h"
+
+#include "vp-util.h"
+
+
+enum DeviceOrientationType {
+ DEVICE_ORIENTATION_PORTRAIT = 0,
+ DEVICE_ORIENTATION_LANDSCAPE,
+ DEVICE_ORIENTATION_MAX
+};
+
+
+typedef struct _vp_WindowData {
+ Evas_Object *pMainWindow;
+ Evas_Object *pConformant;
+ Evas_Object *pMainLayout;
+
+ Evas_Object *pLibraryInnerNaviframe;
+ Ecore_Idler *pInitValueIdler;
+
+ /*landcape */
+ app_device_orientation_e mOrientation;
+} VpWindowData;
+
+
+static VpWindowData *g_WindowData = NULL;
+
+
+static int __mp_mgr_get_device_orientation_type()
+{
+ if (g_WindowData
+ && (g_WindowData->mOrientation == APP_DEVICE_ORIENTATION_270
+ || g_WindowData->mOrientation == APP_DEVICE_ORIENTATION_90)) {
+ return DEVICE_ORIENTATION_LANDSCAPE;
+ } else {
+ return DEVICE_ORIENTATION_PORTRAIT;
+ }
+}
+
+
+#ifdef ENABLE_LANDSCAPE
+static void
+__mp_mgr_main_window_rotation_change_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ int changed_angle = elm_win_rotation_get(obj);
+
+ VideoLogWarning("window rotated [%d] => [%d]",
+ g_WindowData->mOrientation, changed_angle);
+ if (g_WindowData->mOrientation != changed_angle) {
+ g_WindowData->mOrientation = changed_angle;
+
+ VideoLogWarning("Rotate phone");
+ mp_rotate_ctrl_set_state(changed_angle);
+ mp_library_mgr_update_library_view(LIST_UPDATE_TYPE_VIEW);
+ }
+}
+#endif
+
+
+static void __mp_mgr_window_destroy()
+{
+ VideoLogInfo("");
+
+ if (g_WindowData != NULL) {
+ MP_DEL_IDLER(g_WindowData->pInitValueIdler);
+ free(g_WindowData);
+ g_WindowData = NULL;
+ }
+}
+
+static void
+__mp_mgr_main_win_del_cb(void *data, Evas_Object *obj,
+ void *mouse_event_rect)
+{
+ VideoLogInfo("");
+
+ if (NULL == data || data != g_WindowData) {
+ VideoLogError(" data[%p] == NULL || data != g_WindowData[%p]!!!",
+ data, g_WindowData);
+ return;
+ }
+
+ __mp_mgr_window_destroy();
+
+ elm_exit();
+}
+
+static Evas_Object *__mp_mgr_create_bg(Evas_Object *pWin)
+{
+ VideoLogInfo("");
+
+ if (NULL == pWin) {
+ VideoLogError("pWin == NULL!!!");
+ return NULL;
+ }
+
+ /* default BG */
+ Evas_Object *bg = NULL;
+
+ bg = elm_bg_add(pWin);
+ Eina_Bool ret = elm_bg_file_set(bg,
+ "/usr/apps/org.tizen.videos/res/images/core_theme_bg_01.png",
+ NULL);
+ if (ret != true) {
+ VideoLogInfo("failed to set layout bg");
+ }
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bg, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_win_resize_object_add(pWin, bg);
+ evas_object_show(bg);
+
+ return bg;
+}
+
+static Evas_Object *__mp_mgr_create_win(const char *name)
+{
+ VideoLogInfo("");
+
+ Evas_Object *eo;
+ int w;
+ int h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+
+ if (eo) {
+ elm_win_title_set(eo, name);
+ evas_object_smart_callback_add(eo, "delete,request",
+ __mp_mgr_main_win_del_cb,
+ g_WindowData);
+
+ elm_win_screen_size_get(eo, NULL, NULL, &w, &h);
+ VideoLogInfo("window size:%d,%d", w, h);
+
+ evas_object_resize(eo, w, h);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+ elm_win_indicator_opacity_set(eo, ELM_WIN_INDICATOR_TRANSPARENT);
+ }
+
+ return eo;
+}
+
+
+const Evas_Object *mp_mgr_create_main_window(const char *pStrName)
+{
+ if (g_WindowData != NULL) {
+ VideoLogWarning("g_WindowData != NULL. destory g_WindowData");
+ __mp_mgr_window_destroy();
+ }
+
+ g_WindowData = calloc(1, sizeof(VpWindowData));
+ if (NULL == g_WindowData) {
+ VideoLogError("g_WindowData calloc failed!!!");
+ return NULL;
+ }
+
+ g_WindowData->pMainWindow = __mp_mgr_create_win(pStrName);
+
+
+#ifdef ENABLE_LANDSCAPE
+ VideoLogWarning("support rotate",
+ elm_win_wm_rotation_supported_get(g_WindowData->
+ pMainWindow));
+ if (elm_win_wm_rotation_supported_get(g_WindowData->pMainWindow)) {
+ const int rots[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(g_WindowData->
+ pMainWindow, rots, 4);
+ evas_object_smart_callback_add(g_WindowData->pMainWindow,
+ "wm,rotation,changed",
+ __mp_mgr_main_window_rotation_change_cb,
+ g_WindowData);
+ g_WindowData->mOrientation =
+ elm_win_rotation_get(g_WindowData->pMainWindow);
+ VideoLogWarning("mOrientation=%d", g_WindowData->mOrientation);
+ }
+#endif
+
+ /* evas_object_show(g_WindowData->pMainWindow);*/
+ elm_win_conformant_set(g_WindowData->pMainWindow, EINA_TRUE);
+
+
+ /* create bg */
+ __mp_mgr_create_bg(g_WindowData->pMainWindow);
+
+
+ /* create conformant */
+ g_WindowData->pConformant =
+ elm_conformant_add(g_WindowData->pMainWindow);
+
+
+ evas_object_size_hint_weight_set(g_WindowData->pConformant,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(g_WindowData->pMainWindow,
+ g_WindowData->pConformant);
+ evas_object_show(g_WindowData->pConformant);
+ elm_object_signal_emit(g_WindowData->pConformant,
+ "elm,state,indicator,overlap", "");
+ evas_object_data_set(g_WindowData->pConformant, "overlap",
+ (void *) EINA_TRUE);
+
+ mp_util_set_main_conformat((void *) g_WindowData->pConformant);
+ mp_util_set_main_window_handle((void *) g_WindowData->pMainWindow);
+
+ return (const Evas_Object *) g_WindowData->pMainWindow;
+}
+
+static Eina_Bool __mp_mgr_init_data_idler_cb(void *pUserData)
+{
+ if (!g_WindowData) {
+ VideoLogError("");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ g_WindowData->pInitValueIdler = NULL;
+
+ mp_library_mgr_init_value();
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+
+void mp_mgr_restart_main_window()
+{
+ if (NULL == g_WindowData) {
+ VideoLogError("g_WindowData == NULL!!!");
+ elm_exit();
+ return;
+ }
+
+ if (g_WindowData->pLibraryInnerNaviframe != NULL) {
+ VideoLogInfo("g_WindowData->pLibraryInnerNaviframe != NULL");
+ mp_library_mgr_destroy(g_WindowData->pLibraryInnerNaviframe);
+ /*pLibraryInnerNaviframe has been detroyed in mp_library_mgr_destroy */
+ g_WindowData->pLibraryInnerNaviframe = NULL;
+ }
+
+ if (g_WindowData->pMainLayout != NULL) {
+ evas_object_del(g_WindowData->pMainLayout);
+ g_WindowData->pMainLayout = NULL;
+ }
+
+ g_WindowData->pMainLayout = elm_layout_add(g_WindowData->pConformant);
+ if (g_WindowData->pMainLayout == NULL) {
+ VideoLogError("elm_layout_add fail!!!");
+ elm_exit();
+ return;
+ }
+
+ elm_layout_file_set(g_WindowData->pMainLayout, VIDEO_BASIC_LAYOUT_EDJ,
+ "elm/layout/application/video/default");
+ evas_object_size_hint_weight_set(g_WindowData->pMainLayout,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_WindowData->pMainLayout,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(g_WindowData->pMainLayout);
+ elm_object_content_set(g_WindowData->pConformant,
+ g_WindowData->pMainLayout);
+
+ if (g_WindowData->pLibraryInnerNaviframe != NULL) {
+ evas_object_del(g_WindowData->pLibraryInnerNaviframe);
+ }
+ g_WindowData->pLibraryInnerNaviframe = mp_library_mgr_init();
+ MP_DEL_IDLER(g_WindowData->pInitValueIdler);
+ g_WindowData->pInitValueIdler =
+ ecore_idler_add(__mp_mgr_init_data_idler_cb,
+ (void *) g_WindowData);
+
+ elm_object_part_content_set(g_WindowData->pMainLayout,
+ "elm.swallow.content",
+ g_WindowData->pLibraryInnerNaviframe);
+
+ eext_object_event_callback_add(g_WindowData->pLibraryInnerNaviframe,
+ EEXT_CALLBACK_BACK,
+ eext_naviframe_back_cb, NULL);
+ eext_object_event_callback_add(g_WindowData->pLibraryInnerNaviframe,
+ EEXT_CALLBACK_MORE,
+ eext_naviframe_more_cb, NULL);
+
+ mp_util_hide_indicator();
+}
+
+
+const Evas_Object *mp_mgr_get_main_window()
+{
+ if (NULL == g_WindowData) {
+ VideoLogWarning("g_WindowData == NULL!!!");
+ return NULL;
+ }
+
+ return (const Evas_Object *) g_WindowData->pMainWindow;
+}
+
+
+const Evas_Object *mp_mgr_get_conformant()
+{
+ if (NULL == g_WindowData) {
+ VideoLogError("g_WindowData == NULL!!!");
+ return NULL;
+ }
+
+ return (const Evas_Object *) g_WindowData->pConformant;
+}
+
+
+const Evas_Object *mp_mgr_get_library_naviframe()
+{
+
+ if (NULL == g_WindowData) {
+ VideoLogError("g_WindowData == NULL!!!");
+ return NULL;
+ }
+
+ return (const Evas_Object *) g_WindowData->pLibraryInnerNaviframe;
+}
+
+
+const Evas_Object *mp_mgr_get_current_inner_naviframe()
+{
+ return (const Evas_Object *) g_WindowData->pLibraryInnerNaviframe;
+}
+
+
+const Evas_Object *mp_mgr_get_main_layout()
+{
+ VideoLogInfo("");
+
+ if (NULL == g_WindowData) {
+ VideoLogError("g_WindowData == NULL!!!");
+ return NULL;
+ }
+
+ return (const Evas_Object *) g_WindowData->pMainLayout;
+}
+
+
+Eina_Bool mp_mgr_is_landscape()
+{
+ return (__mp_mgr_get_device_orientation_type() ==
+ DEVICE_ORIENTATION_LANDSCAPE);
+}
+
+
+const Evas_Object *mp_mgr_get_library_parent()
+{
+ if (g_WindowData == NULL) {
+ VideoLogError("g_WindowData == NULL!!!");
+ return NULL;
+ }
+
+ return mp_mgr_get_main_layout();
+}
diff --git a/src/widget/mp-external-ug.c b/src/widget/mp-external-ug.c
new file mode 100644
index 0000000..4298a02
--- /dev/null
+++ b/src/widget/mp-external-ug.c
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-external-ug.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+
+void mp_external_service_share_panel(const char *pUrl)
+{
+ if (!pUrl) {
+ VideoLogInfo("pUrl is null.");
+ return;
+ }
+
+ int nErr = 0;
+ app_control_h pService = NULL;
+ char *pOperation = VIDEO_SHARE_OPERATION_SINGLE;
+
+ VideoSecureLogInfo("share pUrl = %s", pUrl);
+
+ nErr = app_control_create(&pService);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("Fail to create ug service handle - [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+
+ nErr = app_control_set_uri(pService, pUrl);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("Fail to set uri into ug service handle - [0x%x]",
+ nErr);
+ goto ERROR_EXCEPTION;
+ }
+
+ nErr = app_control_set_operation(pService, pOperation);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_set_operation.. [0x%x]", nErr);
+ goto ERROR_EXCEPTION;
+ }
+
+ nErr = app_control_send_launch_request(pService, NULL, NULL);
+ if (nErr != APP_CONTROL_ERROR_NONE) {
+ VideoLogWarning("[WARNING] rvice_send_launch_request().. [0x%x]",
+ nErr);
+ goto ERROR_EXCEPTION;
+ }
+
+ app_control_destroy(pService);
+ pService = NULL;
+
+
+ERROR_EXCEPTION:
+ if (pService) {
+ app_control_destroy(pService);
+ pService = NULL;
+ }
+ return;
+}
+
diff --git a/src/widget/mp-footer-toolbar.c b/src/widget/mp-footer-toolbar.c
new file mode 100644
index 0000000..b4340c0
--- /dev/null
+++ b/src/widget/mp-footer-toolbar.c
@@ -0,0 +1,654 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-footer-toolbar.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+#include "mp-video-value-define.h"
+#include "mp-external-ug.h"
+
+#include "mp-rotate-ctrl.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "vp-util.h"
+
+typedef struct {
+ void *pNaviFrameHandle;
+ void *pNaviFrameItem;
+
+ MpFooterLibraryMainListTabType nFooterListTabType;
+
+ Evas_Object *pSortToolbarButton;
+ Evas_Object *pSearchToolbarButton;
+ Evas_Object *pSettingToolbarButton;
+ Evas_Object *pMoreToolbarButton;
+ Evas_Object *pMoreCtxPopup;
+ Evas_Object *pDeleteButton;
+ Evas_Object *pDeleteCancelButton;
+ Evas_Object *pViewButton;
+
+ st_RegisteCbFunc ToolbarCbFunc;
+} st_ToolbarWidget;
+
+
+st_ToolbarWidget *g_pToolbarWidget = NULL;
+
+
+void mp_ft_ctrl_free_toolbar_btn(void)
+{
+ VideoLogInfo("");
+
+ if (g_pToolbarWidget) {
+ if (g_pToolbarWidget->pNaviFrameItem) {
+ /*elm_object_item_part_content_unset(g_pToolbarWidget->pNaviFrameItem, "toolbar_more_btn");*/
+ /*elm_object_item_part_content_unset(g_pToolbarWidget->pNaviFrameItem, "toolbar_button1");*/
+ elm_object_item_part_content_unset(g_pToolbarWidget->
+ pNaviFrameItem,
+ "toolbar_button2");
+
+ g_pToolbarWidget->pNaviFrameItem = NULL;
+ }
+ g_pToolbarWidget->pNaviFrameHandle = NULL;
+
+ if (g_pToolbarWidget->pViewButton) {
+ evas_object_del(g_pToolbarWidget->pViewButton);
+ g_pToolbarWidget->pViewButton = NULL;
+ }
+
+ if (g_pToolbarWidget->pMoreToolbarButton) {
+ evas_object_del(g_pToolbarWidget->pMoreToolbarButton);
+ g_pToolbarWidget->pMoreToolbarButton = NULL;
+ }
+
+ if (g_pToolbarWidget->pSortToolbarButton) {
+ evas_object_del(g_pToolbarWidget->pSortToolbarButton);
+ g_pToolbarWidget->pSortToolbarButton = NULL;
+ }
+
+ if (g_pToolbarWidget->pSearchToolbarButton) {
+ evas_object_del(g_pToolbarWidget->pSearchToolbarButton);
+ g_pToolbarWidget->pSearchToolbarButton = NULL;
+ }
+
+ if (g_pToolbarWidget->pSettingToolbarButton) {
+ evas_object_del(g_pToolbarWidget->pSettingToolbarButton);
+ g_pToolbarWidget->pSettingToolbarButton = NULL;
+ }
+
+ if (g_pToolbarWidget->pMoreCtxPopup) {
+ evas_object_del(g_pToolbarWidget->pMoreCtxPopup);
+ g_pToolbarWidget->pMoreCtxPopup = NULL;
+ }
+
+ if (g_pToolbarWidget->pDeleteButton) {
+ evas_object_del(g_pToolbarWidget->pDeleteButton);
+ g_pToolbarWidget->pDeleteButton = NULL;
+ }
+
+ if (g_pToolbarWidget->pDeleteCancelButton) {
+ evas_object_del(g_pToolbarWidget->pDeleteCancelButton);
+ g_pToolbarWidget->pDeleteCancelButton = NULL;
+ }
+
+ g_pToolbarWidget->nFooterListTabType = FOOTER_TAB_TYPE_PERSONAL;
+ g_pToolbarWidget->pNaviFrameItem = NULL;
+
+ memset((void *) &g_pToolbarWidget->ToolbarCbFunc, 0,
+ sizeof(st_RegisteCbFunc));
+
+ free(g_pToolbarWidget);
+ g_pToolbarWidget = NULL;
+ }
+}
+
+void *mp_ft_ctrl_create_more_style_btn(void *pParent, Evas_Smart_Cb pFunc,
+ void *pUserData)
+{
+ if (!pParent) {
+ VideoLogError("No exist parent.");
+ return NULL;
+ }
+
+ Evas_Object *pTmpBtn = elm_button_add(pParent);
+ elm_access_info_set(pTmpBtn, ELM_ACCESS_INFO, "more");
+ elm_object_style_set(pTmpBtn, "naviframe/more/default");
+ evas_object_smart_callback_add(pTmpBtn, "clicked", pFunc, pUserData);
+
+ return pTmpBtn;
+}
+
+void *mp_ft_ctrl_create_toolbar_btn(void *pParent, const char *pText,
+ Evas_Smart_Cb pFunc, void *pUserData)
+{
+ if (!pParent) {
+ VideoLogError("No exist parent.");
+ return NULL;
+ }
+
+ Evas_Object *pTmpBtn = elm_button_add(pParent);
+ elm_object_style_set(pTmpBtn, "naviframe/toolbar/default");
+ elm_object_text_set(pTmpBtn, pText);
+ evas_object_smart_callback_add(pTmpBtn, "clicked", pFunc, pUserData);
+
+ return pTmpBtn;
+}
+
+void mp_ft_ctrl_more_popup_dismissed_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_ft_ctrl_hide_more_popup();
+}
+
+void mp_ft_ctrl_move_more_popup(Evas_Object *pCtxPopup,
+ Evas_Object *pTargetObject)
+{
+ Evas_Coord_Rectangle rect = { 0, };
+ int nRotate = elm_win_rotation_get(mp_util_get_main_window_handle());
+
+ elm_win_screen_size_get(mp_util_get_main_window_handle(), &rect.x,
+ &rect.y, &rect.w, &rect.h);
+
+ VideoLogInfo("nRotate : [%d], rect.w : [%d], rect.h : [%d]", nRotate,
+ rect.w, rect.h);
+
+ int nW = 0;
+ int nH = 0;
+
+ switch (nRotate) {
+ case 0:
+ case 180:
+ {
+ nW = rect.w / 2;
+ nH = rect.h;
+ }
+ break;
+
+ case 90:
+ {
+ nW = rect.h / 2;
+ nH = rect.w;
+ }
+ break;
+
+ case 270:
+ {
+ nW = rect.h / 2;
+ nH = rect.w;
+ }
+ break;
+
+ default:
+ {
+ VideoLogError("not handled nRotate : [%d]!!!", nRotate);
+ }
+ break;
+ }
+
+ evas_object_move(g_pToolbarWidget->pMoreCtxPopup, nW, nH);
+
+}
+
+static void __mp_ft_ctrl_more_popup_del_cb(void *data, Evas *e,
+ Evas_Object *obj,
+ void *event_info)
+{
+ VideoLogInfo("");
+ evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL,
+ __mp_ft_ctrl_more_popup_del_cb);
+ if (g_pToolbarWidget)
+ g_pToolbarWidget->pMoreCtxPopup = NULL;
+}
+
+void mp_ft_ctrl_create_more_btn_of_personal(void *pUserData,
+ Evas_Object *pTargetObject)
+{
+ VideoLogInfo("");
+
+ Elm_Object_Item *item = NULL;
+ int nItemCount = 0;
+
+ int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
+
+ g_pToolbarWidget->pMoreCtxPopup =
+ elm_ctxpopup_add((Evas_Object *)
+ mp_util_get_main_window_handle());
+
+
+ if (g_pToolbarWidget->pMoreCtxPopup == NULL) {
+ VideoLogError("g_pToolbarWidget->pMoreCtxPopup == NULL!!!");
+ return;
+ }
+
+ evas_object_event_callback_add(g_pToolbarWidget->pMoreCtxPopup,
+ EVAS_CALLBACK_DEL,
+ __mp_ft_ctrl_more_popup_del_cb, NULL);
+ eext_object_event_callback_add(g_pToolbarWidget->pMoreCtxPopup,
+ EEXT_CALLBACK_BACK,
+ eext_ctxpopup_back_cb, NULL);
+ eext_object_event_callback_add(g_pToolbarWidget->pMoreCtxPopup,
+ EEXT_CALLBACK_MORE,
+ eext_ctxpopup_back_cb, NULL);
+
+ elm_object_style_set(g_pToolbarWidget->pMoreCtxPopup, "more/default");
+ elm_ctxpopup_auto_hide_disabled_set(g_pToolbarWidget->pMoreCtxPopup,
+ EINA_TRUE);
+
+ evas_object_smart_callback_add(g_pToolbarWidget->pMoreCtxPopup,
+ "dismissed",
+ mp_ft_ctrl_more_popup_dismissed_cb,
+ NULL);
+
+ if (nVideoListSize > 0 && g_pToolbarWidget->ToolbarCbFunc.SearchCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_SEARCH, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ SearchCb,
+ (void *) FOOTER_TAB_TYPE_PERSONAL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+ if (g_pToolbarWidget->ToolbarCbFunc.ShareViaCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_SHARE_IDS, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ ShareViaCb, NULL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+ if (nVideoListSize > 0 && g_pToolbarWidget->ToolbarCbFunc.DeleteCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_DELETE_IDS, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ DeleteCb,
+ (void *) FOOTER_TAB_TYPE_PERSONAL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+ if (nVideoListSize > 0 && g_pToolbarWidget->ToolbarCbFunc.ViewAsCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_VIEW_AS_IDS, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ ViewAsCb,
+ (void *) FOOTER_TAB_TYPE_PERSONAL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+ if (nVideoListSize > 0 && g_pToolbarWidget->ToolbarCbFunc.SortItemCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_SORT_BY_IDS, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ SortItemCb,
+ (void *) FOOTER_TAB_TYPE_PERSONAL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+
+ if (nVideoListSize > 0 && g_pToolbarWidget->ToolbarCbFunc.RenameCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_RENAME_IDS, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ RenameCb,
+ (void *) FOOTER_TAB_TYPE_PERSONAL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+ if (nVideoListSize > 0 && g_pToolbarWidget->ToolbarCbFunc.DetailsCb) {
+ item =
+ elm_ctxpopup_item_append(g_pToolbarWidget->pMoreCtxPopup,
+ VIDEOS_CTXPOP_MENU_DETAILS_IDS, NULL,
+ g_pToolbarWidget->ToolbarCbFunc.
+ DetailsCb,
+ (void *) FOOTER_TAB_TYPE_PERSONAL);
+ elm_object_item_domain_text_translatable_set(item, VIDEOS_STRING,
+ EINA_TRUE);
+ nItemCount++;
+ }
+
+
+ if (nItemCount > 0) {
+ mp_ft_ctrl_move_more_popup(g_pToolbarWidget->pMoreCtxPopup,
+ pTargetObject);
+ evas_object_show(g_pToolbarWidget->pMoreCtxPopup);
+ } else {
+ mp_ft_ctrl_free_toolbar_btn();
+ }
+}
+
+
+void mp_ft_ctrl_more_btn_cb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pObject) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (g_pToolbarWidget->pMoreCtxPopup) {
+ evas_object_del(g_pToolbarWidget->pMoreCtxPopup);
+ g_pToolbarWidget->pMoreCtxPopup = NULL;
+ } else {
+ int nVideoListSize =
+ mp_util_svc_get_number_of_video_item_by_type();
+ VideoLogInfo("g_pToolbarWidget->nFooterListTabType=%d",
+ g_pToolbarWidget->nFooterListTabType);
+ if (nVideoListSize > 0) {
+ if (g_pToolbarWidget->nFooterListTabType ==
+ FOOTER_TAB_TYPE_PERSONAL) {
+ mp_ft_ctrl_create_more_btn_of_personal(pUserData,
+ pObject);
+ } else {
+ VideoLogError("invalid footer type");
+ }
+ } else {
+ VideoLogError("Empty video list");
+ }
+ }
+}
+
+void mp_ft_ctrl_create_center_button(void *pUserData,
+ void *pToolbarCenterButtonCb)
+{
+ if (!g_pToolbarWidget) {
+ VideoLogError("g_pToolbarWidget is NULL.");
+ return;
+ }
+
+ if (g_pToolbarWidget->pViewButton) {
+ evas_object_del(g_pToolbarWidget->pViewButton);
+ g_pToolbarWidget->pViewButton = NULL;
+ }
+
+ g_pToolbarWidget->pViewButton =
+ mp_ft_ctrl_create_toolbar_btn(g_pToolbarWidget->pNaviFrameHandle,
+ MP_VPL_LIST_TAB_VIEW,
+ pToolbarCenterButtonCb, pUserData);
+ elm_object_item_part_content_set(g_pToolbarWidget->pNaviFrameItem,
+ "toolbar_button1",
+ g_pToolbarWidget->pViewButton);
+}
+
+void mp_ft_ctrl_create_center_toolbar(void *pParent,
+ void *pToolbarCenterButtonCb)
+{
+ if (!g_pToolbarWidget || !pParent) {
+ VideoLogError("g_pToolbarWidget or pParent is NULL.");
+ return;
+ }
+
+ Evas_Object *toolbar = elm_toolbar_add(pParent);
+ if (!toolbar)
+ return;
+ elm_object_style_set(toolbar, "default");
+ elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
+ elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
+ elm_toolbar_item_append(toolbar, NULL, MP_VPL_LIST_TAB_VIEW,
+ pToolbarCenterButtonCb, NULL);
+
+ if (g_pToolbarWidget->pNaviFrameItem) {
+ elm_object_item_part_content_set(g_pToolbarWidget->pNaviFrameItem,
+ "toolbar", toolbar);
+ }
+}
+
+
+void mp_ft_ctrl_delete_center_toolbar()
+{
+
+ Evas_Object *toolbar = NULL;
+ if (!g_pToolbarWidget)
+ return;
+
+ if (g_pToolbarWidget->pNaviFrameItem) {
+ toolbar =
+ elm_object_item_part_content_unset(g_pToolbarWidget->
+ pNaviFrameItem, "toolbar");
+ MP_DEL_OBJ(toolbar);
+ }
+}
+
+void mp_ft_ctrl_delete_center_button(void)
+{
+ if (!g_pToolbarWidget) {
+ VideoLogError("g_pToolbarWidget is NULL.");
+ return;
+ }
+
+ if (g_pToolbarWidget->pNaviFrameItem) {
+ elm_object_item_part_content_unset(g_pToolbarWidget->
+ pNaviFrameItem,
+ "toolbar_button1");
+ }
+
+ if (g_pToolbarWidget->pViewButton) {
+ evas_object_del(g_pToolbarWidget->pViewButton);
+ g_pToolbarWidget->pViewButton = NULL;
+ }
+}
+
+void mp_ft_ctrl_disable(void)
+{
+ if (!g_pToolbarWidget) {
+ VideoLogError("g_pToolbarWidget is NULL.");
+ return;
+ }
+
+ if (g_pToolbarWidget->pNaviFrameItem) {
+ elm_object_item_part_content_unset(g_pToolbarWidget->
+ pNaviFrameItem,
+ "toolbar_more_btn");
+ }
+
+ if (g_pToolbarWidget->pMoreToolbarButton) {
+ evas_object_del(g_pToolbarWidget->pMoreToolbarButton);
+ g_pToolbarWidget->pMoreToolbarButton = NULL;
+ }
+}
+
+void mp_ft_ctrl_registe_cb_func(st_RegisteCbFunc *pCallbackFunc)
+{
+ if (!g_pToolbarWidget) {
+ VideoLogError("g_pToolbarWidget == NULL");
+ return;
+ }
+
+ if (!pCallbackFunc) {
+ VideoLogError("pCallbackFunc == NULL");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ memset((void *) &g_pToolbarWidget->ToolbarCbFunc, 0,
+ sizeof(st_RegisteCbFunc));
+
+ if (pCallbackFunc->DownloadCb) {
+ g_pToolbarWidget->ToolbarCbFunc.DownloadCb =
+ pCallbackFunc->DownloadCb;
+ }
+
+ if (pCallbackFunc->SearchCb) {
+ g_pToolbarWidget->ToolbarCbFunc.SearchCb =
+ pCallbackFunc->SearchCb;
+ }
+
+ if (pCallbackFunc->DeleteCb) {
+ g_pToolbarWidget->ToolbarCbFunc.DeleteCb =
+ pCallbackFunc->DeleteCb;
+ }
+
+ if (pCallbackFunc->SortItemCb) {
+ g_pToolbarWidget->ToolbarCbFunc.SortItemCb =
+ pCallbackFunc->SortItemCb;
+ }
+
+ if (pCallbackFunc->ViewAsCb) {
+ g_pToolbarWidget->ToolbarCbFunc.ViewAsCb =
+ pCallbackFunc->ViewAsCb;
+ }
+
+ if (pCallbackFunc->SignInCb) {
+ g_pToolbarWidget->ToolbarCbFunc.SignInCb =
+ pCallbackFunc->SignInCb;
+ }
+
+ if (pCallbackFunc->ShareViaCb) {
+ g_pToolbarWidget->ToolbarCbFunc.ShareViaCb =
+ pCallbackFunc->ShareViaCb;
+ }
+
+ if (pCallbackFunc->RenameCb) {
+ g_pToolbarWidget->ToolbarCbFunc.RenameCb =
+ pCallbackFunc->RenameCb;
+ }
+
+ if (pCallbackFunc->DetailsCb) {
+ g_pToolbarWidget->ToolbarCbFunc.DetailsCb =
+ pCallbackFunc->DetailsCb;
+ }
+#ifdef ENABLE_PRIVATE_MODE
+ if (pCallbackFunc->AddToPersonalCB) {
+ g_pToolbarWidget->ToolbarCbFunc.AddToPersonalCB =
+ pCallbackFunc->AddToPersonalCB;
+ }
+
+ if (pCallbackFunc->RemoveFromPersonalCB) {
+ g_pToolbarWidget->ToolbarCbFunc.RemoveFromPersonalCB =
+ pCallbackFunc->RemoveFromPersonalCB;
+ }
+#endif
+}
+
+
+void mp_ft_ctrl_create(void *pNaviFrameHandle, void *pNaviFrameItem,
+ MpFooterLibraryMainListTabType nFooterListTabType,
+ st_RegisteCbFunc *pRegisteCbFunc)
+{
+ if (!pNaviFrameHandle) {
+ VideoLogError("g_pToolbarWidget is NULL.");
+ return;
+ }
+
+ mp_ft_ctrl_free_toolbar_btn();
+
+ g_pToolbarWidget =
+ (st_ToolbarWidget *) calloc(1, sizeof(st_ToolbarWidget));
+ memset(g_pToolbarWidget, 0, sizeof(st_ToolbarWidget));
+
+ g_pToolbarWidget->pNaviFrameHandle = pNaviFrameHandle;
+ g_pToolbarWidget->pNaviFrameItem = pNaviFrameItem;
+ g_pToolbarWidget->nFooterListTabType = nFooterListTabType;
+
+ if (pRegisteCbFunc) {
+ mp_ft_ctrl_registe_cb_func(pRegisteCbFunc);
+ }
+
+ g_pToolbarWidget->pMoreToolbarButton =
+ mp_ft_ctrl_create_more_style_btn(g_pToolbarWidget->
+ pNaviFrameHandle,
+ mp_ft_ctrl_more_btn_cb, NULL);
+ elm_object_item_part_content_set(g_pToolbarWidget->pNaviFrameItem,
+ "toolbar_more_btn",
+ g_pToolbarWidget->
+ pMoreToolbarButton);
+}
+
+void mp_ft_ctrl_destroy(void)
+{
+ mp_ft_ctrl_free_toolbar_btn();
+}
+
+void mp_ft_ctrl_hide_more_popup(void)
+{
+ if (!g_pToolbarWidget) {
+ VideoLogError("g_pToolbarWidget == NULL");
+ return;
+ }
+
+ if (g_pToolbarWidget->pMoreCtxPopup) {
+ evas_object_smart_callback_del(g_pToolbarWidget->pMoreCtxPopup,
+ "dismissed",
+ mp_ft_ctrl_more_popup_dismissed_cb);
+ /*evas_object_hide(g_pToolbarWidget->pMoreCtxPopup);*/
+ evas_object_del(g_pToolbarWidget->pMoreCtxPopup);
+ g_pToolbarWidget->pMoreCtxPopup = NULL;
+ }
+}
+
+void mp_ft_ctrl_set_list_tab_type(MpFooterLibraryMainListTabType
+ nFooterListTabType)
+{
+ if (!g_pToolbarWidget) {
+ VideoLogError("g_pToolbarWidget == NULL");
+ return;
+ }
+
+ g_pToolbarWidget->nFooterListTabType = nFooterListTabType;
+
+ if (g_pToolbarWidget->nFooterListTabType == FOOTER_TAB_TYPE_PERSONAL) {
+ VideoLogInfo("FOOTER_TAB_TYPE_PERSONAL");
+ } else if (g_pToolbarWidget->nFooterListTabType ==
+ FOOTER_TAB_TYPE_DOWNLOAD) {
+ VideoLogInfo("FOOTER_TAB_TYPE_DOWNLOAD");
+ } else {
+ g_pToolbarWidget->nFooterListTabType = FOOTER_TAB_TYPE_PERSONAL;
+ VideoLogInfo("FOOTER_TAB_TYPE_PERSONAL");
+ }
+}
+
+void mp_ft_ctrl_rotate_update()
+{
+ VideoLogInfo("");
+ if (g_pToolbarWidget != NULL
+ && g_pToolbarWidget->pMoreCtxPopup != NULL) {
+ mp_ft_ctrl_move_more_popup(g_pToolbarWidget->pMoreCtxPopup, NULL);
+ evas_object_show(g_pToolbarWidget->pMoreCtxPopup);
+ }
+}
+
+bool mp_ft_ctrl_is_show(void)
+{
+ if (g_pToolbarWidget && g_pToolbarWidget->pMoreCtxPopup) {
+ VideoLogInfo("footbar is show");
+ return TRUE;
+ }
+ VideoLogInfo("footbar not show");
+ return FALSE;
+}
diff --git a/src/widget/mp-util-widget-ctrl.c b/src/widget/mp-util-widget-ctrl.c
new file mode 100644
index 0000000..b8d849c
--- /dev/null
+++ b/src/widget/mp-util-widget-ctrl.c
@@ -0,0 +1,280 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <glib.h>
+#include <stdbool.h>
+#include "mp-util-widget-ctrl.h"
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-info-ctrl.h"
+#include "mp-rotate-ctrl.h"
+
+
+/*Focus UI*/
+void mp_widget_ctrl_navi_item_layout_focus_out(Evas_Object *pFocusLayout)
+{
+ if (pFocusLayout == NULL) {
+ VideoLogError("pFocusLayout is NULL");
+ return;
+ }
+
+ elm_object_focus_set(pFocusLayout, EINA_FALSE);
+ elm_object_tree_focus_allow_set(pFocusLayout, EINA_FALSE);
+ elm_object_focus_allow_set(pFocusLayout, EINA_FALSE);
+}
+
+void mp_widget_ctrl_navi_item_layout_focus_in(Evas_Object *pFocusLayout)
+{
+ if (pFocusLayout == NULL) {
+ VideoLogError("pFocusLayout is NULL");
+ return;
+ }
+
+ elm_object_focus_allow_set(pFocusLayout, EINA_TRUE);
+ elm_object_tree_focus_allow_set(pFocusLayout, EINA_TRUE);
+ elm_object_focus_set(pFocusLayout, EINA_TRUE);
+}
+
+void mp_widget_ctrl_enable_navi_handle_focus(Evas_Object *pNaviHandle)
+{
+ return;
+}
+
+
+void mp_widget_ctrl_disable_navi_handle_focus_except_item(Evas_Object *
+ pNaviHandle,
+ Elm_Object_Item
+ *
+ pCurentNaviItem)
+{
+ return;
+}
+
+void mp_widget_ctrl_set_popup_min_size(Evas_Object *pBox, int nListCount,
+ euPopUpStyle eStyle)
+{
+ if (pBox) {
+ int nMinHeight = 0;
+ switch (eStyle) {
+ case VIDEOS_POPUP_114:
+ if (mp_rotate_ctrl_check_landspace_by_win
+ ((Evas_Object *) mp_util_get_main_window_handle())) {
+ nMinHeight = VIDEO_POPUP_LIST_HEIGHT_L(nListCount);
+ } else {
+ nMinHeight = VIDEO_POPUP_LIST_HEIGHT(nListCount);
+ }
+ break;
+ case VIDEOS_POPUP_141:
+ if (mp_rotate_ctrl_check_landspace_by_win
+ ((Evas_Object *) mp_util_get_main_window_handle())) {
+ nMinHeight = VIDEO_POPUP_2_TEXT_HEIGHT_L(nListCount);
+ } else {
+ nMinHeight = VIDEO_POPUP_2_TEXT_HEIGHT(nListCount);
+ }
+ break;
+
+ default:
+ VideoLogError("invalid style =%d.", eStyle);
+ break;
+ }
+
+ evas_object_size_hint_min_set(pBox,
+ VIDEO_POPUP_ITEM_W *
+ elm_config_scale_get(),
+ nMinHeight *
+ elm_config_scale_get());
+ }
+}
+
+Evas_Object *mp_widget_ctrl_create_navi_btn(Evas_Object *pParent,
+ const char *pIconPath,
+ Evas_Smart_Cb pFunc,
+ void *pUserData)
+{
+ if (!pParent) {
+ VideoLogError("pParent is NULL");
+ return NULL;
+ }
+
+ if (!pIconPath) {
+ VideoLogError("pIconPath is NULL");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pImage = elm_image_add(pParent);
+ elm_image_file_set(pImage, VIDEO_PLAYER_IMAGE_NAME_EDJ, pIconPath);
+ elm_image_resizable_set(pImage, EINA_TRUE, EINA_TRUE);
+ evas_object_show(pImage);
+
+ Evas_Object *pTitleBtn = elm_button_add(pParent);
+ elm_object_style_set(pTitleBtn, "naviframe/title_icon");
+ elm_object_part_content_set(pTitleBtn, "icon", pImage);
+ evas_object_smart_callback_add(pTitleBtn, "clicked", pFunc,
+ pUserData);
+
+ return pTitleBtn;
+}
+
+Evas_Object *mp_widget_ctrl_create_navi_left_btn(Evas_Object *pParent,
+ Elm_Object_Item *
+ pNaviItem,
+ const char *pIconPath,
+ Evas_Smart_Cb pFunc,
+ void *pUserData)
+{
+
+ if (!pParent || !pNaviItem) {
+ VideoLogError("parent is NULL.");
+ return NULL;
+ }
+
+ VideoLogInfo("");
+
+ Evas_Object *pLeftbtn = NULL;
+ if (pIconPath) {
+ pLeftbtn =
+ mp_widget_ctrl_create_navi_btn(pParent, pIconPath, pFunc,
+ pUserData);
+ } else {
+ pLeftbtn = elm_button_add(pParent);
+ elm_object_style_set(pLeftbtn, "naviframe/title_cancel");
+ evas_object_smart_callback_add(pLeftbtn, "clicked", pFunc,
+ pUserData);
+ }
+
+ if (!pLeftbtn) {
+ VideoLogError("[ERR] Fail to create pLeftbtn");
+ return NULL;
+ }
+
+ elm_object_item_part_content_set(pNaviItem, "title_left_btn",
+ pLeftbtn);
+
+ evas_object_show(pLeftbtn);
+
+ return pLeftbtn;
+}
+
+
+Evas_Object *mp_widget_ctrl_create_navi_right_btn(Evas_Object *pParent,
+ Elm_Object_Item *
+ pNaviItem,
+ const char *pIconPath,
+ Evas_Smart_Cb pFunc,
+ void *pUserData)
+{
+
+ if (!pParent || !pNaviItem) {
+ VideoLogError("parent is NULL.");
+ return NULL;
+ }
+
+
+ VideoLogInfo("");
+ Evas_Object *pRightbtn = NULL;
+ if (pIconPath) {
+ pRightbtn =
+ mp_widget_ctrl_create_navi_btn(pParent, pIconPath, pFunc,
+ pUserData);
+ } else {
+ pRightbtn = elm_button_add(pParent);
+ elm_object_style_set(pRightbtn, "naviframe/title_done");
+ evas_object_smart_callback_add(pRightbtn, "clicked", pFunc,
+ pUserData);
+ }
+
+ if (!pRightbtn) {
+ VideoLogError("[ERR] Fail to create pRightbtn");
+ return NULL;
+ }
+
+ elm_object_item_part_content_set(pNaviItem, "title_right_btn",
+ pRightbtn);
+
+ evas_object_show(pRightbtn);
+
+ return pRightbtn;
+
+}
+
+bool mp_widget_ctrl_create_select_all_layout(Evas_Object *pParent,
+ Evas_Smart_Cb pChangeFunc,
+ Evas_Object_Event_Cb
+ pMouseDownFunc,
+ void *pUserData,
+ Evas_Object **pCheckBox,
+ Evas_Object **pSelectLayout)
+{
+ if (!pParent) {
+ VideoLogError("parent is NULL.");
+ return FALSE;
+ }
+
+ Evas_Object *pSelectAllLayout = elm_layout_add(pParent);
+ elm_layout_theme_set(pSelectAllLayout, "genlist", "item",
+ "select_all/default");
+ /*elm_layout_file_set(pSelectAllLayout, VIDEO_CUSTOM_THEME, "select.all.layout");*/
+ evas_object_size_hint_weight_set(pSelectAllLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(pSelectAllLayout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_event_callback_add(pSelectAllLayout,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ pMouseDownFunc, NULL);
+ *pSelectLayout = pSelectAllLayout;
+
+ Evas_Object *pSelectAllCheckbox = elm_check_add(pSelectAllLayout);
+ /*elm_check_state_pointer_set(pSelectAllCheckbox, (void *)FALSE);*/
+ evas_object_smart_callback_add(pSelectAllCheckbox, "changed",
+ pChangeFunc, NULL);
+ evas_object_propagate_events_set(pSelectAllCheckbox, EINA_FALSE);
+ elm_object_part_content_set(pSelectAllLayout, "elm.icon",
+ pSelectAllCheckbox);
+ elm_object_domain_translatable_part_text_set(pSelectAllLayout,
+ "elm.text.main",
+ VIDEOS_STRING,
+ VIDEOS_SELECTVIEW_BODY_SELECT_ALL_IDS);
+ evas_object_show(pSelectAllLayout);
+ *pCheckBox = pSelectAllCheckbox;
+ return TRUE;
+
+}
+
+Evas_Object *mp_widget_ctrl_create_progressbar(Evas_Object *pParent,
+ double dRadio)
+{
+ if (!pParent) {
+ return NULL;
+ }
+ Evas_Object *pProgressBar = elm_progressbar_add(pParent);
+ elm_object_style_set(pProgressBar,
+ "elm/progressbar/horizontal/default");
+ elm_progressbar_horizontal_set(pProgressBar, EINA_TRUE);
+ elm_progressbar_span_size_set(pProgressBar,
+ VIDEO_LIST_PROGRESSBAR_LENGTH);
+ evas_object_size_hint_align_set(pProgressBar, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pProgressBar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_progressbar_value_set(pProgressBar, dRadio);
+ return pProgressBar;
+}
diff --git a/src/widget/mp-video-list-option-ctrl.c b/src/widget/mp-video-list-option-ctrl.c
new file mode 100644
index 0000000..ba94438
--- /dev/null
+++ b/src/widget/mp-video-list-option-ctrl.c
@@ -0,0 +1,393 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-list-option-ctrl.h"
+#include "mp-util-media-service.h"
+#include "vp-util.h"
+#include "mp-util-widget-ctrl.h"
+
+
+typedef struct _MpVideoListOption {
+ /*obj*/
+ Evas_Object *pPopUpHandle;
+ Evas_Object *pGenList;
+ Evas_Object *pBox;
+
+ /*data*/
+ MpDownloadType stDownloadType;
+ Elm_Genlist_Item_Class *stListOptionItc;
+ st_RegisteOptionCbFunc st_OptionCbFun;
+ MpListOptionCbFunc pMpListOptionCloseCb;
+ int nListCount;
+ void *pUserData;
+
+} stMpVideoListOption;
+
+static stMpVideoListOption *g_pOptionCtrlHandle = NULL;
+
+
+/*static void __MpListOptionCtrlDismissedCb(void *data, Evas_Object *obj, void *event_info);*/
+static void __mp_option_ctrl_realized(void *data, Evas_Object *obj,
+ void *event_info);
+static void __mp_option_ctrl_cancel_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo);
+static void __mp_option_ctrl_mouse_up_cb(void *pUserData, Evas *pEvas,
+ Evas_Object *pObject,
+ void *pEventInfo);
+static void __mp_option_ctrl_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+void mp_option_ctrl_delete_handle(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pOptionCtrlHandle) {
+ VideoLogError("");
+ return;
+ }
+
+ if (g_pOptionCtrlHandle->pMpListOptionCloseCb) {
+ g_pOptionCtrlHandle->pMpListOptionCloseCb(g_pOptionCtrlHandle->
+ pUserData);
+ }
+
+ if (g_pOptionCtrlHandle->pPopUpHandle) {
+ evas_object_event_callback_del(g_pOptionCtrlHandle->pPopUpHandle,
+ EVAS_CALLBACK_MOUSE_UP,
+ __mp_option_ctrl_mouse_up_cb);
+ evas_object_smart_callback_del(g_pOptionCtrlHandle->pPopUpHandle,
+ "block,clicked",
+ __mp_option_ctrl_cancel_cb);
+ eext_object_event_callback_del(g_pOptionCtrlHandle->pPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ __mp_option_ctrl_cancel_cb);
+ evas_object_smart_callback_del((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "rotation,changed",
+ __mp_option_ctrl_rotate_cb);
+ }
+ MP_DEL_OBJ(g_pOptionCtrlHandle->pGenList);
+ MP_DEL_OBJ(g_pOptionCtrlHandle->pBox);
+ MP_DEL_OBJ(g_pOptionCtrlHandle->pPopUpHandle);
+ MP_DEL_ITC(g_pOptionCtrlHandle->stListOptionItc);
+ MP_FREE_STRING(g_pOptionCtrlHandle);
+
+}
+
+/*static void __MpListOptionCtrlDismissedCb(void *data, Evas_Object *obj, void *event_info)
+{
+ VideoSecureLogDebug("__MpListOptionCtrlDismissedCb");
+
+ mp_option_ctrl_delete_handle();
+}*/
+
+static void __mp_option_ctrl_register_cb_func(st_RegisteOptionCbFunc *
+ pCallbackFunc)
+{
+
+ if (!pCallbackFunc || !g_pOptionCtrlHandle) {
+ VideoLogError("pCallbackFunc == NULL");
+ return;
+ }
+
+ memset(&g_pOptionCtrlHandle->st_OptionCbFun, 0,
+ sizeof(st_RegisteOptionCbFunc));
+
+ if (pCallbackFunc->ShareViaItemCb) {
+ g_pOptionCtrlHandle->st_OptionCbFun.ShareViaItemCb =
+ pCallbackFunc->ShareViaItemCb;
+ }
+
+ if (pCallbackFunc->AddToHomeItemCb) {
+ g_pOptionCtrlHandle->st_OptionCbFun.AddToHomeItemCb =
+ pCallbackFunc->AddToHomeItemCb;
+ }
+
+ if (pCallbackFunc->DeleteItemCb) {
+ g_pOptionCtrlHandle->st_OptionCbFun.DeleteItemCb =
+ pCallbackFunc->DeleteItemCb;
+ }
+
+ if (pCallbackFunc->DownloadCb) {
+ g_pOptionCtrlHandle->st_OptionCbFun.DownloadCb =
+ pCallbackFunc->DownloadCb;
+ }
+}
+
+static char *mp_option_ctrl_get_lable_of_gen_item_cb(const void
+ *pUserData,
+ Evas_Object *
+ pObject,
+ const char *pPart)
+{
+
+ int nIndex = (int) pUserData;
+
+ /* if (!strcmp(pPart, "elm.text"))*/
+ if (!strcmp(pPart, "elm.text.main.left")) {
+ switch (nIndex) {
+ case MP_LIST_OPTION_SHARE_VIA_ITEM:
+ return g_strdup(VIDEOS_CTXPOP_MENU_SHARE);
+ case MP_LIST_OPTION_ADD_HOME_ITEM:
+ return g_strdup(VIDEOS_CTXPOP_MENU_ADD_TO_HOME);
+ case MP_LIST_OPTION_RENAME_ITEM:
+ return g_strdup(VIDEOS_CTXPOP_MENU_RENAME);
+ case MP_LIST_OPTION_DETAILS_ITEM:
+ return g_strdup(VIDEOS_CTXPOP_MENU_DETAILS);
+ case MP_LIST_OPTION_DELETE_ITEM:
+ return g_strdup(VIDEOS_CTXPOP_MENU_DELETE);
+ case MP_LIST_OPTION_DOWNLOAD_ITEM:
+ return g_strdup(VIDEOS_CTXPOP_MENU_DOWNLOAD);
+ default:
+ break;
+ }
+ }
+
+ return NULL;
+}
+
+static void __mp_option_ctrl_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ if (!event_info || !obj) {
+ VideoLogError("event info is invalid");
+ return;
+ }
+ Elm_Object_Item *pItem = elm_genlist_last_item_get(obj);
+
+ if (pItem) {
+ elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide",
+ "");
+ }
+}
+
+static Evas_Object *__mp_option_ctrl_init(void *pNaviHandle,
+ const char *title,
+ int nVideoIndex)
+{
+ VideoLogDebug("title=%s", title);
+ if (!g_pOptionCtrlHandle) {
+ VideoLogError("g_pOptionCtrlHandle == NULL");
+ return NULL;
+ }
+
+ MP_DEL_ITC(g_pOptionCtrlHandle->stListOptionItc);
+ g_pOptionCtrlHandle->stListOptionItc = elm_genlist_item_class_new();
+
+ /* Set item of Genlist.*/
+ g_pOptionCtrlHandle->stListOptionItc->item_style = "1line"; /*"1text/popup";*/
+ g_pOptionCtrlHandle->stListOptionItc->func.text_get =
+ (void *) mp_option_ctrl_get_lable_of_gen_item_cb;
+ g_pOptionCtrlHandle->stListOptionItc->func.content_get = NULL;
+ g_pOptionCtrlHandle->stListOptionItc->func.state_get = NULL;
+ g_pOptionCtrlHandle->stListOptionItc->func.del = NULL;
+
+ /* Create genlist handle*/
+ g_pOptionCtrlHandle->pGenList =
+ elm_genlist_add(g_pOptionCtrlHandle->pPopUpHandle);
+ evas_object_size_hint_weight_set(g_pOptionCtrlHandle->pGenList,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pOptionCtrlHandle->pGenList,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(g_pOptionCtrlHandle->pGenList,
+ "realized", __mp_option_ctrl_realized,
+ NULL);
+
+ g_pOptionCtrlHandle->nListCount = 0;
+
+ if (g_pOptionCtrlHandle->st_OptionCbFun.DeleteItemCb) {
+ g_pOptionCtrlHandle->nListCount++;
+ elm_genlist_item_append(g_pOptionCtrlHandle->pGenList,
+ g_pOptionCtrlHandle->stListOptionItc,
+ (void *) MP_LIST_OPTION_DELETE_ITEM, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ g_pOptionCtrlHandle->st_OptionCbFun.
+ DeleteItemCb, (void *) nVideoIndex);
+ }
+
+ if (g_pOptionCtrlHandle->st_OptionCbFun.ShareViaItemCb) {
+ g_pOptionCtrlHandle->nListCount++;
+ elm_genlist_item_append(g_pOptionCtrlHandle->pGenList,
+ g_pOptionCtrlHandle->stListOptionItc,
+ (void *) MP_LIST_OPTION_SHARE_VIA_ITEM,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ g_pOptionCtrlHandle->st_OptionCbFun.
+ ShareViaItemCb, (void *) nVideoIndex);
+ }
+
+ evas_object_show(g_pOptionCtrlHandle->pGenList);
+
+ g_pOptionCtrlHandle->pBox =
+ elm_box_add(g_pOptionCtrlHandle->pPopUpHandle);
+
+ mp_widget_ctrl_set_popup_min_size(g_pOptionCtrlHandle->pBox,
+ g_pOptionCtrlHandle->nListCount,
+ VIDEOS_POPUP_114);
+ evas_object_size_hint_weight_set(g_pOptionCtrlHandle->pBox,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pOptionCtrlHandle->pBox,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_box_pack_end(g_pOptionCtrlHandle->pBox,
+ g_pOptionCtrlHandle->pGenList);
+
+ evas_object_show(g_pOptionCtrlHandle->pBox);
+
+ return g_pOptionCtrlHandle->pBox;
+
+}
+
+static void __mp_option_ctrl_cancel_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_option_ctrl_delete_handle();
+}
+
+static void __mp_option_ctrl_mouse_up_cb(void *pUserData, Evas *pEvas,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+
+ if (pEvent->button == 3) {
+ mp_option_ctrl_delete_handle();
+ }
+}
+
+static void __mp_option_ctrl_rotate_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ if (!g_pOptionCtrlHandle) {
+ VideoLogError("pVideoListSortPopUpHandle IS null");
+ return;
+ }
+ if (g_pOptionCtrlHandle->nListCount < VIDEO_POPUP_MIN_ITEMS) {
+ return;
+ }
+ mp_widget_ctrl_set_popup_min_size(g_pOptionCtrlHandle->pBox,
+ g_pOptionCtrlHandle->nListCount,
+ VIDEOS_POPUP_114);
+
+}
+
+
+bool mp_option_ctrl_show(void *pNaviHandle, const char *title,
+ int nVideoIndex,
+ st_RegisteOptionCbFunc *pCallbackFunc,
+ MpListOptionCbFunc pCloseFun, void *userData,
+ MpDownloadType euType)
+{
+ if (!pNaviHandle) {
+ VideoSecureLogError("invalid pNaviHandle");
+ return false;
+ }
+
+ mp_option_ctrl_delete_handle();
+ g_pOptionCtrlHandle =
+ (stMpVideoListOption *) calloc(1, sizeof(stMpVideoListOption));
+ if (!g_pOptionCtrlHandle) {
+ VideoLogError("g_pOptionCtrlHandle is NULL");
+ return FALSE;
+ }
+
+ g_pOptionCtrlHandle->pMpListOptionCloseCb = pCloseFun;
+ __mp_option_ctrl_register_cb_func(pCallbackFunc);
+ g_pOptionCtrlHandle->stDownloadType = euType;
+ g_pOptionCtrlHandle->pUserData = userData;
+
+ g_pOptionCtrlHandle->pPopUpHandle =
+ elm_popup_add((Evas_Object *) pNaviHandle);
+
+ /*elm_object_style_set(pListOptionPopUpHandle, "content_no_vhpad"); //menustyle*/
+ elm_object_style_set(g_pOptionCtrlHandle->pPopUpHandle, "default");
+ if (title) {
+ char *szTitleUtf8 = elm_entry_utf8_to_markup(title);
+ elm_object_part_text_set(g_pOptionCtrlHandle->pPopUpHandle,
+ "title,text", szTitleUtf8);
+ MP_FREE_STRING(szTitleUtf8);
+ }
+ evas_object_size_hint_weight_set(g_pOptionCtrlHandle->pPopUpHandle,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_weight_set(g_pOptionCtrlHandle->pPopUpHandle,
+ EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_event_callback_add(g_pOptionCtrlHandle->pPopUpHandle,
+ EVAS_CALLBACK_MOUSE_UP,
+ __mp_option_ctrl_mouse_up_cb, NULL);
+ evas_object_smart_callback_add(g_pOptionCtrlHandle->pPopUpHandle,
+ "block,clicked",
+ __mp_option_ctrl_cancel_cb, NULL);
+ eext_object_event_callback_add(g_pOptionCtrlHandle->pPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ __mp_option_ctrl_cancel_cb, NULL);
+ evas_object_smart_callback_add((Evas_Object *)
+ mp_util_get_main_window_handle(),
+ "rotation,changed",
+ __mp_option_ctrl_rotate_cb, NULL);
+
+ __mp_option_ctrl_init(pNaviHandle, title, nVideoIndex);
+
+
+ elm_object_content_set(g_pOptionCtrlHandle->pPopUpHandle,
+ g_pOptionCtrlHandle->pBox);
+ evas_object_show(g_pOptionCtrlHandle->pPopUpHandle);
+
+ return TRUE;
+}
+
+void mp_option_ctrl_change_language(void)
+{
+ if (!g_pOptionCtrlHandle) {
+ VideoLogError("g_pOptionCtrlHandle is NULL");
+ return;
+ }
+
+ if (!g_pOptionCtrlHandle->pGenList
+ || !g_pOptionCtrlHandle->pPopUpHandle) {
+ VideoLogError("No existed genlist or popup handle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_genlist_realized_items_update(g_pOptionCtrlHandle->pGenList);
+
+}
+
+void *mp_option_ctrl_get_handle(void)
+{
+ VideoLogInfo("");
+ if (!g_pOptionCtrlHandle) {
+ VideoLogError("g_pOptionCtrlHandle is NULL");
+ return NULL;
+ }
+ return (void *) g_pOptionCtrlHandle->pPopUpHandle;
+}
diff --git a/src/widget/mp-video-list-sort-ctrl.c b/src/widget/mp-video-list-sort-ctrl.c
new file mode 100644
index 0000000..9a93ef1
--- /dev/null
+++ b/src/widget/mp-video-list-sort-ctrl.c
@@ -0,0 +1,414 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include <app_preference.h>
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-list-sort-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "vp-util.h"
+
+#define PREF_VP_VIDEOS_SORT_TYPE "preference/org.tizen.videos/sort_type"
+
+typedef struct _MpVideoListSort{
+ //obj
+ Evas_Object *pPopUpHandle;
+ Evas_Object *pGroupRadio;
+ Evas_Object *pGenList;
+ Evas_Object *pBox;
+
+ //data
+ Elm_Genlist_Item_Class *stListSortItc;
+ ListSortCtrlCbFunc ListSortCtrlUserCbFunc;
+ MpListSortType nCurrListSortType;
+ int nListCount;
+
+}stMpVideoListSort;
+
+stMpVideoListSort *g_pSortCtrlHandle = NULL;
+
+
+static void __mp_sort_ctrl_realized(void *data, Evas_Object *obj, void *event_info);
+static void __mp_sort_ctrl_rotate_cb(void *data, Evas_Object *obj, void *event_info);
+static void __mp_sort_ctrl_btn_asc_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+static void __mp_sort_ctrl_mouse_up_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo);
+static void __mp_sort_ctrl_select_radio_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+
+////////////////////////////////////////////////////////////
+// Internal function
+////////////////////////////////////////////////////////////
+
+
+void mp_sort_ctrl_delete_handle(void)
+{
+ VideoLogInfo("");
+
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+ if (g_pSortCtrlHandle->pPopUpHandle)
+ {
+ eext_object_event_callback_del(g_pSortCtrlHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_sort_ctrl_btn_asc_cb);
+ //elm_object_style_set(pVideoListSortPopUpHandle, "content_no_vhpad");
+ evas_object_smart_callback_del(g_pSortCtrlHandle->pPopUpHandle, "block,clicked", __mp_sort_ctrl_btn_asc_cb);
+ evas_object_smart_callback_del((Evas_Object*)mp_util_get_main_window_handle(), "rotation,changed", __mp_sort_ctrl_rotate_cb);
+ evas_object_event_callback_del(g_pSortCtrlHandle->pPopUpHandle, EVAS_CALLBACK_MOUSE_UP, __mp_sort_ctrl_mouse_up_cb);
+ }
+ MP_DEL_OBJ(g_pSortCtrlHandle->pGroupRadio);
+ MP_DEL_OBJ(g_pSortCtrlHandle->pGenList);
+ MP_DEL_OBJ(g_pSortCtrlHandle->pBox);
+ MP_DEL_OBJ(g_pSortCtrlHandle->pPopUpHandle);
+ MP_DEL_ITC(g_pSortCtrlHandle->stListSortItc);
+ MP_FREE_STRING(g_pSortCtrlHandle);
+}
+
+void mp_sort_ctrl_set_sort_state(MpListSortType nListSortType)
+{
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+
+ if (MP_LIST_SORT_BY_NONE >= nListSortType || nListSortType >= MP_LIST_SORT_BY_MAX)
+ {
+ VideoLogWarning("[WARNING] Value of sort type is not matched.");
+ nListSortType = MP_LIST_SORT_BY_RECENTLY_ADDED;
+ }
+
+ g_pSortCtrlHandle->nCurrListSortType = nListSortType;
+
+ int nRet = preference_set_int(PREF_VP_VIDEOS_SORT_TYPE, g_pSortCtrlHandle->nCurrListSortType);
+ if (nRet)
+ {
+ VideoLogWarning("[WARNING] Fail to set value about sort type.");
+ }
+}
+
+static char *mp_sort_ctrl_get_label_of_genlist_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ int nIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text") || !strcmp(pPart, "elm.text.main.left"))
+ {
+ switch (nIndex)
+ {
+ //case MP_LIST_SORT_BY_RECENTLY_VIEWED: return strdup(VIDEOS_SORTBYOPT_OPT_RECENTLY_VIEWED);
+ case MP_LIST_SORT_BY_RECENTLY_ADDED: return strdup(VIDEOS_SORTBYOPT_OPT_DATE_MOST_RECENT);
+ case MP_LIST_SORT_BY_NAME: return strdup(VIDEOS_SORTBYOPT_OPT_NAME);
+ //case MP_LIST_SORT_BY_SIZE: return strdup(VIDEOS_SORTBYOPT_OPT_SIZE);
+ //case MP_LIST_SORT_BY_TYPE: return strdup(VIDEOS_SORTBYOPT_OPT_TYPE);
+ }
+ }
+
+ return NULL;
+}
+
+static Evas_Object *mp_sort_ctrl_get_icon_of_genlist_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+ int nIndex = (int)pUserData;
+ Evas_Object *pLayout = NULL;
+ Evas_Object *pTmpRadio = NULL;
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("");
+ return NULL;
+ }
+
+ if (!strcmp(pPart, "elm.swallow.end") || !strcmp(pPart, "elm.icon.2"))
+ {
+ pLayout = elm_layout_add(pObject);
+ pTmpRadio = elm_radio_add(pLayout);
+
+ elm_layout_theme_set(pLayout, "layout", "list/C/type.2", "default");
+ elm_radio_state_value_set(pTmpRadio, nIndex);
+ elm_radio_group_add(pTmpRadio, g_pSortCtrlHandle->pGroupRadio);
+
+ if (g_pSortCtrlHandle->nCurrListSortType == nIndex)
+ {
+ elm_radio_value_set(g_pSortCtrlHandle->pGroupRadio, g_pSortCtrlHandle->nCurrListSortType);
+ mp_sort_ctrl_set_sort_state(g_pSortCtrlHandle->nCurrListSortType);
+ }
+// elm_object_signal_callback_add(pTmpRadio, "elm,action,show,finished", "elm", __mp_sort_ctrl_select_radio_cb, (void *)pUserData);
+ evas_object_smart_callback_add(pTmpRadio, "changed", __mp_sort_ctrl_select_radio_cb, (void *)pUserData);
+ elm_object_part_content_set(pLayout, "elm.swallow.content", pTmpRadio);
+
+ evas_object_show(pTmpRadio);
+ evas_object_show(pLayout);
+ }
+
+ return pLayout;
+}
+
+static void __mp_sort_ctrl_btn_asc_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_sort_ctrl_hide();
+}
+
+static void mp_sort_ctrl_select_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ int nIndex = 0;
+
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem)
+ {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+
+ nIndex = (int)elm_object_item_data_get(pItem);
+ if (nIndex == g_pSortCtrlHandle->nCurrListSortType) {
+ VideoLogInfo("Do nothing");
+ mp_sort_ctrl_hide();
+ } else {
+ g_pSortCtrlHandle->nCurrListSortType = nIndex;
+ elm_radio_value_set(g_pSortCtrlHandle->pGroupRadio, g_pSortCtrlHandle->nCurrListSortType);
+
+ mp_sort_ctrl_set_sort_state(g_pSortCtrlHandle->nCurrListSortType);
+
+ ListSortCtrlCbFunc fFunc = g_pSortCtrlHandle->ListSortCtrlUserCbFunc;
+ mp_sort_ctrl_hide();
+
+ if (fFunc)
+ {
+ fFunc();
+ }
+ }
+}
+
+static void __mp_sort_ctrl_select_radio_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+ int nIndex = (int)pUserData;
+
+ g_pSortCtrlHandle->nCurrListSortType = nIndex;
+ mp_sort_ctrl_set_sort_state(g_pSortCtrlHandle->nCurrListSortType);
+
+ ListSortCtrlCbFunc fFunc = g_pSortCtrlHandle->ListSortCtrlUserCbFunc;
+ mp_sort_ctrl_hide();
+
+ if (fFunc)
+ {
+ fFunc();
+ }
+}
+
+static void __mp_sort_ctrl_mouse_up_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+
+ if (pEvent->button == 3)
+ {
+ mp_sort_ctrl_hide();
+ }
+}
+
+////////////////////////////////////////////////////////////
+// External function
+////////////////////////////////////////////////////////////
+void mp_sort_ctrl_genlist_change_language(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_genlist_realized_items_update(obj);
+}
+
+static void __mp_sort_ctrl_realized(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!event_info || !obj)
+ {
+ VideoLogError("event info is invalid");
+ return;
+ }
+ Elm_Object_Item *pItem = elm_genlist_last_item_get(obj);
+
+ if (pItem)
+ {
+ elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide", "");
+ }
+}
+
+static void __mp_sort_ctrl_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("pVideoListSortPopUpHandle IS null");
+ return;
+ }
+ if (g_pSortCtrlHandle->nListCount < VIDEO_POPUP_MIN_ITEMS)
+ {
+ return;
+ }
+ mp_widget_ctrl_set_popup_min_size(g_pSortCtrlHandle->pBox, g_pSortCtrlHandle->nListCount, VIDEOS_POPUP_114);
+
+}
+
+bool mp_sort_ctrl_show(ListSortCtrlCbFunc pListSortCtrlCb)
+{
+ VideoLogInfo("");
+
+ mp_sort_ctrl_delete_handle();
+ g_pSortCtrlHandle = (stMpVideoListSort*)calloc(1, sizeof(stMpVideoListSort));
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("g_pSortCtrlHandle is NULL");
+ return FALSE;
+ }
+
+ g_pSortCtrlHandle->ListSortCtrlUserCbFunc = pListSortCtrlCb;
+ g_pSortCtrlHandle->nCurrListSortType = mp_sort_ctrl_get_sort_state();
+
+ g_pSortCtrlHandle->pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+ elm_object_style_set(g_pSortCtrlHandle->pPopUpHandle, "default");
+ eext_object_event_callback_add(g_pSortCtrlHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_sort_ctrl_btn_asc_cb, NULL);
+ evas_object_smart_callback_add(g_pSortCtrlHandle->pPopUpHandle, "block,clicked", __mp_sort_ctrl_btn_asc_cb, NULL);
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "rotation,changed", __mp_sort_ctrl_rotate_cb, NULL);
+
+ elm_object_domain_translatable_part_text_set(g_pSortCtrlHandle->pPopUpHandle, "title,text", VIDEOS_STRING, VIDEOS_SORTBYPOP_HEADER_SORT_BY_IDS);
+ evas_object_size_hint_weight_set(g_pSortCtrlHandle->pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ evas_object_event_callback_add(g_pSortCtrlHandle->pPopUpHandle, EVAS_CALLBACK_MOUSE_UP, __mp_sort_ctrl_mouse_up_cb, NULL);
+ //evas_object_event_callback_add(pVideoListSortPopUpHandle, EVAS_CALLBACK_KEY_DOWN, MpVideoListSortKeyDownCb, NULL);
+
+ MP_DEL_ITC(g_pSortCtrlHandle->stListSortItc);
+ g_pSortCtrlHandle->stListSortItc = elm_genlist_item_class_new();
+ // Set item of Genlist.
+ g_pSortCtrlHandle->stListSortItc->item_style = "default";//"1text.1icon.2/popup";
+ g_pSortCtrlHandle->stListSortItc->func.text_get = (void *)mp_sort_ctrl_get_label_of_genlist_cb;
+ g_pSortCtrlHandle->stListSortItc->func.content_get = (void *)mp_sort_ctrl_get_icon_of_genlist_cb;
+ g_pSortCtrlHandle->stListSortItc->func.state_get = NULL;
+ g_pSortCtrlHandle->stListSortItc->func.del = NULL;
+
+ // Create genlist handle
+ g_pSortCtrlHandle->pGenList = elm_genlist_add(g_pSortCtrlHandle->pPopUpHandle);
+ evas_object_size_hint_weight_set(g_pSortCtrlHandle->pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pSortCtrlHandle->pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_smart_callback_add(g_pSortCtrlHandle->pGenList, "language,changed", mp_sort_ctrl_genlist_change_language, NULL);
+ evas_object_smart_callback_add(g_pSortCtrlHandle->pGenList, "realized", __mp_sort_ctrl_realized, NULL);
+
+ g_pSortCtrlHandle->pGroupRadio = elm_radio_add(g_pSortCtrlHandle->pGenList);
+
+ mp_sort_ctrl_get_sort_state();
+
+ int nListCount = 0;
+ //elm_genlist_item_append(g_pSortCtrlHandle->pGenList, g_pSortCtrlHandle->stListSortItc, (void *)MP_LIST_SORT_BY_RECENTLY_VIEWED, NULL, ELM_GENLIST_ITEM_NONE, mp_sort_ctrl_select_item_cb, NULL);
+ //nListCount++;
+ elm_genlist_item_append(g_pSortCtrlHandle->pGenList, g_pSortCtrlHandle->stListSortItc, (void *)MP_LIST_SORT_BY_RECENTLY_ADDED, NULL, ELM_GENLIST_ITEM_NONE, mp_sort_ctrl_select_item_cb, NULL);
+ nListCount++;
+ elm_genlist_item_append(g_pSortCtrlHandle->pGenList, g_pSortCtrlHandle->stListSortItc, (void *)MP_LIST_SORT_BY_NAME, NULL, ELM_GENLIST_ITEM_NONE, mp_sort_ctrl_select_item_cb, NULL);
+ nListCount++;
+ //elm_genlist_item_append(g_pSortCtrlHandle->pGenList, g_pSortCtrlHandle->stListSortItc, (void *)MP_LIST_SORT_BY_SIZE, NULL, ELM_GENLIST_ITEM_NONE, mp_sort_ctrl_select_item_cb, NULL);
+ //nListCount++;
+ //elm_genlist_item_append(g_pSortCtrlHandle->pGenList, g_pSortCtrlHandle->stListSortItc, (void *)MP_LIST_SORT_BY_TYPE, NULL, ELM_GENLIST_ITEM_NONE, mp_sort_ctrl_select_item_cb, NULL);
+ //nListCount++;
+ g_pSortCtrlHandle->nListCount = nListCount;
+
+ //elm_radio_value_set(g_pSortCtrlHandle->pGroupRadio, g_pSortCtrlHandle->nCurrListSortType);
+
+ g_pSortCtrlHandle->pBox = elm_box_add(g_pSortCtrlHandle->pPopUpHandle);
+
+ mp_widget_ctrl_set_popup_min_size(g_pSortCtrlHandle->pBox, g_pSortCtrlHandle->nListCount, VIDEOS_POPUP_114);
+ evas_object_size_hint_weight_set(g_pSortCtrlHandle->pBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pSortCtrlHandle->pBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_box_pack_end(g_pSortCtrlHandle->pBox, g_pSortCtrlHandle->pGenList);
+ elm_object_content_set(g_pSortCtrlHandle->pPopUpHandle, g_pSortCtrlHandle->pBox);
+
+ evas_object_show(g_pSortCtrlHandle->pBox);
+ evas_object_show(g_pSortCtrlHandle->pGenList);
+ evas_object_show(g_pSortCtrlHandle->pPopUpHandle);
+
+ return TRUE;
+}
+
+void mp_sort_ctrl_hide(void)
+{
+ VideoLogInfo("");
+
+ mp_sort_ctrl_delete_handle();
+}
+
+void mp_sort_ctrl_change_language(void)
+{
+ VideoLogInfo("");
+ if (!g_pSortCtrlHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+
+ if (!g_pSortCtrlHandle->pGenList || !g_pSortCtrlHandle->pPopUpHandle)
+ {
+ VideoLogError("No existed genlist or popup handle.");
+ return;
+ }
+
+ elm_genlist_realized_items_update(g_pSortCtrlHandle->pGenList);
+}
+
+
+int mp_sort_ctrl_get_sort_state(void)
+{
+ int nValue = MP_LIST_SORT_BY_NONE;
+
+ if (0 != preference_get_int(PREF_VP_VIDEOS_SORT_TYPE, &nValue))
+ {
+ VideoLogInfo("Setting normal list type because of defending wrong value.:%d", nValue);
+ mp_sort_ctrl_set_sort_state(MP_LIST_SORT_BY_RECENTLY_ADDED);
+ return MP_LIST_SORT_BY_RECENTLY_ADDED;
+ }
+
+ if (nValue <= MP_LIST_SORT_BY_NONE || nValue >= MP_LIST_SORT_BY_MAX)
+ {
+ mp_sort_ctrl_set_sort_state(MP_LIST_SORT_BY_RECENTLY_ADDED);
+ return MP_LIST_SORT_BY_RECENTLY_ADDED;
+ }
+
+ VideoLogInfo("sortstate start:%d", nValue);
+
+ return (int)nValue;
+}
+
diff --git a/src/widget/mp-video-list-view-as-ctrl.c b/src/widget/mp-video-list-view-as-ctrl.c
new file mode 100644
index 0000000..369e458
--- /dev/null
+++ b/src/widget/mp-video-list-view-as-ctrl.c
@@ -0,0 +1,421 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <app_preference.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-footer-toolbar.h"
+#include "mp-video-list-view-as-ctrl.h"
+#include "mp-util-widget-ctrl.h"
+#include "vp-util.h"
+
+#define PREF_MP_VIDEO_VIEW_AS_TYPE_KEY "preference/org.tizen.videos/view_as_type"
+
+typedef struct _MpVideoViewAs{
+ //obj
+ Evas_Object *pPopUpHandle;
+ Evas_Object *pGroupRadio;
+ Evas_Object *pGenList;
+ Evas_Object *pBox;
+
+ //data
+ Elm_Genlist_Item_Class *stViewAsItc;
+ ListViewAsCtrlCbFunc ListViewAsCtrlUserCbFunc;
+ MpListViewAsType nCurrViewAsType;
+ int nListCount;
+ int nCurrTabType;
+
+}stMpVideoViewAs;
+
+stMpVideoViewAs *g_pViewAsHandle = NULL;
+
+////////////////////////////////////////////////////////////
+// Internal function
+////////////////////////////////////////////////////////////
+static void __mp_view_as_ctrl_rotate_cb(void *data, Evas_Object *obj, void *event_info);
+static void __mp_view_as_ctrl_mouse_up_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo);
+static void __mp_view_as_ctrl_cancel_btn_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+static void __mp_view_as_ctrl_select_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+static void __mp_view_as_ctrl_select_radio_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo);
+
+void mp_view_as_ctrl_delete_handle(void)
+{
+ VideoLogInfo("");
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("-------g_pViewAsHandle is NULL--------");
+ return;
+ }
+ if (g_pViewAsHandle->pPopUpHandle)
+ {
+ eext_object_event_callback_del(g_pViewAsHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_view_as_ctrl_cancel_btn_cb);
+ evas_object_event_callback_del(g_pViewAsHandle->pPopUpHandle, EVAS_CALLBACK_MOUSE_UP, __mp_view_as_ctrl_mouse_up_cb);
+ evas_object_smart_callback_del(g_pViewAsHandle->pPopUpHandle, "block,clicked", __mp_view_as_ctrl_cancel_btn_cb);
+ evas_object_smart_callback_del((Evas_Object*)mp_util_get_main_window_handle(), "rotation,changed", __mp_view_as_ctrl_rotate_cb);
+ }
+ MP_DEL_OBJ(g_pViewAsHandle->pGroupRadio);
+ MP_DEL_OBJ(g_pViewAsHandle->pGenList);
+ MP_DEL_OBJ(g_pViewAsHandle->pBox);
+ MP_DEL_OBJ(g_pViewAsHandle->pPopUpHandle);
+ MP_DEL_ITC(g_pViewAsHandle->stViewAsItc);
+ MP_FREE_STRING(g_pViewAsHandle);
+
+}
+
+void mp_view_as_ctrl_set_type(MpListViewAsType nViewAsType)
+{
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+
+ if (MP_LIST_VIEW_AS_NONE >= nViewAsType || nViewAsType >= MP_LIST_VIEW_AS_MAX)
+ {
+ VideoLogWarning("[WARNING] Value of View as type is not matched.");
+ nViewAsType = MP_LIST_VIEW_AS_THUMBNAIL_LIST;
+ }
+
+ g_pViewAsHandle->nCurrViewAsType = nViewAsType;
+
+ int nRet = preference_set_int(PREF_MP_VIDEO_VIEW_AS_TYPE_KEY, g_pViewAsHandle->nCurrViewAsType);
+ if (nRet)
+ {
+ VideoLogWarning("[WARNING] Fail to set pref value about list view as type.");
+ }
+}
+
+static char *__mp_view_as_ctrl_get_label_of_genlsit_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ int nIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text") || !strcmp(pPart, "elm.text.main.left"))
+ {
+ switch (nIndex)
+ {
+#ifdef VS_FEATURE_LIST_VIEW
+ case MP_LIST_VIEW_AS_NORMAL_LIST: return strdup(VIDEOS_VIEWASOPT_OPT_LIST);
+#endif
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ case MP_LIST_VIEW_AS_THUMBNAIL_LIST: return strdup(VIDEOS_VIEWASOPT_OPT_THUMBNAIL);
+#endif
+ case MP_LIST_VIEW_AS_FOLDER_LIST: return strdup(VIDEOS_VIEWASOPT_OPT_FOLDER);
+ }
+ }
+ return NULL;
+}
+
+static Evas_Object *__mp_view_as_ctrl_get_icon_of_genlsit_item_cb(const void *pUserData, Evas_Object *pObject, const char *pPart)
+{
+
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("");
+ return NULL;
+ }
+
+ int nIndex = (int)pUserData;
+ Evas_Object *pTmpRadio = NULL;
+ Evas_Object *pLayout = NULL;
+
+ if (!strcmp(pPart, "elm.swallow.end") || !strcmp(pPart, "elm.icon.2"))
+ {
+ pLayout = elm_layout_add(pObject);
+ elm_layout_theme_set(pLayout, "layout", "list/C/type.2", "default");
+
+ pTmpRadio = elm_radio_add(pLayout);
+ elm_radio_state_value_set(pTmpRadio, nIndex);
+ elm_radio_group_add(pTmpRadio, g_pViewAsHandle->pGroupRadio);
+
+ if (g_pViewAsHandle->nCurrViewAsType == nIndex)
+ {
+ elm_radio_value_set(g_pViewAsHandle->pGroupRadio, g_pViewAsHandle->nCurrViewAsType);
+ mp_view_as_ctrl_set_type(g_pViewAsHandle->nCurrViewAsType);
+ }
+
+ evas_object_smart_callback_add(pTmpRadio, "changed", __mp_view_as_ctrl_select_radio_cb, (void *)pUserData);
+ elm_layout_content_set(pLayout, "elm.swallow.content", pTmpRadio);
+
+ evas_object_show(pTmpRadio);
+ evas_object_show(pLayout);
+
+ }
+ return pLayout;
+
+}
+
+static void __mp_view_as_ctrl_cancel_btn_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_view_as_ctrl_hide();
+}
+
+static void __mp_view_as_ctrl_select_item_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("g_pViewAsHandle is ?NULL");
+ return;
+ }
+
+ if (!pEventInfo) {
+ VideoLogError("pEventInfo is NULL");
+ return;
+ }
+
+ int nIndex = 0;
+ Elm_Object_Item *pItem = (Elm_Object_Item *)pEventInfo;
+ Elm_Object_Item *pSelectedItem = elm_genlist_selected_item_get(pObject);
+ if (pSelectedItem)
+ {
+ elm_genlist_item_selected_set(pSelectedItem, EINA_FALSE);
+ }
+
+ nIndex = (int)elm_object_item_data_get(pItem);
+ if (nIndex == g_pViewAsHandle->nCurrViewAsType) {
+ VideoLogInfo("Current state");
+ mp_view_as_ctrl_hide();
+ } else {
+ g_pViewAsHandle->nCurrViewAsType = nIndex;
+ elm_radio_value_set(g_pViewAsHandle->pGroupRadio, g_pViewAsHandle->nCurrViewAsType);
+
+ mp_view_as_ctrl_set_type(g_pViewAsHandle->nCurrViewAsType);
+
+ ListViewAsCtrlCbFunc fFunc = g_pViewAsHandle->ListViewAsCtrlUserCbFunc;
+ mp_view_as_ctrl_hide();
+
+ if (fFunc)
+ {
+ fFunc();
+ }
+ }
+}
+
+static void __mp_view_as_ctrl_select_radio_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("");
+ return;
+ }
+
+ int nIndex = (int)pUserData;
+
+ g_pViewAsHandle->nCurrViewAsType = nIndex;
+ mp_view_as_ctrl_set_type(g_pViewAsHandle->nCurrViewAsType);
+
+ ListViewAsCtrlCbFunc fFunc = g_pViewAsHandle->ListViewAsCtrlUserCbFunc;
+ mp_view_as_ctrl_hide();
+
+ if (fFunc)
+ {
+ fFunc();
+ }
+}
+
+static void __mp_view_as_ctrl_mouse_up_cb(void *pUserData, Evas *pEvas, Evas_Object *pObject, void *pEventInfo)
+{
+ Evas_Event_Mouse_Up *pEvent = pEventInfo;
+
+ if (pEvent->button == 3)
+ {
+ mp_view_as_ctrl_hide();
+ }
+}
+
+static void __mp_view_as_ctrl_realized(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!event_info || !obj)
+ {
+ VideoLogError("event info is invalid");
+ return;
+ }
+ Elm_Object_Item *pItem = elm_genlist_last_item_get(obj);
+
+ if (pItem)
+ {
+ elm_object_item_signal_emit(pItem, "elm,state,bottomline,hide", "");
+ }
+}
+
+
+static void __mp_view_as_ctrl_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("pVideoListSortPopUpHandle IS null");
+ return;
+ }
+ if (g_pViewAsHandle->nListCount < VIDEO_POPUP_MIN_ITEMS)
+ {
+ return;
+ }
+ mp_widget_ctrl_set_popup_min_size(g_pViewAsHandle->pBox, g_pViewAsHandle->nListCount, VIDEOS_POPUP_114);
+
+}
+
+////////////////////////////////////////////////////////////
+// External function
+////////////////////////////////////////////////////////////
+
+bool mp_view_as_ctrl_show(int tabType, ListViewAsCtrlCbFunc pListViewAsCtrlCb)
+{
+ VideoLogInfo("");
+
+ if (pListViewAsCtrlCb == NULL)
+ {
+ VideoLogError("No have pListViewAsCtrlCb handle.");
+ return FALSE;
+ }
+
+ mp_view_as_ctrl_delete_handle();
+ g_pViewAsHandle = (stMpVideoViewAs*)calloc(1, sizeof(stMpVideoViewAs));
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("g_pViewAsHandle is NULL");
+ return FALSE;
+ }
+
+ g_pViewAsHandle->ListViewAsCtrlUserCbFunc = pListViewAsCtrlCb;
+ g_pViewAsHandle->nCurrTabType = tabType;
+ g_pViewAsHandle->nCurrViewAsType = mp_view_as_ctrl_get_type();
+
+ g_pViewAsHandle->pPopUpHandle = elm_popup_add(mp_util_get_main_window_handle());
+
+
+ //elm_object_style_set(pListViewAsPopUpHandle, "content_no_vhpad"); //menustyle
+ elm_object_style_set(g_pViewAsHandle->pPopUpHandle, "default"); //menustyle
+ elm_object_domain_translatable_part_text_set(g_pViewAsHandle->pPopUpHandle, "title,text", PACKAGE, VIDEOS_VIEWASPOP_HEADER_VIEW_AS);
+ evas_object_size_hint_weight_set(g_pViewAsHandle->pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ eext_object_event_callback_add(g_pViewAsHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_view_as_ctrl_cancel_btn_cb, NULL);
+ evas_object_event_callback_add(g_pViewAsHandle->pPopUpHandle, EVAS_CALLBACK_MOUSE_UP, __mp_view_as_ctrl_mouse_up_cb, NULL);
+ evas_object_smart_callback_add(g_pViewAsHandle->pPopUpHandle, "block,clicked", __mp_view_as_ctrl_cancel_btn_cb, NULL);
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "rotation,changed", __mp_view_as_ctrl_rotate_cb, NULL);
+
+ // Set item of Genlist.
+ MP_DEL_ITC(g_pViewAsHandle->stViewAsItc);
+ g_pViewAsHandle->stViewAsItc = elm_genlist_item_class_new();
+ g_pViewAsHandle->stViewAsItc->item_style = "default"; //"1text.1icon.2/popup";
+ g_pViewAsHandle->stViewAsItc->func.text_get = (void *)__mp_view_as_ctrl_get_label_of_genlsit_item_cb;
+ g_pViewAsHandle->stViewAsItc->func.content_get = (void *)__mp_view_as_ctrl_get_icon_of_genlsit_item_cb;
+ g_pViewAsHandle->stViewAsItc->func.state_get = NULL;
+ g_pViewAsHandle->stViewAsItc->func.del = NULL;
+
+ // Create genlist handle
+ g_pViewAsHandle->pGenList = elm_genlist_add(g_pViewAsHandle->pPopUpHandle);
+ evas_object_size_hint_weight_set(g_pViewAsHandle->pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pViewAsHandle->pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(g_pViewAsHandle->pGenList, "realized", __mp_view_as_ctrl_realized, NULL);
+
+ g_pViewAsHandle->pGroupRadio = elm_radio_add(g_pViewAsHandle->pGenList);
+
+ int nMax_view_list = 0;
+#ifdef VS_FEATURE_LIST_VIEW
+ elm_genlist_item_append(g_pViewAsHandle->pGenList, g_pViewAsHandle->stViewAsItc, (void *)MP_LIST_VIEW_AS_NORMAL_LIST, NULL, ELM_GENLIST_ITEM_NONE, __mp_view_as_ctrl_select_item_cb, NULL);
+ nMax_view_list++;
+#endif
+#ifdef VS_FEATURE_THUMBNAIL_VIEW
+ elm_genlist_item_append(g_pViewAsHandle->pGenList, g_pViewAsHandle->stViewAsItc, (void *)MP_LIST_VIEW_AS_THUMBNAIL_LIST, NULL, ELM_GENLIST_ITEM_NONE, __mp_view_as_ctrl_select_item_cb, NULL);
+ nMax_view_list++;
+#endif
+#ifdef ENABLE_STORE_VIEWAS
+ if (FOOTER_TAB_TYPE_PERSONAL == g_pViewAsHandle->nCurrTabType)
+ {
+ elm_genlist_item_append(g_pViewAsHandle->pGenList, g_pViewAsHandle->stViewAsItc, (void *)MP_LIST_VIEW_AS_FOLDER_LIST, NULL, ELM_GENLIST_ITEM_NONE, __mp_view_as_ctrl_select_item_cb, NULL);
+ nMax_view_list++;
+ }
+#else
+ elm_genlist_item_append(g_pViewAsHandle->pGenList, g_pViewAsHandle->stViewAsItc, (void *)MP_LIST_VIEW_AS_FOLDER_LIST, NULL, ELM_GENLIST_ITEM_NONE, __mp_view_as_ctrl_select_item_cb, NULL);
+ nMax_view_list++;
+#endif
+
+ g_pViewAsHandle->nListCount = nMax_view_list;
+
+ g_pViewAsHandle->pBox = elm_box_add(g_pViewAsHandle->pPopUpHandle);
+
+ mp_widget_ctrl_set_popup_min_size(g_pViewAsHandle->pBox, g_pViewAsHandle->nListCount, VIDEOS_POPUP_114);
+ evas_object_size_hint_weight_set(g_pViewAsHandle->pBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pViewAsHandle->pBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_box_pack_end(g_pViewAsHandle->pBox, g_pViewAsHandle->pGenList);
+ elm_object_content_set(g_pViewAsHandle->pPopUpHandle, g_pViewAsHandle->pBox);
+
+ evas_object_show(g_pViewAsHandle->pGenList);
+ evas_object_show(g_pViewAsHandle->pPopUpHandle);
+
+ return TRUE;
+}
+
+void mp_view_as_ctrl_hide(void)
+{
+ VideoLogInfo("");
+
+ mp_view_as_ctrl_delete_handle();
+}
+
+void mp_view_as_ctrl_change_language(void)
+{
+ if (!g_pViewAsHandle)
+ {
+ VideoLogError("g_pViewAsHandle is NULL");
+ return;
+ }
+
+ if (!g_pViewAsHandle->pGenList || !g_pViewAsHandle->pPopUpHandle)
+ {
+ VideoLogInfo("No existed genlist or popup handle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ elm_object_domain_translatable_part_text_set(g_pViewAsHandle->pPopUpHandle, "title,text", PACKAGE, VIDEOS_VIEWASPOP_HEADER_VIEW_AS);
+ elm_genlist_realized_items_update(g_pViewAsHandle->pGenList);
+
+}
+
+int mp_view_as_ctrl_get_type(void)
+{
+ int nValue = MP_LIST_VIEW_AS_NONE;
+
+ if (preference_get_int(PREF_MP_VIDEO_VIEW_AS_TYPE_KEY, &nValue) != 0) {
+ VideoLogInfo("Setting normal list type because of defending wrong value.");
+ mp_view_as_ctrl_set_type(MP_LIST_VIEW_AS_THUMBNAIL_LIST);
+ return MP_LIST_VIEW_AS_THUMBNAIL_LIST;
+ }
+
+ if (nValue <= MP_LIST_VIEW_AS_NONE || nValue >= MP_LIST_VIEW_AS_MAX) {
+ mp_view_as_ctrl_set_type(MP_LIST_VIEW_AS_THUMBNAIL_LIST);
+ return MP_LIST_VIEW_AS_THUMBNAIL_LIST;
+ }
+ return nValue;
+}
+
+
diff --git a/src/widget/mp-video-nocontent-layout.c b/src/widget/mp-video-nocontent-layout.c
new file mode 100644
index 0000000..9e7e32f
--- /dev/null
+++ b/src/widget/mp-video-nocontent-layout.c
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Elementary.h>
+
+#include "mp-video-nocontent-layout.h"
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+
+void
+mp_object_part_translate_set(Evas_Object *pObject, const char *ID,
+ const char *pPart)
+{
+ if (!pObject || !ID || !pPart) {
+ VideoLogError("pObject || ID || pPart == NULL!!!");
+ return;
+ }
+
+ const char *domain;
+ if (strstr(ID, "IDS_COM")) {
+ domain = "sys_string";
+ } else {
+ domain = NULL;
+ }
+ elm_object_domain_translatable_part_text_set(pObject, pPart, domain,
+ ID);
+}
+
+Evas_Object *mp_create_nocontent_layout(const Evas_Object *pParent,
+ const char *pText,
+ const char *pHelpText)
+{
+ Evas_Object *pLayout = NULL;
+
+ if (pParent == NULL) {
+ VideoLogError("pParent == NULL!!!");
+ VideoLogAssert(0);
+ return NULL;
+ }
+
+ if (pText == NULL) {
+ VideoLogError("pTextIds == NULL!!!");
+ VideoLogAssert(0);
+ return NULL;
+ }
+
+ VideoSecureLogInfo("pText : [%s], pHelpText : [%s]", pText,
+ pHelpText);
+
+ pLayout = elm_layout_add((Evas_Object *)pParent);
+ elm_layout_theme_set(pLayout, "layout", "nocontents", "text");
+
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLayout, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+
+ //mp_object_part_translate_set(pLayout, pText, "elm.text");
+ elm_object_part_text_set(pLayout, "elm.text", pText);
+
+ if (pHelpText != NULL) {
+ mp_object_part_translate_set(pLayout, pHelpText, "elm.help.text");
+ }
+ elm_layout_signal_emit(pLayout, "text,disabled", "");
+ elm_layout_signal_emit(pLayout, "align.center", "elm");
+
+ return pLayout;
+}
diff --git a/src/widget/mp-video-rename-ctrl.c b/src/widget/mp-video-rename-ctrl.c
new file mode 100644
index 0000000..3cc97f4
--- /dev/null
+++ b/src/widget/mp-video-rename-ctrl.c
@@ -0,0 +1,676 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-rename-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-util-widget-ctrl.h"
+#include "mp-video-info-ctrl.h"
+#include "vp-util.h"
+#include "vp-file-util.h"
+#include "mp-util-preference.h"
+#include "mp-util-config.h"
+#include "mp-video-list-view-select.h"
+
+
+typedef struct _VideoRenamePopup {
+ //obj
+ void *pNaviFrameHandle;
+ Evas_Object *pBaseLayout;
+ Evas_Object *pGenlist;
+ Evas_Object *pPopUpHandle;
+ Evas_Object *pPopupCancelBtn;
+ Evas_Object *pPopupOkBtn;
+ Evas_Object *pEntry;
+ Evas_Object *pEntryClearBtn;
+ Evas_Object *pEntryLayout;
+
+ //data
+ mpRenameCtrlCbFunc RenameCtrlUserCbFunc;
+ char *szSaveFileName;
+ char *szOldName;
+ char *szTempName;
+ int nVideoIndex;
+ bool bPersonalType;
+ bool bSetToEnd;
+ Ecore_Idler *pSetLineEndIdler;
+}stRenamePopup;
+
+
+stRenamePopup *g_pRenameHandle = NULL;
+
+//static void _MpRenameDeletePopupHandle(void);
+static bool __mp_rename_ctrl_check_valid_text(const char *text, int *nLen);
+static bool __mp_rename_ctrl_check_valid_all_space(const char *text);
+/*
+static void __mp_rename_ctrl_invalid_popup_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ Evas_Object *en = pUserData;
+
+ mp_util_delete_popup_handle();
+
+ elm_entry_cursor_end_set(en);
+ evas_object_show(en);
+ elm_object_focus_set(en, EINA_TRUE);
+}
+*/
+////////////////////////////////////////////////////////////
+// Callback function
+////////////////////////////////////////////////////////////
+static void __mp_rename_ctrl_cancel_btn_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_rename_ctrl_delete_handle();
+}
+
+static void __mp_rename_ctrl_timeout_cb(void *pUserData, Evas_Object *pObject, void *event_info) {
+ evas_object_del(pObject);
+
+ elm_entry_cursor_end_set(g_pRenameHandle->pEntry);
+ elm_object_focus_set(g_pRenameHandle->pEntry, EINA_TRUE);
+}
+
+static void __mp_rename_ctrl_ok_btn_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ Evas_Object *en = (Evas_Object *)pUserData;
+ if (!en || !g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ int nDstLen = 0;
+ if (!__mp_rename_ctrl_check_valid_text(g_pRenameHandle->szSaveFileName, &nDstLen)) {
+ mp_util_ticker_toast_with_timeout_cb_popup(VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS, __mp_rename_ctrl_timeout_cb);
+ return;
+ }
+
+ char *szFilePath = mp_util_svc_get_video_url(g_pRenameHandle->nVideoIndex);
+ if (!szFilePath) {
+ VideoLogError("szFilePath is NULL.");
+ mp_rename_ctrl_delete_handle();
+ return;
+ }
+
+ char *szFileExt = mp_info_ctrl_get_file_extension(szFilePath);
+ if (!szFileExt) {
+ VideoLogError("szFileExt is NULL.");
+ MP_FREE_STRING(szFilePath);
+ mp_rename_ctrl_delete_handle();
+ return;
+ }
+
+ char *szFileName = strrchr(szFilePath, '/');
+ if (!szFileName) {
+ VideoLogError("szFileName is NULL.");
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFileExt);
+ mp_rename_ctrl_delete_handle();
+ return;
+ }
+
+ int nLastPlayedTime = mp_util_svc_get_video_last_play_time_by_video_url(szFilePath);
+
+ char *szLocation = NULL;
+ szLocation = g_strndup(szFilePath, strlen(szFilePath) - strlen(szFileName));
+
+ if (!szLocation) {
+ VideoLogError("szLocation is NULL.");
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFileExt);
+ mp_rename_ctrl_delete_handle();
+ return;
+ }
+
+ char *szNewFile = g_strdup_printf("%s/%s.%s", szLocation, g_pRenameHandle->szSaveFileName, szFileExt);
+
+ if (!szNewFile || vp_file_exists(szNewFile)) {
+ VideoLogInfo("szNewFile is %s.", szNewFile);
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFileExt);
+ MP_FREE_STRING(szLocation);
+// mp_rename_ctrl_delete_handle();
+
+ mp_util_ticker_toast_with_timeout_cb_popup(VIDEOS_NOTIPOP_MSG_ALREADY_EXISTS, __mp_rename_ctrl_timeout_cb);
+
+ return;
+ }
+
+ if (strcmp(szNewFile, szFilePath) != 0) {
+ VideoLogInfo("Correct new name style");
+ char *szNewPath = NULL;
+ int ret = mp_util_rename_file((const char *)szFilePath, (const char *)szNewFile, &szNewPath);
+
+ if (!szNewPath) {
+ VideoLogError("szNewPath is NULL.");
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFileExt);
+ MP_FREE_STRING(szLocation);
+ MP_FREE_STRING(szNewFile);
+ mp_rename_ctrl_delete_handle();
+ return;
+ }
+
+ if (ret != 0) {
+ VideoLogError("mp_util_rename_file failed");
+ } else {
+ mp_util_svc_move_to_db(g_pRenameHandle->nVideoIndex, szNewPath);
+ mp_util_svc_set_video_last_played_time_by_url(szNewFile, nLastPlayedTime);
+ }
+
+ char *szMediaUrl = mp_util_config_get_preview();
+ if (szMediaUrl) {
+ if (!strcmp(szFilePath, szMediaUrl)) {
+ mp_util_config_set_preview(szNewFile);
+ mp_util_svc_set_video_last_played_time_by_url(szNewFile, nLastPlayedTime);
+ }
+ }
+
+ MP_FREE_STRING(szFilePath);
+ MP_FREE_STRING(szFileExt);
+ MP_FREE_STRING(szLocation);
+ MP_FREE_STRING(szNewFile);
+
+ if (g_pRenameHandle->RenameCtrlUserCbFunc) {
+ g_pRenameHandle->RenameCtrlUserCbFunc();
+ }
+ }
+
+ MP_FREE_STRING(szFileExt);
+
+ mp_rename_ctrl_delete_handle();
+}
+
+static void __mp_rename_ctrl_entry_max_len_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ //mp_util_info_popup(VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, __MpRenameEntryMaxLenBackCb, pUserData, VIDEOS_STRING);
+ mp_util_ticker_toast_popup(VIDEOS_NOTIPOP_MSG_MAX_NUM_OF_CHARACTERS, false, false);
+}
+
+static void __mp_rename_ctrl_entry_activate_cb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ if (!pObject) {
+ VideoLogError("pObject is NULL");
+ return;
+ }
+
+ char *entry_data = (char *)elm_entry_entry_get(pObject);
+ char *szFileName = elm_entry_markup_to_utf8(entry_data);
+
+ if (!szFileName) {
+ VideoLogError("failed to get text");
+ return;
+ }
+ VideoLogInfo("title is %s", szFileName);
+
+ MP_FREE_STRING(g_pRenameHandle->szSaveFileName);
+ if (!strlen(szFileName)) {
+ VideoLogWarning("title is empty");
+ }
+ else {
+ g_pRenameHandle->szSaveFileName = g_strdup(szFileName);
+ }
+
+ MP_FREE_STRING(szFileName);
+}
+
+static Eina_Bool __mp_rename_ctrl_entry_set_line_end(void *pUserData)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("pUserData is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ Evas_Object *pObj = pUserData;
+
+ g_pRenameHandle->pSetLineEndIdler = NULL;
+ g_pRenameHandle->bSetToEnd = FALSE;
+
+ elm_entry_cursor_line_end_set(pObj);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __mp_rename_ctrl_entry_clear_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ Evas_Object *en = (Evas_Object *)data;
+ elm_entry_entry_set(en, "");
+ MP_FREE_STRING(g_pRenameHandle->szTempName);
+}
+
+static void __mp_rename_ctrl_entry_changed_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ if (!pObj) {
+ VideoLogError("pObj is NULL");
+ return;
+ }
+ VideoLogInfo("");
+
+ Evas_Object *en = pObj;
+
+ char *entry_data = (char *)elm_entry_entry_get(en);
+ char *szFileName = elm_entry_markup_to_utf8(entry_data);
+ int nDstLen = 0;
+ bool isEmpty = elm_entry_is_empty(en);
+
+ if (!szFileName) {
+ VideoLogError("failed to get text");
+ return;
+ }
+
+ if (isEmpty) {
+ VideoLogInfo("Entry is empty");
+ elm_object_part_content_unset(g_pRenameHandle->pEntryLayout, "elm.swallow.end");
+ evas_object_hide(g_pRenameHandle->pEntryClearBtn);
+ } else {
+ elm_object_part_content_set(g_pRenameHandle->pEntryLayout, "elm.swallow.end", g_pRenameHandle->pEntryClearBtn);
+ evas_object_show(g_pRenameHandle->pEntryClearBtn);
+ }
+
+ MP_FREE_STRING(g_pRenameHandle->szSaveFileName);
+ if (isEmpty || !__mp_rename_ctrl_check_valid_all_space(szFileName))
+ {
+ VideoLogWarning("Title is empty or title consists of only spaces");
+ if (g_pRenameHandle->pPopupOkBtn) {
+ elm_object_disabled_set(g_pRenameHandle->pPopupOkBtn, EINA_TRUE);
+ }
+ } else if (!__mp_rename_ctrl_check_valid_text(szFileName, &nDstLen))
+ {
+ VideoLogWarning("New file name is invalid.");
+ if (!g_strcmp0(g_pRenameHandle->szOldName, szFileName)) {
+ elm_object_disabled_set(g_pRenameHandle->pPopupOkBtn, EINA_TRUE);
+ VideoLogInfo("it is the old name");
+ } else {
+ int position = elm_entry_cursor_pos_get(en);
+ elm_entry_entry_set(en, elm_entry_utf8_to_markup(g_pRenameHandle->szTempName));
+ elm_entry_cursor_begin_set(en);
+ elm_entry_cursor_pos_set(en, position - 1);
+
+ mp_util_status_bar_noti_popup_show(VIDEOS_NOTIPOP_MSG_INVALID_CHARACTERS);
+ MP_FREE_STRING(szFileName);
+ return;
+ }
+ } else {
+ g_pRenameHandle->szSaveFileName = g_strdup(szFileName);
+ if (!g_strcmp0(g_pRenameHandle->szOldName, szFileName)) {
+ elm_object_disabled_set(g_pRenameHandle->pPopupOkBtn, EINA_TRUE);
+ VideoLogInfo("it is the old name");
+ elm_entry_select_all(en);
+ elm_entry_cursor_end_set(en);
+ } else {
+ elm_object_disabled_set(g_pRenameHandle->pPopupOkBtn, EINA_FALSE);
+ }
+ }
+ MP_FREE_STRING(g_pRenameHandle->szTempName);
+ g_pRenameHandle->szTempName = strdup(szFileName);
+ if (g_pRenameHandle->bSetToEnd) {
+ MP_DEL_IDLER(g_pRenameHandle->pSetLineEndIdler);
+ g_pRenameHandle->pSetLineEndIdler = ecore_idler_add(__mp_rename_ctrl_entry_set_line_end, pObj);
+ }
+ MP_FREE_STRING(szFileName);
+}
+
+static void __mp_rename_ctrl_entry_clicked_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ Evas_Object *en = (Evas_Object *)pObj;
+ elm_entry_select_none(en);
+}
+
+static void __mp_rename_ctrl_entry_long_pressed_cb(void *pUserData, Evas_Object *pObj, void *pEvent)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ Evas_Object *en = (Evas_Object *)pObj;
+ evas_object_smart_callback_del (en, "clicked", (Evas_Smart_Cb) __mp_rename_ctrl_entry_clicked_cb);
+}
+////////////////////////////////////////////////////////////
+// Internal function
+////////////////////////////////////////////////////////////
+static bool __mp_rename_ctrl_check_valid_text(const char *text, int *nLen)
+{
+ if (!text) {
+ return FALSE;
+ }
+
+ char pattern[] = { '/', '\\', ':', '*', '?', '"', '<', '>', '|', '\0' };
+ const char *tmp = text;
+ int nSrcLen = 0;
+
+ /* hidden property check */
+ if (strncmp(tmp, ".", strlen(".")) == 0) {
+ return FALSE;
+ }
+
+ /* check bad character */
+ while (*tmp != '\0') {
+ if (strchr(pattern, *tmp) != NULL) {
+ VideoLogError("Invalid text=%s char=%c", text, *tmp);
+ *nLen = nSrcLen;
+ return FALSE;
+ }
+ nSrcLen++;
+ tmp++;
+ }
+
+ *nLen = nSrcLen;
+ return TRUE;
+}
+
+static bool __mp_rename_ctrl_check_valid_all_space(const char *text)
+{
+ if (!text) {
+ return FALSE;
+ }
+
+ const char *tmp = text;
+
+ /* check all space */
+ while (*tmp != '\0') {
+
+ if (' ' != *tmp) {
+ return TRUE;
+ }
+ tmp++;
+ }
+
+ return FALSE;
+}
+
+static void __mp_rename_ctrl_set_save_file_name()
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+
+ if (g_pRenameHandle->szSaveFileName) {
+ MP_FREE_STRING(g_pRenameHandle->szSaveFileName);
+ g_pRenameHandle->szSaveFileName = NULL;
+ }
+ char *szTitle = NULL;
+ char *szPath = mp_util_svc_get_video_url(g_pRenameHandle->nVideoIndex);
+ szTitle = mp_util_get_title_from_path(szPath);
+ g_pRenameHandle->szSaveFileName = g_strdup(szTitle);
+
+ MP_FREE_STRING(szPath);
+ MP_FREE_STRING(szTitle);
+}
+
+static void __mp_rename_view_rotate_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!g_pRenameHandle) {
+ VideoLogError("__mp_rename_view_rotate_cb IS null");
+ return;
+ }
+ VideoLogInfo("");
+ mp_select_view_arrange_video_list(g_pRenameHandle->pGenlist, FALSE);
+}
+
+////////////////////////////////////////////////////////////
+// External function
+////////////////////////////////////////////////////////////
+
+Evas_Object *mp_rename_ctrl_show(void *pNaviFrameHandle, void *pUserData, mpRenameCtrlCbFunc pRenameCtrlCb, int nVideoItemIndex)
+{
+ VideoLogInfo("");
+
+ if (nVideoItemIndex < 0) {
+ VideoLogError("nVideoItemIndex is INVALID = %d", nVideoItemIndex);
+ return FALSE;
+ }
+
+ mp_rename_ctrl_delete_handle();
+
+ g_pRenameHandle = (stRenamePopup*)calloc(1, sizeof(stRenamePopup));
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return FALSE;
+ }
+
+ g_pRenameHandle->pNaviFrameHandle = pNaviFrameHandle;
+ g_pRenameHandle->RenameCtrlUserCbFunc = pRenameCtrlCb;
+ g_pRenameHandle->nVideoIndex = nVideoItemIndex;
+ g_pRenameHandle->bSetToEnd = TRUE;
+
+ char *pVideoFile = mp_util_svc_get_video_url(g_pRenameHandle->nVideoIndex);
+ char *szFileExt = mp_info_ctrl_get_file_extension(pVideoFile);
+ g_pRenameHandle->bPersonalType = mp_util_check_video_personal_status((const char*)pVideoFile);
+
+ mp_widget_ctrl_disable_navi_handle_focus_except_item(g_pRenameHandle->pNaviFrameHandle, NULL);
+
+ evas_object_smart_callback_add((Evas_Object*)mp_util_get_main_window_handle(), "wm,rotation,changed", __mp_rename_view_rotate_cb, NULL);
+
+ Evas_Object *pLayout = NULL;
+ //mp_util_svc_set_update_db_cb_func(pRenameCtrlCb);
+
+ //Create popup
+ g_pRenameHandle->pBaseLayout = elm_layout_add(g_pRenameHandle->pNaviFrameHandle);
+ elm_layout_file_set(g_pRenameHandle->pBaseLayout, VIDEO_CUSTOM_THEME, "transparent_layout");
+
+ g_pRenameHandle->pGenlist = elm_genlist_add(g_pRenameHandle->pBaseLayout);
+ elm_scroller_bounce_set(g_pRenameHandle->pGenlist, EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(g_pRenameHandle->pGenlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pRenameHandle->pGenlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(g_pRenameHandle->pGenlist);
+ elm_object_part_content_set(g_pRenameHandle->pBaseLayout, "base_bg", g_pRenameHandle->pGenlist);
+ mp_select_view_arrange_video_list(g_pRenameHandle->pGenlist, FALSE);
+
+ evas_object_size_hint_weight_set(g_pRenameHandle->pBaseLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(g_pRenameHandle->pBaseLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(g_pRenameHandle->pBaseLayout);
+ g_pRenameHandle->pPopUpHandle = elm_popup_add(g_pRenameHandle->pNaviFrameHandle);
+
+ //elm_object_style_set(g_pRenameHandle->pPopUpHandle, "no_effect");
+ eext_object_event_callback_add(g_pRenameHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_rename_ctrl_cancel_btn_cb, pUserData);
+
+ elm_object_part_text_set(g_pRenameHandle->pPopUpHandle, "title,text", VIDEOS_RENAMEPOP_HEADER_RENAME);
+ evas_object_size_hint_weight_set(g_pRenameHandle->pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ //evas_object_smart_callback_add(mp_util_get_main_conformat(), "virtualkeypad,state,on", __mp_rename_ctrl_keypad_on, g_pRenameHandle->pPopUpHandle);
+ //evas_object_smart_callback_add(mp_util_get_main_conformat(), "virtualkeypad,state,off", __mp_rename_ctrl_keypad_off, g_pRenameHandle->pPopUpHandle);
+
+ pLayout = elm_layout_add(g_pRenameHandle->pPopUpHandle);
+ elm_layout_file_set(pLayout, VIDEO_CUSTOM_THEME, "pv.popup.entry");
+
+ //Create entry
+ Evas_Object *en = NULL;
+ en = elm_entry_add(pLayout);
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+
+ elm_entry_cnp_mode_set(en, ELM_CNP_MODE_PLAINTEXT);
+ elm_entry_input_panel_layout_set(en, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ elm_entry_editable_set(en, TRUE);
+ elm_entry_input_panel_return_key_type_set(en, ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT);
+ elm_entry_input_panel_return_key_disabled_set(en, EINA_FALSE);
+ elm_entry_prediction_allow_set(en, EINA_TRUE);
+ g_pRenameHandle->pEntryLayout = pLayout;
+
+ static Elm_Entry_Filter_Limit_Size limit_filter_data;
+ limit_filter_data.max_char_count = VIDEO_FILE_SEARCH_CHAR_LEN_MAX;
+ limit_filter_data.max_byte_count = 0;
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data);
+
+ evas_object_smart_callback_add(en, "maxlength,reached", __mp_rename_ctrl_entry_max_len_cb, pUserData);
+ evas_object_smart_callback_add(en, "activated", __mp_rename_ctrl_entry_activate_cb, pUserData);
+ evas_object_smart_callback_add(en, "changed", __mp_rename_ctrl_entry_changed_cb, pUserData);
+ evas_object_smart_callback_add(en, "preedit,changed", __mp_rename_ctrl_entry_changed_cb, pUserData);
+ evas_object_smart_callback_add(en, "clicked", __mp_rename_ctrl_entry_clicked_cb, pUserData);
+ evas_object_smart_callback_add(en, "longpressed", __mp_rename_ctrl_entry_long_pressed_cb, pUserData);
+
+ __mp_rename_ctrl_set_save_file_name();
+ MP_FREE_STRING(g_pRenameHandle->szOldName);
+ g_pRenameHandle->szOldName = g_strdup(g_pRenameHandle->szSaveFileName);
+ char *pNameUtf8 = elm_entry_utf8_to_markup(g_pRenameHandle->szSaveFileName);
+ elm_entry_entry_set(en, pNameUtf8);
+ MP_FREE_STRING(pNameUtf8);
+ elm_object_focus_set(en, EINA_TRUE);
+ g_pRenameHandle->pEntry = en;
+ elm_entry_select_all(en);
+ elm_entry_cursor_end_set(en);
+
+ elm_object_part_content_set(pLayout, "elm.swallow.content", en);
+ elm_object_content_set(g_pRenameHandle->pPopUpHandle, pLayout);
+
+ g_pRenameHandle->pEntryClearBtn = elm_button_add(pLayout);
+ elm_object_style_set(g_pRenameHandle->pEntryClearBtn, "clear");
+ elm_object_part_content_set(pLayout, "elm.swallow.end", g_pRenameHandle->pEntryClearBtn);
+ elm_object_signal_callback_add(g_pRenameHandle->pEntryClearBtn, "elm,action,click", "", __mp_rename_ctrl_entry_clear_cb, (void*)en);
+ evas_object_show(g_pRenameHandle->pEntryClearBtn);
+
+ g_pRenameHandle->pPopupCancelBtn = elm_button_add(g_pRenameHandle->pPopUpHandle);
+ elm_object_style_set (g_pRenameHandle->pPopupCancelBtn, "popup");
+ elm_object_domain_translatable_text_set(g_pRenameHandle->pPopupCancelBtn, VIDEOS_STRING, VIDEOS_COMMON_BUTTON_CANCEL_IDS);
+ elm_object_part_content_set(g_pRenameHandle->pPopUpHandle, "button1", g_pRenameHandle->pPopupCancelBtn);
+ evas_object_smart_callback_add(g_pRenameHandle->pPopupCancelBtn, "clicked", __mp_rename_ctrl_cancel_btn_cb, pUserData);
+
+ g_pRenameHandle->pPopupOkBtn = elm_button_add(g_pRenameHandle->pPopUpHandle);
+ elm_object_style_set (g_pRenameHandle->pPopupOkBtn, "popup");
+ //elm_object_text_set(g_pRenameHandle->pPopupOkBtn, VIDEOS_RENAMEPOP_BUTTON_RENAME);
+ elm_object_domain_translatable_text_set(g_pRenameHandle->pPopupOkBtn, VIDEOS_STRING, VIDEOS_COMMON_BUTTON_RENAME_IDS);
+ elm_object_part_content_set(g_pRenameHandle->pPopUpHandle, "button2", g_pRenameHandle->pPopupOkBtn);
+ evas_object_smart_callback_add(g_pRenameHandle->pPopupOkBtn, "clicked", __mp_rename_ctrl_ok_btn_cb, en);
+ elm_object_disabled_set(g_pRenameHandle->pPopupOkBtn, EINA_TRUE);
+
+ evas_object_show(g_pRenameHandle->pPopUpHandle);
+
+ MP_FREE_STRING(szFileExt);
+ MP_FREE_STRING(pVideoFile);
+ return g_pRenameHandle->pBaseLayout;
+}
+
+bool mp_rename_ctrl_is_top_view()
+{
+ if (!g_pRenameHandle)
+ {
+ VideoLogInfo("RenamePopUp is not shown");
+ return FALSE;
+ }
+ return TRUE;
+
+}
+
+void mp_rename_ctrl_set_focus()
+{
+ if (!g_pRenameHandle)
+ {
+ VideoLogInfo("RenamePopUp is not shown");
+ return;
+ }
+
+ VideoLogInfo("");
+ elm_object_focus_set(g_pRenameHandle->pEntry, EINA_TRUE);
+}
+void mp_rename_ctrl_focus_out_cb(void) {
+ if (g_pRenameHandle->pPopUpHandle)
+ {
+ eext_object_event_callback_del(g_pRenameHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_rename_ctrl_cancel_btn_cb);
+ }
+
+ if (g_pRenameHandle->pPopUpHandle)
+ {
+ evas_object_smart_callback_del(g_pRenameHandle->pPopupCancelBtn, "clicked", __mp_rename_ctrl_cancel_btn_cb);
+ }
+ MP_DEL_OBJ(g_pRenameHandle->pPopupOkBtn);
+ MP_DEL_OBJ(g_pRenameHandle->pPopupCancelBtn);
+ MP_DEL_OBJ(g_pRenameHandle->pPopUpHandle);
+}
+
+void mp_rename_ctrl_delete_handle(void)
+{
+ VideoLogInfo("");
+ if (!g_pRenameHandle) {
+ VideoLogError("g_pRenameHandle is NULL");
+ return;
+ }
+ if (g_pRenameHandle->pPopUpHandle)
+ {
+ eext_object_event_callback_del(g_pRenameHandle->pPopUpHandle, EEXT_CALLBACK_BACK, __mp_rename_ctrl_cancel_btn_cb);
+ }
+
+ if (g_pRenameHandle->pPopUpHandle)
+ {
+ evas_object_smart_callback_del(g_pRenameHandle->pPopupCancelBtn, "clicked", __mp_rename_ctrl_cancel_btn_cb);
+ }
+
+ if (g_pRenameHandle->pPopupOkBtn)
+ {
+ evas_object_smart_callback_del(g_pRenameHandle->pPopupOkBtn, "clicked", __mp_rename_ctrl_ok_btn_cb);
+ }
+
+ mp_widget_ctrl_enable_navi_handle_focus(g_pRenameHandle->pNaviFrameHandle);
+ MP_DEL_IDLER(g_pRenameHandle->pSetLineEndIdler);
+ MP_DEL_OBJ(g_pRenameHandle->pPopupOkBtn);
+ MP_DEL_OBJ(g_pRenameHandle->pPopupCancelBtn);
+ MP_DEL_OBJ(g_pRenameHandle->pPopUpHandle);
+ MP_FREE_STRING(g_pRenameHandle->szSaveFileName);
+ MP_FREE_STRING(g_pRenameHandle->szOldName);
+ MP_FREE_STRING(g_pRenameHandle->szTempName);
+ //evas_object_smart_callback_del(mp_util_get_main_conformat(), "virtualkeypad,state,on", __mp_rename_ctrl_popup_sip_on_cb);
+ //evas_object_smart_callback_del(mp_util_get_main_conformat(), "virtualkeypad,state,off", __mp_rename_ctrl_popup_sip_off_cb);
+ Evas_Object *pTopNaviFrame = NULL;
+ pTopNaviFrame = elm_naviframe_item_pop(g_pRenameHandle->pNaviFrameHandle);
+ evas_object_del(pTopNaviFrame);
+ MP_FREE_STRING(g_pRenameHandle);
+}
+
diff --git a/src/widget/mp-video-view-popup-ctrl.c b/src/widget/mp-video-view-popup-ctrl.c
new file mode 100644
index 0000000..c401bf4
--- /dev/null
+++ b/src/widget/mp-video-view-popup-ctrl.c
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <glib.h>
+#include <app_preference.h>
+
+#include <Eina.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-view-popup-ctrl.h"
+#include "mp-video-list-view-main.h"
+#include "mp-util-widget-ctrl.h"
+#include "vp-util.h"
+
+#define PREF_MP_VIDEO_CONTENT_DISPLAYER_TYPE_KEY "preference/org.tizen.videos/storage_type"
+
+
+typedef struct __list_view_ctr {
+ Evas_Object *pLVPopUpHandle;
+ Evas_Object *pLVGroupRadio;
+ Evas_Object *pLVGenList;
+ Evas_Object *pBox;
+
+ int nListCount;
+ MpListItemType nCurrViewType;
+ Elm_Genlist_Item_Class *lv_Itc;
+ ListViewCtrlCbFunc pListViewCtrlCbFunc;
+} st_list_view_ctr;
+
+static st_list_view_ctr *g_list_view_data = NULL;
+
+static void __mp_view_ctrl_btn_asc_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo);
+
+void mp_view_ctrl_set_type(MpListItemType nViewType)
+{
+ if (!g_list_view_data) {
+ VideoLogError("");
+ return;
+ }
+
+ if (MP_LIST_VIEW_NONE >= nViewType || nViewType >= MP_LIST_VIEW_MAX) {
+ VideoLogWarning
+ ("[WARNING] Value of View as type is not matched.");
+ nViewType = MP_LIST_VIEW_ALL;
+ }
+
+ g_list_view_data->nCurrViewType = nViewType;
+
+ int nRet =
+ preference_set_int(PREF_MP_VIDEO_CONTENT_DISPLAYER_TYPE_KEY,
+ g_list_view_data->nCurrViewType);
+ if (nRet) {
+ VideoLogWarning
+ ("[WARNING] Fail to set value about list view type.");
+ }
+}
+
+void mp_view_ctrl_delete_handle(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("pUserData is NULL");
+ return;
+ }
+ st_list_view_ctr *pLVData = (st_list_view_ctr *) pUserData;
+ if (pLVData->pLVPopUpHandle) {
+ eext_object_event_callback_del(pLVData->pLVPopUpHandle,
+ EEXT_CALLBACK_BACK,
+ __mp_view_ctrl_btn_asc_cb);
+ evas_object_smart_callback_del(pLVData->pLVPopUpHandle,
+ "block,clicked",
+ __mp_view_ctrl_btn_asc_cb);
+ }
+ MP_DEL_ITC(pLVData->lv_Itc);
+ MP_DEL_OBJ(pLVData->pLVGroupRadio);
+ MP_DEL_OBJ(pLVData->pLVGenList);
+ MP_DEL_OBJ(pLVData->pBox);
+ MP_DEL_OBJ(pLVData->pLVPopUpHandle);
+ MP_FREE_STRING(pLVData);
+ g_list_view_data = NULL;
+
+ VideoLogInfo("end");
+}
+
+static void __mp_view_ctrl_btn_asc_cb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ mp_view_ctrl_hide();
+}
+
+/*//////////////////////////////////////////////////////////*/
+/* External function*/
+/*//////////////////////////////////////////////////////////*/
+bool mp_view_ctrl_show(ListViewCtrlCbFunc pListViewCtrlCb)
+{
+ VideoLogInfo("disable cloud module.");
+ return false;
+}
+
+void mp_view_ctrl_hide(void)
+{
+ VideoLogInfo("");
+
+ if (!g_list_view_data) {
+ VideoLogInfo("g_list_view_data is NULL.");
+ return;
+ }
+
+ mp_view_ctrl_delete_handle(g_list_view_data);
+}
+
+void mp_view_ctrl_change_language(void)
+{
+ return;
+}
+
+int mp_view_ctrl_get_list_type(void)
+{
+ return MP_LIST_VIEW_ALL;
+}
diff --git a/video-downloader/CMakeLists.txt b/video-downloader/CMakeLists.txt
new file mode 100755
index 0000000..32d2238
--- /dev/null
+++ b/video-downloader/CMakeLists.txt
@@ -0,0 +1,39 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(video-downloader C CXX)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(VERSION 0.1.0)
+
+SET(SRCS
+ src/VppDownload.c
+)
+
+INCLUDE_DIRECTORIES(
+ include
+ ${CMAKE_SOURCE_DIR}/include/
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED
+ ecore
+ eina
+ glib-2.0
+ capi-web-url-download
+)
+
+FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS})
+ SET(EXTRA_FLAGS "${EXTRA_FLAGS} ${flag}")
+ENDFOREACH(flag)
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DLOG_LVL=DBG_MSG_LVL_HIGH")
+
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS})
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} )
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
+#SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS ${EXTRA_FLAGS})
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS})
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
diff --git a/video-downloader/include/VppDownload.h b/video-downloader/include/VppDownload.h
new file mode 100644
index 0000000..a4e7db1
--- /dev/null
+++ b/video-downloader/include/VppDownload.h
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 __VPP_DOWNLOAD_H__
+#define __VPP_DOWNLOAD_H__
+
+
+#include <stdbool.h>
+
+
+/* downloader handle */
+typedef void *VppDownloadHandle;
+
+
+/**
+ * @brief Enumerations of download state
+ */
+typedef enum
+{
+ VPP_DOWNLOAD_STATE_AGENT_ERROR = -2, /**< agent error */
+ VPP_DOWNLOAD_STATE_APP_ERROR = -1, /**< application error */
+ VPP_DOWNLOAD_STATE_NONE = 0, /**< download_state_e : DOWNLOAD_STATE_NONE */
+ VPP_DOWNLOAD_STATE_READY, /**< download_state_e : DOWNLOAD_STATE_READY */
+ VPP_DOWNLOAD_STATE_QUEUED, /**< download_state_e : DOWNLOAD_STATE_QUEUED */
+ VPP_DOWNLOAD_STATE_DOWNLOADING, /**< download_state_e : DOWNLOAD_STATE_DOWNLOADING */
+ VPP_DOWNLOAD_STATE_PAUSED, /**< download_state_e : DOWNLOAD_STATE_PAUSED */
+ VPP_DOWNLOAD_STATE_COMPLETED, /**< download_state_e : DOWNLOAD_STATE_COMPLETED */
+ VPP_DOWNLOAD_STATE_FAILED, /**< download_state_e : DOWNLOAD_STATE_FAILED */
+ VPP_DOWNLOAD_STATE_CANCELED, /**< download_state_e : DOWNLOAD_STATE_CANCELED */
+} VppDownloadState;
+
+
+/**
+ * @brief Enumerations of download item type
+ */
+typedef enum
+{
+ VPP_DOWNLOAD_ITEM_TYPE_NONE = 0, /**< NONE */
+
+ VPP_DOWNLOAD_ITEM_TYPE_VIDEO_FILE, /**< video file */
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // these values only supprot store
+ VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE, /**< store video file */
+ VPP_DOWNLOAD_ITEM_TYPE_VIDEO_INDEX_FILE, /**< store video infex file. It will be reomved when download video file is completed. */
+ VPP_DOWNLOAD_ITEM_TYPE_VIDEO_CAPTION_FILE, /**< store video caption file */
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ VPP_DOWNLOAD_ITEM_TYPE_THUMBNAIL_IMAGE, /* product thumbnail image */
+ VPP_DOWNLOAD_ITEM_TYPE_LARGE_POSTER_IMAGE, /* product large poster image */
+ VPP_DOWNLOAD_ITEM_TYPE_CATEGORY_IMAGE, /* category thumbnail image */
+ VPP_DOWNLOAD_ITEM_TYPE_RATING_IMAGE, /* user rating image */
+ VPP_DOWNLOAD_ITEM_TYPE_CAPION_FILE, /* caption file */
+} VppDownloadItemType;
+
+
+/* downloader callback */
+typedef void (*vpp_dl_progress_cb) ( VppDownloadHandle pHandle, unsigned long long received, unsigned long long total, void *userData );
+typedef void (*vpp_dl_state_changed_cb) ( VppDownloadHandle pHandle, VppDownloadState eState, const char *pPath, void *userData );
+
+
+// download callback structure
+typedef struct
+{
+ vpp_dl_progress_cb progressCb;
+ vpp_dl_state_changed_cb stateChangedCb;
+}VppDownloadCallback;
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+VppDownloadHandle VppDownloadCreateItem( const char *pUrl, const char *pDstFolder, const char *pDstName, VppDownloadItemType eType, VppDownloadCallback cb, void *userData );
+VppDownloadHandle VppDownloadCreateItemById( int nId, const char *pUrl, const char *pDstFolder, const char *pDstName, VppDownloadItemType eType, VppDownloadCallback cb, void *userData );
+
+void VppDownloadDestroyItem( VppDownloadHandle pHandle );
+void VppDownloadDestroyItemById( int nId );
+void VppDownloadClearItem( VppDownloadHandle pHandle );
+
+bool VppDownloadStartVideoStoreVideoItem( VppDownloadHandle pHandle, void *pOnGoingServiceData, void*pCompleteServiceData ); // pServiceData is app control. It is service extra data at quickpanel service.
+
+
+bool VppDownloadSetCb( VppDownloadHandle pHandle, VppDownloadCallback cb, void *userData );
+bool VppDownloadUnsetCb( VppDownloadHandle pHandle );
+
+bool VppDownloadRequestAppend( VppDownloadHandle pHandle );
+bool VppDownloadRequestPrepend( VppDownloadHandle pHandle );
+
+bool VppDownloadPause( VppDownloadHandle pHandle );
+bool VppDownloadResume( VppDownloadHandle pHandle );
+
+bool VppDownloadCancel( VppDownloadHandle pHandle );
+
+bool VppDownloadStoreVideoRestore( VppDownloadHandle pHandle );
+
+VppDownloadState VppDownloadGetState( VppDownloadHandle pHandle );
+VppDownloadState VppDownloadGetStateById( int nDownloadId );
+
+char *VppDownloadGetDownloadedFilePath( VppDownloadHandle pHandle );
+int VppDownloadGetDownloadId( VppDownloadHandle pHandle );
+
+bool VppDownloadSetNotificationAppControl( VppDownloadHandle pHandle, void *pData );
+void* VppDownloadGetNotificationAppControl( VppDownloadHandle pHandle );
+
+void VppDownloadResetUserData(void *pDataItem);
+
+#ifdef _cplusplus
+}
+#endif
+
+
+#endif // __VPP_DOWNLOAD_H__
+
diff --git a/video-downloader/src/VppDownload.c b/video-downloader/src/VppDownload.c
new file mode 100644
index 0000000..957f34d
--- /dev/null
+++ b/video-downloader/src/VppDownload.c
@@ -0,0 +1,1592 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <Ecore.h>
+#include <Ecore_File.h>
+#include <Eina.h>
+#include <glib.h>
+#include <app_control.h>
+#include <download.h>
+
+#include "mp-video-log.h"
+#include "VppDownload.h"
+#include "vp-file-util.h"
+
+/* download cb type. for download pipe data */
+typedef enum
+{
+ VPP_DOWNLOAD_CB_TYPE_STATE_CHANGED,
+ VPP_DOWNLOAD_CB_TYPE_PROGRESS,
+}VppDownloadCbType;
+
+
+// download item
+typedef struct
+{
+ int id; /* downloader id */
+
+ char *pDownloadUrl; /* download url */
+ char *pDstFolder; /* destination path */
+ char *pDstName; /* destination path */
+
+ char *pTempPath; /* tepmdownload path */
+ char *pEtag; /* eTag */
+
+ VppDownloadItemType eType; /* download item type */
+
+ vpp_dl_progress_cb progressCb; /* download progress callback */
+ vpp_dl_state_changed_cb stateChangedCb; /* download state changed callback */
+
+ bool bDownloading; /* downloading state */
+
+ bool bSetNoti; /* quick pannel download view state. default FALSE */
+
+ Ecore_Pipe *pDownloadPipe; /* internal pipe */
+
+ void *pUserdata; /* user data */
+}__VppDownloadItem;
+
+
+// download list
+typedef struct
+{
+ Ecore_Timer *downloadTimer; /* internal timer */
+
+ int currentDownloadingCount; /* downloading item count */
+
+ Eina_List *downloadList; /* download item list */
+}__VppDownloadListData;
+
+
+/* download pipe data */
+typedef struct
+{
+ __VppDownloadItem *pItem; /* download item */
+ unsigned long long received; /* received file size from progress callback*/
+ VppDownloadCbType eCbType; /* pipe callback type */
+ VppDownloadState eState; /* downloader state */
+}VppDownloadPipeData;
+
+
+__VppDownloadListData *g_download_list = NULL;
+
+
+///////////////////////////////////////////////////////////////////////////////////////////
+// local functions proto types
+///////////////////////////////////////////////////////////////////////////////////////////
+void __VppDownloadPrintErr(download_error_e err);
+
+void __VppDownloadListInitialize();
+void __VppDestoryDownloadListDestory();
+
+bool __VppDownloadCreate(__VppDownloadItem *pItem);
+bool __VppDownloadStart(__VppDownloadItem *pItem, bool bResume);
+
+static void __VppDownloadStateChangedCb(int download_id, download_state_e state, void *user_data);
+static void __VppDownloadProgressCb(int download_id, unsigned long long received, void *user_data);
+
+unsigned int __VppDownloadListCount();
+bool __VppDownloadListAdd(__VppDownloadItem *pItem, bool bAppend);
+void __VppDownloadListRemove(__VppDownloadItem *pItem);
+
+void __VppDownloadListNextTrigger();
+void __VppDownloadStartTimer();
+
+static void __VppDownloadPipeCb(void *data, void *pdata, unsigned int nbyte);
+static Eina_Bool __VppDownloadTimerCb(void *data);
+
+
+///////////////////////////////////////////////////////////////////////////////////////////
+// download api
+///////////////////////////////////////////////////////////////////////////////////////////
+
+
+VppDownloadHandle
+VppDownloadCreateItem(const char *pUrl, const char *pDstFolder, const char *pDstName, VppDownloadItemType eType, VppDownloadCallback cb, void *userData)
+{
+ __VppDownloadItem* pItem = NULL;
+
+ if (pUrl == NULL)
+ {
+ VideoLogError("pUrl == NULL!!!");
+ return NULL;
+ }
+
+
+ if (pDstFolder == NULL)
+ {
+ VideoLogError("pDstFolder == NULL!!!");
+ return NULL;
+ }
+
+ if (cb.stateChangedCb == NULL)
+ {
+ VideoLogError("cb.stateChangedCb == NULL!!!");
+ return NULL;
+ }
+
+ pItem = calloc(1, sizeof(__VppDownloadItem));
+ if (pItem == NULL)
+ {
+ VideoLogError("pItem calloc fail!!!");
+ return NULL;
+ }
+
+ pItem->pDownloadUrl = strdup(pUrl);
+ pItem->pDstFolder = strdup(pDstFolder);
+ pItem->eType = eType;
+ pItem->progressCb = cb.progressCb;
+ pItem->stateChangedCb = cb.stateChangedCb;
+ pItem->pUserdata = userData;
+ pItem->bSetNoti = TRUE;
+
+ if (pDstName != NULL)
+ {
+ pItem->pDstName = strdup(pDstName);
+ }
+
+ if (eType == VPP_DOWNLOAD_ITEM_TYPE_VIDEO_FILE || eType == VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE)
+ {
+ pItem->bSetNoti = TRUE;
+ }
+ else if (eType >= VPP_DOWNLOAD_ITEM_TYPE_VIDEO_INDEX_FILE && eType <= VPP_DOWNLOAD_ITEM_TYPE_RATING_IMAGE)
+ {
+ pItem->bSetNoti = FALSE;
+ }
+ else
+ {
+ VideoLogError("eType error : [%d]", eType);
+ }
+
+ pItem->pDownloadPipe = ecore_pipe_add(__VppDownloadPipeCb, (const void*)pItem);
+
+ return (VppDownloadHandle)pItem;
+}
+
+
+VppDownloadHandle
+VppDownloadCreateItemById(int nId, const char *pUrl, const char *pDstFolder, const char *pDstName, VppDownloadItemType eType, VppDownloadCallback cb, void *userData)
+{
+ __VppDownloadItem* pItem = NULL;
+
+ if (nId <= 0)
+ {
+ VideoLogError("nId error : [%d]!!!", nId);
+ return NULL;
+ }
+
+
+ pItem = VppDownloadCreateItem(pUrl, pDstFolder, pDstName, eType, cb, userData);
+ if (pItem == NULL)
+ {
+ VideoLogError("VppDownloadCreateItem fail!!!");
+ return NULL;
+ }
+
+ pItem->id = nId;
+
+ if (VppDownloadSetCb((VppDownloadHandle)pItem, cb, pItem->pUserdata) == FALSE)
+ {
+ VideoLogError("VppDownloadSetCb error");
+ VppDownloadDestroyItem((VppDownloadHandle)pItem);
+
+ return NULL;
+ }
+
+ return (VppDownloadHandle)pItem;
+}
+
+
+void
+VppDownloadDestroyItem(VppDownloadHandle pHandle)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+ char *pPath = NULL;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return;
+ }
+
+ if (pItem->pDownloadPipe != NULL)
+ {
+ ecore_pipe_del(pItem->pDownloadPipe);
+ pItem->pDownloadPipe = NULL;
+ }
+
+ pPath = VppDownloadGetDownloadedFilePath(pHandle);
+
+ if (pItem->pDownloadUrl != NULL)
+ {
+ free(pItem->pDownloadUrl);
+ pItem->pDownloadUrl = NULL;
+ }
+
+ if (pItem->pDstFolder != NULL)
+ {
+ free(pItem->pDstFolder);
+ pItem->pDstFolder = NULL;
+ }
+
+ if (pItem->pDstName != NULL)
+ {
+ free(pItem->pDstName);
+ pItem->pDstName = NULL;
+ }
+
+ if (pItem->pTempPath != NULL)
+ {
+ free(pItem->pTempPath);
+ pItem->pTempPath = NULL;
+ }
+
+ if (pItem->pEtag != NULL)
+ {
+ free(pItem->pEtag);
+ pItem->pEtag = NULL;
+ }
+
+ if (pItem->id > 0)
+ {
+ VppDownloadUnsetCb(pItem);
+
+ VppDownloadState state = VppDownloadGetState(pItem);
+
+ /*
+ if (state != VPP_DOWNLOAD_STATE_AGENT_ERROR && state != VPP_DOWNLOAD_STATE_APP_ERROR)
+ {
+ if (state >= VPP_DOWNLOAD_STATE_READY && state <= VPP_DOWNLOAD_STATE_PAUSED)
+ {
+ VppDownloadCancel(pItem);
+ }
+ }
+ */
+
+ if (state != VPP_DOWNLOAD_STATE_COMPLETED)
+ {
+ if (pPath != NULL && vp_file_exists((const char*)pPath) == EINA_TRUE)
+ {
+ vp_file_unlink((const char*)pPath);
+ }
+ }
+
+ error = download_set_notification_type(pItem->id, DOWNLOAD_NOTIFICATION_TYPE_NONE);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+
+ error = download_destroy(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+ }
+
+ if (pItem->eType < VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE || pItem->eType > VPP_DOWNLOAD_ITEM_TYPE_VIDEO_CAPTION_FILE)
+ {
+ __VppDownloadListRemove(pHandle);
+ }
+
+ if (pPath != NULL)
+ {
+ free(pPath);
+ pPath = NULL;
+ }
+
+ free(pItem);
+ pItem = NULL;
+}
+
+
+void
+VppDownloadDestroyItemById(int nId)
+{
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ error = download_destroy(nId);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+}
+
+
+void
+VppDownloadClearItem(VppDownloadHandle pHandle)
+{
+
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+// download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return;
+ }
+
+ if (pItem->pDownloadPipe != NULL)
+ {
+ ecore_pipe_del(pItem->pDownloadPipe);
+ pItem->pDownloadPipe = NULL;
+ }
+
+ if (pItem->pDownloadUrl != NULL)
+ {
+ free(pItem->pDownloadUrl);
+ pItem->pDownloadUrl = NULL;
+ }
+
+ if (pItem->pDstFolder != NULL)
+ {
+ free(pItem->pDstFolder);
+ pItem->pDstFolder = NULL;
+ }
+
+ if (pItem->pDstName != NULL)
+ {
+ free(pItem->pDstName);
+ pItem->pDstName = NULL;
+ }
+
+ if (pItem->id > 0)
+ {
+ VppDownloadUnsetCb(pItem);
+ }
+
+ free(pItem);
+ pItem = NULL;
+}
+
+
+bool
+VppDownloadStartVideoStoreVideoItem(VppDownloadHandle pHandle, void *pOnGoingServiceData, void *pCompleteServiceData)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return FALSE;
+ }
+
+ if (pItem->id <= 0)
+ {
+ if (__VppDownloadCreate(pItem) == FALSE)
+ {
+ VideoLogError("__VppDownloadCreate faile !!!");
+ return FALSE;
+ }
+ }
+
+ if (pOnGoingServiceData != NULL)
+ {
+ int error = 0;
+
+ error = download_set_notification_app_control(pItem->id, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_ONGOING, (app_control_h)pOnGoingServiceData);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_downloaded_file_path error");
+ __VppDownloadPrintErr(error);
+
+ return FALSE;
+ }
+ }
+
+ if (pCompleteServiceData != NULL)
+ {
+ int error = 0;
+
+ error = download_set_notification_app_control(pItem->id, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_COMPLETE, (app_control_h)pCompleteServiceData);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_downloaded_file_path error");
+ __VppDownloadPrintErr(error);
+
+ return FALSE;
+ }
+ }
+
+ if (__VppDownloadStart((__VppDownloadItem*)pHandle, FALSE) == FALSE)
+ {
+ VideoLogError("fail __VppDownloadStart!!!");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool
+VppDownloadSetCb(VppDownloadHandle pHandle, VppDownloadCallback cb, void *userData)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return FALSE;
+ }
+
+ VppDownloadUnsetCb(pHandle);
+
+ pItem->pUserdata = userData;
+
+ if (cb.progressCb != NULL)
+ {
+ pItem->progressCb = cb.progressCb;
+ if (pItem->id > 0)
+ {
+ error = download_set_progress_cb(pItem->id, __VppDownloadProgressCb, pItem);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+ }
+ }
+
+ if (cb.stateChangedCb != NULL)
+ {
+ pItem->stateChangedCb = cb.stateChangedCb;
+ if (pItem->id > 0)
+ {
+ error = download_set_state_changed_cb(pItem->id,__VppDownloadStateChangedCb, pItem);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+ }
+ }
+
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool
+VppDownloadUnsetCb(VppDownloadHandle pHandle)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return FALSE;
+ }
+
+ if (pItem->id > 0)
+ {
+ if (pItem->progressCb != NULL)
+ {
+ error = download_unset_progress_cb(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+ }
+
+ if (pItem->stateChangedCb != NULL)
+ {
+ error = download_unset_state_changed_cb(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ }
+ }
+ }
+
+ pItem->progressCb = NULL;
+ pItem->stateChangedCb = NULL;
+ pItem->pUserdata = NULL;
+
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool
+VppDownloadRequestAppend(VppDownloadHandle pHandle)
+{
+ return __VppDownloadListAdd((__VppDownloadItem*)pHandle, TRUE);
+}
+
+
+bool
+VppDownloadRequestPrepend(VppDownloadHandle pHandle)
+{
+ return __VppDownloadListAdd((__VppDownloadItem*)pHandle, FALSE);
+}
+
+
+bool
+VppDownloadPause(VppDownloadHandle pHandle)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return FALSE;
+ }
+
+ if (pItem->id <= 0)
+ {
+ VideoLogError("pItem->id : [%d]!!!", pItem->id);
+ return FALSE;
+ }
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ error = download_pause(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool
+VppDownloadResume(VppDownloadHandle pHandle)
+{
+ return __VppDownloadStart((__VppDownloadItem*)pHandle, TRUE);
+}
+
+
+bool
+VppDownloadCancel(VppDownloadHandle pHandle)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return FALSE;
+ }
+
+ if (pItem->id <= 0)
+ {
+ VideoLogError("pItem->id : [%d]!!!", pItem->id);
+ return FALSE;
+ }
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ error = download_cancel(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+bool
+VppDownloadStoreVideoRestore(VppDownloadHandle pHandle)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ unsigned long long lFileSize = 0;
+
+ int nRet = 0;
+ char szTemp[32] = {0,};
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return FALSE;
+ }
+
+ if (pItem->pTempPath == NULL)
+ {
+ VideoLogError("pItem->pTempPath!!!");
+ return FALSE;
+ }
+
+ if (pItem->pEtag == NULL)
+ {
+ VideoLogError("pItem->pEtag!!!");
+ return FALSE;
+ }
+
+ nRet = download_set_temp_file_path(pItem->id, pItem->pTempPath);
+ if (nRet != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_set_temp_file_path failed!!!");
+ __VppDownloadPrintErr(nRet);
+ return FALSE;
+ }
+
+ nRet = download_add_http_header_field(pItem->id, "If-Range", pItem->pEtag);
+ if (nRet != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_add_http_header_field failed!!!");
+ __VppDownloadPrintErr(nRet);
+ return FALSE;
+ }
+
+ lFileSize = (unsigned long long)vp_file_size((const char*)pItem->pTempPath);
+
+ snprintf(szTemp, sizeof(szTemp), "bytes=%llu-", lFileSize);
+
+ nRet = download_add_http_header_field(pItem->id, "Range", szTemp);
+ if (nRet != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_add_http_header_field failed!!!");
+ __VppDownloadPrintErr(nRet);
+ return FALSE;
+ }
+
+ nRet = download_start(pItem->id);
+ if (nRet != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_start failed!!!");
+ __VppDownloadPrintErr(nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+VppDownloadState
+VppDownloadGetState(VppDownloadHandle pHandle)
+{
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return VPP_DOWNLOAD_STATE_APP_ERROR;
+ }
+
+ if (pItem->id <= 0)
+ {
+ VideoLogError("id error: [%d]", pItem->id);
+ return VPP_DOWNLOAD_STATE_APP_ERROR;
+ }
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+ download_state_e state = DOWNLOAD_STATE_NONE;
+
+ error = download_get_state(pItem->id, &state);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ return VPP_DOWNLOAD_STATE_AGENT_ERROR;
+ }
+
+ return (VppDownloadState)state;
+}
+
+
+VppDownloadState
+VppDownloadGetStateById(int nDownloadId)
+{
+ if (nDownloadId <= 0)
+ {
+ VideoLogError("id error: [%d]", nDownloadId);
+ return VPP_DOWNLOAD_STATE_APP_ERROR;
+ }
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+ download_state_e state = DOWNLOAD_STATE_NONE;
+
+ error = download_get_state(nDownloadId, &state);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ __VppDownloadPrintErr(error);
+ return VPP_DOWNLOAD_STATE_AGENT_ERROR;
+ }
+
+ return (VppDownloadState)state;
+}
+
+
+char*
+VppDownloadGetDownloadedFilePath(VppDownloadHandle pHandle)
+{
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL");
+ return NULL;
+ }
+
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ char *pPath = NULL;
+ char sDestPath[PATH_MAX] = {0,};
+
+ if (pItem->id <= 0)
+ {
+ VideoLogWarning("id error: [%d]", pItem->id);
+ return NULL;
+ }
+
+ if (pItem->pDstFolder != NULL && pItem->pDstName != NULL)
+ {
+ if (pItem->pDstFolder[strlen(pItem->pDstFolder)-1] == '/')
+ {
+ snprintf(sDestPath, PATH_MAX, "%s%s", pItem->pDstFolder, pItem->pDstName);
+ }
+ else
+ {
+ snprintf(sDestPath, PATH_MAX, "%s/%s", pItem->pDstFolder, pItem->pDstName);
+ }
+
+ VideoSecureLogDebug("Path : [%s]:%s,%s,%d", sDestPath, pItem->pDstFolder[strlen(pItem->pDstFolder)], pItem->pDstFolder, strlen(pItem->pDstFolder));
+
+ return strdup(sDestPath);
+ }
+ else
+ {
+ error = download_get_downloaded_file_path(pItem->id, &pPath);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_downloaded_file_path error");
+ __VppDownloadPrintErr(error);
+
+ if (pPath != NULL)
+ {
+ free(pPath);
+ pPath = NULL;
+ }
+ }
+
+ if (pPath != NULL)
+ {
+ VideoSecureLogDebug("Path : [%s]", pPath);
+ return pPath;
+ }
+ else
+ {
+ VideoLogDebug("pPath == NULL");
+ return NULL;
+ }
+ }
+}
+
+
+int
+VppDownloadGetDownloadId(VppDownloadHandle pHandle)
+{
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL ");
+ return 0;
+ }
+
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ return pItem->id;
+}
+
+
+bool
+VppDownloadSetNotificationAppControl(VppDownloadHandle pHandle, void *pData)
+{
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL ");
+ return FALSE;
+ }
+
+ if (pData == NULL)
+ {
+ VideoLogError("pData == NULL ");
+ return FALSE;
+ }
+
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ error = download_set_notification_app_control(pItem->id, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_ONGOING, (app_control_h)pData);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_downloaded_file_path error");
+ __VppDownloadPrintErr(error);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+void*
+VppDownloadGetNotificationAppControl(VppDownloadHandle pHandle)
+{
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+ app_control_h *b = NULL;
+
+ if (pHandle == NULL)
+ {
+ VideoLogError("pHandle == NULL ");
+ return NULL;
+ }
+
+ __VppDownloadItem* pItem = (__VppDownloadItem*)pHandle;
+
+ error = download_get_notification_app_control(pItem->id, DOWNLOAD_NOTIFICATION_APP_CONTROL_TYPE_ONGOING, b);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_downloaded_file_path error");
+ __VppDownloadPrintErr(error);
+
+ return NULL;
+ }
+
+ return (void*)b;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////
+// local function implementations
+///////////////////////////////////////////////////////////////////////////////////////////
+void
+__VppDownloadPrintErr(download_error_e err)
+{
+ switch (err)
+ {
+ case DOWNLOAD_ERROR_NONE:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_NONE");
+ }
+ break;
+ case DOWNLOAD_ERROR_INVALID_PARAMETER:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_INVALID_PARAMETER");
+ }
+ break;
+ case DOWNLOAD_ERROR_OUT_OF_MEMORY:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_OUT_OF_MEMORY");
+ }
+ break;
+ case DOWNLOAD_ERROR_NETWORK_UNREACHABLE:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_NETWORK_UNREACHABLE");
+ }
+ break;
+ case DOWNLOAD_ERROR_CONNECTION_TIMED_OUT:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_CONNECTION_TIMED_OUT");
+ }
+ break;
+ case DOWNLOAD_ERROR_NO_SPACE:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_NO_SPACE");
+ }
+ break;
+ case DOWNLOAD_ERROR_FIELD_NOT_FOUND:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_FIELD_NOT_FOUND");
+ }
+ break;
+ case DOWNLOAD_ERROR_INVALID_STATE:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_INVALID_STATE");
+ }
+ break;
+ case DOWNLOAD_ERROR_CONNECTION_FAILED:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_CONNECTION_FAILED");
+ }
+ break;
+ case DOWNLOAD_ERROR_INVALID_URL:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_INVALID_URL");
+ }
+ break;
+ case DOWNLOAD_ERROR_INVALID_DESTINATION:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_INVALID_DESTINATION");
+ }
+ break;
+ case DOWNLOAD_ERROR_TOO_MANY_DOWNLOADS:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_TOO_MANY_DOWNLOADS");
+ }
+ break;
+ case DOWNLOAD_ERROR_QUEUE_FULL:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_QUEUE_FULL");
+ }
+ break;
+ case DOWNLOAD_ERROR_ALREADY_COMPLETED:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_ALREADY_COMPLETED");
+ }
+ break;
+ case DOWNLOAD_ERROR_FILE_ALREADY_EXISTS:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_FILE_ALREADY_EXISTS");
+ }
+ break;
+ case DOWNLOAD_ERROR_TOO_MANY_REDIRECTS:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_TOO_MANY_REDIRECTS");
+ }
+ break;
+ case DOWNLOAD_ERROR_UNHANDLED_HTTP_CODE:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_UNHANDLED_HTTP_CODE");
+ }
+ break;
+ case DOWNLOAD_ERROR_NO_DATA:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_NO_DATA");
+ }
+ break;
+ case DOWNLOAD_ERROR_IO_ERROR:
+ {
+ VideoLogError("err == DOWNLOAD_ERROR_IO_ERROR");
+ }
+ break;
+ default:
+ {
+ VideoLogError("UNKNOW err == [%d]", err);
+ }
+ break;
+ }
+}
+
+
+void
+__VppDownloadListInitialize()
+{
+ if (g_download_list != NULL)
+ {
+ __VppDestoryDownloadListDestory();
+ }
+
+ g_download_list = calloc(1, sizeof(__VppDownloadListData));
+}
+
+
+void
+__VppDestoryDownloadListDestory()
+{
+ if (g_download_list == NULL)
+ {
+ VideoLogError("g_download_list == NULL!!!");
+ return;
+ }
+
+ if (g_download_list->downloadTimer != NULL)
+ {
+ ecore_timer_del(g_download_list->downloadTimer);
+ g_download_list->downloadTimer = NULL;
+ }
+
+ if (g_download_list->downloadList != NULL)
+ {
+ if (__VppDownloadListCount() > 0)
+ {
+ VideoLogError("list count error[%d]!!!. some data are not destoryed!!!", __VppDownloadListCount());
+ }
+
+ Eina_List *l;
+ __VppDownloadItem *pItem;
+
+ EINA_LIST_FOREACH(g_download_list->downloadList, l, pItem)
+ {
+ if (pItem != NULL)
+ {
+ VideoLogError("list item is not freed!!!");
+ VideoSecureLogError("list item type[%d], url[%s], pDstFolder[%s], pDstName[%s]!!!", pItem->eType, pItem->pDownloadUrl, pItem->pDstFolder, pItem->pDstName);
+
+ VppDownloadDestroyItem(pItem);
+ }
+ }
+
+ eina_list_free(g_download_list->downloadList);
+ g_download_list->downloadList = NULL;
+ }
+
+ free(g_download_list);
+ g_download_list = NULL;
+}
+
+
+bool
+__VppDownloadCreate(__VppDownloadItem* pItem)
+{
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ error = download_create(&(pItem->id));
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_create error");
+ goto ERROR_HANDLE;
+ }
+
+ error = download_set_url(pItem->id, (const char*)pItem->pDownloadUrl);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_set_url error");
+ goto ERROR_HANDLE;
+ }
+
+ error = download_set_destination(pItem->id, (const char*)(pItem->pDstFolder));
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_set_destination error");
+ goto ERROR_HANDLE;
+ }
+
+ if (pItem->pDstName != NULL)
+ {
+ char szDestName[PATH_MAX] = {0,};
+
+ if (pItem->eType != VPP_DOWNLOAD_ITEM_TYPE_VIDEO_FILE && pItem->eType != VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE)
+ {
+ snprintf(szDestName, PATH_MAX, "%s%s", pItem->pDstName, ".temp");
+ }
+ else
+ {
+ int dstlength = strlen(pItem->pDstName);
+ if (dstlength + 1 <= PATH_MAX) {
+ strncpy(szDestName, pItem->pDstName, dstlength);
+ }
+ }
+
+ error = download_set_file_name(pItem->id, (const char*)szDestName);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_set_file_name error");
+ goto ERROR_HANDLE;
+ }
+ }
+
+ if (pItem->bSetNoti == TRUE)
+ {
+ error = download_set_notification_type(pItem->id, DOWNLOAD_NOTIFICATION_TYPE_ALL);
+ }
+ else
+ {
+ error = download_set_notification_type(pItem->id, DOWNLOAD_NOTIFICATION_TYPE_NONE);
+ }
+
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_set_notification error");
+ goto ERROR_HANDLE;
+ }
+
+ VppDownloadCallback cb = {0,};
+ cb.progressCb = pItem->progressCb;
+ cb.stateChangedCb = pItem->stateChangedCb;
+
+ if (VppDownloadSetCb((VppDownloadHandle)pItem, cb, pItem->pUserdata) == FALSE)
+ {
+ VideoLogError("VppDownloadSetCb error");
+ VppDownloadDestroyItem((VppDownloadHandle)pItem);
+
+ return FALSE;
+ }
+
+ return TRUE;
+
+ERROR_HANDLE:
+ __VppDownloadPrintErr(error);
+
+ if (pItem->id > 0)
+ {
+ error = download_destroy(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_destroy error");
+ __VppDownloadPrintErr(error);
+ }
+
+ pItem->id = 0;
+ }
+ //VppDownloadDestroyItem((VppDownloadHandle)pItem);
+
+ return FALSE;
+}
+
+
+bool
+__VppDownloadStart(__VppDownloadItem* pItem, bool bResume)
+{
+ if (pItem == NULL)
+ {
+ VideoLogError("pItem == NULL!!!");
+ return FALSE;
+ }
+
+ if (pItem->id <= 0)
+ {
+ VideoLogError("pItem->id : [%d]!!!", pItem->id);
+ return FALSE;
+ }
+
+ if (bResume == FALSE)
+ {
+ VideoLogDebug("download start!!!");
+ }
+ else
+ {
+ VideoLogDebug("download resume!!!");
+ }
+
+ download_error_e error = DOWNLOAD_ERROR_NONE;
+
+ if (pItem->eType == VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE)
+ {
+ error = download_set_auto_download(pItem->id, TRUE);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_set_auto_download error!!!");
+ __VppDownloadPrintErr(error);
+ }
+ }
+
+ error = download_start(pItem->id);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_start error!!!");
+ __VppDownloadPrintErr(error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+static void
+__VppDownloadStateChangedCb(int download_id, download_state_e state, void *user_data)
+{
+ __VppDownloadItem *pItem = (__VppDownloadItem*)user_data;
+
+ VideoLogDebug("state : [%d]", state);
+
+ if (user_data == NULL)
+ {
+ VideoLogError("user_data == NULL!!!");
+ return;
+ }
+
+ if (pItem->eType == VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE && state == DOWNLOAD_STATE_DOWNLOADING)
+ {
+ int nRet = 0;
+ if (pItem->pTempPath != NULL)
+ {
+ free(pItem->pTempPath);
+ pItem->pTempPath = NULL;
+ }
+ nRet = download_get_temp_path(pItem->id, &pItem->pTempPath);
+ if (nRet != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_temp_path failed!!!");
+ __VppDownloadPrintErr((download_error_e)nRet);
+ }
+
+
+ if (pItem->pEtag != NULL)
+ {
+ free(pItem->pEtag);
+ pItem->pEtag = NULL;
+ }
+ nRet = download_get_etag(pItem->id, &pItem->pEtag);
+ if (nRet != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_temp_path failed!!!");
+ __VppDownloadPrintErr((download_error_e)nRet);
+ }
+ }
+
+ if (state >= DOWNLOAD_STATE_COMPLETED && state <= DOWNLOAD_STATE_CANCELED)
+ {
+ if (pItem->bDownloading == TRUE)
+ {
+ pItem->bDownloading = FALSE;
+
+ if (pItem->eType < VPP_DOWNLOAD_ITEM_TYPE_STORE_VIDEO_FILE || pItem->eType > VPP_DOWNLOAD_ITEM_TYPE_VIDEO_CAPTION_FILE)
+ {
+ --(g_download_list->currentDownloadingCount);
+ }
+ }
+ }
+
+ VppDownloadPipeData pipeData = {0,};
+
+ pipeData.eCbType = VPP_DOWNLOAD_CB_TYPE_STATE_CHANGED;
+ pipeData.eState = (VppDownloadState)state;
+ pipeData.pItem = pItem;
+
+ ecore_pipe_write(pItem->pDownloadPipe, &pipeData, sizeof(VppDownloadPipeData));
+}
+
+
+static void
+__VppDownloadProgressCb(int download_id, unsigned long long received, void *user_data)
+{
+ __VppDownloadItem *pItem = (__VppDownloadItem*)user_data;
+
+ VppDownloadPipeData pipeData = {0,};
+
+ if (user_data == NULL)
+ {
+ VideoLogError("user_data == NULL!!!");
+ return;
+ }
+
+ pipeData.eCbType = VPP_DOWNLOAD_CB_TYPE_PROGRESS;
+ pipeData.eState = VPP_DOWNLOAD_STATE_DOWNLOADING;
+ pipeData.pItem = (__VppDownloadItem*)user_data;
+ pipeData.received = received;
+
+ ecore_pipe_write(pItem->pDownloadPipe, &pipeData, sizeof(VppDownloadPipeData));
+}
+
+
+unsigned int
+__VppDownloadListCount()
+{
+ if (g_download_list != NULL && g_download_list->downloadList != NULL)
+ {
+ if (g_download_list->downloadList->accounting != NULL)
+ {
+ return eina_list_count( g_download_list->downloadList);
+ }
+ }
+
+ return 0;
+}
+
+
+bool
+__VppDownloadListAdd(__VppDownloadItem *pItem, bool bAppend)
+{
+ if (pItem == NULL)
+ {
+ VideoLogError("pItem == NULL!!!");
+ return FALSE;
+ }
+
+ if (g_download_list == NULL)
+ {
+ __VppDownloadListInitialize();
+ }
+
+ if (bAppend == TRUE)
+ {
+ g_download_list->downloadList = eina_list_append(g_download_list->downloadList, (void*)pItem);
+
+ if (g_download_list->downloadList == NULL)
+ {
+ VideoLogError("eina_list_append faile !!!");
+ return FALSE;
+ }
+ }
+ else
+ {
+ g_download_list->downloadList = eina_list_prepend(g_download_list->downloadList, (void*)pItem);
+
+ if (g_download_list->downloadList == NULL)
+ {
+ VideoLogError("eina_list_prepend faile !!!");
+ return FALSE;
+ }
+ }
+
+ __VppDownloadListNextTrigger();
+
+ return TRUE;
+}
+
+
+void
+__VppDownloadListRemove(__VppDownloadItem *pItem)
+{
+ if (pItem == NULL)
+ {
+ VideoLogError("pItem == NULL!!!");
+ return;
+ }
+
+ if (g_download_list == NULL)
+ {
+ VideoLogError("g_download_list == NULL!!!");
+ return;
+ }
+
+ if (g_download_list->downloadList == NULL)
+ {
+ VideoLogError("g_download_list->downloadList == NULL!!!");
+ return;
+ }
+
+ g_download_list->downloadList = eina_list_remove(g_download_list->downloadList, (void*)pItem);
+ if (__VppDownloadListCount() <= 0)
+ {
+ __VppDestoryDownloadListDestory();
+ }
+}
+
+
+
+void
+__VppDownloadListNextTrigger()
+{
+ if (g_download_list == NULL)
+ {
+ VideoLogError("g_download_list == NULL!!!");
+ return;
+ }
+
+ if (g_download_list->downloadList == NULL)
+ {
+ VideoLogError("g_download_list->downloadList == NULL!!!");
+ return;
+ }
+
+ if (g_download_list->currentDownloadingCount > 5)
+ {
+ __VppDownloadStartTimer();
+ return;
+ }
+
+ Eina_List *l;
+ __VppDownloadItem *pItem;
+
+ EINA_LIST_FOREACH(g_download_list->downloadList, l, pItem)
+ {
+ if (pItem == NULL)
+ {
+ continue;
+ }
+
+ if (pItem->bDownloading == TRUE)
+ {
+ continue;
+ }
+
+ if (pItem->id <= 0)
+ {
+ if (__VppDownloadCreate(pItem) == FALSE)
+ {
+ VideoLogError("__VppDownloadCreate faile !!!");
+ __VppDownloadStartTimer();
+ return;
+ }
+ }
+
+ VppDownloadState eState = VppDownloadGetState((VppDownloadHandle)pItem);
+ VideoLogDebug("eState : [%d]", eState);
+
+ if (eState == VPP_DOWNLOAD_STATE_PAUSED)
+ {
+ pItem->bDownloading = TRUE;
+ ++(g_download_list->currentDownloadingCount);
+ }
+ else
+ {
+ if (__VppDownloadStart(pItem, FALSE) == TRUE)
+ {
+ pItem->bDownloading = TRUE;
+ ++(g_download_list->currentDownloadingCount);
+ }
+ else
+ {
+ VideoSecureLogError("__VppDownloadStart faile : [%s : %s]!!!", pItem->pDstFolder, pItem->pDstName);
+ __VppDownloadStartTimer();
+ return;
+ }
+ }
+ }
+}
+
+
+void
+__VppDownloadStartTimer()
+{
+ if (g_download_list == NULL)
+ {
+ VideoLogError("g_download_list == NULL!!!");
+ return;
+ }
+
+ if (g_download_list->downloadTimer != NULL)
+ {
+ ecore_timer_del(g_download_list->downloadTimer);
+ g_download_list->downloadTimer = NULL;
+ }
+
+ g_download_list->downloadTimer = ecore_timer_add(1.0, __VppDownloadTimerCb, g_download_list);
+}
+
+
+static void
+__VppDownloadPipeCb(void *data, void *pdata, unsigned int nbyte)
+{
+ VppDownloadPipeData *pPipeData = NULL;
+ __VppDownloadItem *pItem = NULL;
+
+ if (pdata == NULL)
+ {
+ VideoLogError("pdata == NULL!!!");
+ return;
+ }
+
+ pPipeData = (VppDownloadPipeData*)pdata;;
+ pItem = pPipeData->pItem;
+
+ if (pItem == NULL)
+ {
+ VideoLogError("pItem == NULL!!!");
+ return;
+ }
+
+ if (pPipeData->eCbType == VPP_DOWNLOAD_CB_TYPE_STATE_CHANGED)
+ {
+ char* pDstPath = VppDownloadGetDownloadedFilePath((VppDownloadHandle)pItem);
+
+ if (pPipeData->eState == VPP_DOWNLOAD_STATE_COMPLETED)
+ {
+ char* pTempDstPath = NULL;
+ int error = 0;
+
+ error = download_get_downloaded_file_path(pItem->id, &pTempDstPath);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_downloaded_file_path error");
+ __VppDownloadPrintErr((download_error_e)error);
+ }
+ else
+ {
+ if (pTempDstPath != NULL && pDstPath != NULL)
+ {
+ if (strcmp(pTempDstPath, pDstPath) != 0)
+ {
+ if (vp_file_exists((const char*)pDstPath) == EINA_TRUE)
+ {
+ vp_file_unlink((const char*)pDstPath);
+ }
+
+ if (vp_file_mv(pTempDstPath, pDstPath) != EINA_TRUE)
+ {
+ VideoSecureLogError("vp_file_mv failed!!! src : [%s], dst : [%s]", pTempDstPath, pDstPath);
+ }
+ }
+ }
+ }
+
+ if (pTempDstPath != NULL)
+ {
+ free(pTempDstPath);
+ pTempDstPath = NULL;
+ }
+ }
+
+ if (pItem->stateChangedCb != NULL)
+ {
+ pItem->stateChangedCb((VppDownloadHandle)pItem, pPipeData->eState, (const char*)pDstPath, pItem->pUserdata);
+ }
+
+ if (pDstPath != NULL)
+ {
+ free(pDstPath);
+ pDstPath = NULL;
+ }
+ }
+ else
+ {
+ if (pItem->progressCb != NULL)
+ {
+ unsigned long long contentTotalSize = 0;
+ download_error_e error = download_get_content_size(pItem->id, &contentTotalSize);
+ if (error != DOWNLOAD_ERROR_NONE)
+ {
+ VideoLogError("download_get_content_size error");
+ __VppDownloadPrintErr(error);
+ return;
+ }
+
+ pItem->progressCb((VppDownloadHandle)pItem, pPipeData->received, contentTotalSize, pItem->pUserdata);
+ }
+ }
+}
+
+
+static Eina_Bool
+__VppDownloadTimerCb(void *data)
+{
+ if (g_download_list == NULL)
+ {
+ goto TIMER_CB_RETURN;
+ }
+
+ if (g_download_list->downloadList == NULL)
+ {
+ goto TIMER_CB_RETURN;
+ }
+
+ int cnt = __VppDownloadListCount();
+
+ if (cnt <= 0)
+ {
+ goto TIMER_CB_RETURN;
+ }
+
+ __VppDownloadListNextTrigger();
+
+TIMER_CB_RETURN:
+ if (g_download_list != NULL)
+ {
+ g_download_list->downloadTimer = NULL;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+
+void VppDownloadResetUserData(void *pDataItem)
+{
+ __VppDownloadItem *pItem = (__VppDownloadItem*)pDataItem;
+
+ pItem->pUserdata = NULL;
+}
+
+
diff --git a/vp-main/CMakeLists.txt b/vp-main/CMakeLists.txt
new file mode 100755
index 0000000..2cafd43
--- /dev/null
+++ b/vp-main/CMakeLists.txt
@@ -0,0 +1,81 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(video-player C CXX)
+
+
+SET(SRCS
+ src/vp-main.c
+ src/serviceParser/vp-service-parser.c
+)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/serviceParser
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED
+ elementary
+ ecore
+ ecore-evas
+ edje
+ eina
+ evas
+ dlog
+ ecore-input
+ glib-2.0
+ capi-appfw-application
+ capi-content-media-content
+ capi-web-url-download
+ libcore-context-manager
+)
+
+#SET(VIDEO_PLAYER_PACKAGE "com.${VIDEO_PLAYER_VENDOR}.video-player")
+SET(VIDEO_PLAYER_PACKAGE "org.tizen.video-player")
+SET(VIDEO_PLAYER_DIR "/usr/apps/${VIDEO_PLAYER_PACKAGE}")
+SET(VIDEO_PLAYER_RES_DIR "/usr/apps/${VIDEO_PLAYER_PACKAGE}/res")
+SET(VIDEO_PLAYER_BINDIR "/usr/apps/${VIDEO_PLAYER_PACKAGE}/bin")
+SET(VIDEO_PLAYER_SMACKDIR "/etc/smack/accesses.d/")
+SET(DESKTOPDIR "/usr/share/packages/")
+SET(VIDEO_PLAYER_DATADIR "/opt/usr/apps/${VIDEO_PLAYER_PACKAGE}/data")
+SET(VP_RESDIR "/usr/apps/${VIDEO_PLAYER_PACKAGE}/res")
+SET(VP_LOCALEDIR "${VP_RESDIR}/locale")
+SET(VP_DATADIR "/opt/usr/apps/org.tizen.videos/data")
+SET(VP_THUMBDIR "/opt/usr/media/.video_thumb")
+SET(VP_CUR_THUMBDIR "/opt/usr/media/.cur_video_thumb")
+SET(VP_TEMPDIR "/opt/usr/media/.video_thumb/tmp")
+SET(VP_SDPDIR "/opt/usr/media/.video_thumb/sdp")
+
+ADD_DEFINITIONS("-DVP_LOCALEDIR=\"${VP_LOCALEDIR}\"")
+
+FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS})
+ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -fvisibility=hidden")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -fPIC")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie -Wl,--rpath=/usr/lib")
+SET(CMAKE_LDFLAGS "-Wl,-zdefs" )
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS} feature common playview video-downloader -ldl)
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${VIDEO_PLAYER_BINDIR})
+
+# install desktop file & icon
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /usr/share/icons/default/small/)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/video_preview.png DESTINATION /usr/apps/org.tizen.video-player/shared/res/)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/video_preview_l.png DESTINATION /usr/apps/org.tizen.video-player/shared/res/)
+INSTALL(FILES ${VIDEO_PLAYER_PACKAGE}.xml DESTINATION ${DESKTOPDIR})
+INSTALL(FILES ${VIDEO_PLAYER_PACKAGE}.efl DESTINATION ${VIDEO_PLAYER_SMACKDIR})
+
+# install application HOME directory
+INSTALL(DIRECTORY DESTINATION ${VIDEO_PLAYER_DATADIR})
+INSTALL(DIRECTORY DESTINATION ${VP_DATADIR})
+INSTALL(DIRECTORY DESTINATION ${VP_THUMBDIR})
+INSTALL(DIRECTORY DESTINATION ${VP_CUR_THUMBDIR})
+INSTALL(DIRECTORY DESTINATION ${VP_TEMPDIR})
+INSTALL(DIRECTORY DESTINATION ${VP_SDPDIR})
+ADD_SUBDIRECTORY(res/po)
+
diff --git a/vp-main/include/serviceParser/vp-service-parser.h b/vp-main/include/serviceParser/vp-service-parser.h
new file mode 100644
index 0000000..b2291de
--- /dev/null
+++ b/vp-main/include/serviceParser/vp-service-parser.h
@@ -0,0 +1,132 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 __VP_SERVICE_PARSER__
+#define __VP_SERVICE_PARSER__
+
+#include <glib.h>
+#include <Eina.h>
+#include <app.h>
+#include <Ecore_X.h>
+
+typedef enum
+{
+ VP_LAUNCH_TYPE_NONE = 0,
+ VP_LAUNCH_TYPE_STORE,
+ VP_LAUNCH_TYPE_LIST,
+ VP_LAUNCH_TYPE_SIMPLE,
+ VP_LAUNCH_TYPE_EMAIL,
+ VP_LAUNCH_TYPE_MMS,
+ VP_LAUNCH_TYPE_MYFILE,
+ VP_LAUNCH_TYPE_GALLERY,
+ VP_LAUNCH_TYPE_IMAGE_VIEWER,
+ VP_LAUNCH_TYPE_IMAGE_VIEWER_TRIM,
+ VP_LAUNCH_TYPE_MULTI_PATH,
+ VP_LAUNCH_TYPE_MAX,
+}VpLaunchType;
+
+
+typedef enum
+{
+ VP_VIDEO_SORT_TYPE_BY_NONE = 0,
+
+ VP_VIDEO_SORT_TYPE_BY_NAME_DESC,
+ VP_VIDEO_SORT_TYPE_BY_NAME_ASC,
+ VP_VIDEO_SORT_TYPE_BY_DATE_DESC,
+ VP_VIDEO_SORT_TYPE_BY_DATE_ASC,
+
+ VP_VIDEO_SORT_TYPE_BY_MAX,
+}VpVideoSortType;
+
+
+typedef enum
+{
+ VP_VIDEO_PLAY_LIST_TYPE_NONE = 0,
+
+ VP_VIDEO_PLAY_LIST_TYPE_FOLDER,
+ VP_VIDEO_PLAY_LIST_TYPE_ALL_FOLDER_GALLERY,
+ VP_VIDEO_PLAY_LIST_TYPE_TAG_GALLERY,
+ VP_VIDEO_PLAY_LIST_TYPE_FAVORITE,
+ VP_VIDEO_PLAY_LIST_TYPE_MAX,
+}VpVideoPlayListType;
+
+
+typedef struct
+{
+ VpLaunchType eLaunchType; // launch type
+
+ VpVideoSortType eSortType; // only use gallery, image viewer and my files(?)
+ VpVideoPlayListType eListType; // only use gallery, image viewer and my files(?)
+ Ecore_X_Window nParentXID;
+
+ Eina_Bool bLaunchMultiWindow; // launch multi winodw
+ Eina_Bool bStreaming; // launch streaming
+ Eina_Bool bStoreDownload;
+ double dStoreDL_FileSize;
+ int nStorePlayedTime;
+ Eina_Bool bStopAfterRepeat;
+
+ char *pMediaUri; // play file path or url
+ char *szMediaTitle; // media file title
+ char *szDeviceID;
+ char *szDMRID;
+ char *szCookie;
+ char *szProxy;
+
+ char **szMultiPath;
+ int nMultiPath;
+
+ char **szMultiTitle;
+ int nMultiTitle;
+
+ char **szIsSameAP; // Samsung link : remote / local content,
+ int nSameAP;
+
+ char **szMultiSubTitle;
+ int nMultiSubTitle;
+
+ char **szMultiPosition;
+ int nMultiPosition;
+
+ char **szMultiDuration;
+ int nMultiDuration;
+
+ char *pStoreOrderId;
+ char *pStoreServerId;
+ char *pStoreAppId;
+ char *pStoreMvId;
+}VpServiceData;
+
+
+#ifdef _cplusplus
+extern "C"
+{
+#endif
+
+
+Eina_Bool VpServiceParserGetServiceData( app_control_h pAppSvcHandle, VpServiceData *pReceiveData );
+void VpServiceParserDestroyServiceData( VpServiceData *pServiceData );
+
+
+#ifdef _cplusplus
+}
+#endif
+
+
+#endif //__VP_SERVICE_PARSER__
+
diff --git a/vp-main/include/vp-main.h b/vp-main/include/vp-main.h
new file mode 100644
index 0000000..4203dcb
--- /dev/null
+++ b/vp-main/include/vp-main.h
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 __VP_MAIN__
+#define __VP_MAIN__
+
+
+#ifndef EXPORT_API
+#define EXPORT_API __attribute__((__visibility__("default")))
+#endif
+
+
+#include "vp-service-parser.h"
+#include <Ecore.h>
+
+
+/**
+ * @struct Video player App data
+ */
+typedef struct
+{
+ VpServiceData *pServiceData;
+ bool bPause;
+ void *pPlayView;
+
+ Ecore_Idler *pAppSvcIdler;
+
+ //////////////////////////////////////
+ // for multi window
+ char *pValStartup;
+ char *pValLayout;
+
+ bool bIsRelaunch;
+ //////////////////////////////////////
+}VpAppData;
+
+
+#endif //__VP_MAIN__
+
diff --git a/vp-main/org.tizen.video-player.efl b/vp-main/org.tizen.video-player.efl
new file mode 100755
index 0000000..d9de8a4
--- /dev/null
+++ b/vp-main/org.tizen.video-player.efl
@@ -0,0 +1,104 @@
+org.tizen.video-player org.tizen.videos rwxat- ------
+org.tizen.video-player tizen::vconf::volume::set rw---- ------
+org.tizen.video-player org.tizen.indicator rwxatl ------
+org.tizen.video-player system::use_internet rw---- ------
+org.tizen.video-player xorg rw---- ------
+org.tizen.video-player isf rwx--- ------
+org.tizen.video-player sound_server rw---- ------
+org.tizen.video-player media-data::db rw---- ------
+org.tizen.video-player dbus rwx--- ------
+org.tizen.video-player media-server rwx--- ------
+org.tizen.video-player power_manager -w---- ------
+org.tizen.video-player device::app_logging -w---- ------
+org.tizen.video-player device::video rw---- ------
+org.tizen.video-player device::hwcodec rw---- ------
+org.tizen.video-player device::bklight rw---- ------
+org.tizen.video-player deviced::display rw---- ------
+org.tizen.video-player deviced::power rw---- ------
+org.tizen.video-player connman rw---- ------
+org.tizen.video-player net-config rw---- ------
+org.tizen.video-player libaccounts-svc::db rw---- ------
+org.tizen.video-player device::camera r----- ------
+org.tizen.video-player com.samsung.facebook rw---- ------
+org.tizen.video-player stest-service -w---- ------
+org.tizen.video-player org.tizen.setting rw---- ------
+org.tizen.video-player device::mdnie rw---- ------
+org.tizen.video-player download-provider rw---- ------
+org.tizen.video-player drmfw rw---- ------
+org.tizen.video-player nfc-manager -w---- ------
+org.tizen.video-player deviced rwx--- ------
+org.tizen.video-player syslogd -w---- ------
+org.tizen.video-player vcs-server rwx--- ------
+org.tizen.video-player tts-server rwx--- ------
+org.tizen.video-player stt-server rwx--- ------
+org.tizen.video-player secure-storage -w---- ------
+org.tizen.video-player email-service --x--- ------
+org.tizen.video-player secure-storage::divx-fragment rw---- ------
+org.tizen.video-player eas-engine r-x--- ------
+org.tizen.video-player nfc-manager::p2p rw---- ------
+org.tizen.video-player wifi-direct -w---- ------
+org.tizen.video-player wifi-direct::admin rw---- ------
+org.tizen.video-player wifi-direct::discover -w---- ------
+org.tizen.video-player wifi-direct::info r----- ------
+org.tizen.video-player ui-gadget::client r----- ------
+org.tizen.video-player com.samsung.keepit. --x--- ------
+org.tizen.video-player aul::launch --x--- ------
+org.tizen.video-player key-storage::db r----l ------
+org.tizen.video-player secure-storage::key-storage r----- ------
+org.tizen.video-player tethering::dbus-access rw---- ------
+org.tizen.video-player com.samsung.sidesync rwx--l ------
+org.tizen.video-player connman::get rw---- ------
+org.tizen.video-player connman::set rw---- ------
+org.tizen.video-player telephony_framework::api_ps_public rw---- ------
+org.tizen.video-player telephony_framework::api_ps_profile rw---- ------
+org.tizen.video-player telephony_framework::api_manager r----- ------
+org.tizen.video-player telephony_framework::api_sim r----- ------
+org.tizen.video-player telephony_framework::api_modem r----- ------
+com.samsung.windicator aul::launch ------ ------
+com.samsung.windicator syspopup::db r----l ------
+org.tizen.video-player com.samsung.safetyvolume-syspopup rw---- ------
+org.tizen.video-player syspopup::db rw---- ------
+com.samsung.app-tray org.tizen.video-player r-x--- ------
+system::use_internet org.tizen.video-player -w---- ------
+org.tizen.volume org.tizen.video-player r----- ------
+org.tizen.video-player org.tizen.volume rw----- ------
+media-server org.tizen.video-player -w---- ------
+com.samsung.cluster-home org.tizen.video-player r-x--- ------
+stest-service org.tizen.video-player r-x--- ------
+org.tizen.setting org.tizen.video-player rwx--- ------
+wifi_direct_manager org.tizen.video-player rwx--- ------
+wifi_direct org.tizen.video-player rwx--- ------
+miracast-server org.tizen.video-player rwx--- ------
+dbus org.tizen.video-player rwx--- ------
+com.samsung.share org.tizen.video-player rwx--- ------
+com.samsung.email org.tizen.video-player rwx--- ------
+com.samsung.wifi-direct-popup org.tizen.video-player rwx--- ------
+org.tizen.data-provider-slave org.tizen.video-player rwx--- ------
+org.tizen.data-provider-slave media-data::db rwx--- ------
+org.tizen.data-provider-slave media-server rwx--- ------
+com.samsung.add-viewer org.tizen.video-player rwx--- ------
+org.tizen.video-player com.samsung.cluster-home -w---- ------
+org.tizen.video-player data-provider-master rw---- ------
+org.tizen.video-player data-provider-master::shortcut rw---- ------
+org.tizen.video-player data-provider-master::shortcut.livebox -w---- ------
+org.tizen.video-player system::homedir rwxat- ------
+org.tizen.video-player system::media rwxat- ------
+org.tizen.video-player system::share rwxat- ------
+org.tizen.video-player pulseaudio rwxat- ------
+e17 org.tizen.video-player -w---- ------
+org.tizen.video-player sys-assert::core rwxat- ------
+org.tizen.video-player privacy-manager::db r----l ------
+org.tizen.video-player pkgmgr::db r----l ------
+org.tizen.video-player ecore::lock rwxat- ------
+org.tizen.quickpanel-lite org.tizen.video-player rwx--- ------
+org.tizen.video-player 3yROd9haVh r-x--- ------
+org.tizen.video-player location_fw::client rwx--- ------
+org.tizen.video-player location_fw::maps rwx--- ------
+org.tizen.video-player bt-service::public -w---- ------
+org.tizen.video-player bt-service::platform -w---- ------
+org.tizen.video-player tizen::vconf::public::r::platform::rw r----- ------
+org.tizen.video-player tizen::vconf::public::r rwxatl ------
+org.tizen.video-player tizen::vconf::public::rw rwxatl ------
+org.tizen.video-player tizen::vconf::setting::admin rwxatl ------
+org.tizen.video-player tizen::vconf::display r----l ------
+org.tizen.video-player system::ext_storage rwx--- ------
diff --git a/vp-main/org.tizen.video-player.xml b/vp-main/org.tizen.video-player.xml
new file mode 100755
index 0000000..dd0a08a
--- /dev/null
+++ b/vp-main/org.tizen.video-player.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.video-player" version="1.0.39" install-location="internal-only">
+ <label>video-player</label>
+ <!--INDIA-->
+ <label xml:lang="en-gb">Video Player</label> <!-- -->
+ <label xml:lang="bn-in">ভিডিও প্লেয়ার</label>
+ <label xml:lang="gu-in">વિડિયો પ્લેયર</label>
+ <label xml:lang="hi-in">वीडियो प्‍लेयर</label>
+ <label xml:lang="kn-in">ವೀಡಿಯೊ ಪ್ಲೇಯರ್</label>
+ <label xml:lang="ml-in">വീഡിയോ പ്ലെയര്‍</label>
+ <label xml:lang="si-lk">වීඩියෝ වාදකය</label>
+ <label xml:lang="ta-in">நிகழ்பட இயக்கி</label>
+ <label xml:lang="te-in">వీడియో ప్లేయర్</label>
+ <label xml:lang="ur-pk">ویڈیو پلیئر</label>
+ <!--SEA-->
+ <label xml:lang="en-us">Video Player</label>
+ <label xml:lang="en-ph">Video Player</label>
+ <label xml:lang="zh-cn">视频播放器</label>
+ <label xml:lang="tl-ph">Video Player</label>
+ <label xml:lang="id-id">Pemutar Video</label>
+ <label xml:lang="ko-kr">비디오 플레이어</label>
+ <label xml:lang="ms-my">Pemain Video</label>
+ <label xml:lang="my-mm">ဗီြဒီယုိ ဖြင့္စက္</label>
+ <label xml:lang="th-th">เครื่อง​เล่น​วีดีโอ</label>
+ <label xml:lang="vi-vn">Máy xem video</label>
+ <label xml:lang="lo-la">ເຄື່ອງຫຼິ້ນວິດີໂອ</label>
+ <label xml:lang="km-kh">កម្មវិធី​ចាក់​វីដេអូ</label>
+ <!--Latin-->
+ <label xml:lang="pt-br">Video Player</label>
+ <label xml:lang="es-us">Reproductor de Video</label>
+ <author email="jhyuk47.lee@samsung.com" href="www.samsung.com">Jonghyuk Lee</author>
+ <description>Video player</description>
+ <ui-application appid="org.tizen.video-player" exec="/usr/apps/org.tizen.video-player/bin/video-player" nodisplay="true" multiple="false" type="capp" taskmanage="true" process-pool="false" hw-acceleration="use-GL" launch_mode="caller">
+ <label>Video player</label>
+ <icon>org.tizen.video-player.png</icon>
+ <metadata key="http://developer.samsung.com/tizen/metadata/floatingapp/preview" value="shared/res/video_preview.png"/>
+ <metadata key="http://developer.samsung.com/tizen/metadata/floatingapp/preview/landscape" value="shared/res/video_preview_l.png"/>
+ <metadata key="http://developer.samsung.com/tizen/metadata/multiwindow"/>
+ <!--INDIA-->
+ <label xml:lang="en-gb">Video Player</label> <!-- -->
+ <label xml:lang="bn-in">ভিডিও প্লেয়ার</label>
+ <label xml:lang="gu-in">વિડિયો પ્લેયર</label>
+ <label xml:lang="hi-in">वीडियो प्‍लेयर</label>
+ <label xml:lang="kn-ca">ವೀಡಿಯೊ ಪ್ಲೇಯರ್</label>
+ <label xml:lang="ml-my">വീഡിയോ പ്ലെയര്‍</label>
+ <label xml:lang="si-lk">වීඩියෝ වාදකය</label>
+ <label xml:lang="ta-in">நிகழ்பட இயக்கி</label>
+ <label xml:lang="te-in">వీడియో ప్లేయర్</label>
+ <label xml:lang="ur-pk">ویڈیو پلیئر</label>
+ <!--SEA-->
+ <label xml:lang="en-us">Video Player</label>
+ <label xml:lang="en-ph">Video Player</label>
+ <label xml:lang="zh-cn">视频播放器</label>
+ <label xml:lang="tl-ph">Video Player</label>
+ <label xml:lang="id-id">Pemutar Video</label>
+ <label xml:lang="ko-kr">비디오 플레이어</label>
+ <label xml:lang="ms-mw">Pemain Video</label>
+ <label xml:lang="my-mm">ဗီြဒီယုိ ဖြင့္စက္</label>
+ <label xml:lang="th-th">เครื่อง​เล่น​วีดีโอ</label>
+ <label xml:lang="vi-vn">Máy xem video</label>
+ <label xml:lang="lo-la">ເຄື່ອງຫຼິ້ນວິດີໂອ</label>
+ <label xml:lang="km-kh">កម្មវិធី​ចាក់​វីដេអូ</label>
+ <!--Latin-->
+ <label xml:lang="pt-br">Video Player</label>
+ <label xml:lang="es-us">Reproductor de Video</label>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/view" />
+ <mime name="video/mp4" />
+ <mime name="video/3gp" />
+ <mime name="video/divx" />
+ <mime name="video/x-msvideo" />
+ <mime name="video/x-ms-wmv" />
+ <mime name="video/x-ms-asf" />
+ <mime name="video/3gpp" />
+ <mime name="video/x-matroska" />
+ <mime name="video/vnd.ms-playready.media.pyv" />
+ <mime name="application/vnd.apple.mpegurl" />
+ <mime name="application/x-mpegurl" />
+ <mime name="audio/x-mpegurl" />
+ <mime name="video/x-mpegurl" />
+ <mime name="video/x-flv" />
+ <mime name="video/ogg" />
+ <mime name="video/quicktime" />
+ <mime name="video/mp2t" />
+ <mime name="audio/isma" />
+ <mime name="application/sdp" />
+ <uri name="http" />
+ <uri name="https" />
+ <uri name="rtsp" />
+ <uri name="rtp" />
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/view" />
+ <mime name="video/mp4" />
+ <mime name="video/3gp" />
+ <mime name="video/divx" />
+ <mime name="video/x-msvideo" />
+ <mime name="video/x-ms-wmv" />
+ <mime name="video/x-ms-asf" />
+ <mime name="video/3gpp" />
+ <mime name="video/x-matroska" />
+ <mime name="video/vnd.ms-playready.media.pyv" />
+ <mime name="application/vnd.apple.mpegurl" />
+ <mime name="application/x-mpegurl" />
+ <mime name="audio/x-mpegurl" />
+ <mime name="video/x-mpegurl" />
+ <mime name="video/x-flv" />
+ <mime name="video/ogg" />
+ <mime name="video/quicktime" />
+ <mime name="video/mp2t" />
+ <mime name="audio/isma" />
+ <mime name="application/sdp" />
+ </application-service>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/wifi.wifidirect.admin</privilege>
+ <privilege>http://tizen.org/privilege/wifi.wifidirect.read</privilege>
+ <privilege>http://tizen.org/privilege/maps</privilege>
+ <privilege>http://tizen.org/privilege/mediastorage</privilege>
+ <privilege>http://tizen.org/privilege/systemsettings</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
+ <privilege>http://tizen.org/privilege/telephony</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage</privilege>
+ <privilege>http://tizen.org/privilege/wifidirect</privilege>
+ <privilege>http://tizen.org/privilege/network.get</privilege>
+ <privilege>http://tizen.org/privilege/volume.set</privilege>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ </privileges>
+</manifest>
diff --git a/vp-main/res/po/CMakeLists.txt b/vp-main/res/po/CMakeLists.txt
new file mode 100755
index 0000000..d6894bc
--- /dev/null
+++ b/vp-main/res/po/CMakeLists.txt
@@ -0,0 +1,27 @@
+# for i18n
+
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de.po el_GR.po en_PH.po en.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr_CA.po fr.po ga.po gl.po
+hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl.po pl.po pt_BR.po pt_PT.po ro.po
+ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+ SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+
+ GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+ GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+
+ SET(vp_moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${vp_moFile}
+ COMMAND ${MSGFMT} -o ${vp_moFile} ${absPofile}
+ DEPENDS ${absPofile}
+ )
+ INSTALL(FILES ${vp_moFile}
+ DESTINATION ${VP_LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+ SET(vp_moFiles ${vp_moFiles} ${vp_moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${vp_moFiles}")
+ADD_CUSTOM_TARGET(vp_po ALL DEPENDS ${vp_moFiles})
diff --git a/vp-main/res/po/ar.po b/vp-main/res/po/ar.po
new file mode 100755
index 0000000..4cf2062
--- /dev/null
+++ b/vp-main/res/po/ar.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "السطوع"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "الموسيقى"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "الأصوات"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "ب."
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "ج.ب"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "ك.ب"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "الموقع"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "م.ب"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "موافق"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "آخر تعديل"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "مشاركة"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "لا يمكن تشغيل الفيديو"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "حدث خطأ في العناوين الفرعية."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "الملف تالف أو ربما تمت إزالة بطاقة SD."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "التفاصيل"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "العنوان"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "سيتم حذف هذا الفيديو."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "الضبط"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "يتعذر تشغيل الفيديو"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "محاذاة"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "حجم الخط"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "ضبط التكرار"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "العناوين الفرعية (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "وسط"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "كبير"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "إلى اليسار"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "متوسطة"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "إلى اليمين"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "صغير"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "التالي"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "السابق"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "لا يمكن مشاركة ملفات DRM"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "تنسيق"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "يتعذر تشغيل الصوت أثناء المكالمة."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "الرسالة"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "نقل الملفات"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "بريد إلكتروني"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "خط الطول"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "المدى"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "تفعيل الحركة"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "البحث بسرعة %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "‏‫التخزين الخارجي"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "درجة الصوت"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "تنسيق فيديو غير معتمد."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "نوع ملف غير مدعوم."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "تنسيق صوتي غير مدعم."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "يتعذر استخدام وظيفتي التقديم السريع والإرجاع‬ عندما تكون الأجهزة القريبة مفعلة."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "يتعذر الالتقاط."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "تدوير"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "اضغط على المفتاح الخلفي مرة أخرى للعودة إلى الشاشة السابقة."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "لا يوجد ذاكرة كافية. امسح بعض العناصر."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "قائمة الإشارات المرجعية ممتلئة. احذف بعض الإشارات المرجعية."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "أصفر"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "القناة الافتراضية ٧,۱"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "العناوين الفرعية (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "نمط الإعادة"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "بدون تكرار"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "أحمر أرجواني"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "أخضر"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "أزرق سماوي"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "ضبط مخصص"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "الفيديو الحالي (مرة)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "معلومات الاتصال"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "تغيير المشغل"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "التقاط"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "تحديد الجهاز"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "الأجهزة المتاحة"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "السماعة"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "أبيض"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "أحمر"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s من الثواني"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "سرعة العرض"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d ثانية"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "غير مفعل"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "لا يوجد عنوان"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "جهازي"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "الخط الافتراضي"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "جاز هادئ"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "شوكو كوكي"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "أزرق"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "أسود"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "التفعيل"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "هل تريد إغلاق التطبيق؟"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "إلغاء"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "بعد إيقاف الكل"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "تكرار الحالية"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "تكرار الكل"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "الدقة"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "توجد %s مؤثرات صوتية غير مدعومة بواسطة مكبر الصوت."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "اقلب الهاتف‬ لكتم المكالمات الواردة وتنبيهات الرسائل والتنبيهات."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "بطاقة SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "هذا الملف يعتمد بيانات الصوت فقط. تشغيل الصوت الآن."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "هذا الملف يعتمد بيانات الفيديو فقط. تشغيل الفيديو الآن."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "وحدة التخزين الخاصة"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "سماعات رأس"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "مكبر الصوت"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "إيقاف مؤقت"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "تنزيل"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "تحديد الترجمات (التسميات التوضيحية)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "معاينة الترجمات (التسميات التوضيحية)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "وضع التكرار"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "نوع ملف غير مدعوم."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "عادي"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "الصوت"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "الأفلام"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "المقطع الصوتي"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "تخزين مؤقت..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "تنسيق الملف"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "اللغة"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "لا توجد لقطات فيديو"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "الحجم"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "تم"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "تحديث"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "التاريخ"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "جار التحميل..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "العناوين الفرعية (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "حذف"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "إضافة إلى الشاشة الرئيسية"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "الاسم"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "يتعذر عرض الفيديو."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "ما من ترجمة متوفرة"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "تشغيل"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "إغلاق"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "الموقع الالكتروني غير صالح."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "خطأ"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "وحدة تخزين الجهاز"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "مشغل فيديو"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "مشاركة عبر"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "حدث خطأ في الشبكة. حاول مرة أخرى."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "يدعم تنسيق الملف هذا بيانات الصوت فقط. جارٍ تشغيل الصوت."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "فقط بيانات الفيديو المدعومة من تنسيق الملف هذا. يتم الآن تشغيل الفيديو."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "وسط"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "مفعل"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "الضبط"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "مقاطع فيديو"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "مشاركة"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "التفاصيل"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "مسح"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "يتمّ الآن تخزين مؤقت - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "ما من حد"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d من الثواني"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "تحديد جهاز صوت"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "حذف"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "إلغاء"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "حدث خطأ غير معروف أو قد يكون الملف تالفاً."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "إن نوع الملف هذا غير مدعوم."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "تم"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "إلغاء"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "موقع التخزين"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "العناوين الفرعية (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "مساحة التخزين الشخصية"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "ستكون التسميات التوضيحية على هذا الشكل"
+
diff --git a/vp-main/res/po/az.po b/vp-main/res/po/az.po
new file mode 100755
index 0000000..7dca76b
--- /dev/null
+++ b/vp-main/res/po/az.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Parlaqlıq"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musiqi"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Səslər"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "QB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Yeri"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Son dəyişmə"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Videonu göstərmək olmur"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Altyazılarda xəta baş verdi."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fayl korlanmış və ya SD kart çıxarılmışdır."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Təfsilatlar"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Başlıq"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Bu video silinəcək."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Parametrlər"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videonu göstərmək mümkün deyil"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Nizamlama"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Şriftin ölçüsü"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Parametri təkrarla"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Yarım başlıqlar (bağlı)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Mərkəz"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Böyük"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Sol"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Orta"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Sağ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Kiçik"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Növbəti"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Əvvəlki"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM faylları paylaşıla bilmir."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Zəng zamanı videonu göstərmək mümkün deyildir."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mesaj"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Faylın köçürülməsi"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Epoçt"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Uzunluq"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "En"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Hrkti aktv et"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx sürətdə təmizləmə."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Xarici yaddaş"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Həcm"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Video formatı dəstəklənmir."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Dəstəklənməyən fayl tipi."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Dəstəkləməyən audio format."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Yaxınlıqdakı cihazlar aktiv olduqda geri və irəli sarma mümkün deyil."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Çəkmək mümkün deyil."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Döndər"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Əvvəlki ekrana qayıtmaq üçün geri düyməsini yenidən basın."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Yaddaş kifayət etmir. Xahiş olunur bəzi elementləri silin"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Əlfəcin siyahısı doludur. Əlfəcinlərdən bəzilərini sil."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Sarı"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 kanal"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Yarım başlıqlar (bağlı)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Təkrarlama rejimi"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Təkrarlamadan"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Al-qırmızı"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Yaşıl"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Mavi"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Fərdi"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Cari video(bir dəfə)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Bağlantı məlumatı"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Pleyeri dəyiş"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Çək"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Cihazı seç"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Mümkün cihazlar"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Dinamik"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Ağ"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Qırmızı"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s saniyə"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Göstərilmə sürəti"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d saniyə"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Söndür"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Başlıq yoxdur"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mənim qurğum"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Susmaya görə şrift"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Mavi"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Qara"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivləşdirmə"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Proqram bağlansın?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Ləğv et"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Bitəndə dayandır"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "İndikini təkrarla"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Hamısını təkrarla"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolyusiya"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s səs effektləri səsucaldan ilə dəstəklənmir."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Daxil olan zəngləri, mesaj xəbərdarlıqlarını və zəngli saaxtı səssiz etmək üçün telefonu çevirin."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD kartı"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Bu fayl yalnız audio məlumatı dəstəkləyir. İndi səsləndirilən audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Bu fayl yalnız video məlumatı dəstəkləyir. İndi görüntülənən video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Şəxsi yaddaş"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Qulaqlıqlar"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Fasilə"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Yükləyin"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Altyazıları seç (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Altyazılara bax (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Təkrarlama rejimi"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Dəstəklənməyən fayl tipi."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Səs"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmlər"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio trek"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buferləmə..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Faylın formatı"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Dil"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Video yoxdur"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Ölçü"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Tamam"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Yenilə"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Tarix"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Yüklənir..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Yarım başlıqlar(CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Sil"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Ana ekrana əlavə et"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ad"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Videonu işlətmək mümkün deyil."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Alt-yazılar mümkündür"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Səsləndir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Bağla"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Yanlış URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Səhv"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Cihazın yaddaşı"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video pleyer"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Paylaş"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Şəbəkə xətası baş verdi. Yenidən cəhd edin."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Bu fayl formatı yalnız audio məlumatı dəstəkləyir. İndi səsləndirilən audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Bu fayl yalnız video məlumatını dəstəkləyir. İndi görüntülənən video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Mərkəz"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Qoş"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Parametrlər"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videolar"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Təfsilatlar"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buferləmə - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Yoxdur"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d san"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Audio cihazı seç"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Ləğv et"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Naməlum xəta baş verdi və ya fayl korlanmış ola bilər."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Bu fayl növü dəstəklənmir."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HAZIR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "LƏĞV ET"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Yaddaş yeri"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Altyazılar (BB)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Şəxsi yaddaş"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Böyük hərflərin təsvir olunma forması"
+
diff --git a/vp-main/res/po/bg.po b/vp-main/res/po/bg.po
new file mode 100755
index 0000000..bd87d00
--- /dev/null
+++ b/vp-main/res/po/bg.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Яркост"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Музика"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Гласове"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Позиция"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Последна промяна"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Споделяне"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Не може да се изпълни видео"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Възникна грешка със субтитрите."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Файлът е повреден или SD картата е премахната."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Детайли"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Заглавие"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Този видеоклип ще бъде изтрит."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Не може да се възпр. видео"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Подравняване"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Р-р шрифт"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Настройка за повторение"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитри (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Център"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Голям"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Отляво"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Средно"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Отдясно"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Малък"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Следващ"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Предиш."
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM файловете не могат да се споделят."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Не може да се възпроизвежда видео по време на разговор."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Съобщ-ие"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Прехвърляне на файл"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Имейл"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Геогр. дължина"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Геогр. ширина"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Актив. движ."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Търкане със скорост %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Външна памет за съхр."
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Сила звук"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Неподдържан формат на видео."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдържан тип файл."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Неподдържан аудио формат."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Не може да се използва бързо превъртане напред и назад, когато близките устройства са активирани."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Невъзможно заснемане."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Завъртане"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Натиснете отново клавиша Назад, за да се върнете към предишния екран."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Няма достатъчно памет. Изтрийте някои елементи"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Списък маркери пълен. Изтрий някои маркери."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Жълто"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Виртуален 7.1 кан"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитри (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Режим на повтаряне"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Без повтаряне"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Магента"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Зелено"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Циан"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "По избор"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Текущ клип (веднъж)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Инфо за връзка"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Смяна на плейъра"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Снимка"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Избор на устройство"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Достъпни устройства"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Високог."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Бял"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Червено"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s секунди"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Скорост на възпроизвеждане"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d сек."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Изключено"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Няма заглавие"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Моето устройство"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Шрифт по подразбиране"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Син"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Черно"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Активиране"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Затваряне на приложението?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Отказ"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Спри след всички"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повтаряне на текущо"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторение на всички"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Разделителна способност"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s звукови ефекта не се поддържат от високоговорителя."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Завъртете телефона, за да заглушите входящите повиквания, предупрежденията за съобщения и алармите."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD карта"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Само аудио данни, поддържани от този файл. В момента се възпроизвежда аудио."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Само видео данни, поддържани от този файл. В момента се възпроизвежда видео."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Лично място за съхранение"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Слушалки"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Високогов."
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Пауза"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Изтегли"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Избор на субтитри (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Преглед на субтитрите (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Режим на повтаряне"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдържан тип файл."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Нормален"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Глас"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Филми"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Аудио запис"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Буфериране..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Формат на файла"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Език"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Няма видео"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Размер"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Обновяване"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Дата"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Зареждане..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Субтитри (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Изтриване"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Добавяне към началния екран"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Име"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Невъзможно възпроизвеждане на видеоклип."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Няма налични субтитри"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Изпълняване"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Затвори"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Невалиден URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Грешка"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Памет на устройството"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Видео плейър"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Споделяне с"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Възникна мрежова грешка. Опитайте отново."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Само аудиоданни, поддържани от този файлов формат. В момента се възпроизвежда аудио."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Само видео данни, поддържани от този файлов формат. В момента се възпроизвежда видео."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Център"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Включено"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Видео клипове"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Сподели"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Детайли"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Изтриване"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Буфериране - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Няма"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d сек"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Избор на аудиоустройство"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Изтриване"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Отказ"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Възникна непозната грешка или файлът може да е повреден."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Файловият тип не се поддържа."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ОТКАЗ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Място за съхранение"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Субтитри (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Лично място за съхранение"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Надписите ще изглеждат така"
+
diff --git a/vp-main/res/po/ca.po b/vp-main/res/po/ca.po
new file mode 100755
index 0000000..c7991cb
--- /dev/null
+++ b/vp-main/res/po/ca.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brillantor"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Música"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Veus"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Ubicació"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Acceptar"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Última modificació"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "No es pot reproduir vídeo"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "S'ha produït un error amb els subtítols."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "El fitxer està malmès o s'ha tret la targeta SD."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalls"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Títol"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "S'esborrarà aquest vídeo"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ajustaments"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "No es pot reproduir el vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alineació"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Mida font"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir ajustament"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítols"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Gran"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mitjana"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dreta"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Petita"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Següent"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Els fitxers DRM no es poden compartir."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No es pot reproduir un vídeo durant una trucada"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Missatge"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfer fitxers"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correu elec"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Habilitar mov"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Desplaçament a una velocitat de %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Emmagatzematge extern"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volum"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Format de vídeo no compatible"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "No s'admet el tipus de fitxer"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Format d'àudio no compatible"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "No es pot utilitzar avançament ràpid i rebobinar quan s'han habilitat dispositius propers"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "No es pot capturar"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Girar"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Torni a prémer la tecla de retorn per a tornar a la pàgina anterior"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "No hi ha prou memòria. Esborrar-ne alguns elements."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Llista de preferits plena. Esborrar alguns preferits."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Groc"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "7.1 canals virtuals"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítols"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Mode repetició"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "No repetir"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verd"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cian"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalitzar"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Víd actual (un cop)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Info de connexió"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Canviar reprod"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Captura"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Seleccionar dispositiu"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dispositius dispon"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Altaveu"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Blanc"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Vermell"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segons"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocitat de reproducció"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desactivat"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sense títol"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "El meu dispositiu"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Font predeterminada"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blau"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Negre"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activació"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Tancar aplicació?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Aturar després tot"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir tot"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolució"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Els efectes de so de %s no són compatibles amb l'altaveu"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Giri el telèfon per silenciar trucades d'entrada, avisos de missatges i alarmes"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Targ SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Aquest fitxer només admet dades d'àudio. Ara està reproduint àudio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Aquest fitxer només admet dades de vídeo. Ara està reproduint vídeo."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Emmagatzematge privat"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auriculars"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Altaveu"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausa"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descarregar"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Selec subtítols (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Previsualitzar subtítols (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Mode Repetició"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "No s'admet el tipus de fitxer"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Veu"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Pel·lícules"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Pista d'àudio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Em mem int..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format del fitxer"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Idioma"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Cap vídeo"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Mida"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Fet"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Actualitzar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Carregant..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtítols (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Esborrar"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Afegir a pantalla d'inici"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "No es pot reproduir el vídeo"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "No hi ha subtítols disponibles"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reproduir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Tancar"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL no vàlida"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Error"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Emmagatzematge de dispositiu"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Reproductor de vídeo"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir mitjançant"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "S'ha produït un error de xarxa. Torni a intentar-ho."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Aquest format de fitxer només admet dades d'àudio. Ara està reproduint àudio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Aquest format de fitxer només admet dades de vídeo. Ara està reproduint vídeo."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centre"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Activat"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ajustaments"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Compart"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalls"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Esborrar"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Emmagatzemant a memòria interna: %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Cap"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Seleccionar dispositiu d'àudio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Esborrar"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "S'ha produït un error desconegut o el fitxer pot estar malmès."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "El tipus de fitxer no és compatible."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "REALITZAT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL·LAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Ubicació d'emmagatzematge"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtítols (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Emmagatzematge personal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Les anotacions es veuran així"
+
diff --git a/vp-main/res/po/cs.po b/vp-main/res/po/cs.po
new file mode 100755
index 0000000..8b9623c
--- /dev/null
+++ b/vp-main/res/po/cs.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Jas"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Hudba"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Hlasy"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Místo"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Naposledy změněno"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Sdílet"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Video nelze přehrát"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "V titulcích došlo k chybě."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Soubor je poškozený nebo byla odebrána SD karta."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Název"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Videoklip bude odstraněn."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nastavení"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Video nelze přehrát"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Zarovnání"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Velikost písma"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Nastavení opakování"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Na střed"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velké"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Doleva"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Střední"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Doprava"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Malé"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Další"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Předchozí"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Soubory chráněné DRM nelze sdílet."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formát"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Během hovoru nelze přehrát videoklip."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Zpráva"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Přenos souborů"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Zeměpisná délka"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Zeměpisná šířka"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Zapnout pohyb"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Tažení %snásobnou rychlostí."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Externí úložiště"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Hlasitost"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nepodporovaný formát videa."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodporovaný typ souboru."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nepodporovaný zvukový formát."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Když jsou zapnutá nedaleká zařízení, není možné použít rychlý posun dopředu a dozadu."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Vyfotografování se nezdařilo."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Otočit"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Dalším stisknutím tlačítka Zpět se vrátíte na předchozí obrazovku."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nedostatek paměti. Odstraňte některé položky"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Seznam záložek je plný Odstraňte některé záložky."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Žlutá"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuální 7.1 kan."
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Režim opakování"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Neopakovat"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Purpurová"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zelená"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Azurová"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Vlastní"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Akt. video (jednou)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Info o připojení"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Změnit přehrávač"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Zachytit"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Vybrat zařízení"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dostupná zařízení"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Reprod."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Bílá"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Červená"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s s"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Rychlost přehrávání"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Vypnuto"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Žádný název"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Toto zařízení"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Výchozí písmo"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Modrá"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Černá"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivace"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Ukončit aplikaci?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Zruš."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zast. po přeh. všech"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Opakovat aktuální"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Opakovat vše"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rozlišení"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Reproduktor nepodporuje zvukové efekty %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Obrácením telefonu ztlumíte příchozí hovory, upozornění na zprávy a upozornění."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD karta"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Tento soubor podporuje pouze zvuková data. Nyní se přehrává zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Tento soubor podporuje pouze obrazová data. Nyní se přehrává video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Soukromé úložiště"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Sluchátka"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Reproduktor"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauza"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Stáhnout"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Vyberte titulky (skryté)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Náhled titulků (skryté)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Režim opakování"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodporovaný typ souboru."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normální"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Mluvené slovo"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmy"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Zvuková stopa"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Uk. do pam..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formát souboru"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Jazyk"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Žádné videoklipy"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Velikost"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Hot."
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Aktualizovat"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Načítání..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Odstranit"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Přidat na dom. obrazovku"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Jméno"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nelze přehrát video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Žádné titulky nejsou k dispozici"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Přehrát"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Zavřít"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Neplatná adresa URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Chyba"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Paměť zařízení"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Videopřehrávač"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Sdílet přes"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Došlo k chybě sítě. Opakujte akci."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Tento formát souboru podporuje pouze zvuková data. Nyní se přehrává zvuk."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Tento formát souborů podporuje pouze video data. Nyní se přehrává video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Střed"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Zapnuto"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Nastavení"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videoklipy"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Sdílet"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Odstranit"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Ukládání do paměti – %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Žádné"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Vyberte zvukové zařízení"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Odstranit"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Storno"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Došlo k neznámé chybě nebo je soubor poškozený."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Typ souboru není podporován."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ZRUŠIT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Místo uložení"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Osobní úložiště"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Titulky budou vypadat takto."
+
diff --git a/vp-main/res/po/da.po b/vp-main/res/po/da.po
new file mode 100755
index 0000000..a77e4fc
--- /dev/null
+++ b/vp-main/res/po/da.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Lysstyrke"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musik"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Stemmer"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Placering"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Sidst ændret"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Del"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Kan ikke afspille video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Der opstod en fejl med underteksterne."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Filen er ødelagt, eller SD-kortet er blevet fjernet."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titel"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Denne video vil blive slettet."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Indstillinger"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan ej afspille video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Justering"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Skriftstørrelse"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Gentag indstilling"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrer"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stor"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Venstre"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mellem"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Højre"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Lille"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Næste"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Forrige"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-filer kan ikke deles."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan ikke afspille videoen under samtale."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Besked"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Filoverførsel"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Længdegrad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breddegrad"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Akt. bevæg."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Annullerer med en hastighed på %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Eksternt lager"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Lydstyrke"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Ikke-understøttet videoformat."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtype understøttes ikke."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Ikke-understøttet lydformat."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Kan ikke bruge hurtig spoling frem og tilbage, når enheder i nærheden er aktiveret."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Kan ikke optage."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotér"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Tryk på tilbagetasten igen for at vende tilbage til den forrige skærm."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Der er ikke tilstrækkelig hukommelse. Slet nogle elementer."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bogmærkelisten er fuld. Slet nogle bogmærker."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Gul"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuel 7.1-kan."
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Gentagelsestilstand"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Gentag ikke"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Pink"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Grøn"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Brugerdefineret"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Akt. video (én gang)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Forbindelsesopl."
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Skift afspiller"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Tag billede"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Vælg enhed"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Tilgængelige enheder"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Højttaler"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Hvid"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rød"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekunder"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Afspilningshastighed"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Fra"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Ingen titel"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Min enhed"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Standardskrifttype"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blå"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Sort"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivering"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Luk program?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Afbr."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop efter alle"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Gentag aktuel"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Gentag alle"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Opløsning"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s lydeffekter understøttes ikke af højttaler."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Sæt telefonens indgående opkald, beskedvarsler og alarmer på lydløs."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Kun lyddata understøttes af denne fil. Spiller lyd nu."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Kun videodata understøttes af denne fil. Spiller video nu."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privat lager"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Høretelefoner"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Højttaler"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Vælg undertekster (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Vis eks. på undertekster (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Gentagelsestilstand"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtype understøttes ikke."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Stemme"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Film"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Lydspor"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Gemmer..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Filformat"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Sprog"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Ingen videoer"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Størrelse"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Udført"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Opdatér"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dato"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Indlæser..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Slet"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Føj til startskærm"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Navn"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Kan ikke afspille videoklip."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Der findes ingen undertekster"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Afspil"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Luk"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Ugyldig URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Fejl"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Enhedslager"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Del via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Der opstod en netværksfejl. Prøv igen."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Dette filformat understøtter kun lyddata. Spiller lyd nu."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Kun videodata understøttes af dette filformat. Afspiller video nu."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Midt"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Til"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Indstillinger"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Del"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Slet"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Gemmer - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ingen"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Vælg lydenhed"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Slet"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annullér"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Der opstod en ukendt fejl, eller filen kan være beskadiget."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Denne filtype understøttes ikke."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "UDFØRT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULLER"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Lagerplacering"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Personligt lager"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Undertekster kommer til at se sådan ud."
+
diff --git a/vp-main/res/po/de.po b/vp-main/res/po/de.po
new file mode 100755
index 0000000..cbf3084
--- /dev/null
+++ b/vp-main/res/po/de.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Helligkeit"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musik"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Stimmen"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Standort"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Letzte Änderung"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Senden"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Keine Video-Wiedergabe möglich"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Bei den Untertiteln ist ein Fehler aufgetreten."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Die Datei ist beschädigt, oder die SD-Karte wurde entfernt."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titel"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Dieses Video wird gelöscht."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Einstellungen"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videowiedergabe nicht möglich."
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Ausrichtung"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Schriftgröße"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Einstellung wiederholen"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Untertitel (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Mitte"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Groß"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Links"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mittel"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Rechts"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Klein"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Weiter"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Zurück"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-Dateien können nicht freigegeben werden."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Video kann während eines Anrufs nicht wiedergegeben werden"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Nachr."
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Dateiübertragung"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-Mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Länge"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breite"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Aktivieren"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Scrubbing mit %s-facher Geschwindigkeit."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Externer Speicher"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Lautstärke"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nicht unterstütztes Videoformat"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nicht unterstützter Dateityp"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nicht unterstütztes Audioformat"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Der Vor- und Rücklauf kann nicht verwendet werden, wenn „Geräte in der Nähe“ (DLNA) eingeschaltet ist."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Aufnahme nicht möglich."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Ausrichten"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Drücken Sie die Zurück-Taste erneut, um zum vorherigen Bildschirm zurückzukehren."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nicht genügend Speicher. Löschen Sie einige Elemente"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Favoritenliste voll. Löschen Sie einige Favoriten"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Gelb"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "7.1 Kanäle virtuell"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Untertitel (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Wiederholungsmodus"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Keine Wiederholung"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Grün"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Zyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Benutzerdefiniert"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Akt. Video (einmal)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Verbindungs-Info"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Player wechseln"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Aufnahme"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Gerät auswählen"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Verfügbare Geräte"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Lautspr."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Weiß"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rot"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s Sekunden"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Wiedergabegeschwindigkeit"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d Sek."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Aus"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Kein Titel"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mein Gerät"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Standardschriftart"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool Jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Schoko-Cookie"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blau"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Schwarz"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivierung"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Anwendung schließen?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Abbr."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Nach allen anh."
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Aktuelles wiederh."
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Alle wiederholen"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Auflösung"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s Soundeffekte werden vom Lautsprecher nicht unterstützt."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Telefon zum Stummschalten von eingehenden Anrufen, Nachrichtensignalen und Alarmen umdrehen."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-Karte"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Für diese Datei werden nur Audiodaten unterstützt. Audio wird jetzt wiedergegeben."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Für diese Datei werden nur Videodaten unterstützt. Video wird jetzt wiedergegeben."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privater Speicher"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kopfhörer"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Lautspr."
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Herunterladen"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Untertitel auswählen (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Untertitel-Vorschau (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Wiederholungsmodus"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nicht unterstützter Dateityp"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Sprache"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filme"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audiotitel"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Puffern..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Dateiformat"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Sprache"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Keine Videos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Größe"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Fertig"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Aktu."
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Lädt..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Untertitel (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Löschen"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Zum Startbildschirm hzfg."
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Video kann nicht wiedergegeben werden"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Keine Untertitel verfügbar"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Starten"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Schließen"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Ungültige URL"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Fehler"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Gerätespeicher"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video-Player"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Senden via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ein Netzwerkfehler ist aufgetreten. Versuchen Sie es erneut."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Von diesem Dateiformat werden nur Audiodaten unterstützt. Audio wird jetzt wiedergegeben."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Dieses Dateiformat unterstützt nur Videodaten. Video wird jetzt abgespielt."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Mitte"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Ein"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Einstellungen"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Senden"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Löschen"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Puffern – %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Keine"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Audiogeräteauswahl"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Löschen"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Abbruch"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Unbekannter Fehler aufgetreten oder Datei beschädigt."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Dieser Dateityp wird nicht unterstützt."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FERTIG"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ABBRECHEN"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Speicherort"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Untertitel (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Persönlicher Speicher"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "So sehen Untertitel aus."
+
diff --git a/vp-main/res/po/el_GR.po b/vp-main/res/po/el_GR.po
new file mode 100755
index 0000000..64a656f
--- /dev/null
+++ b/vp-main/res/po/el_GR.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Φωτεινότητα"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Μουσική"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Φωνές"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Τοποθεσία"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Τελευταία τροποποίηση"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Κοινή χρήση"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Αδύνατη η αναπαραγωγή βίντεο"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Παρουσιάστηκε σφάλμα με τους υπότιτλους."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Το αρχείο είναι κατεστραμμένο ή έχει αφαιρεθεί η κάρτα SD."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Λεπτομέρειες"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Τίτλος"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Το βίντεο θα διαγραφεί."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ρυθμίσεις"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Αδύν. η αναπαρ. του βίντεο"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Στοίχιση"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Μέγ. γραμματοσειράς"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Επανάληψη ρύθμισης"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Υπότιτλοι (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Σεντρ"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Μεγάλο"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Αριστερό"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Μεσαίο"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Δεξιά"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Μικρό"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Επόμενο"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Προηγούμενο"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Δεν είναι δυνατή η κοινή χρήση αρχείων DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Μορφή"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Μήνυμα"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Μεταφορά αρχείου"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Γεωγραφικό μήκος"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Γεωγραφικό πλάτος"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Ενερ. κίνησης"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Ταχύτητα ρυθμού ολίσθησης %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Εξωτ. χώρος αποθήκ."
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Ένταση"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Μη υποστηριζόμενη μορφή βίντεο."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Μη υποστηριζόμενος τύπος αρχείου."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Μη υποστηριζόμενη μορφή ήχου."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Δεν είναι δυνατή η χρήση της γρήγορης προώθησης και επαναφοράς, όταν είναι ενεργοποιημένες κοντινές συσκευές."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Δεν είναι δυνατή η λήψη."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Περιστροφή"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Πατήστε το πλήκτρο επιστροφής ξανά για να επιστρέψετε στην προηγούμενη οθόνη."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Δεν υπάρχει αρκετή μνήμη. Διαγράψτε ορισμένα στοιχεία"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Η λίστα σελιδοδεικτών είναι πλήρης. Θέλετε να διαγράψετε μερικούς σελιδοδείκτες."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Κίτρινο"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Εικονικό κανάλι 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Υπότιτλοι (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Λειτουργία επανάληψης"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Χωρίς επανάληψη"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Ματζέντα"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Πράσινο"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Γαλάζιο"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Προσαρ."
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Τρεχ.βίντ.(μία φορά)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Πληροφορίες σύνδεσης"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Αλλαγή player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Λήψη"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Επιλογή συσκευής"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Διαθέσιμες συσκευές"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Ηχείο"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Λευκό"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Κόκκινο"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s δευτερόλεπτα"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Ταχύτητα αναπαραγωγής"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d δευτ."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Ανενεργό"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Χωρίς τίτλο"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Η συσκευή μου"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Προεπιλεγμένη γραμματοσειρά"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Μπλε"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Mαύρο"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Ενεργοποίηση"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Τερματισμός εφαρμογής;"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Άκυρο"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Όλα και μετά διακοπή"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Επανάληψη τρέχοντος"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Επανάληψη όλων"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Ανάλυση"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Τα εφέ ήχου %s δεν υποστηρίζονται από το ηχείο."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Για την πραγματοποίηση σίγασης των εισερχόμενων κλήσεων, των ειδοποιήσεων μηνυμάτων και των αφυπνίσεων, γυρίστε ανάποδα το τηλέφωνο."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Κάρτα SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Υποστηρίζονται μόνο δεδομένα ήχου από αυτό το αρχείο. Γίνεται αναπαραγωγή του ήχου."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Υποστηρίζονται μόνο δεδομένα βίντεο από αυτό το αρχείο. Γίνεται αναπαραγωγή του βίντεο."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Απόρρητος χώρος αποθήκευσης"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Ακουστικά"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Ηχείο"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Παύση"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Λήψη"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Επιλογή υπότιτλων (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Προεπισκόπηση υποτίτλων (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Λειτ. επανάληψης"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Μη υποστηριζόμενος τύπος αρχείου."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Κανονικό"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Φωνή"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Ταινίες"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Ηχητικό κομμάτι"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buffering..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Μορφή αρχείου"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Γλώσσα"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Δεν βρέθηκαν βίντεο"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Μέγεθος"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Τέλος"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Ανανέωση"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Ημερομηνία"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Φόρτωση..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Υπότιτλοι (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Διαγραφή"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Προσθήκη στην αρχική οθόνη"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Όνομα"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Δεν υπάρχουν διαθέσιμοι υπότιτλοι"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Αναπαραγωγή"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Κλείσιμο"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Άκυρο URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Σφάλμα"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Χώρος αποθήκευσης συσκευής"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Αναπαραγ. Βίντεο"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Κοινή χρήση μέσω"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Προέκυψε σφάλμα δικτύου. Δοκιμάστε ξανά."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Υποστηρίζονται μόνο δεδομένα ήχου από αυτήν τη μορφή αρχείου. Γίνεται αναπαραγωγή του ήχου."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Υποστηρίζονται μόνο δεδομένα βίντεο από αυτήν τη μορφή αρχείου. Γίνεται αναπαραγωγή του βίντεο."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Κέντρο"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Ενεργό"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ρυθμίσεις"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Βίντεο"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Κοιν.χρ"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Λεπτομέρειες"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Διαγραφή"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Προσωρινή αποθήκευση - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Κανένα"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d δευτ."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Επιλογή συσκευής ήχου"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Διαγραφή"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Ακύρωση"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Προέκυψε άγνωστο σφάλμα ή το αρχείο μπορεί να είναι κατεστραμμένο."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Αυτός ο τύπος αρχείου δεν υποστηρίζεται."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ΤΕΛΟΣ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ΑΚΥΡΟ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Θέση αποθήκευσης"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Υπότιτλοι (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Προσωπικός χώρος αποθήκευσης"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Οι λεζάντες θα έχουν την εξής μορφή"
+
diff --git a/vp-main/res/po/en.po b/vp-main/res/po/en.po
new file mode 100755
index 0000000..8730bc8
--- /dev/null
+++ b/vp-main/res/po/en.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brightness"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Music"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voices"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Location"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Share"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Cannot play video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "An error occurred with the subtitles."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "The file is corrupted or the SD card has been removed."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Title"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "This video will be deleted."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Unable to play video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignment"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repeat setting"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Large"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Left"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Right"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Small"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Next"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Previous"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM files cannot be shared."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "File transfer"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Enable motion"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Scrubbing at %sx speed."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "External storage"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Unsupported video format."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Unsupported audio format."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Unable to use fast forward and rewind when nearby devices are enabled."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Unable to capture."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotate"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Press the back key again to return to previous screen."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Not enough memory. Delete some items."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bookmark list full. Delete some bookmarks."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Yellow"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Repeat mode"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "No repeat"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Green"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Current video (once)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Connection info"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Change player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capture"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Select device"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Available devices"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Speaker"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "White"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Red"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s seconds"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "Pop"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Play speed"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d secs"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "No title"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "My device"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Default font"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool Jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco Cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blue"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Black"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activation"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Close application?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop after all"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repeat current"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repeat all"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s sound effects not supported by speaker."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Turn phone over to mute incoming calls, message alerts, and alarms."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD card"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file. Now playing audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file. Now playing video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Private storage"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Headphones"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Speaker"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Select subtitles (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Preview subtitles (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Repeat mode"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voice"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Movies"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio track"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buffering..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "File format"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Language"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "No videos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Size"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Refresh"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Loading..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Delete"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Add to home screen"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Unable to play video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "No subtitles available"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Play"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Close"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Invalid URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Error"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Device storage"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video Player"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Share via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A network error has occurred. Try again."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file format. Now playing audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file format. Now playing video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centre"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "On"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Share"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buffering - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "None"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d secs"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Select audio device"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "An unknown error has occurred or the file may be corrupt."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "This file type is not supported."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DONE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Storage location"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Personal storage"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Captions will look like this."
+
diff --git a/vp-main/res/po/en_PH.po b/vp-main/res/po/en_PH.po
new file mode 100755
index 0000000..f211bb6
--- /dev/null
+++ b/vp-main/res/po/en_PH.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brightness"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Music"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voices"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Location"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Share"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Cannot play video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "An error occurred with the subtitles."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "The file is corrupted or the SD card has been removed."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Title"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "This video will be deleted."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Unable to play video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignment"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repeat setting"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Center"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Large"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Left"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Right"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Small"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Next"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Previous"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM files cannot be shared."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "File transfer"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Enable motion"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Scrubbing at %sx speed."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "External storage"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Unsupported video format."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Unsupported audio format."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Unable to use fast forward and rewind when nearby devices are enabled."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Unable to capture."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotate"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Press the back key again to return to previous screen."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Not enough memory. Delete some items"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bookmark list full. Delete some bookmarks"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Yellow"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Repeat mode"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "No repeat"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Green"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Current video (once)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Connection info"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Change player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capture"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Select device"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Available devices"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Speaker"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "White"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Red"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s seconds"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Play speed"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d secs"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "No title"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "My device"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Default font"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool Jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blue"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Black"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activation"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Close application?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop after all"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repeat current"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repeat all"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s sound effects not supported by speaker."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Turn phone over to mute incoming calls, message alerts, and alarms."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD card"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file. Now playing audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file. Now playing video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Private storage"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Headphones"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Speaker"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Select subtitles (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Preview subtitles (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Repeat mode"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voice"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Movies"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio track"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buffering..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "File format"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Language"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "No videos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Size"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Refresh"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Loading..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Delete"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Add to home screen"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Unable to play video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "No subtitles available"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Play"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Close"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Invalid URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Error"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Device storage"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video Player"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Share via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A network error has occurred. Try again."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file format. Now playing audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file format. Now playing video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Center"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "On"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Share"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buffering - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "None"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d secs"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Select audio device"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "An unknown error has occurred or the file may be corrupt."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "This file type is not supported."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DONE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Storage location"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Personal storage"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Captions will look like this"
+
diff --git a/vp-main/res/po/en_US.po b/vp-main/res/po/en_US.po
new file mode 100755
index 0000000..52219d3
--- /dev/null
+++ b/vp-main/res/po/en_US.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brightness"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Music"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voices"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Location"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Last modified"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Share"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Cannot play video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "An error occurred with the subtitles."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "The file is corrupted or the SD card has been removed."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Title"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "This video will be deleted."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Unable to play video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignment"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repeat setting"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Center"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Large"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Left"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Right"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Small"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Next"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Previous"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM files cannot be shared."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "File transfer"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Turn on motion"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Scrubbing at %sx speed."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "External storage"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Unsupported video format."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Unsupported audio format."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Unable to use fast forward and rewind when nearby devices are turned on."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Unable to capture."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotate"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Press the back key again to return to previous screen."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Not enough memory. Delete some items."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bookmark list full. Delete some bookmarks."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Yellow"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Repeat mode"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "No repeat"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Green"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Current video (once)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Connection info"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Change player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capture"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Select device"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Available devices"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Speaker"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "White"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Red"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s seconds"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Play speed"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sec"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Off"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "No title"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "My device"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Default font"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool Jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blue"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Black"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activation"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Close application?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop after all"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repeat current"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repeat all"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s sound effects not supported by speaker."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Turn phone over to mute incoming calls, message alerts, and alarms."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD card"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file. Now playing audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file. Now playing video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Private storage"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Headphones"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Speaker"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Download"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Select subtitles (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Preview subtitles (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Repeat mode"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voice"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Movies"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio track"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buffering..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "File format"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Language"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "No videos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Size"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Refresh"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Loading..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Delete"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Add to Home screen"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Unable to play video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "No subtitles available"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Play"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Close"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Invalid Web address."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Error"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Device storage"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video Player"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Share via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A network error has occurred. Try again."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Only audio data supported by this file format. Now playing audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Only video data supported by this file format. Now playing video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Center"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "On"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Share"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buffering - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "None"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sec"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Select audio device"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "An unknown error has occurred or the file may be corrupt."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "This file type is not supported."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DONE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCEL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Storage location"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitles (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Personal storage"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Captions will look like this."
+
diff --git a/vp-main/res/po/es_ES.po b/vp-main/res/po/es_ES.po
new file mode 100755
index 0000000..8167a20
--- /dev/null
+++ b/vp-main/res/po/es_ES.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brillo"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Música"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voces"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Ubicación"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "No es posible reproducir vídeo"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Se ha producido un error con los subtítulos."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "El archivo está dañado o se ha retirado la tarjeta SD."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Se eliminará este vídeo"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ajustes"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "No se puede reproducir vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alineación"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamaño de fuente"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir ajuste"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centro"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Izquierda"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medio"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Derecha"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeño"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Siguiente"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Los archivos DRM no se pueden compartir."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No se puede reproducir vídeo durante la llamada"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensaje"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfer archivos"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correo elect"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Activar mov"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Depurando a velocidad %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Almacenamiento externo"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volumen"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo no admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de audio no compatible"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "No se puede usar rebobinado y avance rápido cuando se han habilitado los dispositivos cercanos"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "No se puede capturar"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotar"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Vuelva a pulsar la tecla Atrás para volver a la pantalla anterior"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "No hay memoria suficiente. Elimine algunos elementos."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de favoritos llena. Elimine algunos favoritos."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Amarillo"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "7.1 canales virtuales"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Modo Repetición"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "No repetir"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cian"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Víd actual (una vez)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Info de conexión"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Cambiar reproductor"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capturar"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Seleccione dispositivo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Disposit dispon"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Altavoz"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Blanco"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Romero"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rojo"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segundos"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocidad de reproducción"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d seg"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sin título"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mi dispositivo"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Fuente predeterminada"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Azul"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Negro"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activación"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "¿Cerrar aplicación?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Detener después todo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todo"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Efectos de sonido de %s no admitidos por el altavoz"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Dé la vuelta al teléfono para silenciar las llamadas entrantes, las alertas de mensajes y las alarmas"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Tarjeta SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Este archivo solo admite datos de audio. Ahora se reproduce audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Este archivo solo admite datos de vídeo. Ahora se reproduce vídeo."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Almacenamiento privado"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auriculares"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Altavoz"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausa"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Selecc subtítulos (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Previsualizar subtítulos (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modo Repetición"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Películas"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Pista de audio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Alm. búfer..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formato de archivo"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Idioma"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Sin vídeos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Hecho"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Fecha"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Cargando..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Añadir a pantalla de inicio"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nombre"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "No se puede reproducir vídeo"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "No hay subtítulos disponibles"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reproducir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Cerrar"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL no válida"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Error"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Almacenamiento del dispositivo"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Se ha producido un error de red. Vuelva a intentarlo."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Este formato de archivo solo admite datos de audio. Ahora se reproduce audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Este formato de archivo solo admite datos de vídeo. Se está reproduciendo vídeo."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centro"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ajustes"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Almacenando en búfer: %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ninguna"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Seleccionar dispositivo de audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Se ha producido un error desconocido o es posible que el archivo esté dañado."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Este tipo de archivo no es compatible."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HECHO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Ubicación almacenamiento"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Almacenamiento personal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Los subtítulos se verán así"
+
diff --git a/vp-main/res/po/es_US.po b/vp-main/res/po/es_US.po
new file mode 100755
index 0000000..d3c5f3c
--- /dev/null
+++ b/vp-main/res/po/es_US.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brillo"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Música"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Ubicación"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "No es posible reproducir video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Ocurrió un error con los subtítulos."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "El archivo está dañado o se retiró la tarjeta de memoria."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Este video se eliminará."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ajustes"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "No se puede reproducir video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alineación"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamaño de fuente"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir configuración"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Central"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Izquierda"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medio"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Derecha"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeño"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Siguiente"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "No es posible compartir archivos DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No es posible reproducir video durante la llamada."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensaje"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfer. de archivo"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correo"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Activar mov."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Depurando a %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Almacenamiento externo"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volumen"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de video no admitido."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de audio no compatible."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "No es posible usar avanzar rápido y retroceder cuando dispositivos cercanos está activado."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "No es posible capturar."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotar"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Presione la tecla Atrás nuevamente para regresar a la pantalla anterior."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Memoria insuficiente. Elimine algunos elementos"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de Favoritos llena. Elimine algunos."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Amarillo"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Modo de repetición"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "No repetir"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cian"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizado"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Video act. (una vez)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Inform. de conexión"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Cambiar reproductor"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capturar"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Seleccionar dispositivo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dispositivos disponibles"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Altavoz"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Blanco"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Romero"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rojo"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segundos"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocidad de reproducción"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d seg."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sin título"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mi dispositivo"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Fuente predeterminada"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool Jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Galleta de chocolate"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Azul"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Negro"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activación"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "¿Cerrar aplicación?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Detener desp. todo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todo"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Los efectos de sonido %s no son admitidos por el altavoz."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Gire el dispositivo para desactivar el sonido de las llamadas entrantes y las alarmas."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Tarjeta de memoria"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Este archivo sólo admite datos de audio. Ahora se reproduce audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Este archivo sólo admite datos de video. Ahora se reproduce video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Almacenamiento privado"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auricular"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Altavoz"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausar"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Selecc. subtítulos (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Vista prev. de subtítulos (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modo repetir"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Películas"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Pista de audio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Guardando..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formato del archivo"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Idioma"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Sin videos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Fecha"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Cargando..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Añadir a pantalla de inicio"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nombre"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "No es posible reproducir el video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "No hay subtítulos disponibles"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reproducir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Cerrar"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL no válida."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Error"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Almacenamiento del dispositivo"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir vía"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Se produjo un error de red. Inténtelo de nuevo."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Este formato de archivo sólo admite datos de audio. Ahora se reproduce audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Este formato de archivo solo admite datos de video. Ahora se reproduce video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centro"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ajustes"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Guardando: %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ninguno"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Seleccionar dispositivo de audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Se produjo un error desconocido o el archivo puede estar dañado."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Este tipo de archivo no es compatible."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "REALIZADO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Ubicación de almacenam."
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Almacenamiento personal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Los subtítulos se verán así"
+
diff --git a/vp-main/res/po/et.po b/vp-main/res/po/et.po
new file mode 100755
index 0000000..60270d9
--- /dev/null
+++ b/vp-main/res/po/et.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Heledus"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Muusika"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Hääled"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Asukoht"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Viimati muudetud"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Jaga"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Videot ei saa esitada"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Subtiitritega ilmnes tõrge."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fail on rikutud või SD-kaart on eemaldatud."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Üksikasjad"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Pealkiri"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "See video kustutatakse."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Seaded"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videot ei saa esitada"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Joondamine"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Fondi suurus"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Korduse seadistus"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtiitrid (peittiitrid)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Keskel"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Suur"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vasakul"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Keskmine"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Paremal"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Väike"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Järgmine"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Eelmine"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-faile ei saa jagada."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Vorminda"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kõne ajal ei saa videot esitada."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Sõnum"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Failiedastus"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-kiri"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Pikkuskraad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Laiuskraad"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Luba liik."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Kaapimine %sx kiirusel."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Välismälu"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Helitugevus"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Mittetoetatud videovorming."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Toetuseta failitüüp."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Mittetoetatud helivorming."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Kui lähedalolevad seadmed aktiveeritakse, ei saa te kasutada edasi- ja tagasikerimist."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Jäädvustamine nurjus."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Pööra"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Eelmisele kuvale naasmiseks vajutage uuesti tagasiliikumise klahvi."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Mälu pole piisavalt. Kustutage mõned üksused"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Järjehoidjate loend on täis.\nKustutage mõned järjehoidjad."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Kollane"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuaal. kanal 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtiitrid (peittiitrid)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Kordusrežiim"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ei korda"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Roheline"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Tsüaan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Kohandatud"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Praegune video (1x)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Ühenduse teave"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Vaheta mängijat"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Jäädvusta"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Vali seade"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Saadaolevad seadmed"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Val.hääl."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Valge"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Punane"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekundit"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Esituskiirus"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Väljas"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Pealkirjata"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Minu seade"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Vaikefont"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Sinine"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Must"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktiveerimine"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Kas sulgeda rakendus?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Tühis."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Lõpeta pärast kõiki"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Korda praegust"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Korda kõik"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Eraldusvõime"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Valjuhääldi ei toeta rakenduse %s heliefekte."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Saabuvate konede, sonumi marguannete ja teiste marguannete vaigistamiseks keerake telefon umber."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kaart"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "See fail toetab ainult heliandmeid. Nüüd esitatakse heli."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "See fail toetab ainult videoandmeid. Nüüd esitatakse videot."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privaatne mälu"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kõrvaklapid"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Kõlar"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Paus"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Laadi alla"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Vali subt. (peittiitrid)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Eelvaate subt. (peittiitrid)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Kordusrežiim"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Toetuseta failitüüp."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Tavaline"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Hääl"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmid"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Helipala"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Puhverdamine"
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Failivorming"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Keel"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Videoid pole"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Suurus"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Valmis"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Värskenda"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Kuupäev"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Laadimine..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subt. (peittiitrid)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Kustuta"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Lisa avaekraanile"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nimi"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Videot ei saa esitada."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Subtiitrid pole saadaval"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Esita"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Sulge"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Vigane URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Tõrge"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Seadme mälu"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Videomängija"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Jaga:"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ilmnes võrgutõrge. Proovige uuesti."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "See failvorming toetab ainult heliandmeid. Nüüd esitatakse heli."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "See failvorming toetab ainult videoandmeid. Nüüd esitatakse videot."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Keskele"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Sees"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Seaded"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videod"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Jaga"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Üksikasjad"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Kustuta"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Puhverdamine – %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Puudub"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Heliseadme valimine"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Kustuta"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Tühista"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Ilmnes tundmatu tõrge või fail on rikutud."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Seda failitüüpi ei toetata."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "VALMIS"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "TÜHISTA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Salvestamise asukoht"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtiitrid (peittiitrid)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Isiklik mälu"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Pealdised näevad välja nii"
+
diff --git a/vp-main/res/po/eu.po b/vp-main/res/po/eu.po
new file mode 100755
index 0000000..dca7f7f
--- /dev/null
+++ b/vp-main/res/po/eu.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Argitasuna"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musika"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Ahotsak"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Kokalekua"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Ados"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Azken aldaketa"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partekatu"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Ezin da bideoa erreproduzitu"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Errore bat gertatu da azpitituluekin."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fitxategia hondatuta dago edo SD txartela kendu egin da."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Xehetasunak"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Izenburua"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Bideo hau ezabatuko da"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ezarpenak"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Ezin da bideoa erreproduzitu"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Lerrokatzea"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Letraren neurria"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Errepikatu ezarpena"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Azpitituluak (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Erdikoa"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Handia"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Ezkerra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Ertaina"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Eskuinekoa"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Txikia"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Hurrengoa"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Aurrekoa"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Ezin dira DRM fitxategiak partekatu"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formateatu"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ezin da bideoa erreproduzitu deia egiten ari den bitartean"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mezua"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Fitx. transferentzia"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Helb. elek."
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitudea"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitudea"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Gaitu mugim."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx-ko abiaduran aurreratzea"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Kanpo memoria"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Bolumena"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Bideoaren formatua ez dago onartuta"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Fitxategi mota ez bateragarria"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Audioaren formatua ez dago onartuta"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Ezin dira aurreratzeko eta atzeratzeko aukerak erabili gertuko gailuak gaitzen direnean"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Ezin da irudia hartu"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Biratu"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Aurreko pantailara itzultzeko, sakatu berriro atzera-tekla"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Ez dago memoria nahikoa. Elementu batzuk ezabatu."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Laster-marka zerrenda beteta dago.Laster-marka batzuk ezabatu."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Horia"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "7.1 kate birtuala"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Azpitituluak (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Errepikapen modua"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ez errepikatu"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Berdea"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Zian"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Pertsonalizatua"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Bideo hau (behin)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Konexio informazioa"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Aldatu erreproduktorea"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Kapturatu"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Aukeratu gailua"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Gailu eskuragarriak"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Bozgor."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Zuria"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Gorria"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segundo"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Erreprodukzioaren abiadura"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d seg"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desaktibatuta"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Izenbururik ez"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Nire gailua"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Lehenetsitako letra mota"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Urdina"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Beltza"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktibazioa"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Aplikazioa itxi?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Ezez."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Eten denen ondoren"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Errepikatu hau"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Errepikatu dena"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Bereizmena"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Bozgorailuak ez ditu %s soinu efektu onartzen"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Itzuli telefonoa sarrera deiak, mezu alertak eta alarmak isilarazteko"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD txar."
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Fitxategi honek audio datuak baino ez ditu onartzen. Audioa erreproduzitzen."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Fitxategi honek bideo datuak baino ez ditu onartzen. Bideoa erreproduzitzen."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Biltegi pribatua"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Aurikularrak"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Bozgorailua"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Eten"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Deskargatu"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Hautatu azpitituluak (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Aurreikusi azpitituluak (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Errepikatze modua"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Fitxategi mota ez bateragarria"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Arrunta"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Ahotsa"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmak"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio pista"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Bufferreratzen..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Fitxategiaren formatua"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Hizkuntza"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Bideorik ez"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Tamaina"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Egina"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Eguneratu"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Kargatzen..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Azpidatziak (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Ezabatu"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Gehitu hasierako pantailara"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Izena"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Ezin da bideoa erreproduzitu"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Ez dago azpidatzirik erabilgarri"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Erreproduzitu"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Itxi"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL baliogabea"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Errorea"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Gailu biltegia"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Bideo Jogailua"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partekatu honen bidez"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Sare errorea gertatu da. Saiatu berriz."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Fitxategi formatu honek onartzen dituen audio datuak soilik. Orain audioa erreproduzitzen."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Fitxategi formatu honek bideo datuak baino ez ditu onartzen. Bideoa erreproduzitzen."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Erdia"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Aktibatuta"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ezarpenak"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Bideoak"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Partek."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Xehetasunak"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Ezabatu"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Bufferreratzen - %%d"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Batere ez"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Hautatu audio gailua"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ezabatu"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Ezeztatu"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Errore ezezaguna gertatu da edo baliteke fitxategia hondatuta egotea."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Fitxategi mota hau ez da onartzen."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "EGINA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "UTZI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Biltegiratze kokapena"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Azpitituluak (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Biltegi pertsonala"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Kapturak itxura hau izango du"
+
diff --git a/vp-main/res/po/fi.po b/vp-main/res/po/fi.po
new file mode 100755
index 0000000..383fec2
--- /dev/null
+++ b/vp-main/res/po/fi.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Kirkkaus"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musiikki"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Äänet"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "t"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Gt"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kt"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Sijainti"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mt"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Muutettu viimeksi"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Jaa"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Videota ei voi toistaa"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Tekstityksessä tapahtui virhe."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Tiedosto on vioittunut tai SD-kortti on poistettu."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Lisätiedot"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Otsikko"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Tämä video poistetaan."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Asetukset"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videota ei voi toistaa"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Kohdistus"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Fonttikoko"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Toistoasetus"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Tekstitys (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Keskelle"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Suuri"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vasemmalle"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Keskisuuri"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Oikealle"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pieni"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Seuraava"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Edellinen"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-tiedostoja ei voi jakaa."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Muoto"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Puhelun aikana ei voi toistaa videota."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Viesti"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Tiedostonsiirto"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Sähköposti"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Pituusaste"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Leveysaste"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Käytä liikettä"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Hangataan %s-kertaisella nopeudella."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Ulk. tallennuslaite"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Äänenvoimakkuus"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Videomuotoa ei tueta."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tiedostotyyppiä ei tueta."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Äänimuotoa ei tueta."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Pikakelausta eteen- ja taaksepäin ei voi käyttää, kun lähellä olevat laitteet ovat käytössä."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Ei voi tehdä ruudunkaappausta."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Kierrä"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Palaa edelliseen näyttöön painamalla paluunäppäintä uudelleen."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Muisti ei riitä. Poista joitain kohteita."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Kirjanmerkkiluettelo täynnä. Poista kirjanmerkkejä."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Keltainen"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuaalinen 7.1-kanava"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Tekstitys (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Toistotila"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ei toistoa"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Vihreä"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Syaani"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Mukautettu"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Nyk. video (kerran)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Yhteystiedot"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Vaihda soitinta"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Tallenna"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Valitse laite"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Käyt. olevat laitt."
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Kaiutin"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Valkoinen"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Punainen"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekuntia"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Toistonopeus"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Pois"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Otsikko puuttuu"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Oma laite"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Oletusfontti"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Sininen"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Musta"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivointi"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Suljetaanko sovellus?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Per."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Pysäytä kaikk. jälk."
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Toista nykyinen"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Toista kaikki"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Tarkkuus"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Kaiutin ei tue äänitehosteita %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Mykistä saapuvat puhelut, viestihälytykset ja herätykset kääntämällä puhelin ylösalaisin."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kort."
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Tiedosto tukee vain äänitietoja. Toistetaan ääntä."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Tiedosto tukee vain videotietoja. Toistetaan videota."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Yksityinen tallennustila"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kuulokkeet"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Kaiutin"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Tauko"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Lataa"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Valitse tekstitys (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Esikatsele tekstitys (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Toistotila"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tiedostotyyppiä ei tueta."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normaali"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Ääni"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Elokuvat"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Ääniraita"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Puskuroi..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Tiedostomuoto"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Kieli"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Ei videoita"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Koko"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Valmis"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Päivitä"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Päivämäärä"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Ladataan..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Tekstitys (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Poista"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Lisää alkunäyttöön"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nimi"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Videota ei voi toistaa."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Tekstityksiä ei ole käytettävissä"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Toista"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Sulje"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Virheellinen URL-osoite"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Virhe"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Laitteen muisti"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Videosoitin"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Jakotapa"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Verkkovirhe. Yritä uudelleen."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Tämä tiedostomuoto tukee vain äänitietoja. Toistetaan ääntä."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Tämä tiedostomuoto tukee vain videotietoja. Toistetaan videota."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Keskelle"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Päälle"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Asetukset"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videot"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Jaa"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Lisätiedot"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Poista"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Puskuroidaan - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ei mitään"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Valitse äänilaite"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Poista"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Peruuta"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Tuntematon virhe tai tiedosto on ehkä vioittunut."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Tätä tiedostotyyppiä ei tueta."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "VALMIS"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "PERUUTA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Tallennuspaikka"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Tekstitys (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Henkilökohtainen tallennustila"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Kuvatekstit näyttävät tältä."
+
diff --git a/vp-main/res/po/fr.po b/vp-main/res/po/fr.po
new file mode 100755
index 0000000..8b48464
--- /dev/null
+++ b/vp-main/res/po/fr.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Luminosité"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musique"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voix"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "o"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Go"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "Ko"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localisation"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mo"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Dernière modification"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partager"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Lecture vidéo impossible"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Une erreur s'est produite avec les sous-titres."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Le fichier est corrompu ou la carte SD a été retirée."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titre"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Cette vidéo va être supprimée."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Paramètres"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossible de lire la vidéo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignement"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Taille de police"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Répéter le paramètre"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grand"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Gauche"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Moyen"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Droit"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Petit"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Suivant"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Précédent"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Impossible de partager les fichiers DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossible de lire la vidéo pendant un appel."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfert fichiers"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Act. mouvement"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Recherche à la vitesse %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Stockage externe"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Format vidéo non pris en charge"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Format audio non pris en charge"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Impossible d'utiliser les fonctions d'avance et de retour rapides lorsque la fonction AllShare est activée."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Capture impossible"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Pivoter"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Appuyez de nouveau sur la touche Retour pour revenir à l'écran précédent."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Mémoire insuffisante. Supprimez certains éléments."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Liste de favoris saturée. Supprimer des favoris."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Jaune"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Canal 7.1 virtuel"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Mode répétition"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Mode répétition désactivé"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Vert"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personnalisé"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Vidéo act. (1 fois)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Infos connexion"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Modifier le lecteur"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capturer"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Sélectionner appareil"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Périph. disponibles"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "HP"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Blanc"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rouge"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s secondes"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Vitesse de lecture"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sec"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sans titre"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mon appareil"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Police par défaut"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Bleu"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Noir"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activation"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Fermer l'application ?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Annul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Arrêter après tout"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Répéter élém. actuel"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Tout répéter"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Les effets sonores %s ne sont pas pris en charge par le haut-parleur."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Retournez le téléphone pour couper la sonnerie des appels entrants, des alertes de message et des alarmes."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Carte SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Seules les données audio sont prises en charge par ce fichier. Audio en cours de lecture."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Seules les données vidéo sont prises en charge par ce fichier. Vidéo en cours de lecture."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Stockage privé"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Écouteurs"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Haut-parleur"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Télécharger"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Sélectionner sous-titres"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Aperçu des sous-titres"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Mode répéter"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Standard"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voix"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Vidéos"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Piste audio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Tampon..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format de fichier"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Langue"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Aucune vidéo"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Taille"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Rafraîchir"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Chargement..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Ajouter à l'écran d'accueil"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Impossible de lire la vidéo."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Aucun sous-titre disponible"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Lire"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Fermer"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL non valide"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Erreur"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Espace sur l'appareil"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Lecteur vidéo"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partager via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Une erreur réseau s'est produite. Réessayez."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Seules les données audio sont prises en charge par ce format de fichier. Audio en cours de lecture."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Seules les données vidéo sont prises en charge par ce format de fichier. Vidéo en cours de lecture."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centrer"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Activé"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Paramètres"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vidéos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Partage"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Mise en mémoire tampon - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Aucune"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Sélectionner un appareil audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Une erreur inconnue est survenue ou le fichier est peut-être corrompu."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ce type de fichier n'est pas pris en charge."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULER"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Emplacement de stockage"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Stockage personnel"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Aspect des sous-titres"
+
diff --git a/vp-main/res/po/fr_CA.po b/vp-main/res/po/fr_CA.po
new file mode 100755
index 0000000..a20a48c
--- /dev/null
+++ b/vp-main/res/po/fr_CA.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Luminosité"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musique"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voix"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "O"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Go"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "Ko"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localisation"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mo"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Dernière modification"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partager"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Lecture vidéo impossible"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Une erreur s'est produite avec les sous-titres."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Le fichier est corrompu ou la carte SD a été retirée."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titre"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Cette vidéo va être supprimée."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Réglages"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossible de lire la vidéo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alignement"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Taille de police"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Répéter le paramètre"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sous-titres"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centre"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grand"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Gauche"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Moyen"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Droit"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Petit"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Suivant"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Précédent"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Impossible de partager les fichiers GDN."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossible de jouer la vidéo pendant un appel."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Message"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfert fichiers"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Courriel"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Act mouvement"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Recherche à la vitesse %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Stockage externe"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Format vidéo non pris en charge."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Format audio non pris en charge."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Impossible d'utiliser les fonctions d'avance et de retour rapides lorsque des appareils à proximité sont activés."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Capture impossible."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Pivoter"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Appuyez de nouveau sur la touche retour pour revenir à l'écran précédent."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Mémoire insuffisante. Supprimez certains éléments"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Liste de signets saturée. Supprimer des signets."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Jaune"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Chaine 7.1 virtuelle"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sous-titres"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Mode répétition"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Mode répétition désactivé"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Vert"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personnalisé"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Vidéo act. (1 fois)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Infos connexion"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Modifier le lecteur"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capturer"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Sélectionner périph."
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Appareils disponibles"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "HP"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Blanc"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rouge"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s secondes"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Vitesse de lecture"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sans titre"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mon appareil"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Police par défaut"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Bleu"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Noir"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activation"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Fermer l'application?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Annuler"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Arrêter après tout"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Répéter élém. actuel"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Tout répéter"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Résolution"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Les effets sonores %s ne sont pas pris en charge par le hautparleur."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Retournez le téléphone pour couper la sonnerie des appels entrants, des alertes de message et des alarmes."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Carte SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Seules les données audios sont prises en charge par ce fichier. Audio en cours de lecture."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Seules les données vidéos sont prises en charge par ce fichier. Vidéo en cours de lecture."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Stockage privé"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Écouteurs"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "HP"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Télécharger"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Sélectionner sous-titres"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Aperçu des sous-titres"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Mode répéter"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Standard"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voix"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Films"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Piste audio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Tampon..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format de fichier"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Langue"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Aucune vidéo"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Taille"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Actualiser"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Date"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Chargement..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Ajouter à l'écran d'accueil"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nom"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Impossible de lire la vidéo."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Aucun sous-titre disponible"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Lire"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Fermer"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL non valide."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Erreur"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Espace sur l'appareil"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Lecteur vidéo"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partager via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Une erreur réseau s'est produite. Réessayez."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Seules les données audios sont prises en charge par ce format de fichier. Audio en cours de lecture."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Seules les données vidéos sont prises en charge par ce format de fichier. Vidéo en cours de lecture."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centré"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Activé"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Réglages"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vidéos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Partag."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Mise en mémoire tampon - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Aucune"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Sélectionner un appareil audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Une erreur inconnue est survenue ou le fichier est peut-être corrompu."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ce type de fichier n'est pas pris en charge."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "OK"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULER"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Emplacement de stockage"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Sous-titres (codés)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Stockage personnel"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Aspect des sous-titres"
+
diff --git a/vp-main/res/po/ga.po b/vp-main/res/po/ga.po
new file mode 100755
index 0000000..681b31e
--- /dev/null
+++ b/vp-main/res/po/ga.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Gile"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Ceol"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Guthanna"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Suíomh"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Mionathrú is déanaí"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Comhroinn"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Ní féidir físeán a sheinm"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Tharla earráid leis na fotheidil."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Tá an comhad truaillithe nó baineadh an cárta SD as."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Sonraí"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Teideal"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Scriosfar an físeán seo"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Socruithe"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Ní féidir físeán a sheinm"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Ailíniú"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Méid cló"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Socrú athsheanma"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Fotheidil (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Lárnach"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Mór"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Clé"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Meánach"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Deas"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Beag"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Ar aghaidh"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Roimhe"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Ní féidir comhaid DRM a chomhroinnt."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formáid"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ní féidir físeán a sheinm le linn glao."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Teachtai"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Aistriú comhad"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "R-phost"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Domhanfad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Leithead"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Cumas. gluaisne"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Sciúradh ar %sx luas."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Stóras seachtrach"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Airde"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formáid físeáin gan tacú."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Cineál comhaid gan tacú."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formáid fuaime gan tacú."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Ní féidir mearchasadh agus cúlchasadh a úsáid nuair atá gléasanna in aice láimhe cumasaithe."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Ní féidir é a ghabháil."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rothlaigh"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Brúigh an eochair siar arís le filleadh ar an scáileán roimhe"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Easpa cuimhne. Scrios roinnt míreanna."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Liosta leabharmharcanna lán. Scrios roinnt leabharmharcanna."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Buí"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Cainéal fíorúil 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Fotheidil (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Mód athsheinnte"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ná hathdhéan"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Maigeanta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Glas"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cian"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Saincheaptha"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Físeán seo (1 uair)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Fais. faoi nascadh"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Athraigh seinnteoir"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Gabh"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Roghnaigh gléas"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Gléasanna atá ar fáil"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Callaire"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Bán"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Dearg"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s soicind"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Luas seanma"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d soic"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "As"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Níl teideal ann"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mo ghléas"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Cló réamhshocraithe"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Snagcheol breá"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Gorm"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Dubh"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Gníomhachtú"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Dún ríomhchlár?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Cealú"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop tar eis gach"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Athdhean cuid reatha"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Athdhéan gach"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Taifeach"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Níl tacú sa challaire do mhaisíochtaí fuaime %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Cas an fón bunoscionn le glaonna isteach, foláirimh maidir le teachtaireachtaí agus aláraim a bhalbhú"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Cárta SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Níl tacú sa chomhad seo ach do shonraí fuaime. Fuaim á seinm anois."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Níl tacú sa chomhad seo ach do shonraí físe. Físeán á sheinm anois."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Stóras príobháideach"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Cluasáin"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Callaire"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Cuir ar sos"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Íoslódáil"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Roghnaigh fotheidil (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Réamhamharc ar fhotheidil (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modh athdhéanta"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Cineál comhaid gan tacú."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normálta"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Guth"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Scannáin"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Fuaimrian"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Ag maolánú..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formáid an chomhaid"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Teanga"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Níl físeáin ann"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Méid"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Déanta"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Athnuaigh"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dáta"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Ag lódáil..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Fotheidil (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Cuir leis an scáileán baile"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ainm"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Ní féidir físeán a sheinm."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Níl aon fhotheidil ar fáil"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Seinn"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Dún"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL neamhbhailí."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Earráid"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Stóras gléis"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Seinnteoir Físeán"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Comhroinn le"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Tharla earráid líonra. Triail arís."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Níl tacú ann san fhormáid chomhaid seo ach do shonraí fuaime. Fuaim á seinm anois."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Níl tacú sa formáid comhaid seo ach do shonraí físeáin. Físeán á sheinm anois."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Ionad"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Air"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Socruithe"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Físeáin"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "C.roinn"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Sonraí"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Maolánú - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Dada"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d soic"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Roghnaigh gléas fuaime"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cealaigh"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Tharla earráid neamhaithnid nó is féidir go bhfuil an comhad truaillithe."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Níl tacú ann don chineál comhaid seo."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "DÉANTA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CUIR AR CEAL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Suíomh stórais"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Fotheidil (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Stóras pearsanta"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Beidh an chuma seo ar fhoscríbhinní"
+
diff --git a/vp-main/res/po/gl.po b/vp-main/res/po/gl.po
new file mode 100755
index 0000000..3216b6a
--- /dev/null
+++ b/vp-main/res/po/gl.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brillo"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Música"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voces"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localización"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Aceptar"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Modificado por última vez"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Non se pode reproducir vídeo"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Produciuse un erro cos subtítulos."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "O arquivo está danado ou retirouse a tarxeta SD."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Eliminarase este vídeo"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Axustes"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Imposible reproducir vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Aliñamento"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamaño da fonte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Axustes de repetición"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centro"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerda"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Media"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dereita"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeno"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Seguinte"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Non se poden compartir arquivos DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formatar"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Non se pode reproducir vídeo durante a chamada"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensaxe"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transferenc. arquivo"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Correo e."
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lonxitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Act. movemen."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Avanzando a velocidade %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Almacenamento externo"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Non se admite este formato de vídeo"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de arquivo non admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Non admite o formato de audio"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Non se pode usar o avance e rebobinado rápido cando hai dispositivos próximos activados"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Non se pode capturar"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Xirar"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Pulsa a tecla de retroceso de novo para volver á pantalla anterior"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Non hai suficiente memoria. Elimine algúns elementos."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de favoritos chea. Elimine algúns favoritos."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Amarelo"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual de 7.1 canles"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtítulos"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Modo repetición"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Sen repetición"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Maxenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Azul escuro"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizado"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Vídeo actual (1 vez)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Información conexión"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Cambiar reprodutor"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Captura"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Seleccionar dispositivo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dispositivos dispoñ."
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Altofal."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Branco"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Vermello"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segundos"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocidade de reprodución"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d segundos"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sen título"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "O meu dispositivo"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Fonte predeterminada"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Azul"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Negro"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activación"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Pechar aplicación?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Deter despo. de todo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todos"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "O altofalante non admite efectos de son %s"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Dá a volta ao teléfono para silenciar as chamadas entrantes, as alertas das mensaxes e as alarmas"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Tarx. SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Este arquivo só admite datos de audio. Reprodución de audio en curso."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Este arquivo só admite datos de vídeo. Reprodución de vídeo en curso."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Almacenamento privado"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auriculares"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Altofal."
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausa"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descargar"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Selec. subtítulos (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Previsualizar subtítulos (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modo de repetición"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de arquivo non admitido"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Películas"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Pista de son"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Alm. búfer..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formato de arquivo"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Idioma"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Non hai vídeos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Feito"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Cargando..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtítulos (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Engadir á pant. de inicio"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Non se pode reproducir o vídeo"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Ningún subtítulo dispoñible"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reproducir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Pechar"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL non válida"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Erro"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Almacenamento do dispositivo"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Reprodutor de Vídeo"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartir mediante"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Produciuse un erro de rede. Téntao de novo."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Este formato de arquivo só admite datos de audio. Reprodución de audio en curso."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Este formato de arquivo só admite datos de vídeo. Reprodución de vídeo en curso."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centro"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Activado"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Axustes"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Compart"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Almacenando en búfer - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ningún"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d seg."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Seleccionar dispositivo de audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Produciuse un erro descoñecido ou pode que o arquivo estea danado."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Este tipo de arquivo non é compatible."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FEITO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Localización almacenam."
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtítulos"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Almacenamento persoal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "As lendas aparecerán así"
+
diff --git a/vp-main/res/po/hi.po b/vp-main/res/po/hi.po
new file mode 100755
index 0000000..3d5ee71
--- /dev/null
+++ b/vp-main/res/po/hi.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "चमक"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "संगीत"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "वॉइस"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "स्थान"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "ओके"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "अंतिम बार संशोधित"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "साझा करें"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "वीडियो नहीं चला सकता"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "उपशीर्षक में कोई त्रुटि उत्पन्न हुई।"
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "फ़ाइल दूषित है या SD कार्ड निकाल दिया गया है।"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "विवरण"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "शीर्षक"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "यह वीडियो हटाया जाएगा"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "सेटिंग्स"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "वीडियो चलाने में असमर्थ"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "संरेखण"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "फॉन्ट आकार"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "दोहराव सेटिंग"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "उपशीर्षक (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "केंद्र"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "बड़ा"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "बाएँ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "मध्यम"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "दाएँ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "छोटा"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "अगला"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "पिछला"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM फ़ाइलें साझा नहीं की जा सकतीं।"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "फॉर्मेट"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "कॉल के दौरान वीडियो चलाने में असमर्थ।"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "सन्देश"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "फ़ाइल स्थानांतरण"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "ईमेल"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "देशांतर"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "अक्षांश"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "गति सक्षम करे"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx गति पर स्क्रबिंग।"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "बाह्य स्टोरेज"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "वॉल्यूम"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "असमर्थित वीडियो फ़ॉर्मेट।"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "असमर्थित फाइल प्रकार।"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "असमर्थित ऑडियो फ़ॉर्मेट।"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "निकटवर्ती डिवाइसेस सक्षम होने पर आगे करने और पीछे करने का उपयोग करने में असमर्थ।"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "कैप्चर करने में असमर्थ।"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "घुमाएँ"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "पिछली स्क्रीन पर लौटने के लिए फिर से पीछे कुंजी दबाएँ।"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "पर्याप्त मेमोरी नहीं। कुछ मदें हटाएँ।"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "बुकमार्क सूची पूर्ण। कुछ बुकमार्क हटाएँ।"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "पीला"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "वर्चुअल 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "उपशीर्षक (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "दोहराव मोड"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "कोई दोहराव नहीं"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "मैजंटा"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "हरा"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "सियान"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "कस्टम"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "वर्तमान वीडियो (एक बार)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "कनेक्शन जानकारी"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "प्लेयर बदलें"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "कैप्चर करें"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "ऑलशेयर"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "डिवाइस चुनें"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "उपलब्‍ध डिवाइसेस"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "स्पीकर"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "सफेद"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "रोजमेरी"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "लाल"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s सेकंड"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "पॉप"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "चलाने की गति"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d सेकंड"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "बंद"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "कोई शीर्षक नहीं"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "मेरा डिवाइस"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "डिफॉल्ट फॉन्ट"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "कूल जैज"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "चोको कुकी"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "नीला"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "काला"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "सक्रियण"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "एप्लीकेशन बंद करें?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "रद्द"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "सब के बाद रोकें"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "वर्तमान को दोहराएँ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "सभी दोहराएँ"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "रिजॉल्यूशन"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s ध्‍वनि प्रभाव स्पीकर द्वारा समर्थित नहीं है"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "आने वाली कॉल्‍स, संदेश सतर्क, और अलार्म्स मूक करने के लिए फ़ोन घुमाएँ"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD कार्ड"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "इस फाइल के द्वारा केवल ऑडियो डाटा समर्थित है। अब ऑडियो चलाया जा रहा है।"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "इस फ़ाइल के द्वारा केवल वीडियो डाटा समर्थित है। अब वीडियो चलाया जा रहा है।"
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "निजी स्टोरेज"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "हेडफोन्‍स"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "स्पीकर"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "विराम"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "डाउनलोड करें"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "उपशीर्षक (CC) चुनें"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "पूर्वावलोकन उपशीर्षक (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "दोहराव मोड"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "असमर्थित फाइल प्रकार।"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "सामान्य"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "आवाज"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "मूवीज"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "ऑडियो ट्रैक"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "बफरिंग..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "फ़ाइल फॉर्मेट"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "भाषा"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "कोई वीडियो नहीं"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "आकार"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "पूर्ण"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "रीफ्रेश"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "तिथि"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "लोड हो रहा है..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "उपशीर्षक (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "होम स्क्रीन पर जोड़े"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "फेसबुक"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "नाम"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "यूट्यूब"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "वीडियो चलाने में अक्षम।"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "कोई उपशीर्षक उपलब्ध नहीं"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "चलाएँ"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "बंद"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "अमान्य वेब पता।"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "त्रुटि"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "डिवाइस स्टोरेज"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "वीडियो प्‍लेयर"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "इसके द्वारा साझा करें"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "नेटवर्क त्रुटि उत्पन्न हुई है। फिर से प्रयास करें।"
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "इस फाइल फॉर्मेट द्वारा केवल ऑडियो डाटा समर्थित है। अब ऑडियो चला रहा है।"
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "इस फ़ाइल स्वरूप द्वारा केवल वीडियो डाटा समर्थित है। वीडियो अभी चलाया जा रहा है।"
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "केन्द्र"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "चालू"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "सेटिंग्स"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "वीडियोज़"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "साझा"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "विवरण"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "बफ़र हो रहा है - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "कोई नहीं"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d सेकंड"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "ऑडियो डिवाइस चुनें"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "रद्द"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "एक अज्ञात त्रुटि उत्पन्न हुई है या फाइल दूषित हो सकती है।"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "यह फाइल प्रकार समर्थित नहीं है।"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "पूर्ण"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "रद्द करें"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "संग्रहण स्‍थान"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "उपशीर्षक (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "व्यक्तिगत स्टोरेज"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "शीर्षक इस तरह दिखाई देंगे।"
+
diff --git a/vp-main/res/po/hr.po b/vp-main/res/po/hr.po
new file mode 100755
index 0000000..58f53ba
--- /dev/null
+++ b/vp-main/res/po/hr.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Svjetlina"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Glazba"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Glasovi"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "U redu"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Zadnja promjena"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Dijeli"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Nemoguće reproduc. videozapis"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Došlo je do greške s titlovima."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Datoteka je oštećena ili je SD-kartica uklonjena."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Naslov"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Video će biti obrisan."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Postavke"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nemoguće reproduc. videozapis"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Poravnanje"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Veličina slova"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Postavka ponavljanja"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titlovi (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centralno"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velika"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Lijevo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Srednja"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Desno"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mala"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Dalje"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Nazad"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM datoteke se ne mogu dijeliti."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Tijekom razgovora nemoguća video reprodukcija."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Poruka"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Prijenos datoteka"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Geo. duljina"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Geo. širina"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Uklj. pokret"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Pretraživanje na %sx brzine."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Vanjska memorija"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Glasnoća"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nepodržan videoformat."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodržana datoteka."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nepodržan format zvuka."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Nemoguće koristiti premotavanje unaprijed i unatrag kada su uključeni uređaji u blizini."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Greška snimanja."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotiraj"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Pritisnite tipku Natrag za ponovno vraćanje na prethodni zaslon."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nedovoljno memorije. Obrišite neke datoteke"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Favoriti puni. Obrišite neke."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Žuta"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtualni 7.1 kanal"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titlovi (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Ponavljanje"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Bez ponavljanja"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zelena"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Zelenoplava"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Tren. video (jednom)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Informacije o vezi"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Promijeni player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Snimi"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Odaberite uređaj"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dostupni uređaji"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Zvučnik"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Bijela"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Crvena"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekundi"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Brzina reprodukcije"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Isključeno"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nema naslova"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Moj uređaj"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Zadana slova"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Plava"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Crna"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Uključivanje"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Zatvoriti program?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Prekid"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stati nakon svega"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ponovi trenutno"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ponovi sve"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolucija"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Zvučnik ne podržava zvučne efekte %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Preokrenite telefon za utišavanje dolaznih poziva, obavijesti i alarma."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD kartica"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Datoteka podržava samo audio podatke. Sada reproducira zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Datoteka podržava samo video podatke. Sada reproducira video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privatna memorija"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slušalice"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Zvučnik"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauza"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Skidanje"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Odabir titlova (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Pregled titlova (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Ponavljanje"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodržana datoteka."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normalna"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Glas"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmovi"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Zvučni zapis"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Učitava se..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format datoteke"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Jezik"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nema videa"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Veličina"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Aktualiziraj"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Učitavanje..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Titlovi (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Dodaj na početni zaslon"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ime"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nemoguće reproducirati video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Nema dostupnih podnaslova"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Pokreni"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Zatvori"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Neispravna adresa."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Greška"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Memorija uređaja"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video Player"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Dijeli preko"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Došlo je do mrežne pogreške. Pokušajte ponovno."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Ovaj format datoteke podržava samo audiopodatke. Sada reproducira zvuk."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Format datoteke podržava samo video podatke. Sada reproducira videozapis."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centar"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Uključeno"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Postavke"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Dijeli"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Učitava se - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nema"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Odabir audiouređaja"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Prekid"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Došlo je do nepoznate pogreške ili je datoteka možda oštećena."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ova vrsta datoteke nije podržana."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ODUSTANI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Mjesto spremanja"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Titlovi (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Osobna memorija"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Naslov će ovako izgledati."
+
diff --git a/vp-main/res/po/hu.po b/vp-main/res/po/hu.po
new file mode 100755
index 0000000..9ecb5a0
--- /dev/null
+++ b/vp-main/res/po/hu.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Fényerő"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Zene"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Beszéd"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Hely"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Legutóbbi módosítás"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Megosztás"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Nem játszható le a videó"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Hiba történt a feliratokkal."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "A fájl sérült, vagy eltávolították az SD-kártyát."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Részletek"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Cím"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Törölni fogja ezt a videót."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Beállítások"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nem lehet lejátszani a videót"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Igazítás"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Betűméret"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ismétlési beállítás"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Feliratok (hangfelirat)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Középső"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Nagy"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Balra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Közepes"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Jobbra"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Kicsi"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Tovább"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Előző"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-fájlt nem lehet megosztani."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formátum"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Hívás közben nem lehet videót lejátszani."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Üzenet"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Fájlátvitel"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Hosszúság"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Szélesség"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Mozgás eng."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Tisztítás %sx sebességgel."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Külső tároló"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Hangerő"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nem támogatott videoformátum."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "A fájltípus\nnem támogatott."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nem támogatott hangformátum."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Ha engedélyezve van a Közeli eszközök funkció, nem használható a gyors előretekerés és a visszatekerés."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Nem sikerült felvételt készíteni."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Elforgatás"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "A Vissza gomb újbóli megnyomásával visszatérhet az előző képernyőre."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Kevés a memória. Töröljön néhány tételt"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "A könyvjelzők listája megtelt. Töröljön néhányat."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Sárga"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuális 7.1 csatorna"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Feliratok (hangfelirat)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Ismétlés módja"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Nincs ismétlés"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zöld"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Ciánkék"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Egyedi"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Jelenlegi videó (1x)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Kapcsolatadatok"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Lejátszóváltás"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Rögzítés"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Eszköz kiválasztása"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Elérhető eszközök"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Hangszóró"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Fehér"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Piros"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s másodperc"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Lejátszás sebessége"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d mp"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Ki"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nincs cím"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Saját eszköz"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Alapértelmezett betűtípus"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Kék"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Fekete"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivál"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Bezárja az alkalmazást?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Mégse"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Mégis leállítja"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Aktuális ismétlése"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Összes ismétlése"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Felbontás"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "A hangszóró nem támogatja a(z) %s hangeffektusokat."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "A bejövő hívások, üzenetek és egyebek jelzésének elnémításához fordítsa meg a telefont."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kártya"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "A fájl csak hangadatokat támogat. Jelenleg hanglejátszás zajlik."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "A fájl csak videóadatokat támogat. Jelenleg videólejátszás zajlik."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privát tárhely"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Fejhallgató"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Hangszóró"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Szünet"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Letöltés"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Feliratok kiválasztása"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Feliratok megj. (hangfelirat)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Ismétlési mód"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "A fájltípus\nnem támogatott."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normál"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voice"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmek"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Hangsáv"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Pufferelés..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Fájlformátum"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Nyelv"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nincs videó"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Méret"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Kész"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Frissítés"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dátum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Betöltés..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Feliratok (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Törlés"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Kezdőképernyőhöz adás"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Név"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nem játszható le a videó."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Nem áll rendelkezésre felirat"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Lejátszás"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Bezár"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Érvénytelen URL"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Hiba"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Eszköz tárhelye"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video-lejátszó"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Megosztás"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Hálózati hiba történt. Próbálja újra."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "A fájlformátum csak hangadatokat támogat. Jelenleg hanglejátszás zajlik."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Ez a fájlformátum csak videóadatokat támogat. Jelenleg videólejátszás zajlik."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Középre zárt"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Be"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Beállítások"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videók"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Megoszt"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Részletek"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Töröl"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Pufferelés – %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nincs"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d mp"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Hangeszköz kiválasztása"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Törlés"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Mégse"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Ismeretlen eredetű hiba történt, vagy sérült a fájl."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ez a fájltípus nincs támogatva."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "KÉSZ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "MÉGSE"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Mentési hely"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Feliratok (hangfelirat)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Személyes tárhely"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Ilyenek lesznek a feliratok"
+
diff --git a/vp-main/res/po/hy.po b/vp-main/res/po/hy.po
new file mode 100755
index 0000000..a71db72
--- /dev/null
+++ b/vp-main/res/po/hy.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Պայծառություն"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Երաժշտություն"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Ձայներ"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "Բ"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "ԳԲ"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "ԿԲ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Գտնվելու վայր"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "ՄԲ"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Վերջին փոփոխումը"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Համօգտագործել"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Անհնար է նվագարկել տեսանյութը"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Ենթագրերի հետ կապված սխալ առաջացավ:"
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Ֆայլը վնասված է, կամ SD քարտը հեռացվել է:"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Մանրամասներ"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Վերնագիր"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Այս տեսանյութը կվերացվի:"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Պարամետրեր"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Անհնար է նվագարկել տեսանյութը"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Հավասարեցում"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Տառաչափ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Կրկնման դրվածք"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Ենթավերնագրեր (ԹԵ)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Կենտրոն"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Մեծ"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Ձախ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Միջին"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Աջ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Փոքր"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Հաջորդ"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Նախորդ"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM նիշքերն անհնար է համօգտագործել:"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Ձևաչափ"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Հնարավոր չէ վիդեո նվագարկել կանչի ընթացքում:"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Հղգրթյն"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Ֆայլի փոխանցում"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Էլփոստ"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Երկայնք"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Լայնք"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Ընձռլ շարժում"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Մաքրում %sx արագությամբ:"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Արտաքին պահոց"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Բարձրություն"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Տեսանյութի չապահովված ձևաչափ:"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Ֆայլի չսատարվող տեսակ:"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Ձայնի չապահովված ձևաչափ:"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Անհնար է օգտագործել արագ առաջ փաթաթումը և հետ փաթաթումը, երբ մոտակա սարքերն ընձեռված են:"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Անհնար է սևեռել:"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Պտտեցնել"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Նորից սեղմեք վերադարձի ստեղնը՝ նախորդ էկրանին վերադառնալու համար:"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Հիշողությունը չի բավարարում: Ջնջեք որոշ տարրեր"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Էջանիշերի ցանկը լիքն է: Ջնջեք մի քանիսը:"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Դեղին"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Վիրտուալ 7.1 կապուղի"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Ենթավերնագրեր (ԹԵ)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Կրկնության ռեժիմ"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ոչ մի կրկնում"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Մանուշակագույն"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Կանախ"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Փիրուզ"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Ընտրովի"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Ընթ. տսնթ (մեկ անգ.)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Միացման տվյալներ"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Փոխել նվագարկիչը"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Սևեռել"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Ընտրել սարք"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Մատչելի սարքեր"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Բարձրախոս"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Սպիտակ"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Կարմիր"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s վայրկյան"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Նվագարկման արագություն"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d վրկ"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Անջատված է"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Վերնագիր չկա"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Իմ սարքը"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Կանխադրված տառատեսակ"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Կապույտ"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Սև"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Ակտիվացում"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Փակե՞լ ծրագիրը"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Չեղկլ"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Կանգ բոլորից հետո"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Կրկնել ընթացիկը"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Կրկնել բոլորը"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Լուծաչափ"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s հնչյունային էֆեկտները չեն ապահովվում բարձրախոսի կողմից:"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Շրջեք հեռախոսը՝ մտից կանչերը, հաղորդագրության զգուշացումները և տագնապները խլացնելու համար:"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD քարտ"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Այս ֆայլը միայն ձայնատվյալներ է ապահովում: Այժմ ձայնանյութ է նվագարկվում:"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Այս ֆայլը միայն տեսատվյալներ է ապահովում: Այժմ տեսանյութ է նվագարկվում:"
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Անձնական պահոց"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Գլխ. հեռախոսներ"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Բարձրախոս"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Դադար"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Ներլցնել"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Ընտրել ենթագրեր (ԹԵ)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Նախադիտել ենթագրեր (ԹԵ)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Կրկնման ռեժիմ"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Ֆայլի չսատարվող տեսակ:"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Սովորական"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Ձայն"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Ֆիլմեր"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Ձայնային շավիղ"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Բուֆերացում"
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Նիշքի ձեւաչափը"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Լեզու"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Տեսանյութ չկա"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Չափս"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Արված է"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Նորացնել"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Ամսաթիվ"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Բեռնվում է..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Ենթագրեր (Թքն)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Վերացնել"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Ավելացնել հիմնական էկրանին"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Անուն"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Անհնար է վերարտադրել վիդեոն:"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Ենթագրեր չկան"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Նվագել"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Փակել"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Անվավեր URL:"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Սխալ"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Սարքի պահոց"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Տեսանվագարկիչ"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Համօգտ. հետևյալով՝"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ցանցի սխալ է տեղի ունեցել: Նորից փորձեք:"
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Ֆայլի այս ձևաչափը միայն ձայնատվյալներ է ապահովում: Այժմ ձայնանյութ է նվագարկվում:"
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Այս նիշքի ձևաչափն աջակցում է միայն վիդեո տվյալներ: Այժմ տեսանյութ է նվագարկվում:"
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Կենտրոն"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Միացված է"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Պարամետրեր"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Տեսանյութեր"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Համօգտ."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Մանրամասներ"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Ջնջել"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Բուֆերացում - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ոչ մեկը"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d վրկ"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Ընտրել ձայնասարք"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Վերացնել"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Չեղարկել"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Անհայտ սխալ է տեղի ունեցել, կամ հնարավոր է՝ ֆայլը վնասված է:"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Այս ֆայլի տիպն ապահովված չէ:"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ԱՐՎԱԾ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ԴԱԴԱՐԵՑՆԵԼ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Պահման տեղը"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Ենթագրեր (թաքնված ենթագրեր)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Անհատական պահոց"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Մակագրերն այսպիսի տեսք կունենան"
+
diff --git a/vp-main/res/po/is.po b/vp-main/res/po/is.po
new file mode 100755
index 0000000..2d4c287
--- /dev/null
+++ b/vp-main/res/po/is.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Birtustig"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Tónlist"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Raddir"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Staðsetning"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Í lagi"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Síðast breytt"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Deila"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Ekki hægt að spila myndskeið"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Villa kom upp í skjátextum."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Skráin er skemmd eða SD-kortið hefur verið fjarlægt."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Upplýsingar"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titill"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Myndskeiðinu verður eytt."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Stillingar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Ekki hægt að spila myndskeið"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Jöfnun"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Leturstærð"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Endurtekningarstilling"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Skjátextar"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Miðja"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stórt"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vinstri"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Miðlungs"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Hægri"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Lítið"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Næsta"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Fyrri"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Ekki er hægt að deila DRM-höfundarréttarvörðum skrám."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Snið"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ekki er hægt að spila vídeó á meðan símtal stendur yfir."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Skilaboð"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Skráarflutningur"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Netfang"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lengdargráða"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breiddargráða"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Hreyfing á"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Flett á hraðanum %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Ytri geymsla"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Hljóðstyrkur"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Óstutt myndsnið."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Óstutt skrársnið."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Óstutt hljóðsnið."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Ekki er hægt að spóla áfram eða til baka þegar kveikt er á nálægum tækjum."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Mistókst að taka mynd."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Snúa"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Ýttu aftur á endatakkann til að snúa aftur að síðasta skjá."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Ekki er nægt minni. Eyðið nokkrum atriðum."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bókamerkjalisti er fullur.Eyða þarf nokkrum bókamerkjum."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Gulur"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Sýndar 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Skjátextar"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Endurtekning"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ekki endurtekið"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Blárauður"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Grænn"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Sægrænn"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Sérsniðið"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Þetta myndskeið (1)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Uppl. um tengingu"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Skipta um spilara"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Taka mynd"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Velja tæki"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Tiltæk tæki"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Hátalari"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Hvítt"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rósmarín"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rauður"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekúndur"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Spilunarhraði"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Slökkt"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Titil vantar"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Tækið mitt"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Sjálfgefin leturgerð"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Djassað"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Sætabrauð"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blátt"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Svart"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Virkjun"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Viltu loka forritinu?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Hætta við"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stöðva eftir allt"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Endurtaka þetta"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Endurtaka öll"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Upplausn"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Hátalarinn styður ekki hljóðbrellur %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Snúðu símanum við til að slökkva á hringingum, skilaboðatónum og áminningum."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Þessi skrá styður aðeins hljóðgögn. Hljóð er nú í spilun."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Þessi skrá styður aðeins myndgögn. Myndskeið er nú í spilun."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Einkageymsla"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Höfuðtól"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Hátalari"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Hlé"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Sækja"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Velja skjátexta"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Forskoðun skjátexta"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Endurtekning"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Óstutt skrársnið."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Venjulegt"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Talhólf"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Kvikmyndir"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Hljóðrás"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Hleð inn..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Skráarsnið"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Tungumál"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Engin myndskeið"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Stærð"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Lokið"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Uppfæra"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dagsetning"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Hleð..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Skjátextar"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Setja á heimaskjá"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Heiti"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Mistókst að spila myndskeið."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Engir skjátextar í boði"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Spila"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Loka"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Ógild slóð."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Villa"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Geymsla tækis"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Myndspilari"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Deila um"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Netvilla kom upp. Reyndu aftur."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Þetta skráarsnið styður aðeins hljóðgögn. Hljóð er nú í spilun."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Þetta skráarsnið styður aðeins myndgögn. Myndskeið er nú í spilun."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Miðja"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Kveikt"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Stillingar"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Myndskeið"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Samnýta"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Upplýsingar"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Hleð í biðminni – %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Engin"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Velja hljóðtæki"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Hætta v."
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Óþekkt villa kom upp eða skráin kann að vera skemmd."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Þessi skráargerð er ekki studd."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "LOKIÐ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "HÆTTA VIÐ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Geymslustaður"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Skjátextar"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Einkageymsla"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Skjátextar munu líta svona út"
+
diff --git a/vp-main/res/po/it_IT.po b/vp-main/res/po/it_IT.po
new file mode 100755
index 0000000..21ded68
--- /dev/null
+++ b/vp-main/res/po/it_IT.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Luminosità"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musica"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voci"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Posizione"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Ultima modifica"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Condividi"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Impossibile riprodurre video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Si è verificato un errore con i sottotitoli."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Il file è danneggiato o la scheda SD è stata rimossa."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Dettagli"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titolo"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Il video sarà eliminato."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Impostaz."
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossibile riprodurre video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Allineamento"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Dimensione carattere"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ripeti impostazione"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sottotitoli (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrale"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Sinistra"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medio"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Destra"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Piccolo"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Avanti"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Precedente"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Impossibile condividere i file DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossibile riprodurre durante chiamata."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mess."
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Trasferimento file"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitudine"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitudine"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Attiva movim."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Velocità di avanzamento %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Memoria esterna"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato video non supportato."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo file non supportato."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato audio non supportato."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Impossibile utilizzare le funzioni di avanzamento rapido e riavvolgimento se i dispositivi vicini sono attivati."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Impossibile acquisire."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Ruota"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Premete nuovamente il tasto Indietro per tornare alla schermata precedente."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Memoria insufficiente. Eliminare alcuni elementi."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Elenco preferiti pieno. Eliminare alcuni preferiti."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Giallo"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Canale virtuale 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Sottotitoli (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Modalità ripetizione"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Nessuna ripetizione"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Ciano"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizzato"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Video corr. (1 vol.)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Info connessione"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Cambia lettore"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Cattura"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Seleziona dispositivo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dispositivi disponibili"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Altoparl."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Bianco"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rosso"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s secondi"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocità di riproduzione"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sec"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Non attivo"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nessun titolo"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Dispositivo personale"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Carattere predefinito"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blu"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Nero"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Attivazione"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Chiudere applicazione?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Ann."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Interrom. dopo tutto"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ripeti corrente"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ripeti tutto"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Risoluzione"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Effetti audio %s non supportati dall'altoparlante."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Capovolgi il dispositivo per disattivare il suono durante una chiamata in arrivo, gli avvisi messaggi e le sveglie."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Scheda SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Questo file è in grado di supportare soltanto i dati audio. Audio attualmente in riproduzione."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Questo file è in grado di supportare soltanto i dati video. Video attualmente in riproduzione."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Archivio privato"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Cuffie"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Altoparlante"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausa"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Scarica"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Selez. sottotitoli (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Sottotitoli anteprima (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modo ripetizione"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo file non supportato."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normale"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voce"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Film"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Brano audio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buffer..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formato file"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Lingua"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nessun video"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Dimensioni"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Fatto"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Aggiorna"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Caricamento..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Sottotitoli (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Aggiungi a schermata Home"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Impossibile riprodurre video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Nessun sottotitolo disponibile"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Riproduci"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Chiudi"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL non valida."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Errore"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Memoria dispositivo"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Lettore video"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Condividi con"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Si è verificato un errore di rete. Riprovate."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Questo formato file è in grado di supportare soltanto i dati audio. Audio attualmente in riproduzione."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Il formato file supporta solo i dati video. Video in riproduzione."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centro"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Attivo"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Impostaz."
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Condividi"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Dettagli"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buffering: %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nessuno"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sec"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Selezionate un dispositivo audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annulla"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Si è verificato un errore sconosciuto o il file è danneggiato."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Questo tipo di file non è supportato."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FATTO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULLA"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Posizione di memoria"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Sottotitoli (codificati)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Memoria personale"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Aspetto dei sottotitoli"
+
diff --git a/vp-main/res/po/ja_JP.po b/vp-main/res/po/ja_JP.po
new file mode 100755
index 0000000..95fe10c
--- /dev/null
+++ b/vp-main/res/po/ja_JP.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "明るさ"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "音楽"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "音声"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "場所"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "最終更新日"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "共有"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "動画の再生不可"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "字幕にエラーが発生しました。"
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "ファイルが破損しているか、外部SDカードが取り外されています。"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "詳細"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "タイトル"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "この動画を削除します。"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "動画再生不可"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "配置"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "文字サイズ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "リピート設定"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "中央"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "左"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "右"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "次へ"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "前へ"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRMファイルは共有できません。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "ファイル形式"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通話中はビデオ再生できません"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "メッセージ"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "ファイル転送"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Eメール"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "経度"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "モーションを使用"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sxの速度でスクラブ再生中です。"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "外部ストレージ"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "音量"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "未対応ビデオ形式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "未対応のファイルです。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "サポートされていないオーディオ形式"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "周辺のデバイスが有効な場合、早送りや早戻しは使用できません。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "キャプチャできません。"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "回転"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "前画面に戻るには、戻るキーをもう一度押してください。"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "メモリが不足しています。不要なアイテムを削除してください。"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "ブックマークリストがいっぱいです。いくつか削除してください。"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "黄"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "バーチャル7.1ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "再生パターン"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "1回再生"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "マゼンダ"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "緑"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "シアン"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "カスタム"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "現在の動画(1回)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "接続情報"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "プレーヤーを変更"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "キャプチャ"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "デバイス選択"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "接続可能デバイス"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "スピーカー"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "白"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UD丸ゴシック"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UD明朝"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "ローズマリー"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "レッド"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s秒"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "ポップ"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "再生スピード"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d秒"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "OFF"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "件名なし"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "マイデバイス"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "標準フォント"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "クールジャズ"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "チョコクッキー"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "青"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "黒"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "アクティベーション"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "アプリケーションを終了しますか?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "キャンセル"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "終了後に停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "現在の動画をリピート"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "全てリピート"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%sサウンドエフェクトは、スピーカーに対応していません。"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "端末を伏せると、着信音やメッセージの通知音、アラーム音を消音します。"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "外部SDカード"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "このファイルはオーディオデータのみ再生することができます。音声のみ再生します。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "このファイルは動画データのみ再生することができます。動画のみ再生します。"
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "プライベートストレージ"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "ヘッドホン"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "スピーカー"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "一時停止"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "ダウンロード"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "字幕(CC)を選択"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)をプレビュー"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "リピートモード"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "未対応のファイルです。"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "標準"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "音声"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "動画"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "オーディオトラック"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "バッファ中..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "ファイル形式"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "言語"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "動画がありません。"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "サイズ"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完了"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "更新"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日付"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "ロード中..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "字幕(CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "削除"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "ホーム画面に追加"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名前"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "動画を再生できません。"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "利用可能な字幕がありません。"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "再生"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "閉じる"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "無効なURLです。"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "エラー"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "システムメモリ(本体)"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "動画"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "共有"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "ネットワークエラーが発生しました。再度お試しください。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "このファイル形式はオーディオデータのみ再生することができます。音声のみ再生します。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "このファイルフォーマットは、動画データのみ対応してします。現在、動画を再生しています。"
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "中央"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "ON"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "動画"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "共有"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "詳細"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "削除"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "バッファ中...- %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "点灯状態を保つ"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d秒"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "オーディオデバイスを選択"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "削除"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "キャンセル"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "不明なエラーが発生しているか、ファイルが破損しています。"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "このファイルタイプには対応していません。"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完了"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "キャンセル"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "保存場所"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "字幕(CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "パーソナルストレージ"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "字幕はこのように表示されます。"
+
diff --git a/vp-main/res/po/ka.po b/vp-main/res/po/ka.po
new file mode 100755
index 0000000..934e652
--- /dev/null
+++ b/vp-main/res/po/ka.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "სიკაშკაშე"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "მუსიკა"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "ხმები"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "ადგილმდებ."
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "კი"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "ბოლოს შესწორდა"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "გაზიარება"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "ვიდეოს ვერ გაუშვებთ"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "მოხდა სუბტიტრების შეცდომა."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "ფაილი დაზიანებულია, ან SD ბარათი ამოღებულია."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "დეტალები"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "სათაური"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "ეს ვიდეო წაიშლება."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "პარამეტრები"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "ვიდეოს დაკვრა შეუძლებელია"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "განაწილება"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "შრიფტის ზომა"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "გამეორების პარამეტრი"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "ტიტრები (სუბტიტრები)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "ცენტრი"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "დიდი"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "მარცხნივ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "საშუალო"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "მარჯვნივ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "მცირე"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "შემდეგი"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "წინა"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM ფაილებს ვერ გააზიარებთ."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "დაფორმატება"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "ვიდეოს ვერ გაუშვებთ ზარის დროს."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "წერილი"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "ფაილის გადაგზავნა"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "ელ.ფოსტა"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "გრძედი"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "განედი"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "მოძრაობის ჩრ."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "გასმა ხდება %sx სიჩქარით."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "გარე მეხსიერება"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "ხმის სიმაღლე"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "ვიდეო ფორმატი არაა გათვალისწინებული."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "ფაილის ტიპი გაუთვალისწინებელია."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "აუდიო ფორმატი არაა გათვალისწინებული."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "წინ და უკან გადახვევის ფუნქციების გამოყენება შეუძლებელია, როდესაც აქტიურია ახლომდებარე მოწყობილობები."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "გადაღება შეუძლებელია."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "ბრუნვა"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "წინა ეკრანზე დასაბრუნებლად, ისევ დააჭირეთ უკანსვლის ღილაკს."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "მეხსიერება საკმარისი არაა. წაშალეთ ზოგიერთი ელემენტი"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "სანიშნეები გაივსო. წაშალეთ ზოგიერთი სანიშნე."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "ყვითელი"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "ვირტუალური 7.1 არხი"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "ტიტრები (სუბტიტრები)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "გამეორების რეჟიმი"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "გამეორების გარეშე"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "მეწამული"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "მწვანე"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "ცისფერი"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "პერსონალური"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "ეს ვიდეო (ერთხელ)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "კავშირის ინფორმაცია"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "პლეერის შეცვლა"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "გადაღება"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "აირჩიეთ მოწყობილობა"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "ხელმისაწვდომები"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "დინამიკი"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "თეთრი"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "წითელი"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s წამი"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "დაკვრის სიჩქარე"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d წამი"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "გამორთ."
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "თემა არ არის"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "ჩემი მოწყობილობა"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "საწყისი ფონტი"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "ცისფერი"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "შავი"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "გააქტიურება"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "დახურავთ პროგრამას?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "გაუქმ."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "გაჩერდეს ბოლოში"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "მიმდინარეს გამეორება"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "გაიმეორე ყველა"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "გარჩევადობა"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s ხმოვანი ეფექტი არ მუშაობს მიკროფონით."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "გადააბრუნეთ ტელეფონი, რომ გამოირთოს შემომავალი ზარების, წერილის შეტყობინებებისა და სიგნალების ხმა."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SDბარათი"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "ამ ფაილს აქვს მხოლოდ აუდიო მონაცემთა მხარდაჭერა. ახლა ჩართულია აუდიო."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "ამ ფაილს აქვს მხოლოდ ვიდეო მონაცემთა მხარდაჭერა. ახლა ჩართულია ვიდეო."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "პირადი საცავი"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "გარნიტურები"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "დინამიკი"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "პაუზა"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "ჩამოტვირთვა"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "აირჩიეთ სუბტიტრები"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "იხილეთ ტიტრები (სუბტიტრები)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "გამეორების რეჟიმი"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "ფაილის ტიპი გაუთვალისწინებელია."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "ნორმალური"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "ხმა"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "კინოები"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "აუდიო ბილიკი"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "ბუფერირება..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "ფაილის ფორმატი"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "ენა"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "ვიდეო არ არის"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "ზომა"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "შესრულდა"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "განახლება"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "თარიღი"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "იტვირთება…"
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "ტიტრები(სუბტიტრები)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "წაშლა"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "საწყის ეკრანზე დამატება"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "სახელი"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "ვიდეოს დაკვრა შეუძლებელია."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "სუბტიტრები არ არის"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "დაკვრა"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "დახურვა"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL არასწორია."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "შეცდომა"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "აპარატის მეხსიერება"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "ვიდეო პლეერი"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "გაზიარება მეთოდით"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "მოხდა ქსელის შეცდომა. ისევ სცადეთ."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "ფაილის ამ ფორმატს აქვს მხოლოდ აუდიო მონაცემთა მხარდაჭერა. ახლა ჩართულია აუდიო."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "ფაილის ამ ფორმატს აქვს მხოლოდ ვიდეო მონაცემთა მხარდაჭერა. ახლა ჩართულია ვიდეო."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "ცენტრი"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "ჩართვა"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "პარამეტრები"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "ვიდეოები"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "გაზიარ."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "დეტალები"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "წაშლა"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "ბუფერირება - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "არცერთი"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d წმ"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "აირჩიეთ აუდიო მოწყობილობა"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "წაშლა"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "გაუქმება"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "მოხდა უცნობი შეცდომა, ან, შესაძლოა, დაზიანდა ფაილი."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "ფაილის ამ ტიპს არა აქვს მხარდაჭერა."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "მზადაა"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "გაუქმება"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "შენახვის ადგილი"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "ტიტრები (სუბტიტრები)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "პერსონალური მეხსიერება"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "წარწერები გამოჩნდება ასე"
+
diff --git a/vp-main/res/po/kk.po b/vp-main/res/po/kk.po
new file mode 100755
index 0000000..b5adacf
--- /dev/null
+++ b/vp-main/res/po/kk.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Ашықтығы"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Музыка"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Дауыстар"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "Б"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Гбайт"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KБ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Орналасу орны"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "МБ"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Соңғы өзгертілген"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Бөлісу"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Бейнені ойнату мүмкін емес"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Субтитрлерде қате пайда болды."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Файл бүлінген немесе SD картасы алып тасталған."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Өзгешеліктері"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Тақырыбы"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Бұл бейне жойылады."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Қондырғылар"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Бейнені ойнату мүмкін емес"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Туралау"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Қаріп өлшемі"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Қайталау параметрі"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитрлер (ЖТ)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Орталық"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Үлкен"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Сол жақ"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Орташа"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Оң жақ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Кіші"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Сосын"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Алдыңғы"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM файлдарын бөлісу мүмкін емес."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Пішімдеу"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Қоңырау кезінде бейне ойнатылмайды."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Хабар"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Файл жіберу"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Элек. пошта"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Ұзақтық"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Кеңділік"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Қозғалыс қосу"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx жылдамдығында тазалау."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Сыртқы жад"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Дауыстың күші"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Қолданылмайтын бейне пішім."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Қолдаусыз файл түрі."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Қолданылмайтын аудио пішім."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Жақын құрылғылар қосулы болғанда жылдам және кері айналдыруды пайдалану мүмкін емес."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Түсіру мүмкін емес."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Бұру"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Алдыңғы экранға оралу үшін “Артқа” түймесін басыңыз."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Жад жетыспейт.Көп арналы жою."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Кітапша тізімі толған / кейбір қосымшаларды жойыңыз."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Сары"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Виртуалды 7.1 арна"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитрлер (ЖТ)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Қайталау режимі"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Қайталамау"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Магента"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Жасыл"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Көгілдір"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Таңдамалы"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Ағым. бейне (1 рет)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Қосылым ақпараты"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Ойнатқышты өзгерту"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Түсіру"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Құрылғыны таңдау"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Қол жетімді құр-лар"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Динамик"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Ақ"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Қызыл"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s секунд"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Ойнату жылдамдығы"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d сек"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Өшірілген"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Тақырып жоқ"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Құрылғым"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Әдепкі қаріп"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Көк"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Қара"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Активтеу"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Бағдарламаны жабу керек пе?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Тоқт"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Тоқтату"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ағымдағыны қайталау"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Барлығын қайталау"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Шешім"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s дыбыстық әсерлері динамик арқылы қолданылмайды."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Келген қоңыраулардың, хабар сигналдарының және дабылдардың дыбысын өшіру үшін телефонды аударыңыз."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD карта"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Бұл файл арқылы тек аудио деректер берілген. Қазір ойнатылып жатқап аудио."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Бұл файл арқылы тек бейне деректер берілген. Қазір ойнатылып жатқап бейне."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Жеке сақтау орны"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Құлаққаптар"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Дауыс зорайтқыш"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Үзіліс"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Жүктеу"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Субтитрлерді таңдау (ЖТ)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Алд.ала қарап шығу субт-і (ЖТ)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Қайталау режимі"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Қолдаусыз файл түрі."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Қалыпты"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Дауыс"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Фильм"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Аудио трек"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Буферлеуде..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Файл пішімі"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Тіл"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Бейнелер жоқ"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Өлшемі"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Дайын"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Жаңарту"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Күні"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Жүктелуде..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Субтитрлер (ЖТ)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Жою"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Бастапқы экранға қосу"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Аты"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Бейне көруге болмайды."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Субтитрлер қолжетімді емес"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Ойнату"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Жабу"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Жарамсыз URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Қате"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Құрылғы қоймасы"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Бейне ойнатқыш"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Бөлісу құралы"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Желі қатесі пайда болды. Әрекетті қайталаңыз."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Осы файл пішімі арқылы тек аудио деректерге қолдау көрсетіледі. Қазір ойнатылып жатқан аудио."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Осы файл пішімі арқылы тек бейне деректеріне қолдау көрсетіледі. Қазір ойнатылып жатқап бейне."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Орталық"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Қосылған"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Қондырғылар"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Бейнежазбалар"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Бөлісу"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Өзгешеліктері"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Жою"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "%d% буферлеу"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Жоқ"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d сек"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Аудио құрылғыны таңдаңыз"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Жою"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Тоқтату"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Белгісіз қате пайда болды немесе файл бүлінген болуы мүмкін."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Файл түріне қолдау көрсетілмейді."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ДАЙЫН"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "БАС ТАРТУ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Сақтау орны"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Субтитрлер (ЖТ)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Жеке қойма"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Тақырыптар осы сияқты көрінеді"
+
diff --git a/vp-main/res/po/ko_KR.po b/vp-main/res/po/ko_KR.po
new file mode 100755
index 0000000..1c1a3c2
--- /dev/null
+++ b/vp-main/res/po/ko_KR.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "밝기"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "음악"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "목소리"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "위치"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "확인"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "마지막 수정"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "공유"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "동영상을 재생할 수 없음"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "자막에 오류가 발생하였습니다."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "파일이 손상되었거나 SD 카드를 제거하였습니다."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "상세정보"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "제목"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "이 동영상을 삭제합니다."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "설정"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "동영상을 재생할 수 없음"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "정렬"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "글자 크기"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "반복 설정"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "자막(CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "가운데"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "크게"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "왼쪽"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "중간"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "오른쪽"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "작게"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "다음"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "이전"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM 파일은 공유할 수 없습니다."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "형식"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "통화 중에는 동영상을 재생할 수 없습니다."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "메시지"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "파일 전송"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "이메일"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "경도"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "위도"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "모션 실행"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx 속도로 탐색 중입니다."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "외장 저장공간"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "음량"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "지원되지 않는 동영상 포맷입니다."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "지원되지 않는 파일 형식입니다."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "지원되지 않는 오디오 포맷입니다."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "주변 디바이스를 실행하는 중에는 빨리감기 및 되감기 기능을 사용할 수 없습니다."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "캡처할 수 없습니다."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "회전"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "이전 화면으로 돌아가려면 뒤로가기 버튼을 다시 누르세요."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "저장공간이 부족합니다. 일부 항목을 삭제하세요."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "북마크 목록이 가득 찼습니다. 북마크 일부를 삭제하세요."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "노란색"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "가상 7.1채널"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "자막(CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "반복 모드"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "반복 안 함"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "자홍색"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "녹색"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "청록색"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "직접 설정"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "현재 동영상(한 번)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "연결정보"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "플레이어 변경"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "캡처"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "디바이스 선택"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "사용 가능한 디바이스"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "스피커"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "흰색"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UD마루고딕"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UD명조"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "로즈마리"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "빨간색"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s초"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "팝"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "재생\n속도"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d초"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "해제"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "제목이 없습니다"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "내 디바이스"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "기본 서체"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "쿨재즈"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "초코쿠키"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "파란색"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "검은색"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "실행"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "애플리케이션을 종료할까요?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "취소"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "모두 재생 후 중지"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "현재 동영상 반복"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "모두 반복"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "스피커에서 %s 음향 효과가 지원되지 않습니다."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "디바이스를 뒤집어 벨소리, 메시지 알림음, 알람을 끕니다."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD 카드"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "이 파일은 오디오 데이터만 지원합니다. 오디오를 재생합니다."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "이 파일은 동영상 데이터만 지원합니다. 동영상을 재생합니다."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "개인 저장공간"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "헤드폰"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "스피커"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "일시정지"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "다운로드"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "자막(CC) 선택"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "자막(CC) 미리보기"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "반복 모드"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "지원되지 않는 파일 형식입니다."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "일반"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "음성"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "영화"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "오디오 트랙"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "버퍼링 중..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "파일 형식"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "언어"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "동영상 없음"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "크기"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "완료"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "새로고침"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "날짜"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "불러오는 중..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "자막(CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "삭제"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "홈 화면에 추가"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "이름"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "동영상을 재생할 수 없습니다."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "표시 가능한 자막이 없습니다"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "재생"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "닫기"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL이 바르지 않습니다."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "오류"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "디바이스 저장공간"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "비디오 플레이어"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "공유"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "네트워크 오류가 발생하였습니다. 다시 시도하세요."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "이 파일은 오디오 데이터만 지원합니다. 오디오를 재생합니다."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "이 파일은 동영상 데이터만 지원합니다. 동영상을 재생합니다."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "가운데"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "사용"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "설정"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "비디오"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "공유"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "상세정보"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "삭제"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "버퍼링- %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "설정 안 함"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d초"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "오디오 디바이스 선택"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "삭제"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "취소"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "알 수 없는 오류가 발생하였거나 손상된 파일입니다."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "지원되지 않는 파일 형식입니다."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "완료"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "취소"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "저장 위치"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "자막(CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "퍼스널 저장공간"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "자막은 지금 보이는 것처럼 표시됩니다."
+
diff --git a/vp-main/res/po/lt.po b/vp-main/res/po/lt.po
new file mode 100755
index 0000000..7d87361
--- /dev/null
+++ b/vp-main/res/po/lt.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Ryškumas"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Muzika"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Balsai"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Vieta"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Gerai"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Paskutinį kartą keista"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Dalytis"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Neįmanoma leisti vaizdo įrašo"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Įvyko subtitrų klaida."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Sugadintas failas arba išimta SD kortelė."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Išsami informacija"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Pavadinimas"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Šis vaizdo įrašas bus ištrintas."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nustatymai"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Negalima paleisti vaizdo įrašo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Lygiavimas"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Šrifto dydis"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Kartoti nustatymą"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrai (pasirenkami)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centruoti"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Didelis"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Kairė"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Vidutinis"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dešinė"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mažas"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Kitas"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Ankst."
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM failų negalima bendrinti."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formatas"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Pokalbio metu negalima paleisti vaizdo įrašo."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Žinutė"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Failų perkėlimas"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "El. paštas"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Ilguma"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Platuma"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Įjungt judes."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Prasukti %sx greičiu."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Išorinė laikmena"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Garsumas"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nepalaikomas vaizdo įrašo formatas."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepalaikomas failo tipas."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nepalaikomas garso formatas."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Neįmanoma naudoti greito persukimo pirmyn ir atsukimo atgal funkcijos, kai išjungti netoliese esantys įrenginiai."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Neįmanoma užfiksuoti."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Sukti"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Norėdami grįžti į ankstesnį ekraną, spauskite mygtuką „Atgal“."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nepakanka atminties. Ištrinkite kai kuriuos elementus"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Pilnas žymeklių sąrašas.\nIštrinti žymeklius."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Geltona"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtualus 7.1 kan."
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrai (pasirenkami)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "„SoundAlive“"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Kartojimo režimas"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Jokio pakartojimo"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Rausva"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Žalia"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Žydra"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Pasirinktinis"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Esam.vaiz.įr.(kartą)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Ryšio informacija"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Keisti leistuvą"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Užfiksuoti"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "„AllShare“"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Pasirinkite įrenginį"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Galimi įrenginiai"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Garsiak."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Balta"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Raudona"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sek."
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Leidimo greitis"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Išjungta"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nėra pavadinimo"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mano įrenginys"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Numatytasis šriftas"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Mėlyna"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Juoda"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktyvinimas"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Uždaryti programą?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Atš."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stabdyti po visų"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Kartoti dabartinį"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Kartoti viską"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Raiška"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Garsiakalbis nepalaiko %s garso efektų."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Nutildykite gaunamus skambučius, naujos žinutės signalą ir žadintuvą apversdami telefoną."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD kortelė"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Šis failas palaiko tik garso duomenis. Dabar atkuriamas garsas."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Šis failas palaiko tik vaizdo duomenis. Dabar atkuriamas vaizdas."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privati saugykla"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Ausinės"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Garsiakalbis"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauzė"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Atsisiųsti"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Rinktis subt. (užd.antr.)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Žr. subtitrus (užd. antraštė)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Kartojimo režimas"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepalaikomas failo tipas."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Įprastas"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Balsas"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmai"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Garso takelis"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Derinama..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Failo formatas"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Kalba"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nėra vaizdo įrašų"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Dydis"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Atlikta"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Atnaujinti"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Įkeliama..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtit. (užd.antr.)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Pridėt prie pradžios ekrano"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Vardas"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "„YouTube“"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Paleisti vaizd. įr. nepavyko."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Subtitrų nėra"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Paleisti"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Uždaryti"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Netinkamas URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Klaida"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Įrenginio atmintis"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Vaizdo leistuvas"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Bendrinti per"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Įvyko tinklo klaida. Bandykite dar kartą."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Šis failo formatas palaiko tik garso įrašo duomenis. Dabar atkuriamas garsas."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Šis failo formatas palaiko tik vaizdo duomenis. Dabar atkuriamas vaizdas."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centre"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Įjungta"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Nustatymai"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vaizdo įrašas"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Bendr."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Išsami informacija"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Derinama – %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nėra"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Rinktis garso įrenginį"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Atšaukti"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Įvyko nežinoma klaida arba failas gali būti sugadintas."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Šis failo tipas nepalaikomas."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ATLIKTA"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ATŠAUKTI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Saugojimo vieta"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitrai (uždaryta antraštė)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Asmeninė saugykla"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Antraštės atrodys taip"
+
diff --git a/vp-main/res/po/lv.po b/vp-main/res/po/lv.po
new file mode 100755
index 0000000..7ca9049
--- /dev/null
+++ b/vp-main/res/po/lv.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Spilgtums"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Mūzika"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Balsis"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Atrašanās vieta"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Labi"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Pēdējo reizi mainīts"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Kopīgot"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Nevar demonstrēt videoklipu"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Radās subtitru kļūda."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fails ir bojāts vai arī ir izņemta SD karte."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Dati"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Nosaukums"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Šis videoklips tiks izdzēsts."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Iestatījumi"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nevar demonstrēt video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Līdzinājums"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Fonta lielums"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Atkārtošanas iestatījums"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitri (slēptie titri)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrā"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Liels"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Pa kreisi"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Vidējs"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Pa labi"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mazs"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Nāk."
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Iepriekš."
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM failus nevar kopīgot."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formāts"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Sarunas laikā nevar demonstrēt video."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Ziņa"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Failu pārsūtīšana"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pasts"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Garums"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Platums"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Akt. kustību"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Pārtīšanas ātrums: %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Ārējā krātuve"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Skaļums"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Neatbalstīts videoklipa formāts."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Neatbalstīts faila veids."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Neatbalstīts audio formāts."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Nevar izmantot tīšanu uz priekšu un atpakaļ, ja ir aktivizētas tuvumā esošās ierīces."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Nevar uzņemt."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Pagriezt"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Nospiediet vēlreiz taustiņu Atpakaļ, lai atgrieztos iepriekšējā ekrānā."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nepietiek atmiņas. Izdzēsiet dažus vienumus"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Grāmatzīmju saraksts ir pilns.\nIzdzēsiet daļu grāmatzīmju."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Dzeltens"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuālais 7.1 kan."
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitri (slēptie titri)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Atkārtošanas režīms"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Neatkārtot"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Fuksīna krāsā"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zaļš"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Zilganzaļš"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Pielāgota"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Pašr. video (vienr.)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Savienojuma dati"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Mainīt spēlētāju"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Tvert"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Izvēlieties ierīci"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Pieejamās ierīces"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Skaļrunis"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Balts"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Sarkani"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekundes"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Demonstrēšanas ātrums"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Izslēgts"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nav nosaukuma"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mana ierīce"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Noklusējuma fonts"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Zils"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Melni"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivizēšana"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Vai aizvērt programmu?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Atcelt"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Pārtraukt"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Atkārtot pašreizējo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Atkārtot visu"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Izšķirtspēja"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Skaļrunis nenodrošina %s skaņas efektus."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Apvērsiet tālruni, lai izslēgtu ienākošos zvanus, ziņu signālu un modinātāja skaņu."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD karte"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Šis fails atbalsta tikai audio datus. Tagad atskaņo audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Šis fails atbalsta tikai video datus. Tagad demonstrē video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privātā krātuve"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Austiņas"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Skaļrunis"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauze"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Lejupielādēt"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Izvēlēties subtitrus (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Priekšskatīt subtitrus (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Atkārtošanas režīms"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Neatbalstīts faila veids."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Parasta"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Balss"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmas"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio ieraksts"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buferizācija"
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Faila formāts"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Valoda"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nav videoklipu"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Lielums"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gatavs"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Atsvaidzināt"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datums"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Ielādē..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtitri (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Pievienot sākuma ekrānam"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Vārds"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nevar demonstrēt video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Subtitri nav pieejami"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Atskaņot"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Aizvērt"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Nederīgs URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Kļūda"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Ierīces krātuve"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video Atskaņotājs"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Kopīgot, izmantojot"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Radās tīkla kļūda. Mēģiniet vēlreiz."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Šis faila formāts atbalsta tikai audio datus. Tagad atskaņo audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Šis faila formāts atbalsta tikai video datus. Šobrīd tiek demonstrēts videoklips."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centrā"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Ieslēgts"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Iestatījumi"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videoklipi"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Kopl."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Dati"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buferizācija - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nav"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Izvēlēties audio ierīci"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Atcelt"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Radās nezināma kļūda vai fails, iespējams, ir bojāts."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Šis faila veids netiek atbalstīts."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GATAVS"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ATCELT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Krātuves atrašanās vieta"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitri (pēc pieprasījuma)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Personiskā krātuve"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Titri izskatīsies šādi"
+
diff --git a/vp-main/res/po/mk.po b/vp-main/res/po/mk.po
new file mode 100755
index 0000000..138b3b8
--- /dev/null
+++ b/vp-main/res/po/mk.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Светлина"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Музика"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Гласови"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Локација"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Последно менување"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Сподели"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Не може да се пушти видеото"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Дојде до грешка со титлите."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Фајлот е неисправен или SD-картичката е извадена."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Детали"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Наслов"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Видеото ќе се избрише."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Опции"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Не може да се емитува видеото"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Порамнување"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Големина на букви"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Поставка за повторување"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Титли (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Центар"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Големи"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Лево"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Средни"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Десно"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Мали"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Следно"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Претход."
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Фајловите со DRM не можат да се делат."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Не може да се пушти видео за време на разговор."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Порака"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Пренесување фајлови"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Е-пошта"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Географска должина"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Географска широчина"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Вкл. движење"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Гребење со брзина од %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Надворешен мем. уред"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Јачина на тон"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Неподдржан видео формат."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдржан тип на фајл."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Неподдржан аудио формат."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Не може да се користи брзо напред и брзо назад кога се вклучени уреди во близина."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Не може да се долови."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Заврти"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Притиснете го копчето за назад повторно за да се вратите на претходниот екран."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Нема доволно меморија. Избришете некој запис"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Листата омилени страници е полна. Избришете некоја омилена страница."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Жолта"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Виртуелен 7.1 канал"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Титли (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Начин на повторување"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Нема повторување"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Магента"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Зелена"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Модро зелена"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Прилагодено"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Момент.видео (еднаш)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Информ. за врската"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Смени плеер"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Снимање"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Избери уред"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Достапни уреди"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Звучник"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Бела"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Црвена"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s секунди"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Брзина на емитување"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d секунди"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Исклучено"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Нема наслов"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Мој уред"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Основен фонт"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Сино"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Црна"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Активирање"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Затвори апликација?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Откажи"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Сопри после сѐ"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повт. моментална"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторувај сè"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Резолуција"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Звучните ефекти %s не се поддржани од звучникот."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Превртете го телефонот за да го исклучите звукот за дојдовните повици, известувањата за пораки и алармите."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-карт."
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Овој фајл поддржува само аудио податоци. Се емитува звук."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Овој фајл поддржува само видео податоци. Се емитува видео."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Приватна меморија"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Слушалки"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Звучник"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Пауза"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Преземи"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Избери титли (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Прегледај титли (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Режим на повторување"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдржан тип на фајл."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Нормално"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Гласовна снимка"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Филмови"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Аудио запис"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Се полни..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Формат на фајлот"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Јазик"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Нема видеа"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Големина"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Обнови"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Датум"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Се вчитува..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Титли (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Бриши"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Додај на почетниот екран"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Име"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Видео-записот не може да се емитува."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Не се достапни титли"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Емитувај"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Затвори"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Неправилен URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Грешка"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Меморија на уредот"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Видео-плеер"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Сподели преку"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Дојде до мрежна грешка. Обидете се повторно."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Овој формат на фајл поддржува само аудио податоци. Се емитува звук."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Овој формат на фајлови поддржува само видео податоци. Се емитува видео."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "На средина"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Вклучено"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Опции"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Видеа"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Сподели"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Детали"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Избриши"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Се полни - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ништо"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d сек."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Изберете аудио уред"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Избриши"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Откажи"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Дојде до непозната грешка или фајлот е неисправен."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Овој вид фајл не е поддржан."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ОТКАЖИ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Место за меморирање"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Титли (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Лична меморија"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Натписите ќе изгледаат вака"
+
diff --git a/vp-main/res/po/nb.po b/vp-main/res/po/nb.po
new file mode 100755
index 0000000..ce6741e
--- /dev/null
+++ b/vp-main/res/po/nb.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Lysstyrke"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musikk"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Stemmer"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Posisjon"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Sist endret"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Del"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Kan ikke spille av video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Det oppstod en feil med undertekstene."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Filen er ødelagt eller SD-kortet er fjernet."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Tittel"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Denne videoen vil bli slettet."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Innstillinger"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan ikke spille av video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Justering"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Skriftstørrelse"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Gjentakelsesinnstilling"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Midtstill"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stor"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Venstre"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Middels"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Høyre"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Liten"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Neste"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Forrige"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-filer kan ikke deles."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan ikke spille av video under samtale."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Melding"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Filoverføring"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-post"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lengdegrad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breddegrad"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Aktiv. beveg."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Skrubber med %sx hastighet."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Ekstern lagring"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volum"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Videoformatet støttes ikke."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtypen støttes ikke."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Ikke støttet lydformat."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Kan ikke bruke spoling fremover og bakover når Enheter i nærheten er aktivert."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Kan ikke ta bilde."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Roter"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Trykk på Tilbake-tasten på nytt for å gå tilbake til det forrige skjermbildet."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Ikke nok minne. Slett noen elementer."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bokmerkeliste full. Slett noen bokmerker."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Gul"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuell 7.1 kanal"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Gjentakelsesmodus"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ingen gjentakelse"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Grønn"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Tilpasset"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Gj. video (én gang)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Tilkoblingsinfo."
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Endre avspiller"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Ta opp"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Velg enhet"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Tilgjeng. enheter"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Høyttaler"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Hvit"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosmarin"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rød"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekunder"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Avspillingshastighet"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Av"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Ingen tittel"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Min enhet"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Standardskrift"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blå"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Svart"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivering"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Lukke app?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Avbryt"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stopp etter alle"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Gjenta gjeldende"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Gjenta alle"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Oppløsning"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s lydeffekter støttes ikke av høyttaler."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Vend telefonen for å dempe innkommende samtaler, meldingsvarsler og alarmer."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Bare lyddata støttes av denne filen. Spiller nå av lyd."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Bare videodata støttes av denne filen. Spiller nå av video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privat lagring"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Hodetelefoner"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Høyttaler"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pause"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Last ned"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Velg undertekster (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Forhåndsvis undertekster (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Gjentakelsesmodus"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtypen støttes ikke."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Tale"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmer"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Lydspor"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Bufrer..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Filformat"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Språk"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Ingen videoer"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Størrelse"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Oppdater"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dato"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Laster ..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Slett"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Legg til på startskjerm"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Navn"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Kan ikke spille av video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Ingen undertekster er tilgjengelig"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Spill"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Lukk"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Ugyldig URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Feil"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Enhetsminne"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Videospiller"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Del via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Det har oppstått en nettverksfeil. Prøv på nytt."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Bare lyddata støttes av dette filformatet. Spiller nå av lyd."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Bare videodata støttes av dette filformatet. Spiller nå av video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Midten"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "På"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Innstillinger"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videoer"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Del"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Slett"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Bufrer – %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ingen"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Velg lydenhet"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Slett"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Det har oppstått en ukjent feil, eller filen kan være ødelagt."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Denne filtypen støttes ikke."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "FULLFØRT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "AVBRYT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Lagringssted"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Undertekster (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Personlig lagring"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Teksten vil se slik ut."
+
diff --git a/vp-main/res/po/nl.po b/vp-main/res/po/nl.po
new file mode 100755
index 0000000..2f3eb2a
--- /dev/null
+++ b/vp-main/res/po/nl.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Helderheid"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Muziek"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Stemmen"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Locatie"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Laatst gewijzigd op"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Delen"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Kan video niet afspelen"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Er is een fout opgetreden met de ondertiteling."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Het bestand is beschadigd of de SD-kaart is verwijderd."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Gegevens"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titel"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Deze video wordt verwijderd."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Instellingen"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan deze video niet afspelen"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Uitlijning"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tekstgrootte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Instelling herhalen"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Ondertiteling"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Midden"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Groot"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Links"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Gemiddeld"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Rechts"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Klein"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Volgende"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Vorige"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-bestanden kunnen niet worden gedeeld."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Indeling"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan video niet afspelen tijdens gesprek."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Bericht"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Bestandsoverdracht"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Lengtegraad"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Breedtegraad"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Beweging aan"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Scrubbing op snelheid %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Externe opslag"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Niet-ondersteunde video-indeling."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Niet-ondersteund bestandstype."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Niet-ondersteunde audio-indeling."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Kan niet snel vooruit of terug spoelen wanneer apparaten in de buurt zijn ingeschakeld."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Kan niet vastleggen."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Draaien"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Druk nogmaals op de toets Terug om terug te gaan naar het vorige scherm."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Onvoldoende geheugen. Wis een aantal items."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Favorieten vol. Verwijder een aantal favorieten."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Geel"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtueel 7.1-kanaals"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Ondertiteling"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Herhaalstand"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Geen herhaling"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Groen"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyaanblauw"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Aangepast"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Deze video (eenmaal)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Verbindingsgegevens"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Wijzig speler"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Opname"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Apparaat selecteren"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Beschikb. apparaten"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Speaker"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Wit"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rood"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s seconden"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Afspeelsnelheid"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sec"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Uit"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Geen titel"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Mijn apparaat"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Standaardlettertype"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blauw"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Zwart"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Inschakelen"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Applicatie sluiten?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Annul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stop na alles"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Huidige herhalen"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Alles herhalen"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolutie"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s geluidseffecten worden niet ondersteund door luidspreker."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Keer telefoon om voor dempen van inkomende oproepen, berichtwaarschuwingen en alarmen."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kaart"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Alleen audiogegevens ondersteund door dit bestand. Speelt nu audio af."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Alleen videogegevens ondersteund door dit bestand. Speelt nu video af."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privé-opslag"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Koptelefoons"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Luidspreker"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauze"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Downloaden"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Ondertiteling selecteren"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Ondertiteling weergeven"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Herhaalstand"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Niet-ondersteund bestandstype."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normaal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Spraak"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Films"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audiotrack"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "In buffer..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Bestandsindeling"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Taal"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Geen video's"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Grootte"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gereed"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Vernieuwen"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Laden..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Ondertiteling"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Wissen"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Toevoegen aan startscherm"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Naam"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Kan video niet afspelen."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Geen ondertiteling beschikbaar"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Afspelen"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Sluiten"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Adres is onjuist."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Fout"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Apparaatopslag"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Videospeler"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Delen via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Er is een netwerkfout opgetreden. Probeer het opnieuw."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Deze bestandsindeling ondersteunt alleen audiogegevens. Speelt nu audio af."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Alleen videogegevens die worden ondersteund door deze bestandsindeling. Speelt nu video af."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centreren"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Aan"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Instellingen"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Video's"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Delen"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Gegevens"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Verwijderen"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "In buffer opslaan - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Geen"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sec"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Audioapparaat selecteren"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Wissen"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Annuleer"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Er is een onbekende fout opgetreden of het bestand is mogelijk beschadigd."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Dit bestandstype wordt niet ondersteund."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GEREED"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANNULEREN"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Opslaglocatie"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Ondertiteling"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Persoonlijke opslag"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Ondertiteling ziet er zo uit."
+
diff --git a/vp-main/res/po/pl.po b/vp-main/res/po/pl.po
new file mode 100755
index 0000000..aa0ef39
--- /dev/null
+++ b/vp-main/res/po/pl.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Jasność"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Muzyka"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Głosowy"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokalizacja"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Ostatnia modyfikacja"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Udostępniaj"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Nie można odtworzyć filmu"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Wystąpił błąd związany z napisami."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Plik jest uszkodzony lub wyjęto kartę pamięci."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Szczegóły"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Tytuł"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Ten film wideo zostanie usunięty."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ustawienia"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nie można odtworzyć filmu"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Wyrównanie"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Rozmiar tekstu"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ustawienie powtarzania"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Napisy (kodowane)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Pośrodku"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Duży"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Do lewej"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Średnia"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Do prawej"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mały"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Dalej"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Wstecz"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Nie można udostępnić plików DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Nie można odtwarzać wideo podczas połączenia."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Wiadom."
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Przesyłanie plików"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Długość geogr."
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Szerokość geogr."
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Wł. f. ruchu"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Przewijanie z szybkością %s."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Pamięć zewnętrzna"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Głośność"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nieobsługiwany format wideo."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nieobsługiwany typ pliku."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nieobsługiwany format dźwięku."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Nie można używać przewijania do przodu ani do tyłu, gdy włączone są urządzenia w pobliżu."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Nie można przechwycić."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Obróć"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Naciśnij ponownie klawisz wstecz, aby wrócić do poprzedniego ekranu."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Brak pamięci. Usuń niektóre elementy"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista zakładek pełna. Usuń niektóre zakładki."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Żółty"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Wirtualne 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Napisy (kodowane)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Tryb powtarzania"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Bez powtarzania"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Amarantowy"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zielony"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyjan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Niestandardowa"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Bieżący film (raz)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Inform. o połączeniu"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Zmień odtwarzacz"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Przechwyć"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Wybierz urządzenie"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dostępne urządzenia"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Głośnik"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Biały"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Czerwony"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s s"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Szybkość odtwarzania"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sek."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Wyłącz"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Brak tytułu"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Moje urządzenie"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Czcionka domyślna"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Niebieski"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Czarny"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktywacja"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Zamknąć aplikację?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Anul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zatrzymaj po wszyst."
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Powtórz bieżący"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Powtórz wszystkie"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rozdzielczość"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Efekty dźwiękowe %s nie są obsługiwane przez głośnik."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Odwróć telefon, aby wyciszyć połączenia przychodzące, dźwięki wiad. i alarmy."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Karta pamięci"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Ten plik obsługuje tylko dane audio. Trwa odtwarzanie dźwięku."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Ten plik obsługuje tylko dane wideo. Trwa odtwarzanie wideo."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Pamięć prywatna"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Słuchawki"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Głośnik"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauza"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Pobierz"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Wybierz napisy (kodowane)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Podgląd napisów (kodowane)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Tryb powtarzania"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nieobsługiwany typ pliku."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normalna"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Głosowy"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmy"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Ścieżka dźwiękowa"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buforowan..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format pliku"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Język"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Brak filmów wideo"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Rozmiar"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gotowe"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Odśwież"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Ładowanie..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Napisy (kodowane)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Dodaj do ekranu startowego"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nazwa"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nie można odtworzyć filmu."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Brak dostępnych napisów"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Odtwórz"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Zamknij"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Nieprawidłowy adres URL"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Błąd"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Pamięć urządzenia"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Odtwarzacz wideo"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Udostępnij przez"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Wystąpił błąd sieci. Spróbuj później."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Ten format plików obsługuje tylko dane audio. Trwa odtwarzanie dźwięku."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Ten format pliku obsługuje tylko dane wideo. Trwa odtwarzanie wideo."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centrum"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Włącz"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ustawienia"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Filmy"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Udost."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Szczegóły"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buforowanie — %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Brak"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Wybór urządzenia audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Anuluj"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Wystąpił nieznany błąd lub plik może być uszkodzony."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ten typ plików nie jest obsługiwany."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GOTOWE"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANULUJ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Położenie pamięci"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Napisy (kodowane)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Pamięć osobista"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Tak będą wyglądać napisy"
+
diff --git a/vp-main/res/po/pt_BR.po b/vp-main/res/po/pt_BR.po
new file mode 100755
index 0000000..f4202a8
--- /dev/null
+++ b/vp-main/res/po/pt_BR.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brilho"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Música"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Local"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Última modificação"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Compartilhar"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Impossível reproduzir o vídeo"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Houve um erro com as legendas."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "O arquivo está corrompido ou o cartão SD foi removido."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Este vídeo será excluído."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Configurações"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Não é possível reprod. vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alinhamento"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamanho da fonte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir configuração"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Legendas"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centralizar"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerdo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Média"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Direito"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequena"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Próximo"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Não é possível compartilhar os arquivos DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossível reproduzir vídeo durante chamada."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensagem"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transferir arquivo"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Ativar mov."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Depurar a %sx veloc."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Armazenamento externo"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo não suportado."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de arquivo não suportado."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de áudio não suportado."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Impossível usar o avanço rápido ou retrocesso quando dispositivos próximos estão ativados."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Impossível capturar."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Girar"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Pressione a tecla voltar novamente para retornar à tela anterior."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Memória insuficiente. Apague alguns itens"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Favoritos cheio. Apague alguns favoritos."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Amarelo"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "7.1 ch Virtual"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Legendas"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Modo de repetição"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Sem repetição"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Púrpura"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Ciano"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Vídeo atual (1 vez)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Informações conexão"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Alterar player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capturar"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Selecionar dispositivo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dispositivos dispon."
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Viva-voz"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Branco"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Vermelho"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segundos"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocidade de reprodução"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desativado"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sem título"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Meu dispositivo"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Fonte padrão"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Azul"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Preto"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Ativação"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Fechar aplicação?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Parar após todos"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir atual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir todos"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Efeitos sonoros %s não suportados pelo alto-falante."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Vire o telefone ao contrário para silenciar chamadas recebidas, alertas de mensagens e alarmes."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Cartão SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Somente dados de áudio são suportados por este arquivo. Agora reproduzindo áudio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Somente dados de vídeo são suportados por este arquivo. Agora reproduzindo vídeo."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Armazenamento privado"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Fones de ouvido"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Viva-voz"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausar"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Baixar"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Selecionar legendas (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Visualização de legendas (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modo de repetição"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de arquivo não suportado."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmes"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Faixa de áudio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Mov. p/buffer"
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formato de arquivo"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Idioma"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nenhum vídeo"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Tamanho"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Atualizar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Carregando..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Legendas (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Excluir"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Adicionar à tela inicial"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Você não pode reproduzir vídeo."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Nenhuma legenda disponível"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reproduzir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Fechar"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL inválida."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Erro"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Armazenamento do dispositivo"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video player"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Compartilhar via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ocorreu um erro de rede. Tente novamente."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Somente dados de áudio são suportados por este formato de arquivo. Reproduzindo áudio agora."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Somente dados de vídeo são suportados por este formato de arquivo. Agora reproduzindo vídeo."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centro"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Ativado"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Configurações"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Compart."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Excluir"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Armazenando temporariamente - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nenhum"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d seg"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Selecionar dispositivo de áudio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Excluir"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Ocorreu um erro desconhecido ou o arquivo pode estar corrompido."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Este tipo de arquivo não é suportado."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "CONCLUÍDO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Local de armazenamento"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Legendas (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Armazenamento pessoal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "As legendas aparecerão desta forma"
+
diff --git a/vp-main/res/po/pt_PT.po b/vp-main/res/po/pt_PT.po
new file mode 100755
index 0000000..c290e8d
--- /dev/null
+++ b/vp-main/res/po/pt_PT.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Brilho"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Música"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Vozes"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Localização"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Última modificação"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Enviar"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Impossível reproduzir vídeo"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Ocorreu um erro com as legendas."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "O ficheiro está corrompido ou o cartão SD foi retirado."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Título"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Este vídeo será eliminado."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Definições"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Impossível reproduzir vídeo"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Alinhamento"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Tamanho de fonte"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Repetir definição"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Legendas (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centro"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Grande"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Esquerda"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Média"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Direita"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Pequeno"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Seguinte"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Impossível partilhar ficheiros DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossível reproduzir vídeo durante chamada."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mensagem"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfer. ficheiro"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitude"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitude"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Activar mov."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Leitura a %sx da velocidade."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Armazenamento externo"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volume"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo não suportado."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de ficheiro não suportado."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de áudio não suportado."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Impossível utilizar o avanço rápido e o retrocesso quando existem dispositivos próximos activados."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Impossível capturar."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rodar"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Prima novamente a tecla voltar para regressar ao ecrã anterior."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Memória insuficiente. Apague alguns itens."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de marcadores cheia. Apague alguns marcadores."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Yellow"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Canal virtual 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Legendas (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Modo de repetição"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Não repetir"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cião"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Vídeo actual (1 vez)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Info de ligação"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Mudar leitor"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Capturar"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Seleccionar dispositivo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Disposit disponíveis"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Altifal."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Branco"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Vermelho"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s segundos"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Velocidade de reprodução"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Desligado"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sem título"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "O meu dispositivo"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Fonte padrão"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Azul"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Preto"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activação"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Fechar aplicação?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Canc."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Parar depois de tudo"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetir actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetir tudo"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s efeitos de som não são suportados pelo altifalante."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Mude o telefone para silenciar chamadas recebidas, alertas de mensagem e alarmes."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Cartão SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Só são suportados por este ficheiro dados de áudio. A reproduzir áudio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Só são suportados por este ficheiro dados de vídeo. A reproduzir vídeo."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Armazenamento privado"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Auscultadores"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Alta-voz"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pausa"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Transferir"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Seleccionar legendas (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Pré-visualizar legendas (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Modo de repetição"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de ficheiro não suportado."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voz"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmes"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Faixa de áudio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Mem. tempor."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formato de ficheiro"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Idioma"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nenhuns vídeos"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Tamanho"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Concluir"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Data"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "A carregar..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Legendas (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Adicionar ao ecrã principal"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Impossível reproduzir vídeo."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Não estão disponíveis legendas"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reproduzir"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Fechar"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL inválido."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Erro"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Armazenamento do dispositivo"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Leitor de Vídeo"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partilhar via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ocorreu um erro de rede. Tente novamente."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Este formato de ficheiro suporta apenas dados de áudio. A reproduzir áudio agora."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Só são suportados dados de vídeo por este formato de ficheiro. A reproduzir vídeo."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centro"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Ligado"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Definições"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Enviar"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Colocar na memória temporária - %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nenhum"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Seleccionar dispositivo de áudio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Ocorreu um erro desconhecido ou o ficheiro pode estar corrupto."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Este tipo de ficheiro não é suportado."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "CONCLUÍDO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "CANCELAR"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Localização armazenamento"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Legendas (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Armazenamento pessoal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "As legendas terão este aspecto"
+
diff --git a/vp-main/res/po/ro.po b/vp-main/res/po/ro.po
new file mode 100755
index 0000000..95c6c29
--- /dev/null
+++ b/vp-main/res/po/ro.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Luminozitate"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Muzică"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Voci"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KO"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Locaţie"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MO"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Ultima modificare"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Partajaţi"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Videoclipul nu poate fi redat"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "A apărut o eroare legată de subtitrări."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fişierul este deteriorat sau cardul SD a fost îndepărtat."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalii"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Titlu"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Acest videoclip va fi şters."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Setări"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videoclipul nu poate fi redat"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Aliniere"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Dimensiune font"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Setare repetare"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrări (complexe)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centru"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Mare"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Stânga"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Mediu"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Dreapta"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mic"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Următor"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Anterior"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Fişierele DRM nu pot fi partajate."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formatare"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Imposibil de redat videoclipul în timpul apelului"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mesaj"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Transfer fişier"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitudine"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitudine"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Activ. mişc."
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Se derulează la o viteză de %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Stocare externă"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volum"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Format video neacceptat"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tip fişier neacceptat"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Format audio neacceptat"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Nu se poate utiliza derularea rapidă înainte sau derularea înapoi când dispozitivele din apropiere sunt activate."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Imposibil de capturat"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotire"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Apăsaţi din nou pe tasta Înapoi pentru a reveni la ecranul anterior."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Memorie insuficientă. Ştergeţi câteva elemente"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Listă marcaje plină. Ştergeţi din marcaje."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Galben"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "7.1 canale virtuale"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrări (complexe)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Mod repetare"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Nicio repetiţie"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Verde"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Azuriu"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Personalizat"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Video act. (o dată)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Info. conexiune"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Schimbare player"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Captură"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Selectare dispozitiv"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dispozitive dispon."
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Difuzor"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Alb"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rozmarin"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Roşu"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s secunde"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Viteză de redare"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sec."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Oprit"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nici un titlu"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Dispozitivul meu"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Font prestabilit"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Jazz liniştit"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Biscuite de ciocolată"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Albastru"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Negru"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Activare"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Închideţi aplicaţia?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Anul."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Oprire după toate"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Repetare actual"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Repetare globală"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezoluţie"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Efectele sonore %s nu sunt acceptate de difuzor."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Întoarceţi telefonul pentru a opri sunetul pentru apeluri primite, alerte de mesaje şi alarme."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Cartelă SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Doar datele audio sunt acceptate de acest fişier. Se redă conţinut audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Doar datele video sunt acceptate de acest fişier. Se redă conţinut video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Spaţiu de stocare privat"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Căşti"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Difuzor"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauză"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Descărcare"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Sel. subtitr. (complexe)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Examin. subtitrări (complexe)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Mod repetare"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tip fişier neacceptat"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Voce"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filme"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Piesă audio"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Se încarcă..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format fişier"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Limbă"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Niciun videoclip"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Dimensiune"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Efectuat"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Reîmprosp."
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dată"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Se încarcă..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtitr. (complexe)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Ştergere"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Adăug. la ecran. de pornire"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Nume"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Imposibil de redat videoclipul"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Nu sunt disponibile subtitrări"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Redare"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Închidere"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL invalid"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Eroare"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Spaţiu stocare dispozitiv"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Player video"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Partajare prin"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "A apărut o eroare de reţea. Încercaţi din nou."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Doar datele audio sunt acceptate de acest format de fişier. Se redă conţinut audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Acest format de fişier acceptă doar datele video. Se redă conţinut video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centru"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Pornit"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Setări"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videoclip."
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Partaj."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalii"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Ştergere"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Încărcare în zona tampon - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Fără"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sec."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Selectare dispozitiv audio"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ştergere"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Anulare"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "A apărut o eroare necunoscută sau este posibil ca fişierul să fie deteriorat."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Acest tip de fişier nu este acceptat."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "EFECTUAT"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ANULARE"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Locaţie stocare"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitrări (complexe)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Spaţiu de stocare personal"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Subtitrările vor arăta astfel"
+
diff --git a/vp-main/res/po/ru_RU.po b/vp-main/res/po/ru_RU.po
new file mode 100755
index 0000000..de7e42b
--- /dev/null
+++ b/vp-main/res/po/ru_RU.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Яркость"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Музыка"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Голоса"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "б"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Гб"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "КБ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Местоположение"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "МБ"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "ОК"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Последнее изменение"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Отправить"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Невозможно воспроизвести видео"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Возникла ошибка с субтитрами."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Файл поврежден или карта памяти SD извлечена."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Свойства"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Название"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Это видео будет удалено."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Невозможно воспроизвести видео"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Выравнивание"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Размер шрифта"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Параметры повторения"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитры"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "По центру"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Крупный"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Слева"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Средний"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Справа"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Мелкий"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Далее"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Назад"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Невозможно поделиться DRM-файлами."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Воспроизведение видео во время вызова невозможно."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Сообщение"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Передача файлов"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Эл. почта"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Долгота"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Вкл. движение"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Перемотка на скорости %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Внешний носитель"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Громкость"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Неподдерживаемый формат видео"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдерживаемый тип файла"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Неподдерживаемый формат аудио"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Если включена функция устройств поблизости, использовать перемотку вперед и назад невозможно."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Не удалось сохранить."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Повернуть"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Чтобы вернуться на предыдущий экран, нажмите клавишу возврата еще раз."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Недостаточно памяти. Удалите некоторые элементы"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Список закладок заполнен.\nУдалите некоторые закладки."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Желтый"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Эмуляция 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитры"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Режим повтора"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Повтор выключен"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Пурпурный"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Зеленый"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Голубой"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Пользовательский"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Данное видео (1 раз)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Сведения о подключ."
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Изменить проигрыватель"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Съемка"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Выбрать устройство"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Доступные устройства"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Динамик"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Белый"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Красный"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s сек."
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Скорость воспроизведения"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d сек"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Выключено"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Нет названия"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Мое устройство"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Шрифт по умолчанию"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Синий"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Черный"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Активация"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Закрыть приложение?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Отмена"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Останов. после всех"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повторить текущее"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторять все"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Звуковые эффекты %s не поддерживаются динамиком."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Чтобы отключить сигнал входящего вызова, сообщения или будильника, переверните телефон."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Карта памяти"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Только звук, поддерживаемый этим файлом. Текущий воспроизводимый аудиофайл."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Только видео, поддерживаемое этим файлом. Текущий воспроизводимый видеофайл."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Приватное хранилище"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Наушники"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Громкая связь"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Пауза"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Загрузить"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Выбор субтитров"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Просмотреть субтитры"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Режим повтора"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдерживаемый тип файла"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Обычный"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Голос"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Фильмы"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Звуковая дорожка"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Буферизация"
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Формат файла"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Язык"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Нет видео"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Размер"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Обновить"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Дата"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Загрузка..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Субтитры"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Удалить"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Добавить на главный экран"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Имя"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Невозможно воспроизвести видео."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Нет доступных субтитров"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Воспроизвести"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Закрыть"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Неправильный URL"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Ошибка"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Память устройства"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Видео"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Отправить через"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Произошла ошибка сети. Повторите попытку."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Этот формат файла поддерживает только звуковые данные. Воспроизводится звук."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Этот формат файла поддерживает только видеоданные. Будет выполнено воспроизведение видео."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "По центру"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Включено"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Настройки"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Видео"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Отправ."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Свойства"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Удалить"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Буферизация: %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Нет"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d сек."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Выберите аудиоустройство"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Удалить"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Отмена"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Произошла неизвестная ошибка, или файл поврежден."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Этот тип файла не поддерживается."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ОТМЕНА"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Место хранения"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Субтитры (копия)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Личное хранилище"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Подписи будут выглядеть так."
+
diff --git a/vp-main/res/po/sk.po b/vp-main/res/po/sk.po
new file mode 100755
index 0000000..4be875e
--- /dev/null
+++ b/vp-main/res/po/sk.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Jas"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Hudba"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Hlasy"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "GPS"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Naposledy upravené"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Zdieľať"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Video sa nedá prehrať"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Vyskytla sa chyba titulkov."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Súbor je poškodený alebo karta SD bola odstránená."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Názov"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Toto video sa odstráni."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nastavenia"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nedá sa prehrať video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Zarovnanie"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Veľkosť písma"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Nastavenie opakovania"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Stred"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Veľké"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vľavo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Stredné"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Vpravo"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Malé"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Ďalej"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Predch."
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Súbory DRM nemožno zdieľať."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Formát"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Počas hovoru sa nedá prehrávať video."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Správa"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Prenos súborov"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-mail"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Zemepisná dĺžka"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Zemepisná šírka"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Povoliť pohyb"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Posúvanie rýchlosťou %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Exter. úložný priestor"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Hlasitosť"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nepodporovaný formát videa."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodporovaný typ súboru."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nepodporovaný formát zvuku."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Keď sú povolené blízke zariadenia, nemožno použiť prevíjanie dopredu a dozadu."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Nedá sa snímať."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Otočiť"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Opätovným stlačením tlačidla návratu sa vrátite na predchádzajúcu obrazovku."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nedostatok pamäte. Vymažte niektoré položky"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Zoznam záložiek je plný. Vymažte niektoré záložky."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Žltá"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuálny 7.1-kanálový zvuk"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Režim opakovania"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Bez opakovania"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Purpurová"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zelená"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Azúrová"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Vlastné"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Aktuálne video (raz)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Inform. o pripojení"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Zmeniť prehrávač"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Nasnímať"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Vybrať zariadenie"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dostupné zariadenia"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Reproduk."
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Biela"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rozmarín"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Červená"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s s"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Rýchlosť prehrávania"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Vyp."
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Žiadny názov"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Moje zariadenie"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Predvolené písmo"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Modrá"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Čierna"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivácia"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Zavrieť aplikáciu?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Zruš."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zastaviť po všetkých"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Opakovať aktuálne"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Opakovať všetko"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rozlíšenie"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Reproduktor nepodporuje zvukové efekty %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Prevrátením telefónu stlmíte prichádzajúce hovory, upozornenia na správy a budíky."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Karta SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Tento súbor podporuje iba zvukové údaje. Teraz sa prehráva zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Tento súbor podporuje iba obrazové údaje. Teraz sa prehráva video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Súkromné úložisko"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slúchadlá"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Reproduktor"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauza"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Stiahnuť"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Vybrať titulky (skryté)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Ukážka titulkov (skryté tit.)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Režim opakovania"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodporovaný typ súboru."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normálny"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Hlas"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmy"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Zvuková stopa"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Do medzip..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Formát súboru"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Jazyk"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Žiadne videá"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Veľkosť"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Hotovo"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Obnoviť"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Dátum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Načítava sa..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Odstrániť"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Pridať na úvodnú obrazovku"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Meno"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nedá sa prehrať video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Žiadne dostupné titulky"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Prehrať"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Zavrieť"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Neplatná adresa URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Chyba"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Úložisko zariadenia"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Prehrávač videí"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Zdieľať cez"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Vyskytla sa chyba siete. Skúste to znova."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Tento formát súboru podporuje iba zvukové údaje. Teraz sa prehráva zvuk."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Tento formát súboru podporuje iba obrazové údaje. Teraz sa prehráva video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Stred"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Zap."
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Nastavenia"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videá"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Zdieľať"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Odstrániť"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Ukladá sa do medzipamäte – %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Žiadne"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Vybrať zvukové zariadenie"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Odstrániť"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Zrušiť"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Vyskytla sa neznáma chyba alebo súbor je možno poškodený."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Tento typ súboru nie je podporovaný."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "HOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "ZRUŠIŤ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Umiest. úlož. priestoru"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Titulky (skryté)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Osobný úložný priestor"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Titulky budú vyzerať takto"
+
diff --git a/vp-main/res/po/sl.po b/vp-main/res/po/sl.po
new file mode 100755
index 0000000..135774f
--- /dev/null
+++ b/vp-main/res/po/sl.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Svetlost"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Glasba"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Glasovi"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "V redu"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Zadnjič spremenjeno"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Skupna raba"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Videa ni mogoče predvajati"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Prišlo je do napake s podnapisi."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Datoteka je poškodovana ali pa je kartica SD odstranjena."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Naslov"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Ta videoposnetek bo izbrisan."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Nastavitve"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videa ni mogoče predvajati"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Poravnava"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Velikost pisave"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Nastavitev ponavljanja"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Podnapisi (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Sredina"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velika"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Levo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Srednja"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Desno"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Majhna"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Naprej"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Nazaj"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Datotek DRM ni mogoče deliti z drugimi."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Ni mogoče predvajati videa med klicem."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Sporoč."
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Prenos datotek"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pošta"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Zemljepisna dolžina"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Zemljepisna širina"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Omog. gibanje"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Čiščenje pri hitrosti %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Zunanji pomnilnik"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Glasnost"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nepodprt video zapis."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodprta vrsta datoteke."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nepodprt zvočni zapis."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Funkcij za hitro previjanje naprej in nazaj ni mogoče uporabljati, ko so omogočene naprave v bližini."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Ni mogoče zajeti."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Obrni"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Znova pritisnite tipko za vrnitev, da se vrnete na prejšnji zaslon."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Ni dovolj pomnilnika. Izbrišite nekaj predmetov"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Seznam zaznamkov je poln. Izbrišite nekaj zaznamkov."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Rumena"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Zvočna kartica Virtual 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Podnapisi (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Način ponavljanja"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Brez ponavljanja"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zelena"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cijan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Po meri"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Tren. video (enkrat)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Podatki o povezavi"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Spremeni predvajalnik"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Zajemi"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Izberite napravo"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Razpoložlj. naprave"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Zvočnik"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Bela"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Rdeča"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s s"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Hitrost predvajanja"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Izključeno"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Ni naslova"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Moja naprava"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Privzeta pisava"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Modro"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Črna"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Vklop"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Zaprem aplikacijo?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Prekliči"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Ustavi po vseh"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ponovi trenutno"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ponovi vse"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Ločljivost"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Zvočnik ne podpira zvočnih učinkov %s."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Obrnite telefon, da utišate dohodne klice, opozorila o sporočilih in alarme."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "Kartica SD"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Ta datoteka podpira samo zvočne podatke. Zvok se predvaja."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Ta datoteka podpira samo video podatke. Video se predvaja."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Zasebna shramba"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slušalke"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Zvočnik"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Premor"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Prenos"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Izberite podnapise (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Predogled podnapisov (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Način ponavljanja"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodprta vrsta datoteke."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normalna"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Glasovno"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmi"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Zvočni posnetek"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Medpomnjenje"
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Zapis datoteke"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Jezik"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Ni videoposnetkov"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Velikost"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Končano"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Osveži"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Nalaganje ..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Podnapisi (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Dodaj na domači zaslon"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ime"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Video posnetka ni mogoče predvajati."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Nobeni podnapisi niso na voljo"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Predvajaj"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Zapri"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Nepravilen URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Napaka"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Shramba naprave"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video predvajal."
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Deli z drugimi prek"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Prišlo je do napake omrežja. Poskusite znova."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Ta oblika zapisa datoteke podpira samo zvočne podatke. Zvok se predvaja."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Ta oblika zapisa datoteke podpira samo video podatke. Video se predvaja."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Na sredino"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Vključeno"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Nastavitve"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videi"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Soupor."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Medpomnjenje – %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Brez"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d s"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Izberite zvočno napravo"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Prekliči"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Prišlo je do neznane napake ali pa je datoteka poškodovana."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ta vrsta datoteke ni podprta."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "KONČANO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "PREKLIČI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Mesto shranjevanja"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Podnapisi (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Osebna shramba"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Napisi bodo videti tako"
+
diff --git a/vp-main/res/po/sr.po b/vp-main/res/po/sr.po
new file mode 100755
index 0000000..2c37272
--- /dev/null
+++ b/vp-main/res/po/sr.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Osvetljenje"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Muzika"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Glasovi"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Poslednja izmena"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Podeli"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Nemoguće reprodukovati video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Došlo je do greške sa titlovima."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fajl je oštećen ili je uklonjena SD kartica."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Naslov"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Ovaj video će biti izbrisan."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Podešavanja"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Nemoguća reprodukcija videa"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Poravnanje"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Veličina slova"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Podešavanje ponavljanja"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titlovi"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Središnje"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Velika"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Levo"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Srednji"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Desno"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Mala"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Naredna"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Prethodna"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM fajlovi ne mogu da se dele."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Nemoguće reprodukovati video tokom poziva."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Poruka"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Prenos fajlova"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pošta"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Geografska dužina"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Geografska širina"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Omog. pokret"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Pročešljavanje na %s x brzina."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Spoljna memorija"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Glasnoća"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Nepodržan video format."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodržani tip fajla."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Nepodržan audio format."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Nije moguće koristiti funkciju premotavanja unapred i unazad kada su omogućeni uređaji u blizini."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Nije moguće snimiti."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotiraj"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Ponovo pritisni taster Nazad za povratak na prethodni ekran."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Nedovoljno memorije. Obriši neke od stavki"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista obeleživača je puna. Obrišite neke."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Žuta"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuelni 7.1 kanal"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Titlovi"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Režim ponavljanja"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Bez ponavljanja"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Zelena"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cijan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Tren. video (jednom)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Informacije o vezi"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Promeni plejer"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Snimanje"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Izaberi uređaj"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Dostupni uređaji"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Zvučnik"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Bela"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Ruzmarin"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Crvena"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekundi"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Brzina reprodukcije"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Isključeno"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Nema naslova"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Moj uređaj"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Podrazumevani font"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Plava"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Crna"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivacija"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Zatvori aplikaciju?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Otkaži"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Zaustavi nakon svega"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Ponovi aktuelno"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Ponovi sve"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolucija"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Zvučnik ne podržava %s zvučne efekte."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Okreni telefon naopako da bi utišao dolazne pozive, upozorenja o porukama i alarme."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD kartica"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Ovaj fajl podržava samo zvučne podatke. Sada se reprodukuje zvuk."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Ovaj fajl podržava samo video podatke. Sada se reprodukuje video zapis."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privatna memorija"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Slušalice"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Zvučnik"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Pauza"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Preuzmi"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Odredi titlove"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Pregled titlova"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Režim ponavljanja"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodržani tip fajla."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normalna"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Glas"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmovi"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio numera"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Baferisanje..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Format fajla"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Jezik"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Nema video zapisa"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Veličina"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Gotovo"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Osveži"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Učitavanje..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Titlovi (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Dodaj na početni ekran"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ime"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Nemoguće reprodukovati video zapis."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Titlovi nisu dostupni"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Reprodukcija"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Zatvori"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Neispravan URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Greška"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Skladišna lokacija uređaja"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video plejer"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Podeli putem"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Došlo je do greške na mreži. Pokušaj ponovo."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Ovaj format fajla podržava samo zvučne podatke. Sada se reprodukuje zvuk."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Ovaj format fajlova podržava samo video podatke. Sada se reprodukuje video zapis."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Srednje"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Uključeno"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Podešavanja"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Video zapisi"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Podeli"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Baferisanje – %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Nema"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sekundi"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Izaberi audio uređaj"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Otkaži"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Došlo je do nepoznate greške ili je fajl je možda oštećen."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Ovaj tip fajla nije podržan."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "GOTOVO"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "OTKAŽI"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Skladišna lokacija"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Titlovi"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Lična memorija"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Titlovi će izgledati ovako"
+
diff --git a/vp-main/res/po/sv.po b/vp-main/res/po/sv.po
new file mode 100755
index 0000000..26b81c8
--- /dev/null
+++ b/vp-main/res/po/sv.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Ljusstyrka"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musik"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Röster"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "kB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Plats"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Senast ändrad"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Dela"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Kan inte spela upp video"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Ett fel inträffade i undertexterna."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Filen är skadad eller så har SD-kortet tagits bort."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Rubrik"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Det här videoklippet kommer att raderas."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Inställningar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Kan inte spela upp video"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Justering"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Teckenstorlek"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Upprepa inställning"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Textning (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Centrerat"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Stor"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Vänster"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Medium"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Höger"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Liten"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Nästa"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Åter"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM-filer går inte att dela."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Kan inte spela upp videoklipp medan samtal pågår."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Medd."
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Filöverföring"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-post"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Longitud"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Latitud"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Akt. rörelse"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Skrubbar med %sx hastighet."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Externt minne"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Volym"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Videoformatet stöds inte."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtypen stöds inte."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Ljudformatet stöds inte."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Det går inte att använda snabbspolning framåt och bakåt när enheter i närheten är aktiverade."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Det går inte att registrera."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Rotera"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Tryck på tillbakaknappen igen om du vill återgå till föregående skärmbild."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Minnet räcker inte. Radera några objekt."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bokmärken fullt. Radera några bokmärken."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Gul"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtuellt 7.1-kanalljud"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Textning (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Upprepning"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Ingen upprepning"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Magenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Grön"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cyan"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Egen"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Akt. video (1 gång)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Anslutningsinfo"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Byt spelare"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Ta bild"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Välj enhet"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Tillängliga enheter"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Högtalare"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Vit"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Röd"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s sekunder"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Uppspelningshastighet"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d s"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Av"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Ingen rubrik"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Min enhet"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Standardteckensnitt"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Blå"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Svart"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Aktivera"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Stäng programmet?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Avbryt"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Stoppa efter alla"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Upprepa nuvarande"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Upprepa alla"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Upplösning"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s ljudeffekter stöds inte av högtalare."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Vänd på telefonen för att tysta inkommande samtal, meddelandesignaler och larm."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-kort"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Endast ljuddata stöds av den här filen. Spelar nu upp ljudet."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Endast videodata stöds av den här filen. Spelar nu upp videon."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Privat lagring"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Hörlurar"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Högtalare"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Paus"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Hämta"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Välj textning (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Förhandsgranska textning (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Upprepning"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtypen stöds inte."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Röst"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmer"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Ljudspår"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buffrar..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Filformat"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Språk"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Ingen video"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Storlek"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Klar"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Uppdatera"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Datum"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Laddar..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Textning (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Ta bort"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Lägg till på hemskärmen"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Namn"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Det går inte att spela upp video."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Ingen undertext tillgänglig"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Starta"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Stäng"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Ogiltig URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Fel"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Enhetslagring"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Videospelare"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Dela via"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Ett nätverksfel har inträffat. Försök igen."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Endast ljuddata stöds i det här filformatet. Spelar nu upp ljudet."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Endast videodata stöds av detta filformat. Spelar nu upp videon."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Centrerad"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "På"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Inställningar"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Video"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Dela"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Ta bort"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buffrar – %d %"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Ingen"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sek"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Välj ljudenhet"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ta bort"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Ett okänt fel har inträffat eller så kan filen vara skadad."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Den här filtypen stöds inte."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "KLAR"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "AVBRYT"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Lagringsplats"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Textning (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Privat lagringsutrymme"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Undertexter kommer att se ut så här."
+
diff --git a/vp-main/res/po/tr_TR.po b/vp-main/res/po/tr_TR.po
new file mode 100755
index 0000000..cdd89c8
--- /dev/null
+++ b/vp-main/res/po/tr_TR.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Parlaklık"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Müzik"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Sesler"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Konum"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "Tamam"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Son değiştirilme"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Video oynatılamıyor"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Altyazılarla ilgili bir hata oluştu."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Dosya bozuk veya SD kartı çıkarılmış."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Ayrıntılar"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Başlık"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Bu video silinecek."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Ayarlar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Video oynatılamıyor"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Hizalama"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Yazı boyutu"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Ayarı tekrarla"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Altyazılar (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Merkez"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Büyük"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Sol"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Orta"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Sağ"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Küçük"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "İleri"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Önceki"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM dosyaları paylaşılamaz"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Biçim"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Görüşme sırasında video oynatılamıyor."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Mesaj"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Dosya transferi"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-posta"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Boylam"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Enlem"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Hareket etkinleştir"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx hızda sarma."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Harici bellek"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Ses seviyesi"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Video biçimi desteklenmiyor."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Dosya türü desteklenmiyor."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Ses biçimi desteklenmiyor."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Civardaki cihazlar etkinken ileri veya geri sarma kullanılamaz."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Yakalanamıyor."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Döndür"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Önceki ekrana tekrar dönmek için geri tuşuna basın."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Yeterli hafıza yok. Bazı öğeleri silin."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Yer işaretleri listesi dolu. Bazılarını silin."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Sarı"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Altyazılar (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Tekrarlama modu"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Tekrarlama yok"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Macenta"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Yeşil"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Cam göbeği"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Özel"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Gçrl video (bir kez)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Bağlantı bilgisi"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Oynatıcı değiştir"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Yakala"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Cihaz seçin"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Kllanılablr cihazlar"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Hoparlör"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Beyaz"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Kırmızı"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s saniye"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Oynatma hızı"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d sn"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Kapalı"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Başlık yok"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Cihazım"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Varsayılan yazı tipi"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Çikolatalı kurabiye"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Mavi"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Siyah"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Etkinleştirme"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Uygulama kapatılsın mı ?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "İptal"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Tümünden sonra drdr"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Geçerli ortm tkrarla"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Tümünü tekrarla"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Çözünürlük"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Hoparlor %s ses efektlerini desteklemiyor."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Telefonunuzu döndürerek gelen aramaları, mesaj uyarılarını ve alarmları susturun."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD kart"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Bu dosya sadece ses verilerini destekliyor. Şu anda ses oynatılıyor."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Bu dosya sadece video verilerini destekliyor. Şu anda video oynatılıyor."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Özel depolama"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Kulaklıklar"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Hoparlör"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Duraklat"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "İndir"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Altyazı (CC) seçme"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Altyazıları (CC) önizleme"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Tekrar modu"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Dosya türü desteklenmiyor."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Ses"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmler"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Ses parçası"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Arabellğe al."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Dosya biçimi"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Dil"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Video yok"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Boyut"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Tamam"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Yenile"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Tarih"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Yükleniyor..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Altyazılar (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Sil"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Ana ekrana ekle"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "İsim"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Video oynatılamıyor."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Altyazı mevcut değil"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Çal"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Kapat"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL geçersiz."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Hata"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Cihaz hafızası"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video Oynatıcı"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Paylaşma şekli"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Bir ağ hatası oluştu. Tekrar deneyin."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Bu dosya biçimi yalnızca ses verilerini destekler. Şimdi ses oynatılıyor."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Bu dosya formatı yalnızca video verilerini destekler. Şu anda video oynatılıyor."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Orta"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Açık"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Ayarlar"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videolar"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Ayrıntılar"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Ara belleğe alınıyor - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Hiçbiri"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d sn"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Ses cihazı seç"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "İptal"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Bilinmeyen bir hata oluştu veya dosya bozuk olabilir."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Bu dosya türü desteklenmiyor."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "BİTTİ"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "İPTAL"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Saklama yeri"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Altyazılar (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Kişisel bellek"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Altyazılar bu şekilde görünecek."
+
diff --git a/vp-main/res/po/uk.po b/vp-main/res/po/uk.po
new file mode 100755
index 0000000..c141c8c
--- /dev/null
+++ b/vp-main/res/po/uk.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Яскравість"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Музика"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Голоси"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "Б"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "ГБ"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "КБ"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Розташування"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "МБ"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Дата останнього змінення"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Поділитися"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Неможливо відтворити відео"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Сталася помилка з субтитрами."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Файл пошкоджено або карту пам’яті видалено."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Деталі"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Назва"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Це відео буде видалено."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Налаштування"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Неможливо відтворити відео"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Вирівнювання"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Розмір шрифту"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Установка повторення"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитри (приховані)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Центр"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Великий"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Вліво"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "Середній"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "Вправо"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Маленький"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Далі"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Назад"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "Неможливо надати спільний доступ до файлів DRM."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Неможливо відтворити відео під час виклику."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Повідом."
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Передача файла"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "Email"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Довгота"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Широта"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Увімк. рухи"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "Швидкість стирання: %sx."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Зовн. місце збереження"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Гучність"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Непідтримуваний відеоформат."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Формат не підтримується."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Непідтримуваний аудіоформат."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Неможливо використовувати перемотування та швидке перемотування у разі ввімкнення наявних поблизу пристроїв."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Неможливо зробити знімок."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Обернути"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Натисніть клавішу «Назад» знову, щоб повернутися до попереднього екрана."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Недостатньо пам’яті. Видаліть деякі об’єкти"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Список закладок заповнено. Видаліть деякі закладки."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Жовтий"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Віртуальний 7.1"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Субтитри (приховані)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Режим повтору"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Без повторювання"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Пурпурний"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Зелений"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Синьо-зелений"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Персоналізований"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Поточ. відео (1 раз)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Відомості про підкл."
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Змінити плеєр"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Зйомка"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "Спільний вміст"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Вибрати пристрій"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Доступні пристрої"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Динамік"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Білий"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Червоний"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s секунд"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Швидкість відтворення"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d сек."
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "Вимкнено"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Немає назви"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Мій пристрій"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Стандартний шрифт"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Синій"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Чорний"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Активація"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Закрити програму?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Скасувати"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Зупинити після усіх"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Повт. поточний запис"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Повторити всі"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Роздільна здатність"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "Деякі звукові ефекти (%s) не підтримуються для динаміка."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Переверніть телефон для вимкнення звуку під час вхідних викликів, сигналів повідомлень і будильників."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-карта"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Цей файл підтримує лише аудіодані. Наразі відтворюється аудіо."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Цей файл підтримує лише відеодані. Наразі відтворюється відео."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Місце збереження особистих даних"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Навушники"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Динамік"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "Пауза"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Завантаження"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Вибрати субтитри (копія)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Поп. перегл. субтитрів (копія)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Режим повторювання"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Формат не підтримується."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Стандартний"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Голос"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Фільми"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Аудіозапис"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Буфериз..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Формат файла"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Мова"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Немає відео"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "Розмір"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Оновити"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Дата"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Завантаження..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Субтитри (копія)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "Видалити"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Додати на головний екран"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Iм'я"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Неможливо відтворити відео."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Субтитри відсутні"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "Відтворити"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Закрити"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Невірний URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Помилка"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Місце збереження на пристрої"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Відеоплеєр"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Надіслати через"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Сталася помилка мережі. Спробуйте ще раз."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Лише аудіодані підтримуються цим форматом файла. Наразі відтворюється аудіо."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Лише відеодані підтримуються цим форматом файла. Наразі відтворюється відео."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "По центру"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Увімкнено"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Налаштування"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Відео"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Надісл."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Деталі"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "Видалити"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Буферизація: %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Немає"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d сек."
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Вибір аудіопристрою"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Видалити"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Скасувати"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Сталася невідома помилка або файл може бути пошкоджено."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Цей тип файла не підтримується."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "ГОТОВО"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "СКАСУВАТИ"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Місце збереження"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Субтитри (копія)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Особисте місце збереження"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Субтитри матимуть такий вигляд"
+
diff --git a/vp-main/res/po/uz.po b/vp-main/res/po/uz.po
new file mode 100755
index 0000000..c16ec6f
--- /dev/null
+++ b/vp-main/res/po/uz.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "Yorqinlik"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "Musiqa"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "Ovozlar"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "Gb"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "Joylashuv"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "Mb"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "OK"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "Oxirgi o‘zgartirilgan"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "Ulashish"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "Videoni o‘ynatib bo‘lmaydi"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "Subtitrlar bilan bog‘liq xato yuz berdi."
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "Fayl shikastlangan yoki SD-karta olib tashlangan."
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "Tafsilotlar"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "Sarlavha"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "Ushbu video o'chiriladi."
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "Parametrlar"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "Videoni o‘ynatib bo‘lmaydi"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "Tenglashtirish"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "Shrift o‘lchami"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "Takrorlash parametri"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrlar (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "Markaz"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "Katta"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "Chap"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "O‘rta"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "O‘ng"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "Kichik"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "Keyingi"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "Avvalgi"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM fayllarini ulashib bo‘lmaydi."
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "Format"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Qo‘ng‘iroq mobaynida video o‘ynatib bo‘lmaydi."
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "Xabar"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "Faylni uzatish"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "E-pochta"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "Uzunlik"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "Kenglik"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "Harakatni yoq"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "%sx tezlikda tozalash."
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "Tashqi xotira"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "Ovoz Balandliigi"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Qo‘llab-quvvatlanmaydigan video format."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Qo‘llab-quvvatlanmaydigan fayl turi."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Qo‘llab-quvvatlanmaydigan audio format."
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "Yaqin-atrofdagi qurilmalar yoqilgan vaqtda tez oldinga o‘tkazish yoki orqaga qaytarishdan foydalanib bo‘lmaydi."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "Suratga olib bo‘lmaydi."
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "Aylantirish"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "Avvalgi ekranga qaytish uchun “orqaga” tugmasini bosing."
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "Xotira yetarli emas. Ba’zi elementlarni o'chiring"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Saqlangan veb-hujjat ro‘yxati to‘la. Ba’zi veb-hujjatlarni o'chirib tashlash."
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "Sariq"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 k"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "Subtitrlar (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "Takrorlash rejimi"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "Takrorlanish yo‘q"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "Qirmizi"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "Yashil"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "Moviy"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "Sozlanadigan"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "Video (bir marta)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "Ulanish ma’lumoti"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "Pleyerni o‘zgartirish"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "Rasmga olish"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "Qurilma tanlash"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "Mavjud qurilmalar"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "Dinamik"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "Oq"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "Qizil"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s soniya"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "Ijro tezligi"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d soniya"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "O‘ch."
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "Sarlavha yo‘q"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "Qurilma"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "Birlamchi o'rnatilgan shrift"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "Ko‘k"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "Qora"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "Faollashtirish"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "Ilova yopilsinmi?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "Bek/q."
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "Baridan keyin to‘xta"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "Joriyni takrorlash"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "Barini takrorlash"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "Rezolyutsiya"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "%s ovoz effektlari dinamik tomonidan qo‘llab-quvvatlanmaydi."
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "Kiruvchi qo‘ng‘iroqlar, xabar signallari va budilniklar ovozini o‘chirish uchun telefonni teskari o‘giring."
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD-karta"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "Faqat audio ma’lumot ushbu fayl tomonidan qo‘llab-quvvatlanadi. Hozirda o‘ynayotgan audio."
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "Faqat video ma’lumot ushbu fayl tomonidan qo‘llab-quvvatlanadi. Hozirda o‘ynayotgan video."
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "Maxfiy xotira"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "Quloqliklar"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "To‘xtatib turish"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "Yuklab olish"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "Subtitrni tanlash (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "Subtitr dast/ko‘rish (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "Takrorlash rejimi"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Qo‘llab-quvvatlanmaydigan fayl turi."
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "Normal"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "Ovoz"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "Filmlar"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "Audio trek"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "Buferlash..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "Fayl formati"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "Til"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "Videolar yo‘q"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "O‘lcham"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "OK"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "Yangilash"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "Sana"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "Yuklanmoqda..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "Subtitrlar (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "O'chirish"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "Asosiy ekranga qo‘shish"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "Ism"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "Videoni o‘ynatib bo‘lmaydi."
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "Subtitrlar yo‘q"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "O‘ynatish"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "Yopish"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "Noto‘g‘ri URL."
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "Xato"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "Qurilma xotirasi"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "Video pleyer"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "Quyidagi orqali ulashish"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "Tarmoq xatosi yuz berdi. Qayta urinib ko‘ring."
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "Faqat audio ma’lumot ushbu fayl formati tomonidan qo‘llab-quvvatlanadi. Hozirda o‘ynayotgan audio."
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "Faqat video ma’lumot ushbu fayl formati tomonidan qo‘llab-quvvatlanadi. Hozirda o‘ynayotgan video."
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "Markaz"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "Yoq."
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "Parametrlar"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "Videolar"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "Ulash."
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "Tafsilotlar"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "O'chirish"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "Buferlash - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "Yo‘q"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d soniya"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "Audio qurilmani tanlash"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Yo‘q qilish"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "Bekor qilish"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "Noma’lum xato yuz berdi yoki zararlangan bo‘lishi mumkin."
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "Bu fayl turi qo‘llab-quvvatlanmaydi."
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "BAJARILDI"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "BEKOR QILISH"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "Xotira joylashuvi"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "Subtitrlar (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "Shaxsiy ombor"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "Sarlavhalar quyidagi ko‘rinishda bo‘ladi"
+
diff --git a/vp-main/res/po/zh_CN.po b/vp-main/res/po/zh_CN.po
new file mode 100755
index 0000000..3a1e4e5
--- /dev/null
+++ b/vp-main/res/po/zh_CN.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "亮度"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "音乐"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "语音"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "位置"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "确定"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "上次修改"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "共享"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "无法播放视频"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "字幕发生错误。"
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "文件已损坏或 SD 卡已移除。"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "详情"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "标题"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "将删除此视频。"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "设定"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "无法播放视频"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "校准"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "字体大小"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "重复设定"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "居中"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "左"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中等"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "右"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "下一步"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "上一步"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM 文件无法共享。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "格式"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通话中无法播放视频。"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "信息"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "文件传输"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "电子邮件"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "经度"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "纬度"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "启用动作"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "以 %sx 倍速度变动。"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "外部存储器"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "音量"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支持的视频格式。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支持的文件类型。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支持的音频格式。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "当附近设备已启用时无法使用快进和后退。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "无法拍摄。"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "旋转"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "再次按下返回键以返回到前一个画面"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "存储空间不足。请删除部分项目。"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "书签列表满。删除部分书签。"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "黄"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "虚拟 7.1 声道"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕(CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "重复模式"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "不重复"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "洋红"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "绿"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "青绿"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "当前视频(一次)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "连接信息"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "更改播放器"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "截图"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "娱乐共享"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "选择设备"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "可用设备"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "扬声器"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "白色"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary 字体"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "红色"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s秒"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "播放速度"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d 秒"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "关"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "无标题"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "我的设备"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "默认字体"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "爵士酷"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky 字体"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "蓝色"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "黑色"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "激活"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "关闭应用程序?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "播放全部后停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "重复当前"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "重复全部"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "扬声器不支持的 %s 音效。"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "将手机正面朝下以将来电铃声、信息提示音和闹钟铃声静音。"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD 卡"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "该文件仅支持音频数据。正在播放音频。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "该文件仅支持视频数据。正在播放视频。"
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "私人存储空间"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "耳机"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "扬声器"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "暂停"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "下载"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "选择字幕 (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "预览字幕 (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "重复模式"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支持的文件类型。"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "正常"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "语音"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "电影"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "音轨"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "正在缓冲..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "文件格式"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "语言"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "无视频"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "刷新"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日期"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "载入中…"
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "删除"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "添加到主屏幕"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名称"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "无法播放录像。"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "无字幕可用"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "播放"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "关闭"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "网址无效"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "错误"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "设备存储"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "视频播放器"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "共享通过"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "网络出错。请重试。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "该文件格式仅支持音频数据。正在播放音频。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "该文件格式仅支持视频数据。正在播放视频。"
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "中"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "开"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "设定"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "视频"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "共享"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "详情"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "删除"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "正在缓存 - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "无"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d 秒"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "选择音频设备"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "删除"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "取消"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "发生未知错误或文件可能损坏。"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "不支持该文件类型。"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完成"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "存储位置"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "字幕 (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "个人存储空间"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "字幕效果"
+
diff --git a/vp-main/res/po/zh_HK.po b/vp-main/res/po/zh_HK.po
new file mode 100755
index 0000000..55b6f43
--- /dev/null
+++ b/vp-main/res/po/zh_HK.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "亮度"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "音樂"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "語音"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "位置"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "確定"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "上次修改"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "分享"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "無法播放影片"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "字幕發生錯誤。"
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "檔案已損壞或 SD 卡已移除。"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "標題"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "此影片將被刪除。"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "無法播放影片"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "校準"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "字體大小"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "重複設定"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "置中"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "靠左"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "靠右"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "下一步"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "上一步"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM 檔案無法共享。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "格式"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通話期間無法播放影片。"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "訊息"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "檔案傳輸"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "電子郵件"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "經度"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "啟用動作"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "以 %sx 倍速度刮擦。"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "外置儲存裝置"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "音量"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支援的影片格式。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支援的音效格式。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "當附近裝置啟用時無法使用快進或快退。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "無法擷取。"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "旋轉"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "再次按下返回鍵以返回先前的螢幕。"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "記憶體不足。請刪除一些項目。"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "書籤清單已滿。請刪除一些書籤。"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "黃色"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "虛擬數位 7.1 聲道"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "重複模式"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "不重複播放"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "洋紅色"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "綠色"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "青綠色"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "目前影片(一次)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "連接資訊"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "更改播放器"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "截圖"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "選擇裝置"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "可用裝置"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "揚聲器"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "白色"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary 字體"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "紅色"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s 秒"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "播放速度"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d 秒"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "關"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "無標題"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "我的裝置"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "預設字體"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz 字體"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky 字體"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "藍色"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "黑色"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "啟動"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "要關閉應用程式嗎?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "全部播放後停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "重複目前的"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "重複全部"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "揚聲器不支援 %s 音效。"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "反轉手機以將來電、訊息提示及鬧鈴設為靜音。"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "SD 卡"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "此檔案僅支援音訊數據。現正播放音訊。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "此檔案僅支援影片數據。現正播放影片。"
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "私人儲存空間"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "耳機"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "揚聲器"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "暫停"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "下載"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "選擇字幕 (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "預覽字幕 (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "重複模式"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型。"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "標準"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "語音"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "電影"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "音軌"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "緩衝中..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "檔案格式"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "語言"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "無影片"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "重新整理"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日期"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "正在載入..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "刪除"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "加入至主螢幕"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "無法播放影片。"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "無字幕可用"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "播放"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "關閉"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "網址無效"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "錯誤"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "裝置記憶體"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "影片播放器"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "分享透過"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "發生網絡錯誤。請重試。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "此檔案格式僅支援音訊數據。正在播放音訊。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "此檔案格式僅支援影片數據。現正播放影片。"
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "中"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "開"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "影片"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "共享"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "刪除"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "緩衝中 - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "無"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d 秒"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "選擇音訊裝置"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "刪除"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "取消"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "發生了未知錯誤或檔案可能損壞。"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "不支援此檔案類型。"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完成"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "儲存裝置位置"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "字幕 (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "個人儲存空間"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "字幕將依此顯示。"
+
diff --git a/vp-main/res/po/zh_TW.po b/vp-main/res/po/zh_TW.po
new file mode 100755
index 0000000..fc9e5d6
--- /dev/null
+++ b/vp-main/res/po/zh_TW.po
@@ -0,0 +1,489 @@
+msgid "IDS_VIDEO_OPT_BRIGHTNESS"
+msgstr "亮度"
+
+msgid "IDS_VIDEO_OPT_MUSIC_M_SOUNDALIVE"
+msgstr "音樂"
+
+msgid "IDS_VIDEO_OPT_VOICES_M_PERSON"
+msgstr "語音"
+
+msgid "IDS_VIDEO_BODY_B"
+msgstr "B"
+
+msgid "IDS_VIDEO_BODY_GB"
+msgstr "GB"
+
+msgid "IDS_VIDEO_BODY_KB"
+msgstr "KB"
+
+msgid "IDS_VIDEO_BODY_LOCATION"
+msgstr "位置"
+
+msgid "IDS_VIDEO_BODY_MB"
+msgstr "MB"
+
+msgid "IDS_VIDEO_BUTTON_OK"
+msgstr "確認"
+
+msgid "IDS_VIDEO_HEADER_LAST_MODIFIED_M_DATE"
+msgstr "最後一次修改"
+
+msgid "IDS_VIDEO_OPT_SHARE"
+msgstr "分享"
+
+msgid "IDS_VIDEO_HEADER_CANNOT_PLAY_VIDEO_ABB"
+msgstr "無法播放影片"
+
+msgid "IDS_VIDEO_POP_AN_ERROR_OCCURRED_WITH_THE_SUBTITLES"
+msgstr "發生字幕錯誤。"
+
+msgid "IDS_VIDEO_POP_THE_FILE_IS_CORRUPTED_OR_THE_SD_CARD_HAS_BEEN_REMOVED"
+msgstr "檔案已損毀或者 SD 卡已移除。"
+
+msgid "IDS_VIDEO_OPT_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_VIDEO_OPT_TITLE"
+msgstr "標題"
+
+msgid "IDS_VIDEO_POP_THIS_VIDEO_WILL_BE_DELETED"
+msgstr "此影片將被刪除。"
+
+msgid "IDS_VIDEO_HEADER_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_VIDEO_HEADER_UNABLE_TO_PLAY_VIDEO_ABB"
+msgstr "無法播放影片"
+
+msgid "IDS_VIDEO_MBODY_ALIGNMENT"
+msgstr "校準"
+
+msgid "IDS_VIDEO_MBODY_FONT_SIZE"
+msgstr "字型大小"
+
+msgid "IDS_VIDEO_OPT_REPEAT_SETTING_ABB"
+msgstr "重複設定"
+
+msgid "IDS_VIDEO_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VIDEO_SBODY_CENTRE_M_STATUS"
+msgstr "置中"
+
+msgid "IDS_VIDEO_SBODY_LARGE_M_STATUS"
+msgstr "大"
+
+msgid "IDS_VIDEO_SBODY_LEFT_M_STATUS"
+msgstr "靠左對齊"
+
+msgid "IDS_VIDEO_SBODY_MEDIUM_M_STATUS"
+msgstr "中等"
+
+msgid "IDS_VIDEO_SBODY_RIGHT_M_STATUS"
+msgstr "靠右對齊"
+
+msgid "IDS_VIDEO_SBODY_SMALL_M_STATUS"
+msgstr "小"
+
+msgid "IDS_BR_SK_NEXT"
+msgstr "下一步"
+
+msgid "IDS_BR_SK_PREVIOUS"
+msgstr "上一步"
+
+msgid "IDS_VPL_POP_DRM_FILES_CANNOT_BE_SHARED"
+msgstr "DRM 檔案無法共享。"
+
+msgid "IDS_VPL_OPT_FORMAT"
+msgstr "格式"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "無法在通話期間播放影片。"
+
+msgid "IDS_VIDEO_OPT_MESSAGE_ABB"
+msgstr "訊息"
+
+msgid "IDS_VIDEO_OPT_FILE_TRANSFER_ABB"
+msgstr "檔案傳輸"
+
+msgid "IDS_VIDEO_OPT_EMAIL_ABB"
+msgstr "電子郵件"
+
+msgid "IDS_VIDEO_BODY_LONGITUDE"
+msgstr "經度"
+
+msgid "IDS_VIDEO_BODY_LATITUDE"
+msgstr "緯度"
+
+msgid "IDS_MUSIC_BUTTON_ENABLE_MOTION"
+msgstr "啟用動作"
+
+msgid "IDS_VPL_TPOP_SCRUBBING_AT_PSX_SPEED"
+msgstr "以 %sx 速率刮擦。"
+
+msgid "IDS_VPL_TAB_EXTERNAL_STORAGE"
+msgstr "外部儲存裝置"
+
+msgid "IDS_VPL_POP_VOLUME_M_SOUND"
+msgstr "音量"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支援的視訊格式。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型。"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支援的音訊格式。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_USE_FAST_FORWARD_AND_REWIND_WHEN_NEARBY_DEVICES_ARE_ENABLED"
+msgstr "在附近裝置啟用時無法使用快轉或倒帶。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CAPTURE"
+msgstr "無法擷取。"
+
+msgid "IDS_VPL_POP_ROTATE"
+msgstr "旋轉"
+
+msgid "IDS_VPL_POP_PRESS_THE_BACK_KEY_AGAIN_TO_RETURN_TO_PREVIOUS_SCREEN"
+msgstr "再次按下返回鍵以返回上一個畫面。"
+
+msgid "IDS_VPL_POP_NOT_ENOUGH_MEMORY_DELETE_SOME_ITEMS"
+msgstr "記憶體不足。請刪除部分項目。"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "書籤清單已滿。請刪除部分書籤。"
+
+msgid "IDS_VPL_OPT_YELLOW_M_COLOUR"
+msgstr "黃"
+
+msgid "IDS_VPL_OPT_VIRTUAL_71_CH"
+msgstr "虛擬數位 7.1 聲道"
+
+msgid "IDS_VPL_OPT_SUBTITLES_HCC_ABB"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VPL_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_VPL_OPT_REPEAT_MODE"
+msgstr "重複模式"
+
+msgid "IDS_VPL_OPT_NO_REPEAT"
+msgstr "不重覆播放"
+
+msgid "IDS_VPL_OPT_MAGENTA_M_COLOUR"
+msgstr "洋紅"
+
+msgid "IDS_VPL_OPT_GREEN"
+msgstr "綠"
+
+msgid "IDS_VPL_OPT_CYAN_M_COLOUR"
+msgstr "青綠"
+
+msgid "IDS_VPL_OPT_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_VPL_OPT_CURRENT_VIDEO_HONCE_ABB"
+msgstr "目前影片(一次)"
+
+msgid "IDS_VPL_OPT_CONNECTION_INFO_ABB"
+msgstr "連接資訊"
+
+msgid "IDS_VPL_OPT_CHANGE_PLAYER"
+msgstr "變更播放器"
+
+msgid "IDS_VPL_OPT_CAPTURE"
+msgstr "截圖"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "數位連結中心"
+
+msgid "IDS_VPL_HEADER_SELECT_DEVICE_ABB"
+msgstr "選擇裝置"
+
+msgid "IDS_VPL_HEADER_AVAILABLE_DEVICES_ABB"
+msgstr "可用裝置"
+
+msgid "IDS_VPL_BUTTON_SPEAKER_ABB"
+msgstr "揚聲器"
+
+msgid "IDS_VPL_BODY_WHITE"
+msgstr "白色"
+
+msgid "IDS_VPL_BODY_UDRGOTHICM_M_FONT"
+msgstr "UDRGothicM"
+
+msgid "IDS_VPL_BODY_UDMINCHO_M_FONT"
+msgstr "UDMincho"
+
+msgid "IDS_VPL_BODY_ROSEMARY_M_FONT"
+msgstr "Rosemary 字體"
+
+msgid "IDS_VPL_BODY_RED_ABB"
+msgstr "紅"
+
+msgid "IDS_VPL_BODY_PS_SECONDS"
+msgstr "%s 秒"
+
+msgid "IDS_VPL_BODY_POP_M_FONT"
+msgstr "POP"
+
+msgid "IDS_VPL_BODY_PLAY_SPEED"
+msgstr "播放速度"
+
+msgid "IDS_VPL_BODY_PD_SECS"
+msgstr "%d 秒"
+
+msgid "IDS_VPL_BODY_OFF"
+msgstr "關"
+
+msgid "IDS_VPL_BODY_NO_TITLE"
+msgstr "無標題"
+
+msgid "IDS_VPL_BODY_MY_DEVICE"
+msgstr "我的裝置"
+
+msgid "IDS_VPL_BODY_DEFAULT_FONT"
+msgstr "預設字體"
+
+msgid "IDS_VPL_BODY_COOL_JAZZ_M_FONT"
+msgstr "Cool jazz 字體"
+
+msgid "IDS_VPL_BODY_CHOCO_COOKY_M_FONT"
+msgstr "Choco cooky 字體"
+
+msgid "IDS_VPL_BODY_BLUE"
+msgstr "藍色"
+
+msgid "IDS_VPL_BODY_BLACK"
+msgstr "黑色"
+
+msgid "IDS_VPL_BODY_ACTIVATION"
+msgstr "啟動"
+
+msgid "IDS_SMEMO_POP_CLOSE_APPLICATION_Q"
+msgstr "要關閉應用程式嗎?"
+
+msgid "IDS_VIDEO_SK_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_VIDEO_OPT_STOP_AFTER_ALL_ABB"
+msgstr "全部播放後停止"
+
+msgid "IDS_VIDEO_OPT_REPEAT_CURRENT_ABB"
+msgstr "重複目前影片"
+
+msgid "IDS_VIDEO_OPT_REPEAT_ALL_ABB"
+msgstr "重複全部"
+
+msgid "IDS_VIDEO_BODY_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_VIDEO_BODY_PS_SOUND_EFFECTS_NOT_SUPPORTED_BY_SPEAKER"
+msgstr "揚聲器不支援 %s 音效。"
+
+msgid "IDS_MUSIC_BODY_TURN_PHONE_OVER_TO_MUTE_INCOMING_CALLS_MESSAGE_ALERTS_AND_ALARMS"
+msgstr "翻轉手機以將來電、訊息提醒及鬧鈴設為靜音。"
+
+msgid "IDS_ST_BODY_SD_CARD"
+msgstr "記憶卡"
+
+msgid "IDS_VPL_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_AUDIO"
+msgstr "此檔案僅支援音訊資料。現正播放音訊。"
+
+msgid "IDS_VPL_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_NOW_PLAYING_VIDEO"
+msgstr "此檔案僅支援影片資料。現正播放影片。"
+
+msgid "IDS_ST_BODY_PRIVATE_STORAGE"
+msgstr "私密儲存空間"
+
+msgid "IDS_MUSIC_OPT_HEADPHONES_ABB"
+msgstr "耳機"
+
+msgid "IDS_MUSIC_OPT_SPEAKER"
+msgstr "揚聲器"
+
+msgid "IDS_MUSIC_OPT_PAUSE"
+msgstr "暫停"
+
+msgid "IDS_VIDEO_BUTTON_DOWNLOAD"
+msgstr "下載"
+
+msgid "IDS_VIDEO_MBODY_SELECT_SUBTITLES_HCC"
+msgstr "選擇字幕 (CC)"
+
+msgid "IDS_VIDEO_NPBODY_PREVIEW_SUBTITLES_HCC_ABB"
+msgstr "預覽字幕 (CC)"
+
+msgid "IDS_VIDEO_OPT_REPEAT_MODE_ABB"
+msgstr "重複模式"
+
+msgid "IDS_VIDEO_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型。"
+
+msgid "IDS_VIDEO_OPT_NORMAL_M_SOUND_ABB"
+msgstr "標準"
+
+msgid "IDS_VIDEO_BODY_VOICE"
+msgstr "語音"
+
+msgid "IDS_VIDEO_BODY_MOVIES"
+msgstr "電影"
+
+msgid "IDS_VIDEO_OPT_AUDIO_TRACK_ABB"
+msgstr "音軌"
+
+msgid "IDS_VIDEO_BODY_BUFFERING_ING_ABB"
+msgstr "緩衝中..."
+
+msgid "IDS_VIDEO_BODY_FILE_FORMAT"
+msgstr "檔案格式"
+
+msgid "IDS_VIDEO_BODY_LANGUAGE"
+msgstr "語言"
+
+msgid "IDS_VIDEO_BODY_NO_VIDEOS"
+msgstr "無影片"
+
+msgid "IDS_VIDEO_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_VIDEO_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VIDEO_BUTTON_REFRESH"
+msgstr "重新整理"
+
+msgid "IDS_VIDEO_HEADER_DATE"
+msgstr "日期"
+
+msgid "IDS_VIDEO_HEADER_LOADING_ING_ABB"
+msgstr "正在載入..."
+
+msgid "IDS_VIDEO_HEADER_SUBTITLES_HCC_ABB2"
+msgstr "字幕 (CC)"
+
+msgid "IDS_VIDEO_IOPT3_DELETE"
+msgstr "刪除"
+
+msgid "IDS_VIDEO_OPT_ADD_TO_HOME_SCREEN_ABB"
+msgstr "新增至主畫面"
+
+msgid "IDS_VIDEO_OPT_FACEBOOK_ABB"
+msgstr "Facebook"
+
+msgid "IDS_VIDEO_OPT_HDMI"
+msgstr "HDMI"
+
+msgid "IDS_VIDEO_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VIDEO_OPT_SOUNDALIVE_ABB2"
+msgstr "SoundAlive"
+
+msgid "IDS_VIDEO_OPT_YOUTUBE_ABB"
+msgstr "YouTube"
+
+msgid "IDS_VIDEO_POP_UNABLE_TO_PLAY_VIDEO"
+msgstr "無法播放影片。"
+
+msgid "IDS_VIDEO_SBODY_NO_SUBTITLES_AVAILABLE_M_STATUS"
+msgstr "無可用字幕"
+
+msgid "IDS_VIDEO_SK3_PLAY"
+msgstr "播放"
+
+msgid "IDS_VIDEO_SK_CLOSE"
+msgstr "關閉"
+
+msgid "IDS_VPL_POP_INVALID_URL"
+msgstr "URL 無效"
+
+msgid "IDS_CHATON_HEADER_ERROR_ABB"
+msgstr "錯誤"
+
+msgid "IDS_VIDEO_SBODY_DEVICE_STORAGE"
+msgstr "裝置儲存空間"
+
+msgid "IDS_COM_BODY_VIDEO_PLAYER_T_MAINMENU"
+msgstr "影片播放器"
+
+msgid "IDS_VIDEO_OPT_SHARE_VIA"
+msgstr "分享方式"
+
+msgid "IDS_VIDEO_POP_A_NETWORK_ERROR_HAS_OCCURRED_TRY_AGAIN"
+msgstr "發生網路錯誤。請重試。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_AUDIO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_AUDIO"
+msgstr "此檔案格式僅支援音訊資料。現正播放音訊。"
+
+msgid "IDS_VIDEO_TPOP_ONLY_VIDEO_DATA_SUPPORTED_BY_THIS_FILE_FORMAT_NOW_PLAYING_VIDEO"
+msgstr "此檔案格式僅支援影片資料。現正播放影片。"
+
+msgid "IDS_VPL_BODY_CENTRE"
+msgstr "中心"
+
+msgid "IDS_VPL_BODY_ON"
+msgstr "開"
+
+msgid "IDS_VPL_BODY_SETTINGS"
+msgstr "設定"
+
+msgid "IDS_VPL_BODY_VIDEOS_T_MAINMENU"
+msgstr "影片播放器"
+
+msgid "IDS_VPL_BUTTON_SHARE"
+msgstr "分享"
+
+msgid "IDS_VPL_HEADER_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_VPL_OPT_DELETE"
+msgstr "刪除"
+
+msgid "IDS_VPL_POP_BUFFERING_PDP"
+msgstr "緩衝中 - %d%"
+
+msgid "IDS_VIDEO_OPT_NONE"
+msgstr "無"
+
+msgid "IDS_VIDEO_BODY_PD_SECS_ABB3"
+msgstr "%d 秒"
+
+msgid "IDS_MUSIC_HEADER_SOUNDALIVE_ABB3"
+msgstr "SoundAlive"
+
+msgid "IDS_MP_HEADER_SELECT_AUDIO_DEVICE"
+msgstr "選擇音訊裝置"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "刪除"
+
+msgid "IDS_CLOCK_BUTTON_CANCEL"
+msgstr "取消"
+
+msgid "IDS_VIDEO_POP_AN_UNKNOWN_ERROR_HAS_OCCURRED_OR_THE_FILE_MAY_BE_CORRUPT"
+msgstr "發生未知的錯誤或者檔案已損毀。"
+
+msgid "IDS_VIDEO_POP_THIS_FILE_TYPE_IS_NOT_SUPPORTED"
+msgstr "不支援該檔案類別。"
+
+msgid "IDS_TPLATFORM_ACBUTTON_DONE_ABB"
+msgstr "完成"
+
+msgid "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB"
+msgstr "取消"
+
+msgid "IDS_TPLATFORM_MBODY_STORAGE_LOCATION"
+msgstr "儲存裝置位置"
+
+msgid "IDS_GP_BODY_SUBTITLES_HCC"
+msgstr "字幕 (CC)"
+
+msgid "IDS_GALLERY_BODY_PERSONAL_STORAGE"
+msgstr "個人儲存空間"
+
+msgid "IDS_ACCS_BODY_CAPTIONS_WILL_LOOK_LIKE_THIS"
+msgstr "字幕將依此顯示"
+
diff --git a/vp-main/src/serviceParser/vp-service-parser.c b/vp-main/src/serviceParser/vp-service-parser.c
new file mode 100644
index 0000000..ef70ecc
--- /dev/null
+++ b/vp-main/src/serviceParser/vp-service-parser.c
@@ -0,0 +1,1077 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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 <string.h>
+#include <app_preference.h>
+#include <Ecore_File.h>
+
+#include "vp-media-content-util.h"
+
+#include "vp-service-parser.h"
+#include "vp-play-log.h"
+#include "vp-file-util.h"
+
+
+#define VP_VIDEO_MULTI_WIN_TYPE_KEY "http://tizen.org/appcontrol/data/miniapp"
+#define VP_VIDEO_MULTI_WIN_ON_VALUE "on"
+#define VP_VIDEO_EDIT_MODE_KEY "edit_mode"
+#define VP_VIDEO_LAUNCHED_BY_APP_KEY "launching_application"
+#define VP_VIDEO_SORT_TYPE_KEY "order_type"
+#define VP_VIDEO_LIST_TYPE_KEY "video_list_type"
+#define VP_VIDEO_DEVICE_ID_KEY "Device id"
+#define VP_VIDEO_DMR_ID_KEY "DMR_ID"
+
+#define VP_VIDEO_COOKIE_KEY "cookie"
+#define VP_VIDEO_PROXY_KEY "proxy"
+
+#define VP_VIDEO_URI_PATH_KEY "path"
+#define VP_VIDEO_EXIT_ON_BACK "ExitOnBack"
+
+#define VP_VIDEO_STORE_DOWNLOAD "StoreDownload"
+#define VP_VIDEO_STORE_DOWNLOAD_ON_VALUE "on"
+#define VP_VIDEO_STORE_DOWNLOAD_PLAYED_TIME "StoreItemLastPlayPosition"
+#define VP_VIDEO_STORE_DOWNLOAD_FILE_SIZE "StoreDL_filesize"
+
+#define VP_VIDEO_APP_CONTROL_REPEAT_MODE "repeat_mode"
+#define VP_VIDEO_APP_CONTROL_REPEAT_VALUE_STOP_AFTER_ALL "stop_after_all"
+
+#define VP_VIDEO_STORE_ORDER_ID "store_order_id"
+#define VP_VIDEO_STORE_APP_ID "store_app_id"
+#define VP_VIDEO_STORE_MV_ID "store_mv_id"
+#define VP_VIDEO_STORE_SERVER_ID "store_server_id"
+
+
+#define VP_VIDEO_TITLE_KEY "title"
+
+#define VP_VIDEO_DATA_SUBTITLE "slink/subtitle"
+#define VP_VIDEO_DATA_POSITION "slink/position"
+#define VP_VIDEO_DATA_TITLE "slink/title"
+#define VP_VIDEO_DATA_DURATION "slink/duration"
+
+#define VP_DEFAULT_VIDEO_ITEM_URL_STR "/opt/usr/media/Videos/Color.mp4"
+
+#define VP_VIDEO_FILE_PREFIX "file://"
+
+#define PREF_VP_PREVIEW_URL_VIDEOS "preference/org.tizen.videos/preview_url_videos"
+#define PREF_VP_PREVIEW_URL_RECORDS "preferencepreference/org.tizen.videos/preview_url_records"
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+static char *__VpServiceParserGetMediaUri(app_control_h pAppSvcHandle);
+
+static bool __VpServiceParserGetMultiAppControl(app_control_h pAppSvcHandle, const char *key, char ***szArrayVal, int *nLength);
+
+static VpLaunchType __VpServiceParserGetLaunchType(app_control_h pAppSvcHandle);
+static Eina_Bool __VpServiceParserGetLaunchMultiWindow(app_control_h pAppSvcHandle);
+static Eina_Bool __VpServiceParserGetStoreDownloadMode(app_control_h pAppSvcHandle);
+static double __VpServiceParserGetStoreDownloadFileSize(app_control_h pAppSvcHandle);
+static int __VpServiceParserGetStoreDownloadPlayedTime(app_control_h pAppSvcHandle);
+static Eina_Bool __VpServiceParserGetRepeatMode(app_control_h pAppSvcHandle);
+static void __VpServiceParserGetStoreOrderInfo(app_control_h pAppSvcHandle, VpServiceData *pReceiveData);
+
+static Eina_Bool __VpServiceParserGetStreamingLaunch(char *pUri);
+static char *__VpServiceParserGetDeviceID(app_control_h pAppSvcHandle);
+static char *__VpServiceParserGetDMRID(app_control_h pAppSvcHandle);
+
+static char *__VpServiceParserGetCookie(app_control_h pAppSvcHandle);
+static char *__VpServiceParserGetProxy(app_control_h pAppSvcHandle);
+static char *__VpServiceParserGetMediaTitle(app_control_h pAppSvcHandle);
+static Eina_Bool __VpServiceParserGetAUL(app_control_h pAppSvcHandle, char **dpUri);
+static Eina_Bool __VpServiceParserGetAppControl(app_control_h pAppSvcHandle, char **dpUri);
+static Eina_Bool __VpServiceParserGetWindowID(app_control_h pAppSvcHandle, unsigned int *nXID);
+static VpVideoSortType __VpServiceParserGetSortType(app_control_h pAppSvcHandle);
+static VpVideoPlayListType __VpServiceParserGetListType(app_control_h pAppSvcHandle);
+static Eina_Bool __VpServiceParserCheckURL(char *szURL);
+static Eina_Bool __VpServiceParserCheckFileIsExist(char *szFilePath);
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+Eina_Bool VpServiceParserGetServiceData(app_control_h pAppSvcHandle, VpServiceData *pReceiveData)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ if (pReceiveData == NULL) {
+ VideoLogError("pReceiveData == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ pReceiveData->pMediaUri = __VpServiceParserGetMediaUri(pAppSvcHandle);
+ pReceiveData->szMediaTitle = __VpServiceParserGetMediaTitle(pAppSvcHandle);
+ pReceiveData->eLaunchType = __VpServiceParserGetLaunchType(pAppSvcHandle);
+ pReceiveData->bStoreDownload = __VpServiceParserGetStoreDownloadMode(pAppSvcHandle);
+ pReceiveData->dStoreDL_FileSize = __VpServiceParserGetStoreDownloadFileSize(pAppSvcHandle);
+ pReceiveData->nStorePlayedTime = 0;
+ pReceiveData->bStopAfterRepeat = __VpServiceParserGetRepeatMode(pAppSvcHandle);
+
+ if (pReceiveData->bStoreDownload) {
+ pReceiveData->nStorePlayedTime = __VpServiceParserGetStoreDownloadPlayedTime(pAppSvcHandle);
+ __VpServiceParserGetStoreOrderInfo(pAppSvcHandle, pReceiveData);
+ }
+
+ if (__VpServiceParserCheckURL(pReceiveData->pMediaUri) == EINA_FALSE) {
+ if (__VpServiceParserGetMultiAppControl(pAppSvcHandle, APP_CONTROL_DATA_PATH, &pReceiveData->szMultiPath, &(pReceiveData->nMultiPath))) {
+ pReceiveData->eLaunchType = VP_LAUNCH_TYPE_MULTI_PATH;
+ __VpServiceParserGetMultiAppControl(pAppSvcHandle, VP_VIDEO_DATA_TITLE, &pReceiveData->szMultiTitle, &(pReceiveData->nMultiTitle));
+ __VpServiceParserGetMultiAppControl(pAppSvcHandle, VP_VIDEO_DATA_SUBTITLE, &pReceiveData->szMultiSubTitle, &(pReceiveData->nMultiSubTitle));
+ __VpServiceParserGetMultiAppControl(pAppSvcHandle, VP_VIDEO_DATA_POSITION, &pReceiveData->szMultiPosition, &(pReceiveData->nMultiPosition));
+ __VpServiceParserGetMultiAppControl(pAppSvcHandle, VP_VIDEO_DATA_DURATION, &pReceiveData->szMultiDuration, &(pReceiveData->nMultiDuration));
+ }
+ else {
+ preference_get_string(PREF_VP_PREVIEW_URL_VIDEOS, &(pReceiveData->pMediaUri));
+ if (__VpServiceParserCheckFileIsExist(pReceiveData->pMediaUri) == EINA_FALSE) {
+ preference_set_string(PREF_VP_PREVIEW_URL_VIDEOS, "");
+ VideoSecureLogError(" == %s ==", pReceiveData->pMediaUri);
+ if (pReceiveData->pMediaUri) {
+ free(pReceiveData->pMediaUri);
+ pReceiveData->pMediaUri = NULL;
+ }
+ preference_get_string(PREF_VP_PREVIEW_URL_RECORDS, &(pReceiveData->pMediaUri));
+ if (__VpServiceParserCheckFileIsExist(pReceiveData->pMediaUri) == EINA_FALSE) {
+ preference_set_string(PREF_VP_PREVIEW_URL_RECORDS, "");
+ VideoSecureLogError(" == %s ==", pReceiveData->pMediaUri);
+ if (pReceiveData->pMediaUri) {
+ free(pReceiveData->pMediaUri);
+ pReceiveData->pMediaUri = NULL;
+ }
+ vp_media_content_util_get_first_video(&pReceiveData->pMediaUri);
+ VideoSecureLogError(" == %s ==", pReceiveData->pMediaUri);
+ if (__VpServiceParserCheckFileIsExist(pReceiveData->pMediaUri) == EINA_FALSE) {
+ pReceiveData->pMediaUri = strdup(VP_DEFAULT_VIDEO_ITEM_URL_STR);
+ VideoSecureLogError(" == %s ==", pReceiveData->pMediaUri);
+ }
+ }
+ }
+ }
+ }
+ pReceiveData->nParentXID = 0;
+
+ __VpServiceParserGetWindowID(pAppSvcHandle, &(pReceiveData->nParentXID));
+
+ pReceiveData->bLaunchMultiWindow = __VpServiceParserGetLaunchMultiWindow(pAppSvcHandle);
+
+ if (pReceiveData->pMediaUri != NULL) {
+ pReceiveData->bStreaming = __VpServiceParserGetStreamingLaunch(pReceiveData->pMediaUri);
+ }
+
+ if (pReceiveData->bStreaming) {
+ pReceiveData->szDeviceID = __VpServiceParserGetDeviceID(pAppSvcHandle);
+ pReceiveData->szCookie = __VpServiceParserGetCookie(pAppSvcHandle);
+ pReceiveData->szProxy = __VpServiceParserGetProxy(pAppSvcHandle);
+ }
+
+ pReceiveData->szDMRID = __VpServiceParserGetDMRID(pAppSvcHandle);
+
+ if (pReceiveData->eLaunchType >= VP_LAUNCH_TYPE_GALLERY) {
+ pReceiveData->eSortType = __VpServiceParserGetSortType(pAppSvcHandle);
+ pReceiveData->eListType = __VpServiceParserGetListType(pAppSvcHandle);
+ }
+ else if (pReceiveData->eLaunchType == VP_LAUNCH_TYPE_LIST)
+ {
+ pReceiveData->eListType = __VpServiceParserGetListType(pAppSvcHandle);
+ }
+ else {
+ pReceiveData->eSortType = VP_VIDEO_SORT_TYPE_BY_NONE;
+ pReceiveData->eListType = VP_VIDEO_PLAY_LIST_TYPE_NONE;
+ }
+
+ return EINA_TRUE;
+}
+
+
+void VpServiceParserDestroyServiceData(VpServiceData *pServiceData)
+{
+ if (pServiceData == NULL)
+ {
+ VideoLogError("pServiceData == NULL!!!");
+ return;
+ }
+
+ if (pServiceData->pMediaUri != NULL)
+ {
+ free(pServiceData->pMediaUri);
+ pServiceData->pMediaUri = NULL;
+ }
+
+ if (pServiceData->szMediaTitle != NULL)
+ {
+ free(pServiceData->szMediaTitle);
+ pServiceData->szMediaTitle = NULL;
+ }
+
+ if (pServiceData->szDeviceID != NULL)
+ {
+ free(pServiceData->szDeviceID);
+ pServiceData->szDeviceID = NULL;
+ }
+
+ if (pServiceData->szDMRID != NULL)
+ {
+ free(pServiceData->szDMRID);
+ pServiceData->szDMRID = NULL;
+ }
+
+ if (pServiceData->pStoreOrderId != NULL)
+ {
+ free(pServiceData->pStoreOrderId);
+ pServiceData->pStoreOrderId = NULL;
+ }
+
+ if (pServiceData->pStoreServerId != NULL)
+ {
+ free(pServiceData->pStoreServerId);
+ pServiceData->pStoreServerId = NULL;
+ }
+
+ if (pServiceData->pStoreAppId != NULL)
+ {
+ free(pServiceData->pStoreAppId);
+ pServiceData->pStoreAppId = NULL;
+ }
+
+ if (pServiceData->pStoreMvId != NULL)
+ {
+ free(pServiceData->pStoreMvId);
+ pServiceData->pStoreMvId = NULL;
+ }
+
+ int idx = 0;
+ if (pServiceData->szMultiPath) {
+ for (idx = 0; idx < pServiceData->nMultiPath; idx++)
+ {
+ if (pServiceData->szMultiPath[idx]) {
+ free(pServiceData->szMultiPath[idx]);
+ pServiceData->szMultiPath[idx] = NULL;
+ }
+ }
+ free(pServiceData->szMultiPath);
+ pServiceData->szMultiPath = NULL;
+ }
+
+ if (pServiceData->szIsSameAP) {
+ for (idx = 0; idx < pServiceData->nSameAP; idx++)
+ {
+ if (pServiceData->szIsSameAP[idx]) {
+ free(pServiceData->szIsSameAP[idx]);
+ pServiceData->szIsSameAP[idx] = NULL;
+ }
+ }
+ free(pServiceData->szIsSameAP);
+ pServiceData->szIsSameAP = NULL;
+ }
+
+ if (pServiceData->szMultiSubTitle) {
+ for (idx = 0; idx < pServiceData->nMultiSubTitle; idx++)
+ {
+ if (pServiceData->szMultiSubTitle[idx]) {
+ free(pServiceData->szMultiSubTitle[idx]);
+ pServiceData->szMultiSubTitle[idx] = NULL;
+ }
+ }
+ free(pServiceData->szMultiSubTitle);
+ pServiceData->szMultiSubTitle = NULL;
+ }
+
+
+ if (pServiceData->szMultiTitle) {
+ for (idx = 0; idx < pServiceData->nMultiTitle; idx++)
+ {
+ if (pServiceData->szMultiTitle[idx]) {
+ free(pServiceData->szMultiTitle[idx]);
+ pServiceData->szMultiTitle[idx] = NULL;
+ }
+ }
+ free(pServiceData->szMultiTitle);
+ pServiceData->szMultiTitle = NULL;
+ }
+
+ if (pServiceData->szMultiPosition) {
+ for (idx = 0; idx < pServiceData->nMultiPosition; idx++)
+ {
+ if (pServiceData->szMultiPosition[idx]) {
+ free(pServiceData->szMultiPosition[idx]);
+ pServiceData->szMultiPosition[idx] = NULL;
+ }
+ }
+ free(pServiceData->szMultiPosition);
+ pServiceData->szMultiPosition = NULL;
+ }
+
+ if (pServiceData->szMultiDuration) {
+ for (idx = 0; idx < pServiceData->nMultiDuration; idx++)
+ {
+ if (pServiceData->szMultiDuration[idx]) {
+ free(pServiceData->szMultiDuration[idx]);
+ pServiceData->szMultiDuration[idx] = NULL;
+ }
+ }
+ free(pServiceData->szMultiDuration);
+ pServiceData->szMultiDuration = NULL;
+ }
+
+ free(pServiceData);
+ pServiceData = NULL;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+static char *__VpServiceParserGetMediaUri(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return NULL;
+ }
+
+ char *pUri = NULL;
+
+ if (__VpServiceParserGetAUL(pAppSvcHandle, &pUri) == EINA_FALSE) {
+ if (__VpServiceParserGetAppControl(pAppSvcHandle, &pUri) == EINA_FALSE) {
+ VideoLogInfo("No exist URI path.");
+ return NULL;
+ }
+ }
+
+ VideoSecureLogInfo("pUri : %s", pUri);
+
+ if (pUri == NULL) {
+ VideoLogError("pUri == NULL!!!");
+ return NULL;
+ }
+
+ if (strstr(pUri,VP_VIDEO_FILE_PREFIX)) {
+ char *szURL = calloc(1, strlen(pUri) - strlen(VP_VIDEO_FILE_PREFIX) + 1);
+ if (szURL == NULL) {
+ VideoLogError("szURL == NULL!!!");
+ return NULL;
+ }
+
+ snprintf(szURL, strlen(pUri) - strlen(VP_VIDEO_FILE_PREFIX) + 1, "%s", pUri + strlen(VP_VIDEO_FILE_PREFIX));
+ if (pUri) {
+ free(pUri);
+ pUri = NULL;
+ }
+ return szURL;
+ }
+ else {
+ return pUri;
+ }
+
+}
+
+static bool __VpServiceParserGetMultiAppControl(app_control_h pAppSvcHandle, const char *key, char ***szArrayVal, int *nLength)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return FALSE;
+ }
+ int nRet = APP_CONTROL_ERROR_NONE;
+ int nLen = 0;
+
+ nRet = app_control_get_extra_data_array(pAppSvcHandle, key, szArrayVal, &nLen);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogError("app_control_get_extra_data_array is fail [0x%x]", nRet);
+ return FALSE;
+ }
+
+ if (nLen < 1) {
+ if (*szArrayVal == NULL) {
+ // No sub items,
+ free(*szArrayVal);
+ *szArrayVal = NULL;
+ }
+
+ return FALSE;
+ }
+
+ *nLength = nLen;
+ VideoLogInfo("Length %d", nLen);
+
+ return TRUE;
+}
+
+
+static VpLaunchType __VpServiceParserGetLaunchType(app_control_h pAppSvcHandle) {
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return VP_LAUNCH_TYPE_NONE;
+ }
+
+ char* pLaunchingByOtherApp = NULL;
+ char* pLaunchMode = NULL;
+ VpLaunchType eLaunchType = VP_LAUNCH_TYPE_NONE;
+
+ if (app_control_get_extra_data (pAppSvcHandle, "View Mode", &pLaunchMode) == APP_CONTROL_ERROR_NONE) {
+ if (pLaunchMode != NULL) {
+ if (strncmp(pLaunchMode, "EMAIL", strlen(pLaunchMode)) == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_EMAIL;
+ goto RESULT_RETURN;
+ }
+ }
+ }
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_LAUNCHED_BY_APP_KEY, &pLaunchingByOtherApp) != APP_CONTROL_ERROR_NONE) {
+ VideoLogWarning("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY");
+ eLaunchType = VP_LAUNCH_TYPE_NONE;
+ goto RESULT_RETURN;
+ }
+
+ if (pLaunchingByOtherApp == NULL) {
+ VideoLogWarning("pLaunchingByOtherApp is NULL");
+ goto RESULT_RETURN;
+ }
+
+ if (strcmp(pLaunchingByOtherApp, "gallery") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_GALLERY;
+ }
+ else if (strcmp(pLaunchingByOtherApp, "myfile") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_MYFILE;
+ }
+ else if (strcmp(pLaunchingByOtherApp, "store") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_STORE;
+ }
+ else if (strcmp(pLaunchingByOtherApp, "list") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_LIST;
+ }
+ else if (strcmp(pLaunchingByOtherApp, "image_viewer") == 0) {
+ char *pEditMode = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_EDIT_MODE_KEY, &pEditMode) != APP_CONTROL_ERROR_NONE) {
+ eLaunchType = VP_LAUNCH_TYPE_IMAGE_VIEWER;
+
+ if (pEditMode != NULL) {
+ free(pEditMode);
+ pEditMode = NULL;
+ }
+ }
+ else {
+ if (pEditMode != NULL) {
+ if (strcmp(pEditMode, "trim") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_IMAGE_VIEWER_TRIM;
+ }
+ else {
+ eLaunchType = VP_LAUNCH_TYPE_IMAGE_VIEWER;
+ }
+
+ free(pEditMode);
+ pEditMode = NULL;
+ }
+ else {
+ eLaunchType = VP_LAUNCH_TYPE_IMAGE_VIEWER;
+ }
+ }
+ }
+ else if (strcmp(pLaunchingByOtherApp, "email") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_EMAIL;
+ }
+ else if (strcmp(pLaunchingByOtherApp, "message") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_MMS;
+ }
+ else if (strcmp(pLaunchingByOtherApp, "light_play_view") == 0) {
+ eLaunchType = VP_LAUNCH_TYPE_SIMPLE;
+ }
+ else {
+ eLaunchType = VP_LAUNCH_TYPE_NONE;
+ }
+
+
+RESULT_RETURN:
+ if (pLaunchingByOtherApp != NULL) {
+ free(pLaunchingByOtherApp);
+ pLaunchingByOtherApp = NULL;
+ }
+ VideoLogError("LaunchType = %d", eLaunchType);
+
+ return eLaunchType;
+}
+
+
+static Eina_Bool __VpServiceParserGetLaunchMultiWindow(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ Eina_Bool bMultiWindow = EINA_FALSE;
+ char *pMultiWindowType = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_MULTI_WIN_TYPE_KEY, &pMultiWindowType) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist multi window type token.");
+ bMultiWindow = EINA_FALSE;
+ }
+
+ if (pMultiWindowType != NULL) {
+ if (strcmp(pMultiWindowType, VP_VIDEO_MULTI_WIN_ON_VALUE) == 0) {
+ bMultiWindow = EINA_TRUE;
+ }
+
+ free(pMultiWindowType);
+ pMultiWindowType = NULL;
+ }
+
+ return bMultiWindow;
+}
+
+
+
+static Eina_Bool __VpServiceParserGetStoreDownloadMode(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ Eina_Bool bStoreDownload = EINA_FALSE;
+ char *pStoreDownloadValue = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_DOWNLOAD, &pStoreDownloadValue) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist store download type");
+ bStoreDownload = EINA_FALSE;
+ }
+
+ if (pStoreDownloadValue != NULL) {
+ if (strcmp(pStoreDownloadValue, VP_VIDEO_STORE_DOWNLOAD_ON_VALUE) == 0) {
+ bStoreDownload = EINA_TRUE;
+ }
+
+ free(pStoreDownloadValue);
+ pStoreDownloadValue = NULL;
+ }
+
+ return bStoreDownload;
+}
+
+static double __VpServiceParserGetStoreDownloadFileSize(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ char *pStoreDownloadFileSize = NULL;
+ double dFileSize = 0;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_DOWNLOAD_FILE_SIZE, &pStoreDownloadFileSize) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist store download file size");
+ }
+
+ if (pStoreDownloadFileSize != NULL) {
+ dFileSize = atof(pStoreDownloadFileSize);
+ VideoLogInfo("dFileSize : %f", dFileSize);
+ free(pStoreDownloadFileSize);
+ pStoreDownloadFileSize = NULL;
+ }
+
+ return dFileSize;
+}
+
+static int __VpServiceParserGetStoreDownloadPlayedTime(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return 0;
+ }
+
+ int nPlayedTime = 0;
+ char *pPlayedTime = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_DOWNLOAD_PLAYED_TIME, &pPlayedTime) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist multi window type token.");
+ }
+
+ if (pPlayedTime != NULL) {
+ nPlayedTime = atoi(pPlayedTime);
+ free(pPlayedTime);
+ pPlayedTime = NULL;
+ }
+
+ return nPlayedTime;
+}
+
+
+static Eina_Bool __VpServiceParserGetRepeatMode(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ Eina_Bool bRepeatMode = EINA_FALSE;
+ char *pRepeatModeValue = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_APP_CONTROL_REPEAT_MODE, &pRepeatModeValue) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist repeat mode value");
+ bRepeatMode = EINA_FALSE;
+ }
+
+ if (pRepeatModeValue != NULL) {
+ if (strcmp(pRepeatModeValue, VP_VIDEO_APP_CONTROL_REPEAT_VALUE_STOP_AFTER_ALL) == 0) {
+ bRepeatMode = EINA_TRUE;
+ }
+
+ free(pRepeatModeValue);
+ pRepeatModeValue = NULL;
+ }
+
+ return bRepeatMode;
+}
+
+
+static void __VpServiceParserGetStoreOrderInfo(app_control_h pAppSvcHandle, VpServiceData *pReceiveData)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return;
+ }
+
+ if (pReceiveData == NULL) {
+ VideoLogError("pReceiveData == NULL!!!");
+ return;
+ }
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_ORDER_ID, &pReceiveData->pStoreOrderId) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist VP_VIDEO_STORE_ORDER_ID.");
+ goto NOT_EXISTED_INFO;
+ }
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_APP_ID, &pReceiveData->pStoreAppId) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist VP_VIDEO_STORE_APP_ID.");
+ goto NOT_EXISTED_INFO;
+ }
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_MV_ID, &pReceiveData->pStoreMvId) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist store_mv_id.");
+ goto NOT_EXISTED_INFO;
+ }
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_STORE_SERVER_ID, &pReceiveData->pStoreServerId) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist VP_VIDEO_STORE_SERVER_ID.");
+ goto NOT_EXISTED_INFO;
+ }
+
+ return;
+
+NOT_EXISTED_INFO:
+ if (pReceiveData->pStoreOrderId != NULL)
+ {
+ free(pReceiveData->pStoreOrderId);
+ pReceiveData->pStoreOrderId = NULL;
+ }
+
+ if (pReceiveData->pStoreAppId != NULL)
+ {
+ free(pReceiveData->pStoreAppId);
+ pReceiveData->pStoreAppId = NULL;
+ }
+
+ if (pReceiveData->pStoreMvId != NULL)
+ {
+ free(pReceiveData->pStoreMvId);
+ pReceiveData->pStoreMvId = NULL;
+ }
+
+ if (pReceiveData->pStoreServerId != NULL)
+ {
+ free(pReceiveData->pStoreServerId);
+ pReceiveData->pStoreServerId = NULL;
+ }
+
+ return;
+}
+
+
+static Eina_Bool __VpServiceParserGetStreamingLaunch(char *pUri)
+{
+ if (pUri == NULL) {
+ VideoLogInfo("ERR: pUri == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ VideoSecureLogInfo("pUri : %s", pUri);
+
+ if (strstr(pUri, "rtp") != NULL) {
+ return EINA_TRUE;
+ }
+ else if (strstr(pUri, "rtsp") != NULL) {
+ return EINA_TRUE;
+ }
+ else if (strstr(pUri, "http") != NULL) {
+ return EINA_TRUE;
+ }
+ else if (strstr(pUri, "https") != NULL) {
+ return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+static char *__VpServiceParserGetDeviceID(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return NULL;
+ }
+
+ char *szDeviceID = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_DEVICE_ID_KEY, &szDeviceID) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist buntle type.");
+
+ if (szDeviceID != NULL) {
+ free(szDeviceID);
+ szDeviceID = NULL;
+ }
+ return NULL;
+ }
+
+ return szDeviceID;
+
+}
+
+
+static char *__VpServiceParserGetDMRID(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return NULL;
+ }
+
+ char *szDMRID = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_DMR_ID_KEY, &szDMRID) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist buntle type.");
+
+ if (szDMRID != NULL) {
+ free(szDMRID);
+ szDMRID = NULL;
+ }
+ return NULL;
+ }
+ VideoLogError("#### %s ####", szDMRID);
+
+ return szDMRID;
+
+}
+
+
+static char *__VpServiceParserGetCookie(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return NULL;
+ }
+
+ char *szCookie = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_COOKIE_KEY, &szCookie) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist buntle type.");
+
+ if (szCookie != NULL) {
+ free(szCookie);
+ szCookie = NULL;
+ }
+ return NULL;
+ }
+ VideoLogError("== [Cookie : %s] ==", szCookie);
+
+ return szCookie;
+
+}
+
+static char *__VpServiceParserGetProxy(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return NULL;
+ }
+
+ char *szProxy = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_PROXY_KEY, &szProxy) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist buntle type.");
+
+ if (szProxy != NULL) {
+ free(szProxy);
+ szProxy = NULL;
+ }
+ return NULL;
+ }
+ VideoLogError("== [Proxy : %s] ==", szProxy);
+
+ return szProxy;
+
+}
+
+static char *__VpServiceParserGetMediaTitle(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return NULL;
+ }
+
+ char *szMediaTitle = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_TITLE_KEY, &szMediaTitle) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist app_control_h type.");
+
+ if (szMediaTitle != NULL) {
+ free(szMediaTitle);
+ szMediaTitle = NULL;
+ }
+ return NULL;
+ }
+ return szMediaTitle;
+
+}
+
+static Eina_Bool __VpServiceParserGetAUL(app_control_h pAppSvcHandle, char **dpUri)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ if (dpUri == NULL) {
+ VideoLogError("dpUri == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ if (app_control_get_uri(pAppSvcHandle, dpUri) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist uri");
+
+ if (*dpUri != NULL) {
+ free(*dpUri);
+ *dpUri = NULL;
+ }
+
+ return EINA_FALSE;
+ }
+
+ if (*dpUri != NULL) {
+ return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __VpServiceParserGetAppControl(app_control_h pAppSvcHandle, char **dpUri)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ if (dpUri == NULL) {
+ VideoLogError("dpUri == NULL!!!");
+ return EINA_FALSE;
+ }
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_URI_PATH_KEY, dpUri) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist buntle type.");
+
+ if (*dpUri != NULL) {
+ free(*dpUri);
+ *dpUri = NULL;
+ }
+
+ return EINA_FALSE;
+ }
+
+ if (*dpUri != NULL) {
+ return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool __VpServiceParserGetWindowID(app_control_h pAppSvcHandle, unsigned int *nXID)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return EINA_FALSE;
+ }
+#if 0
+ char *szValue = NULL;
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_EXIT_ON_BACK, &szValue) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist buntle type.");
+
+ if (szValue != NULL) {
+ free(szValue);
+ szValue = NULL;
+ }
+
+ return EINA_FALSE;
+ }
+
+ if (!strcmp(szValue, "true")) {
+ int nRet = APP_CONTROL_ERROR_NONE;
+
+ nRet = app_control_get_window(pAppSvcHandle, nXID);
+ if (nRet != APP_CONTROL_ERROR_NONE) {
+ VideoLogWarning("app_control_get_window fail: %d", nRet);
+ *nXID = 0;
+ return FALSE;
+ }
+
+ }
+#endif
+ return EINA_TRUE;
+}
+
+static VpVideoSortType __VpServiceParserGetSortType(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return VP_VIDEO_SORT_TYPE_BY_NONE;
+ }
+
+ VpVideoSortType eSortType = VP_VIDEO_SORT_TYPE_BY_NONE;
+ char *pSortType = NULL;
+
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_SORT_TYPE_KEY, &pSortType) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist gallery list sort order type!!!");
+ eSortType = VP_VIDEO_SORT_TYPE_BY_NONE;
+ goto RESULT_RETURN;
+ }
+
+ if (pSortType == NULL) {
+ VideoLogInfo("pSortType == NULL!!!");
+ eSortType = VP_VIDEO_SORT_TYPE_BY_NONE;
+ goto RESULT_RETURN;
+ }
+
+ if (!strcmp(pSortType, "name_asc")) {
+ eSortType = VP_VIDEO_SORT_TYPE_BY_NAME_ASC;
+ }
+ else if (!strcmp(pSortType, "name_desc")) {
+ eSortType = VP_VIDEO_SORT_TYPE_BY_NAME_DESC;
+ }
+ else if (!strcmp(pSortType, "date_asc")) {
+ eSortType = VP_VIDEO_SORT_TYPE_BY_DATE_ASC;
+ }
+ else if (!strcmp(pSortType, "date_desc")) {
+ eSortType = VP_VIDEO_SORT_TYPE_BY_DATE_DESC;
+ }
+ else if (!strcmp(pSortType, "none")) {
+ eSortType = VP_VIDEO_SORT_TYPE_BY_NONE;
+ }
+ else {
+ eSortType = VP_VIDEO_SORT_TYPE_BY_NAME_DESC;
+ }
+
+
+RESULT_RETURN:
+ if (pSortType != NULL) {
+ free(pSortType);
+ pSortType = NULL;
+ }
+
+ return eSortType;
+}
+
+
+static VpVideoPlayListType __VpServiceParserGetListType(app_control_h pAppSvcHandle)
+{
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("pAppSvcHandle == NULL!!!");
+ return VP_VIDEO_PLAY_LIST_TYPE_NONE;
+ }
+
+ VpVideoPlayListType ePlayType = VP_VIDEO_PLAY_LIST_TYPE_NONE;
+ char *pPlayType = NULL;
+
+ if (app_control_get_extra_data(pAppSvcHandle, VP_VIDEO_LIST_TYPE_KEY, &pPlayType) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist gallery play list type!!!");
+ ePlayType = VP_VIDEO_PLAY_LIST_TYPE_NONE;
+ goto RESULT_RETURN;
+ }
+
+ if (pPlayType == NULL) {
+ VideoLogInfo("pPlayType == NULL!!!");
+ pPlayType = VP_VIDEO_PLAY_LIST_TYPE_NONE;
+ goto RESULT_RETURN;
+ }
+
+
+ if (!strcmp(pPlayType, "folder")) {
+ ePlayType = VP_VIDEO_PLAY_LIST_TYPE_FOLDER;
+ }
+ else if (!strcmp(pPlayType, "all_folder_video")) {
+ ePlayType = VP_VIDEO_PLAY_LIST_TYPE_ALL_FOLDER_GALLERY;
+ }
+ else if (!strcmp(pPlayType, "tag_video")) {
+ ePlayType = VP_VIDEO_PLAY_LIST_TYPE_TAG_GALLERY;
+ }
+ else if (!strcmp(pPlayType, "favorite")) {
+ ePlayType = VP_VIDEO_PLAY_LIST_TYPE_FAVORITE;
+ }
+ else {
+ ePlayType = VP_VIDEO_PLAY_LIST_TYPE_NONE;
+ }
+
+
+RESULT_RETURN:
+ if (pPlayType != NULL) {
+ free(pPlayType);
+ pPlayType = NULL;
+ }
+
+ return ePlayType;
+}
+
+
+static Eina_Bool __VpServiceParserCheckURL(char *szURL)
+{
+ if (szURL == NULL) {
+ return EINA_FALSE;
+ }
+
+ if (strlen(szURL) <= 0) {
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+
+
+static Eina_Bool __VpServiceParserCheckFileIsExist(char *szFilePath)
+{
+ if (szFilePath == NULL) {
+ VideoLogError("szFilePath == NULL!!!");
+ return EINA_FALSE;
+ }
+ Eina_Bool bIsExist = EINA_FALSE;
+
+ if (vp_file_exists(szFilePath)) {
+ bIsExist = EINA_TRUE;
+ }
+
+ return bIsExist;
+}
+
+
+
+
diff --git a/vp-main/src/vp-main.c b/vp-main/src/vp-main.c
new file mode 100644
index 0000000..401da7e
--- /dev/null
+++ b/vp-main/src/vp-main.c
@@ -0,0 +1,694 @@
+/*
+* Copyright (c) 2000-2015 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <app.h>
+#include <aul.h>
+#include <system_settings.h>
+#include "vp-main.h"
+#include "vp-service-parser.h"
+#include "vp-play-log.h"
+#include "vp-play-view.h"
+
+static void __appResume(void *pUserData);
+
+static void __vp_main_realize_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+}
+
+static void __vp_main_destroy_cb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogError("pUserData is NULL");
+ return;
+ }
+// VpAppData *pAppData = (VpAppData*)pUserData;
+// pAppData->pPlayView = NULL;
+
+ //elm_exit();
+}
+
+static bool __appCreate(void *pUserData)
+{
+ VideoLogWarning("== APP CREATE ==");
+
+ if (pUserData == NULL) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VpAppData *pAppData = (VpAppData*)pUserData;
+
+ pAppData->bPause = FALSE;
+ pAppData->bIsRelaunch = FALSE;
+
+ return TRUE;
+}
+
+static Eina_Bool __appControl_idler_cb(void *data)
+{
+ VpAppData *pAppData = (VpAppData*)data;
+
+
+ VideoLogPerfS("============================== RESET =============================");
+
+ video_play_launching_type_t nLaunchingType = VIDEO_PLAY_TYPE_OTHER;
+ video_play_mode_t nMode = VIDEO_PLAY_MODE_NORMAL_VIEW;
+ bool bRelaunchCaller = FALSE;
+ VideoLogError("LaunchType = %d", pAppData->pServiceData->eLaunchType);
+
+ switch (pAppData->pServiceData->eLaunchType)
+ {
+ case VP_LAUNCH_TYPE_STORE:
+ nLaunchingType = VIDEO_PLAY_TYPE_STORE;
+ bRelaunchCaller = TRUE;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_STORE ==");
+ break;
+ case VP_LAUNCH_TYPE_LIST:
+ nLaunchingType = VIDEO_PLAY_TYPE_LIST;
+ bRelaunchCaller = TRUE;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_LIST ==");
+ break;
+ case VP_LAUNCH_TYPE_NONE:
+ case VP_LAUNCH_TYPE_MAX:
+ nLaunchingType = VIDEO_PLAY_TYPE_OTHER;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_OTHER ==");
+ break;
+ case VP_LAUNCH_TYPE_EMAIL:
+ nLaunchingType = VIDEO_PLAY_TYPE_EMAIL;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_EMAIL ==");
+ break;
+ case VP_LAUNCH_TYPE_MMS:
+ nLaunchingType = VIDEO_PLAY_TYPE_MESSAGE;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_MESSAGE ==");
+ break;
+ case VP_LAUNCH_TYPE_MYFILE:
+ nLaunchingType = VIDEO_PLAY_TYPE_MYFILE;
+ VideoLogWarning("== VP_LAUNCH_TYPE_MYFILE ==");
+ break;
+ case VP_LAUNCH_TYPE_GALLERY:
+ nLaunchingType = VIDEO_PLAY_TYPE_GALLERY;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_GALLERY ==");
+ break;
+ case VP_LAUNCH_TYPE_IMAGE_VIEWER:
+ nLaunchingType = VIDEO_PLAY_TYPE_GALLERY;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_GALLERY ==");
+ break;
+ case VP_LAUNCH_TYPE_IMAGE_VIEWER_TRIM:
+ nLaunchingType = VIDEO_PLAY_TYPE_GALLERY;
+ VideoLogWarning("== VP_LAUNCH_TYPE_IMAGE_VIEWER_TRIM ==");
+ break;
+ case VP_LAUNCH_TYPE_MULTI_PATH:
+ nLaunchingType = VIDEO_PLAY_TYPE_MULTI_PATH;
+ break;
+ case VP_LAUNCH_TYPE_SIMPLE:
+ nLaunchingType = VIDEO_PLAY_TYPE_PREVIEW;
+ VideoLogWarning("== VIDEO_PLAY_TYPE_PREVIEW ==");
+ break;
+ }
+
+ if (pAppData->pServiceData->bStreaming) {
+ nLaunchingType = VIDEO_PLAY_TYPE_WEB;
+ }
+
+ bool bPopupMode = FALSE;
+ vp_play_view_get_popup_mode(pAppData->pPlayView, &bPopupMode);
+
+ bool bIsRealize = FALSE;
+
+ if (vp_play_view_is_realize(pAppData->pPlayView, &bIsRealize)) {
+ if (bPopupMode == FALSE && bIsRealize == FALSE && pAppData->bPause == FALSE) {
+ VideoLogError("[ERR] Not Yet reailze");
+ return ECORE_CALLBACK_DONE;
+ }
+ }
+
+ if ((bPopupMode == TRUE && pAppData->pServiceData->szDMRID == NULL)
+ || (g_strcmp0(pAppData->pValStartup, "2") == 0 && bIsRealize)) {// pAppData->values[0] == 2 for multi window; change video url only, don't destroy the player window.
+ char *szCurURL = NULL;
+ bool bVisible = FALSE;
+
+ if (!vp_play_view_get_url(pAppData->pPlayView , &szCurURL)) {
+ VideoLogError("vp_play_view_set_url is fail");
+ }
+ if (!vp_play_view_get_visible_status(pAppData->pPlayView , &bVisible)) {
+ VideoLogError("vp_play_view_get_visible_status is fail");
+ }
+
+ if (szCurURL && bVisible) {
+ char *req_uri = NULL;
+ if (pAppData->pServiceData->pMediaUri) {
+ req_uri = strdup(pAppData->pServiceData->pMediaUri);
+ } else if (nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH) {
+ if (pAppData->pServiceData->szMultiPath[0] != NULL) {
+ char *multi_path = strstr(pAppData->pServiceData->szMultiPath[0], "file://");
+
+ if (multi_path != NULL)
+ req_uri = strdup(multi_path);
+ }
+ }
+ if (req_uri) {
+ if (g_strcmp0(req_uri, szCurURL) == 0) {
+ VideoLogError("skip for same file");
+
+ free(szCurURL);
+ szCurURL = NULL;
+ free(req_uri);
+ req_uri = NULL;
+
+ Evas_Object *pWin = vp_play_view_get_main_window(pAppData->pPlayView);
+ if (pWin) {
+ if (nLaunchingType == VIDEO_PLAY_TYPE_MESSAGE || nLaunchingType == VIDEO_PLAY_TYPE_EMAIL) {
+ //if current mini mode, change it to full mode
+ VideoLogWarning("from Message type and Email type. change mini mode to full mode");
+ vp_play_view_change_style_minimode_to_fullmode(pAppData->pPlayView, nLaunchingType);
+ }
+ elm_win_activate(pWin);
+ }
+
+ return ECORE_CALLBACK_DONE;
+ }
+ free(req_uri);
+ req_uri = NULL;
+ } else {
+ VideoLogError("skip for invalid input");
+
+ free(szCurURL);
+ szCurURL = NULL;
+
+ return ECORE_CALLBACK_DONE;
+ }
+ if (szCurURL) {
+ free(szCurURL);
+ }
+ szCurURL = NULL;
+ }
+
+ if (!vp_play_view_unrealize(pAppData->pPlayView)) {
+ VideoLogError("vp_play_view_unrealize is fail");
+ }
+
+ if (!vp_play_view_set_url(pAppData->pPlayView , pAppData->pServiceData->pMediaUri)) {
+ VideoLogError("vp_play_view_set_url is fail");
+ }
+
+ vp_play_view_set_launching_mode (pAppData->pPlayView, nLaunchingType);
+ if (szCurURL) {
+ free(szCurURL);
+ szCurURL = NULL;
+ }
+ }
+ else {
+ if (pAppData->pPlayView) {
+#ifdef _PERF_TEST_
+ vp_play_view_reset(pAppData->pPlayView, nMode);
+#else
+ vp_play_view_destroy(pAppData->pPlayView);
+#endif
+ pAppData->pPlayView = NULL;
+ }
+
+ if (pAppData->pPlayView == NULL) {
+ pAppData->pPlayView = vp_play_view_create(NULL, pAppData->pServiceData->nParentXID, nMode, nLaunchingType);
+ if (pAppData->pPlayView == NULL) {
+ VideoLogError("vp_play_view_create is fail");
+ elm_exit();
+ return ECORE_CALLBACK_DONE;
+ }
+ }
+
+
+ Evas_Object *pWin = NULL;
+ pWin = vp_play_view_get_main_window(pAppData->pPlayView);
+
+ evas_object_show(pWin);
+ elm_win_activate(pWin);
+
+
+ if (!vp_play_view_set_callback(pAppData->pPlayView, VIDEO_PLAY_CB_TYPE_REALIZE, __vp_main_realize_cb)) {
+ VideoLogError("vp_play_view_set_callback is fail");
+ return ECORE_CALLBACK_DONE;
+ }
+
+ if (!vp_play_view_set_callback(pAppData->pPlayView, VIDEO_PLAY_CB_TYPE_DESTORY, __vp_main_destroy_cb)) {
+ VideoLogError("vp_play_view_set_callback is fail");
+ return ECORE_CALLBACK_DONE;
+ }
+
+ if (!vp_play_view_set_user_data(pAppData->pPlayView, (void *)pAppData)) {
+ VideoLogError("vp_play_view_set_user_data is fail");
+ return ECORE_CALLBACK_DONE;
+ }
+ }
+
+
+ if (nLaunchingType == VIDEO_PLAY_TYPE_WEB) {
+ if (!vp_play_view_set_cookie(pAppData->pPlayView, pAppData->pServiceData->szCookie)) {
+ VideoLogError("vp_play_view_set_cookie is fail");
+ }
+
+ if (!vp_play_view_set_proxy(pAppData->pPlayView, pAppData->pServiceData->szProxy)) {
+ VideoLogError("vp_play_view_set_proxy is fail");
+ }
+ }
+
+ if (pAppData->pServiceData->szDMRID) {
+ VideoLogWarning("DMR ID : %s", pAppData->pServiceData->szDMRID);
+ if (!vp_play_view_set_dmr_id(pAppData->pPlayView , pAppData->pServiceData->szDMRID)) {
+ VideoLogError("vp_play_view_set_dmr_id is fail");
+ }
+ }
+
+ if (nLaunchingType == VIDEO_PLAY_TYPE_MULTI_PATH && pAppData->pServiceData->szMultiPath) {
+ int idx = 0;
+
+ if (!vp_play_view_set_stop_after_repeat_mode(pAppData->pPlayView , pAppData->pServiceData->bStopAfterRepeat)) {
+ VideoLogError("vp_play_view_set_stop_after_repeat_mode is fail");
+ }
+
+ for (idx = 0; idx < pAppData->pServiceData->nMultiPath; idx++)
+ {
+ if (pAppData->pServiceData->szMultiPath[idx] == NULL) {
+ continue;
+ }
+
+ if (pAppData->pServiceData->szMultiPath[idx]) {
+ char *szSubtitle = NULL;
+ char *szTitle = NULL;
+ int nPosition = 0;
+ int nDuration = 0;
+
+ if (idx == 0) {
+ if (!vp_play_view_set_url(pAppData->pPlayView , pAppData->pServiceData->szMultiPath[idx])) {
+ VideoLogError("vp_play_view_set_url is fail");
+ }
+ }
+ if (pAppData->pServiceData->szMultiTitle) {
+ if (pAppData->pServiceData->szMultiTitle[idx]) {
+ szTitle = pAppData->pServiceData->szMultiTitle[idx];
+ }
+ }
+ if (pAppData->pServiceData->szMultiSubTitle) {
+ if (pAppData->pServiceData->szMultiSubTitle[idx]) {
+ szSubtitle = pAppData->pServiceData->szMultiSubTitle[idx];
+ }
+ }
+ if (pAppData->pServiceData->szMultiPosition) {
+ if (pAppData->pServiceData->szMultiPosition[idx]) {
+ nPosition = atoi(pAppData->pServiceData->szMultiPosition[idx]);
+ }
+ }
+ if (pAppData->pServiceData->szMultiDuration) {
+ if (pAppData->pServiceData->szMultiDuration[idx]) {
+ nDuration = atoi(pAppData->pServiceData->szMultiDuration[idx]);
+ }
+ }
+ vp_play_view_add_multi_path(pAppData->pPlayView,
+ pAppData->pServiceData->szMultiPath[idx],
+ szTitle,
+ szSubtitle,
+ nPosition,
+ nDuration,
+ FALSE);
+ }
+ }
+ }
+ else {
+ int nPosition = 0;
+ if (pAppData->pServiceData->bStoreDownload) {
+ nPosition = pAppData->pServiceData->nStorePlayedTime;
+ }
+ if (!vp_play_view_set_start_position(pAppData->pPlayView , nPosition)) {
+ VideoLogError("vp_play_view_set_start_position is fail");
+ }
+
+ if (!vp_play_view_set_url(pAppData->pPlayView , pAppData->pServiceData->pMediaUri)) {
+ VideoLogError("vp_play_view_set_url is fail");
+ }
+
+ if (!vp_play_view_set_store_download_mode(pAppData->pPlayView , pAppData->pServiceData->bStoreDownload)) {
+ VideoLogError("vp_play_view_set_store_download_mode is fail");
+ }
+
+ if (!vp_play_view_set_store_download_filesize(pAppData->pPlayView , pAppData->pServiceData->dStoreDL_FileSize)) {
+ VideoLogError("vp_play_view_set_store_download_filesize is fail");
+ }
+
+ if (pAppData->pServiceData->bStoreDownload == EINA_TRUE && pAppData->pServiceData->pStoreOrderId != NULL) {
+ if (!vp_play_view_set_store_order_info( pAppData->pPlayView ,
+ pAppData->pServiceData->pStoreOrderId,
+ pAppData->pServiceData->pStoreServerId,
+ pAppData->pServiceData->pStoreAppId,
+ pAppData->pServiceData->pStoreMvId)) {
+ VideoLogError("vp_play_view_set_store_order_info is fail");
+ }
+ }
+ }
+
+ if (pAppData->pServiceData->eListType == VP_VIDEO_PLAY_LIST_TYPE_FOLDER) {
+ vp_play_view_set_list_mode(pAppData->pPlayView, VIDEO_PLAY_LIST_TYPE_FOLDER);
+ }
+ else {
+ vp_play_view_set_list_mode(pAppData->pPlayView, VIDEO_PLAY_LIST_TYPE_ALL);
+ }
+
+ if (pAppData->pServiceData->szDeviceID) {
+ VideoLogWarning("Device ID : %s", pAppData->pServiceData->szDeviceID);
+ if (!vp_play_view_set_device_id(pAppData->pPlayView , pAppData->pServiceData->szDeviceID)) {
+ VideoLogError("vp_play_view_set_device_id is fail");
+ }
+ }
+
+ if (pAppData->pServiceData->szMediaTitle) {
+ VideoLogWarning("szMediaTitle : %s", pAppData->pServiceData->szMediaTitle);
+ if (!vp_play_view_set_media_title(pAppData->pPlayView , pAppData->pServiceData->szMediaTitle)) {
+ VideoLogError("vp_play_view_set_media_title is fail");
+ }
+ }
+
+ if (!vp_play_view_set_relaunch_caller(pAppData->pPlayView, bRelaunchCaller)) {
+ VideoLogError("vp_play_view_set_user_data is fail");
+ return ECORE_CALLBACK_DONE;
+ }
+
+ if (!vp_play_view_realize(pAppData->pPlayView)) {
+ VideoLogError("vp_play_view_realize is fail");
+ return ECORE_CALLBACK_DONE;
+ }
+
+ VideoLogPerfE("============================== RESET =============================");
+
+ if (pAppData->pAppSvcIdler) {
+ ecore_idler_del(pAppData->pAppSvcIdler);
+ pAppData->pAppSvcIdler = NULL;
+ }
+
+ return ECORE_CALLBACK_DONE;
+}
+
+#if 0
+static int __raise_win(Window win)
+{
+ XEvent xev;
+ Window root;
+ static Atom a_active_win;
+
+ Display *d = XOpenDisplay(NULL);
+
+ if (!a_active_win)
+ a_active_win = XInternAtom(d, "_NET_ACTIVE_WINDOW", False);
+
+ root = XDefaultRootWindow(d);
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.display = d;
+ xev.xclient.window = win;
+ xev.xclient.message_type = a_active_win;
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = 1;
+ xev.xclient.data.l[1] = CurrentTime;
+ xev.xclient.data.l[2] = 0;
+ xev.xclient.data.l[3] = 0;
+ xev.xclient.data.l[4] = 0;
+ XSendEvent(d, root, False,
+ SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+
+ XCloseDisplay(d);
+
+ return 0;
+}
+#endif
+
+static void __appControl(app_control_h pAppSvcHandle, void *pUserData)
+{
+ VideoLogWarning("== APP SERVICE ==");
+
+ if (pAppSvcHandle == NULL) {
+ VideoLogError("[ERR] No exist pAppSvcHandle.");
+ return;
+ }
+
+ if (pUserData == NULL) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VpAppData *pAppData = (VpAppData*)pUserData;
+
+ char *resume_check = NULL;
+ if (app_control_get_extra_data(pAppSvcHandle, "startup_type", &resume_check) != APP_CONTROL_ERROR_NONE) {
+ VideoLogInfo("No exist startup_type");
+ } else {
+ VideoLogInfo("temp_resume_check : %s", resume_check);
+ if (resume_check) {
+ if (strcmp(resume_check, "1") == 0) {
+ VideoLogInfo("do resume");
+ free(resume_check);
+
+ VpAppData *pAppData = (VpAppData*)pUserData;
+ Evas_Object *pWin = NULL;
+ pWin = vp_play_view_get_main_window(pAppData->pPlayView);
+ if (pWin) {
+ //__raise_win(elm_win_xwindow_get(pWin));
+ __appResume(pUserData);
+ return;
+ } else {
+ VideoLogError("No exist pWin");
+ }
+ }
+ }
+ }
+
+ if (pAppData->pServiceData != NULL) {
+ VpServiceParserDestroyServiceData(pAppData->pServiceData);
+ pAppData->pServiceData = NULL;
+ }
+
+ pAppData->pServiceData = calloc(1, sizeof(VpServiceData));
+
+ if (VpServiceParserGetServiceData(pAppSvcHandle, pAppData->pServiceData) == EINA_FALSE) {
+ VideoLogError("[ERR] VpServiceParserGetServiceData fail!!!");
+ if (pAppData->pServiceData != NULL) {
+ VpServiceParserDestroyServiceData(pAppData->pServiceData);
+ pAppData->pServiceData = NULL;
+ }
+
+ return;
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+// for sidesync
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+ if (pAppData->pServiceData->pMediaUri != NULL)
+ {
+ bool is_pss = FALSE;
+
+ VideoSecureLogInfo("is_pss : [%d]", is_pss);
+
+ if (is_pss == TRUE)
+ {
+ VideoSecureLogInfo("ss-play: %s", pAppData->pServiceData->pMediaUri);
+ return;
+ }
+ }
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+// for split window
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+#ifdef _PERF_TEST_
+ pAppData->pAppSvcIdler = ecore_idler_add(__appControl_idler_cb, (void*)pAppData);
+#else
+ __appControl_idler_cb((void*)pAppData);
+#endif
+}
+
+
+static void __appExit(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoLogWarning("== APP EXIT ==");
+
+ VpAppData *pAppData = (VpAppData*)pUserData;
+
+ if (pAppData->pServiceData != NULL) {
+ VpServiceParserDestroyServiceData(pAppData->pServiceData);
+ pAppData->pServiceData = NULL;
+ }
+
+ if (pAppData->pPlayView) {
+ vp_play_view_destroy(pAppData->pPlayView);
+ pAppData->pPlayView = NULL;
+ }
+
+ if (pAppData->pValStartup != NULL) {
+ free(pAppData->pValStartup);
+ pAppData->pValStartup = NULL;
+ }
+
+ if (pAppData->pValLayout != NULL) {
+ free(pAppData->pValLayout);
+ pAppData->pValLayout = NULL;
+ }
+}
+
+
+static void __appPause(void *pUserData)
+{
+ VideoLogWarning("== APP PAUSE ==");
+
+ if (pUserData == NULL) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VpAppData *pAppData = (VpAppData*)pUserData;
+ pAppData->bPause = TRUE;
+#if 1
+ if (!vp_play_view_unrealize(pAppData->pPlayView)) {
+ VideoLogWarning("vp_play_view_unrealize is fail");
+ }
+
+#else
+ if (!vp_play_view_get_popup_mode(pAppData->pPlayView, &bPopupMode)) {
+ VideoLogWarning("vp_play_view_get_popup_mode is fail");
+ }
+
+ if (bPopupMode == FALSE) {
+ if (!vp_play_view_unrealize(pAppData->pPlayView)) {
+ VideoLogWarning("vp_play_view_unrealize is fail");
+ }
+ }
+#endif
+}
+
+
+static void __appResume(void *pUserData)
+{
+ VideoLogWarning("== APP RESUME ==");
+
+ if (pUserData == NULL) {
+ VideoLogError("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VpAppData *pAppData = (VpAppData*)pUserData;
+ pAppData->bPause = FALSE;
+
+
+#if 1
+ if (!vp_play_view_realize(pAppData->pPlayView)) {
+ VideoLogError("vp_play_view_realize is fail");
+ }
+ vp_play_view_live_stream_realize(pAppData->pPlayView);
+#else
+ if (!vp_play_view_get_popup_mode(pAppData->pPlayView, &bPopupMode)) {
+ VideoLogWarning("vp_play_view_get_popup_mode is fail");
+ }
+
+ if (bPopupMode == FALSE) {
+ if (!vp_play_view_realize(pAppData->pPlayView)) {
+ VideoLogError("vp_play_view_realize is fail");
+ }
+ }
+#endif
+}
+
+void vp_low_battery(app_event_info_h event_info, void *data)
+{
+ VpAppData *ad = (VpAppData *)data;
+ app_event_low_battery_status_e status = -1;
+ int ret = app_event_get_low_battery_status(event_info, &status);
+ if (ret == APP_ERROR_NONE) {
+ if (status <= APP_EVENT_LOW_BATTERY_POWER_OFF) {
+ __appExit(ad);
+ }
+ }
+ else {
+ VideoLogInfo("Failed to get battery status. ret %d", ret);
+ }
+ return;
+}
+
+static void __appUpdateLanguage(app_event_info_h pEventInfo,void *pUserData)
+{
+ char *locale = NULL;
+ int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
+
+ if (retcode != SYSTEM_SETTINGS_ERROR_NONE) {
+ VideoLogInfo("[ERR] failed to get updated language!!! [retcode = retcode]", retcode);
+ }
+ else
+ {
+ if (locale) {
+ elm_language_set(locale);
+ free(locale);
+ }
+ }
+}
+
+EXPORT_API int main(int argc, char *argv[])
+{
+ VpAppData sAppData = {0,};
+ int nRet = -1;
+ ui_app_lifecycle_callback_s st_appEventService;
+ app_event_handler_h hLanguageChangedHandle;
+ app_event_handler_h hLowBatteryHandle;
+ nRet = ui_app_add_event_handler(&hLanguageChangedHandle, APP_EVENT_LANGUAGE_CHANGED, __appUpdateLanguage, (void*)&sAppData);
+ if (nRet != APP_ERROR_NONE) {
+ VideoLogError("APP_EVENT_LANGUAGE_CHANGED ui_app_add_event_handler failed : [%d]!!!", nRet);
+ return -1;
+
+ }
+ nRet = ui_app_add_event_handler(&hLowBatteryHandle, APP_EVENT_LOW_BATTERY, vp_low_battery, (void*)&sAppData);
+ if (nRet != APP_ERROR_NONE) {
+ VideoLogError("APP_EVENT_LOW_BATTERY ui_app_add_event_handler failed : [%d]!!!", nRet);
+ return -1;
+ }
+
+ st_appEventService.create = __appCreate;
+ st_appEventService.terminate = __appExit;
+ st_appEventService.pause = __appPause;
+ st_appEventService.resume = __appResume;
+ st_appEventService.app_control = __appControl;
+ //st_appEventService.low_memory = NULL;
+ //st_appEventService.low_battery = NULL;
+ //st_appEventService.device_orientation = NULL;
+ //st_appEventService.language_changed = __appUpdateLanguage;
+ //st_appEventService.region_format_changed = NULL;
+
+ if (ui_app_main(argc, argv, &st_appEventService, &sAppData) != APP_ERROR_NONE) {
+ return -1;
+ }
+
+ return 0;
+}