Tizen release 1.0
authorKim Kibum <kb0929.kim@samsung.com>
Mon, 9 Apr 2012 03:12:49 +0000 (12:12 +0900)
committerKim Kibum <kb0929.kim@samsung.com>
Mon, 9 Apr 2012 03:12:49 +0000 (12:12 +0900)
178 files changed:
CMakeLists.txt [new file with mode: 0755]
NOTICE [new file with mode: 0755]
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0755]
debian/control [new file with mode: 0755]
debian/org.tizen.video-player.install [new file with mode: 0755]
debian/org.tizen.video-player.install.in [new file with mode: 0755]
debian/org.tizen.video-player.postinst [new file with mode: 0755]
debian/org.tizen.video-player.postinst.in [new file with mode: 0755]
debian/rules [new file with mode: 0755]
debian/substvars [new file with mode: 0755]
include/mp-util-media-service.h [new file with mode: 0755]
include/mp-util.h [new file with mode: 0755]
include/mp-video-animation-ctrl.h [new file with mode: 0755]
include/mp-video-app-ctrl.h [new file with mode: 0755]
include/mp-video-ctrl-mgr.h [new file with mode: 0755]
include/mp-video-display-view.h [new file with mode: 0755]
include/mp-video-info-ctrl.h [new file with mode: 0755]
include/mp-video-log.h [new file with mode: 0755]
include/mp-video-player-mgr.h [new file with mode: 0755]
include/mp-video-progressbar.h [new file with mode: 0755]
include/mp-video-sound-path-ctrl.h [new file with mode: 0755]
include/mp-video-streaming-ctrl.h [new file with mode: 0755]
include/mp-video-streaming-view.h [new file with mode: 0755]
include/mp-video-string-define.h [new file with mode: 0755]
include/mp-video-subtitle-ctrl.h [new file with mode: 0755]
include/mp-video-type-define.h [new file with mode: 0755]
include/mp-video-value-define.h [new file with mode: 0755]
include/mp-video-view-ctrl.h [new file with mode: 0755]
include/mp-xml-parser.h [new file with mode: 0755]
include/video-player.h [new file with mode: 0755]
org.tizen.video-player.desktop.in [new file with mode: 0755]
packaging/org.tizen.video-player.spec [new file with mode: 0755]
res/edc/add_tag.edc [new file with mode: 0755]
res/edc/animation.edc [new file with mode: 0755]
res/edc/control.edc [new file with mode: 0755]
res/edc/detail.edc [new file with mode: 0755]
res/edc/hidden_button_panel.edc [new file with mode: 0755]
res/edc/image_res.edc [new file with mode: 0755]
res/edc/main.edc [new file with mode: 0755]
res/edc/option_button.edc [new file with mode: 0755]
res/edc/panel.edc [new file with mode: 0755]
res/edc/progress.edc [new file with mode: 0755]
res/edc/subtitle.edc [new file with mode: 0755]
res/edc/vp-button.edc [new file with mode: 0755]
res/edc/vp-controlbar.edc [new file with mode: 0755]
res/edc/vp-custom-winset-style.edc [new file with mode: 0755]
res/edc/vp-naviframe.edc [new file with mode: 0755]
res/edc/vp_font.edc [new file with mode: 0755]
res/images/00_Option_header_bt.png [new file with mode: 0755]
res/images/00_Option_header_bt_dim.png [new file with mode: 0755]
res/images/00_Option_header_bt_press.png [new file with mode: 0755]
res/images/00_button_01_normal.png [new file with mode: 0755]
res/images/00_button_01_normal_dim.png [new file with mode: 0755]
res/images/00_button_01_normal_press.png [new file with mode: 0755]
res/images/00_winset_btn_prev.png [new file with mode: 0755]
res/images/00_winset_btn_prev_press.png [new file with mode: 0755]
res/images/00_winset_control_top_arrow.png [new file with mode: 0755]
res/images/01_controlbar_icon_delete.png [new file with mode: 0755]
res/images/01_controlbar_icon_set_as.png [new file with mode: 0755]
res/images/01_controlbar_icon_share.png [new file with mode: 0755]
res/images/01_header_icon_add.png [new file with mode: 0755]
res/images/01_header_icon_cancel.png [new file with mode: 0755]
res/images/01_header_icon_others.png [new file with mode: 0755]
res/images/12_music_player_sound_path.png [new file with mode: 0755]
res/images/T01_Nocontents_multimedia.png [new file with mode: 0755]
res/images/T01_Option_header_bt.png [new file with mode: 0755]
res/images/T01_Option_header_bt_press.png [new file with mode: 0755]
res/images/T01_back.png [new file with mode: 0755]
res/images/T01_btn_prev.png [new file with mode: 0755]
res/images/T01_control_icon_detail.png [new file with mode: 0755]
res/images/T01_control_icon_fullscreen.png [new file with mode: 0755]
res/images/T01_control_icon_reduce.png [new file with mode: 0755]
res/images/T01_control_top_arrow.png [new file with mode: 0755]
res/images/T01_control_top_bg.png [new file with mode: 0755]
res/images/T01_controlbar_icon_cancel.png [new file with mode: 0755]
res/images/T01_controlbar_icon_done.png [new file with mode: 0755]
res/images/T01_controller_btn.png [new file with mode: 0755]
res/images/T01_controller_btn_press.png [new file with mode: 0755]
res/images/T01_icon_expand.png [new file with mode: 0755]
res/images/T01_icon_reduce.png [new file with mode: 0755]
res/images/T01_icon_soundPath.png [new file with mode: 0755]
res/images/T01_icon_soundPath_h.png [new file with mode: 0755]
res/images/T01_icon_soundPath_press.png [new file with mode: 0755]
res/images/T01_player_progress_bar.png [new file with mode: 0755]
res/images/T01_player_progress_bg.png [new file with mode: 0755]
res/images/T01_player_progress_point.png [new file with mode: 0755]
res/images/T01_sound_path.png [new file with mode: 0755]
res/images/T01_title_btn.png [new file with mode: 0755]
res/images/T01_title_btn_press.png [new file with mode: 0755]
res/images/T01_toolbar_bg.png [new file with mode: 0755]
res/images/T01_toolbar_press.png [new file with mode: 0755]
res/images/gallery_loading_ani_01.png [new file with mode: 0755]
res/images/gallery_loading_ani_02.png [new file with mode: 0755]
res/images/gallery_loading_ani_03.png [new file with mode: 0755]
res/images/gallery_loading_ani_04.png [new file with mode: 0755]
res/images/gallery_loading_ani_05.png [new file with mode: 0755]
res/images/gallery_loading_ani_06.png [new file with mode: 0755]
res/images/gallery_loading_ani_07.png [new file with mode: 0755]
res/images/gallery_loading_ani_08.png [new file with mode: 0755]
res/images/gallery_loading_ani_09.png [new file with mode: 0755]
res/images/gallery_loading_ani_10.png [new file with mode: 0755]
res/images/gallery_loading_ani_11.png [new file with mode: 0755]
res/images/gallery_loading_ani_12.png [new file with mode: 0755]
res/images/gallery_loading_ani_13.png [new file with mode: 0755]
res/images/gallery_loading_ani_14.png [new file with mode: 0755]
res/images/gallery_loading_ani_15.png [new file with mode: 0755]
res/images/gallery_loading_ani_16.png [new file with mode: 0755]
res/images/gallery_loading_ani_17.png [new file with mode: 0755]
res/images/gallery_loading_ani_18.png [new file with mode: 0755]
res/images/gallery_loading_ani_19.png [new file with mode: 0755]
res/images/gallery_loading_ani_20.png [new file with mode: 0755]
res/images/gallery_loading_ani_21.png [new file with mode: 0755]
res/images/gallery_loading_ani_22.png [new file with mode: 0755]
res/images/gallery_loading_ani_23.png [new file with mode: 0755]
res/images/gallery_loading_ani_24.png [new file with mode: 0755]
res/images/gallery_loading_ani_25.png [new file with mode: 0755]
res/images/gallery_loading_ani_26.png [new file with mode: 0755]
res/images/gallery_loading_ani_27.png [new file with mode: 0755]
res/images/gallery_loading_ani_28.png [new file with mode: 0755]
res/images/gallery_loading_ani_29.png [new file with mode: 0755]
res/images/gallery_loading_ani_30.png [new file with mode: 0755]
res/images/gallery_video_add_btn.png [new file with mode: 0755]
res/images/gallery_video_add_btn_press.png [new file with mode: 0755]
res/images/gallery_video_control_ff.png [new file with mode: 0755]
res/images/gallery_video_control_frame_back.png [new file with mode: 0755]
res/images/gallery_video_control_frame_forword.png [new file with mode: 0755]
res/images/gallery_video_control_next.png [new file with mode: 0755]
res/images/gallery_video_control_pause.png [new file with mode: 0755]
res/images/gallery_video_control_play.png [new file with mode: 0755]
res/images/gallery_video_control_prev.png [new file with mode: 0755]
res/images/gallery_video_control_rew.png [new file with mode: 0755]
res/images/gallery_video_delete_btn.png [new file with mode: 0755]
res/images/gallery_video_delete_btn_press.png [new file with mode: 0755]
res/images/gallery_video_icon_btn.png [new file with mode: 0755]
res/images/gallery_video_icon_btn_press.png [new file with mode: 0755]
res/images/gallery_video_icon_mute.png [new file with mode: 0755]
res/images/gallery_video_icon_volume.png [new file with mode: 0755]
res/images/gallery_video_player_bg.png [new file with mode: 0755]
res/images/gallery_video_popup_mute.png [new file with mode: 0755]
res/images/navibar_item_separator_shadow.png [new file with mode: 0755]
res/images/naviframe_optionheader.png [new file with mode: 0755]
res/images/naviframe_optionheader_arrow.png [new file with mode: 0755]
res/images/org.tizen.video-player.png [new file with mode: 0755]
res/images/video_sound_path_dim.png [new file with mode: 0755]
res/po/CMakeLists.txt [new file with mode: 0755]
res/po/POTFILES.in [new file with mode: 0755]
res/po/de_DE.po [new file with mode: 0755]
res/po/el_GR.po [new file with mode: 0755]
res/po/en.po [new file with mode: 0755]
res/po/es_ES.po [new file with mode: 0755]
res/po/fr_FR.po [new file with mode: 0755]
res/po/it_IT.po [new file with mode: 0755]
res/po/ja_JP.po [new file with mode: 0755]
res/po/ko_KR.po [new file with mode: 0755]
res/po/nl_NL.po [new file with mode: 0755]
res/po/pt_PT.po [new file with mode: 0755]
res/po/ru_RU.po [new file with mode: 0755]
res/po/tr_TR.po [new file with mode: 0755]
res/po/zh_CN.po [new file with mode: 0755]
res/po/zh_HK.po [new file with mode: 0755]
res/po/zh_TW.po [new file with mode: 0755]
src/mp-util-media-service.c [new file with mode: 0755]
src/mp-util.c [new file with mode: 0755]
src/mp-video-animation-ctrl.c [new file with mode: 0755]
src/mp-video-app-ctrl.c [new file with mode: 0755]
src/mp-video-ctrl-mgr.c [new file with mode: 0755]
src/mp-video-display-view.c [new file with mode: 0755]
src/mp-video-info-ctrl.c [new file with mode: 0755]
src/mp-video-player-mgr.c [new file with mode: 0755]
src/mp-video-progressbar.c [new file with mode: 0755]
src/mp-video-sound-path-ctrl.c [new file with mode: 0755]
src/mp-video-streaming-ctrl.c [new file with mode: 0755]
src/mp-video-streaming-view.c [new file with mode: 0755]
src/mp-video-subtitle-ctrl.c [new file with mode: 0755]
src/mp-video-view-ctrl.c [new file with mode: 0755]
src/mp-xml-parser.c [new file with mode: 0755]
src/video-player.c [new file with mode: 0755]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..c9a9894
--- /dev/null
@@ -0,0 +1,207 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
+PROJECT(video-player C)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(SRCS
+src/video-player.c
+src/mp-util.c
+src/mp-video-app-ctrl.c
+src/mp-xml-parser.c
+src/mp-video-view-ctrl.c
+src/mp-video-display-view.c
+src/mp-video-progressbar.c
+src/mp-util-media-service.c
+src/mp-video-sound-path-ctrl.c
+src/mp-video-streaming-view.c
+src/mp-video-ctrl-mgr.c
+src/mp-video-player-mgr.c
+src/mp-video-animation-ctrl.c
+src/mp-video-streaming-ctrl.c
+src/mp-video-subtitle-ctrl.c
+src/mp-video-info-ctrl.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED elementary 
+appcore-efl 
+ui-gadget 
+utilX 
+mm-common 
+mm-player 
+mm-sound 
+dlog 
+pmapi 
+mm-session 
+vconf 
+mm-ta
+mm-fileinfo 
+appcore-common
+libmedia-service
+libxml-2.0
+syspopup-caller
+ecore
+ecore-file 
+ecore-imf 
+ecore-x
+ecore-input 
+ecore-evas 
+eina 
+evas 
+edje 
+appsvc 
+ail 
+efreet-mime
+icu-i18n
+icu-io
+icu-le
+icu-lx
+icu-uc)
+
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "/opt/apps/org.tizen.video-player/data")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons/default/small")
+SET(EDJDIR "${RESDIR}/edje")
+SET(SLP_LD_PATH_FLAGS -L${CMAKE_CURRENT_SOURCE_DIR}/src/ext)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+
+CONFIGURE_FILE(org.tizen.video-player.desktop.in org.tizen.video-player.desktop)
+
+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_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${gles_pkg_LDFLAGS} -lmmffile -lmmfsound -ldl)
+
+ADD_CUSTOM_TARGET(main.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/main.edc
+${CMAKE_BINARY_DIR}/res/edc/main.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/main.edc)
+
+ADD_CUSTOM_TARGET(vp_font.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc
+${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc)
+
+ADD_CUSTOM_TARGET(image_res.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/image_res.edc
+${CMAKE_BINARY_DIR}/res/edc/image_res.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/image_res.edc)
+
+ADD_CUSTOM_TARGET(panel.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/panel.edc
+${CMAKE_BINARY_DIR}/res/edc/panel.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/panel.edc)
+
+ADD_CUSTOM_TARGET(progress.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/progress.edc
+${CMAKE_BINARY_DIR}/res/edc/progress.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/progress.edc)
+
+
+ADD_CUSTOM_TARGET(control.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/control.edc
+${CMAKE_BINARY_DIR}/res/edc/control.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/control.edc)
+
+ADD_CUSTOM_TARGET(add_tag.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/add_tag.edc
+${CMAKE_BINARY_DIR}/res/edc/add_tag.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/add_tag.edc)
+
+ADD_CUSTOM_TARGET(animation.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/animation.edc
+${CMAKE_BINARY_DIR}/res/edc/animation.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/animation.edc)
+
+ADD_CUSTOM_TARGET(detail.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/detail.edc
+${CMAKE_BINARY_DIR}/res/edc/detail.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/detail.edc)
+
+ADD_CUSTOM_TARGET(subtitle.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc
+${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc)
+
+ADD_CUSTOM_TARGET(vp-custom-winset-style.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc
+${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc)
+
+ADD_CUSTOM_TARGET(hidden_button_panel.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images
+${CMAKE_SOURCE_DIR}/res/edc/hidden_button_panel.edc
+${CMAKE_BINARY_DIR}/res/edc/hidden_button_panel.edj DEPENDS
+${CMAKE_SOURCE_DIR}/res/edc/hidden_button_panel.edc)
+
+ADD_CUSTOM_TARGET(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_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} add_tag.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} animation.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} detail.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} subtitle.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} vp-custom-winset-style.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} hidden_button_panel.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} option_button.edj)
+
+
+######################################
+# install desktop file & icon, edje  #
+######################################
+
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/main.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/image_res.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/panel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/progress.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/control.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/add_tag.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/animation.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/detail.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/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/hidden_button_panel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/option_button.edj DESTINATION ${EDJDIR})
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.desktop DESTINATION /opt/share/applications)
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /opt/apps/org.tizen.video-player/res/icons/default/small)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/ DESTINATION ${RESDIR}/images)
+
+ADD_SUBDIRECTORY(res/po)
diff --git a/NOTICE b/NOTICE
new file mode 100755 (executable)
index 0000000..f085dc6
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..9aa8b91
--- /dev/null
@@ -0,0 +1,7 @@
+video-player (0.1.5) unstable; urgency=low
+
+  * Initial release.
+  * Git: pkgs/v/video-player
+  * Tag : video-player_0.1.5
+
+ -- jongdong.lee <jongdong.lee@samsung.com>  Tue, 06 Dec 2011 16:49:05 -0800
diff --git a/debian/compat b/debian/compat
new file mode 100755 (executable)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..f312da5
--- /dev/null
@@ -0,0 +1,19 @@
+Source: video-player
+Section: video
+Priority: optional
+Maintainer: JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>, JuBong Lee <jubong@samsung.com>
+Uploaders: JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>, JuBong Lee <jubong@samsung.com>
+Build-Depends: debhelper (>= 5),libelm-dev, libappcore-efl-dev, libui-gadget-dev, libslp-utilx-dev, libmm-common-dev, libmm-player-dev, libmm-sound-dev, dlog-dev, libslp-pm-dev, libmm-session-dev, libmm-ta-dev, libmm-fileinfo-dev, libappcore-common-dev, libmedia-service-dev, libxml2-0, syspopup-caller-dev, libecore, libecore-file, libecore-imf, libecore-x, libecore-input, libecore-evas, libeina, libevas, libedje, libappsvc-dev, libail-0-dev, libefreet-dev, libicu-dev, execstack
+Standards-Version: 3.7.2
+
+Package: org.tizen.video-player
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libappcore-efl-0, libslp-utilx-0, libslp-sensor-0, libmm-common, libmm-player, libmm-log, libmm-ta, libmm-sound-0, libmm-fileinfo, libdlog-0, libmm-session-0, libslp-setting-0, libappcore-efl-0, libui-gadget-0, libmm-utility, libxml2-0, libmedia-service, libpng12-0, libappsvc-0, libail-0, libmedia-utils
+Description: Video & streaming player
+
+Package: org.tizen.video-player-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.video-player (= ${Source-Version})
+Description: Video & streaming player (unstripped)
+
diff --git a/debian/org.tizen.video-player.install b/debian/org.tizen.video-player.install
new file mode 100755 (executable)
index 0000000..eb020fa
--- /dev/null
@@ -0,0 +1,7 @@
+/opt/apps/org.tizen.video-player/bin/*
+/opt/apps/org.tizen.video-player/res/locale/*
+/opt/apps/org.tizen.video-player/res/icons/default/small/*
+/opt/apps/org.tizen.video-player/res/edje/*
+/opt/apps/org.tizen.video-player/res/images/*
+/opt/apps/org.tizen.video-player/data
+/opt/share/applications/*
diff --git a/debian/org.tizen.video-player.install.in b/debian/org.tizen.video-player.install.in
new file mode 100755 (executable)
index 0000000..0ac9b2d
--- /dev/null
@@ -0,0 +1,7 @@
+@PREFIX@/bin/*
+@PREFIX@/res/locale/*
+@PREFIX@/res/icons/default/small/*
+@PREFIX@/res/edje/*
+@PREFIX@/res/images/*
+@PREFIX@/data
+/opt/share/applications/*
diff --git a/debian/org.tizen.video-player.postinst b/debian/org.tizen.video-player.postinst
new file mode 100755 (executable)
index 0000000..1c1810e
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Create a directory to store video-player bookmark pictures and stuffs.
+# mkdir -p /opt/data/video-player
+
+if [ ${USER} == "root" ]
+then
+    #chown 5000:5000 /opt/data/video-player
+    chown -R 5000:5000 /opt/apps/org.tizen.video-player/data
+
+fi
diff --git a/debian/org.tizen.video-player.postinst.in b/debian/org.tizen.video-player.postinst.in
new file mode 100755 (executable)
index 0000000..1c1810e
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Create a directory to store video-player bookmark pictures and stuffs.
+# mkdir -p /opt/data/video-player
+
+if [ ${USER} == "root" ]
+then
+    #chown 5000:5000 /opt/data/video-player
+    chown -R 5000:5000 /opt/apps/org.tizen.video-player/data
+
+fi
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..5097cee
--- /dev/null
@@ -0,0 +1,122 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+CFLAGS += -Wall -g
+LDFLAGS ?= 
+PREFIX ?= /opt/apps/org.tizen.video-player
+RESDIR ?= /opt/apps/org.tizen.video-player/res
+DATADIR ?= /opt/apps/org.tizen.video-player/data
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+CFLAGS += -fpie
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -pie
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX)
+
+       touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+       #docbook-to-man debian/video-player.sgml > video-player.1
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+                cat $$f > $${f%.in}; \
+                sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+                           sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
+                       sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+    done
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+       
+       find ./ -depth -type d -name "CMakeFiles" -exec rm {} -rf \;
+       find ./ -name "Makefile" -exec rm {} -f \;
+       find ./ -name "cmake_install.cmake" -exec rm {} -f \;
+       rm -rf CMakeCache.txt
+       rm -rf install_manifest.txt
+       rm -rf *.pc
+       rm -rf *.so
+       rm -rf org.tizen.video-player.desktop
+       rm -rf res/edc/*.edj
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/video-player.
+       $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+       execstack -c $(CURDIR)/debian/tmp/opt/apps/org.tizen.video-player/bin/video-player
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir=debian/tmp
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+#      dh_strip
+       dh_strip --dbg-package=org.tizen.video-player-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/debian/substvars b/debian/substvars
new file mode 100755 (executable)
index 0000000..5c38c57
--- /dev/null
@@ -0,0 +1 @@
+shlibs:Depends=libdbus-1-0 (>= 1.1.1), libeet1, libeina-svn-04 (>= 0.0.2.062+svn20090910), libelm-svn-01, libembryo0, libglib2.0-0, libgstreamer-plugins-base0.10-0, libgstreamer0.10-0, libimlib2, zlib1g
diff --git a/include/mp-util-media-service.h b/include/mp-util-media-service.h
new file mode 100755 (executable)
index 0000000..7e1028e
--- /dev/null
@@ -0,0 +1,54 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _MP_UTIL_DATABASE_\r
+#define _MP_UTIL_DATABASE_\r
+\r
+\r
+#include "video-player.h"\r
+#include <glib.h>\r
+\r
+void   MpUtilMediaSvcInitSession(void);\r
+void   MpUtilMediaSvcFinishSession(void);\r
+\r
+void   MpUtilMediaSvcDestoryVideoList(void);\r
+bool   MpUtilMediaSvcDestroyItem(char* szFilePath);\r
+\r
+bool   MpUtilMediaSvcGetVideoFileListFromFolder(char* szFilePath, int nSortType);\r
+bool   MpUtilMediaSvcGetVideoFileListFromAllFolderOfGallery(int nSortType);\r
+bool   MpUtilMediaSvcGetVideoFileListByTagName(char* szTagName);\r
+bool   MpUtilMediaSvcGetVideoFileListFromFavorite(int nSortType);\r
+\r
+void   MpUtilMediaSvcMtagIterateDestroyTagList(void);\r
+int    MpUtilMediaSvcMtagGetAllTagList(char* pTagList[]);\r
+\r
+bool   MpUtilMediaSvcMtagAddItemToTag(const char* szTagName, char* szMediaUri);\r
+bool   MpUtilMediaSvcMtagGetItemToFavorite(char* szMediaUri);\r
+bool   MpUtilMediaSvcMtagAddItemToFavorite(char* szMediaUri,bool bFavorite);\r
+char*  MpUtilMediaSvcMitemGetThumbnailUrl(char* szMediaUri);\r
+bool   MpUtilMediaSvcGetPreNextVideoUrl(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri);\r
+\r
+void   MpUtilMediaSvcGetVideoID(const char *szPath, char *szVideoID);\r
+void   MpUtilMediaSvcSaveLastPlayedTime(char* szMediaUri, unsigned int nLastPlayedTime);\r
+\r
+\r
+\r
+#endif // _MP_UTIL_DATABASE_\r
diff --git a/include/mp-util.h b/include/mp-util.h
new file mode 100755 (executable)
index 0000000..3a2b178
--- /dev/null
@@ -0,0 +1,103 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+\r
+#ifndef _MP_UTIL_\r
+#define _MP_UTIL_\r
+\r
+\r
+#include "video-player.h"\r
+\r
+\r
+typedef enum\r
+{\r
+       NORMAL_POPUP_RETURN_TYPE_UNKNOW         = 0,\r
+       NORMAL_POPUP_RETURN_TYPE_YES,\r
+       NORMAL_POPUP_RETURN_TYPE_NO,\r
+       NORMAL_POPUP_RETURN_TYPE_ERR,\r
+}NormalPopUpRetType;\r
+\r
+\r
+void   MpUtilResetForRelaunching(void);\r
+void*  MpUtilCreateMainWindow(const char *pStrName);\r
+void*  MpUtilCreateWindow(const char *pStrName);\r
+int    MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode);\r
+int    MpUtilSetKeyUngrab(const char* szKeyName);\r
+bool   MpUtilCheckRTSPType(char *szUriPath);\r
+int    MpUtilCheckPlayerType(char *szUriPath);\r
+\r
+bool   MpUtilGetURIFromBundle(bundle* pBundleData, VideoAppData* pAppData);\r
+bool   MpUtilGetCookieFromBundle(bundle* pBundleData, VideoAppData* pAppData);\r
+bool   MpUtilGetURIFromAUL(bundle * pBundleData, VideoAppData *pAppData);\r
+\r
+bool   MpUtilCheckLocalFileExist(char *uri);\r
+bool   MpUtilCheckVideoURI(VideoAppData* pAppData);\r
+ bool  MpUtilCheckBatteryStatus(void);\r
+\r
+int    MpUtilBatteryStatusNoti(VideoAppData* pAppData);\r
+int    MpUtilBatteryStatusNotiIgnore(void);\r
+int    MpUtilMMCstatusNoti(VideoAppData* pAppData);\r
+int    MpUtilMMCstatusNotiIgnore(void);\r
+\r
+void   MpUtilLanguageInit(VideoAppData* pAppData);\r
+int    MpUtilCheckStartPositionTime(void* pBundle, char* szBundleKey);\r
+bool   MpUtilCheckLaunchingByMime(void* pBundle, char* szMediaUri);\r
+int    MpUtilCheckLaunchingByOtherApp(void* pBundle, char* szBundleKey);\r
+int    MpUtilCheckSortType(void* pBundle, char* szBundleKey);\r
+int    MpUtilCheckListType(void* pBundle, char* szBundleKey);\r
+bool   MpUtilGetTagNameOfGallery(void* pBundle, char* szBundleKey, char* szTagName);\r
+int    MpUtilCheckDlnaSortType(void* pBundle, char* szBundleKey);\r
+int    MpUtilCheckDlnaMediaID(void* pBundle, char* szBundleKey);\r
+\r
+void   MpUtilInitXML();\r
+void   MpUtilDestroyXML();\r
+char*  MpUtilGetXMLQualityURL(void);\r
+bool   MpUtilIsXMLUrl(char* szMediaUri);\r
+bool   MpUtilParsingXML(char* szMediaUri, VideoAppData* pAppData);\r
+int    MpUtilGetXMLItemCount(void);\r
+\r
+bool   MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle);\r
+void   MpUtilInitSession(void);\r
+void   MpUtilFinishSession(void);\r
+void   MpUtilVolumeTypeSet(void);\r
+void   MpUtilVolumeTypeUnset(void);\r
+void   MpUtilDeletePopupHandle(void);\r
+bool   MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc);\r
+bool   MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc);\r
+bool   MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc);\r
+bool   MpUtilDetailPopup(VideoAppData *pAppData, char *szTitle, void *PopupButtonCallbackFunc);\r
+bool   MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel);\r
+void*  MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bX, bool bY, void *pUserData, char* szButtonStyle, void *func);\r
+int            MpUtilSendFileViaBluetooth(char *szFilepath);\r
+void*  MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName);\r
+bool   MpUtilCheckCallStatus(void);\r
+bool   MpUtilIsConnectEarjack(void);\r
+bool   MpUtilRegisteEarjackCbFunc(void* pEarjackCb, void* pUserData);\r
+int*   MpUtilGetMainWindowXID(void);\r
+void   MpUtilGetUserAgent(VideoAppData* pAppData);\r
+double         MpUtilGetSysTime(void);\r
+void   MpUtilLcdNormalPowerLockForResume(void);\r
+void   MpUtilLcdNormalPowerUnlockForPause(void);\r
+void   MpUtilLcdOffForPowerButton(void);\r
+void   MpUtilMultimediaKeyGrab(void);\r
+void   MpUtilMultimediaKeyUngrab(void);\r
+\r
+#endif // _MP_UTIL_\r
diff --git a/include/mp-video-animation-ctrl.h b/include/mp-video-animation-ctrl.h
new file mode 100755 (executable)
index 0000000..7bc02d6
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _VIDEO_LOADING_ANIMATION_CTRL_\r
+#define  _VIDEO_LOADING_ANIMATION_CTRL_\r
+\r
+\r
+void*  MpVideoAnimationCtrlInit(void* pUserData);\r
+void   MpVideoAnimationCtrlDestroy(void);\r
+void   MpVideoAnimationCtrlSetPercent(int nPercent);\r
+void   MpVideoAnimationCtrlPlay(void);\r
+void   MpVideoAnimationCtrlStop(void);\r
+void   MpVideoAnimationCtrlShow(void);\r
+void   MpVideoAnimationCtrlHide(void);\r
+bool   MpVideoAnimationCtrlGetActiveState(void);\r
+\r
+\r
+#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */\r
+\r
diff --git a/include/mp-video-app-ctrl.h b/include/mp-video-app-ctrl.h
new file mode 100755 (executable)
index 0000000..7209139
--- /dev/null
@@ -0,0 +1,35 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _VIDEO_APP_CTRL_\r
+#define _VIDEO_APP_CTRL_\r
+\r
+\r
+#include "video-player.h"\r
+\r
+\r
+bool   MpVideoAppCtrlInit(VideoAppData* pAppData);\r
+bool   MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData);\r
+bool   MpVideoAppCtrlIsTopView(void* pUserData);\r
+bool   MpVideoAppCtrlIsExistPlayerHandle(void);\r
+\r
+\r
+#endif /* _VIDEO_APP_CTRL_ */\r
diff --git a/include/mp-video-ctrl-mgr.h b/include/mp-video-ctrl-mgr.h
new file mode 100755 (executable)
index 0000000..21b440d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#ifndef _MP_VIDEO_CTRL_MGR_H_
+#define _MP_VIDEO_CTRL_MGR_H_
+
+
+bool   MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pMmfPlayerCallback, void *pOverlayXid, char* szSubtitleUri, void *pUserData);
+void   MpVideoCtrlMgrMediaDestroy(void* pUserData);
+bool   MpVideoCtrlMgrMediaPlay(void* pUserData);
+void   MpVideoCtrlMgrMediaStop(void* pUserData);
+void   MpVideoCtrlMgrMediaPause(void* pUserData);
+void   MpVideoCtrlMgrMediaResume(void* pUserData);
+void   MpVideoCtrlMgrSetOverlayXid(void* pXid);
+void   MpVideoCtrlMgrSetPosition(int nSetPosition);
+int            MpVideoCtrlMgrGetPosition(void);
+int            MpVideoCtrlMgrGetDuration(void);
+void   MpVideoCtrlMgrSetROI(void* pUserData, int nOverlayX, int nOverlayY, int nOverlayWidth, int nOverlayHeight);
+int            MpVideoCtrlMgrGetVideoWidthResolution(void);
+int            MpVideoCtrlMgrGetVideoHeightResolution(void);
+void   MpVideoCtrlMgrSetRatioVideoScreen(void* pUserData, int nRatioScreenSize);
+void   MpVideoCtrlMgrSetVerticalOverlayPos(int nOverlayY);
+void   MpVideoCtrlMgrSetMute(bool bMuteEnable);
+bool   MpVideoCtrlMgrGetMuteState(void);
+int    MpVideoCtrlMgrGetBufferingPosition(void);
+bool   MpVideoCtrlMgrIsExistPlayerHandle(void);
+
+#endif
diff --git a/include/mp-video-display-view.h b/include/mp-video-display-view.h
new file mode 100755 (executable)
index 0000000..86c4c65
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+
+#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;
+
+
+void   MpVideoDisplayViewPush(void* pNaviFrame, void* pShowInfoViewCb, int nLaunchingAppType, void* pUserData);
+void   MpVideoDisplayViewPop(void* pNaviFrame, void* pUserData);
+void   MpVideoDisplayViewDestroy(void* pUserData);
+
+void   MpVideoDisplayViewInitAfterBeginOfStream(void* pUserData);
+void   MpVideoDisplayViewUpdatePauseKey(void);
+void   MpVideoDisplayViewUpdateResumeKey(void);
+void   MpVideoDisplayViewShowControlPanel(void* pUserData);
+void   MpVideoDisplayViewHideControlPanel(void* pUserData);
+void   MpVideoDisplayViewActivate(void);
+void   MpVideoDisplayViewUnactivate(void);
+void   MpVideoDisplayViewHideSoundpath(void);
+void   MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData);
+void   MpVideoDisplayViewUpdateSubtitle(double nDuration, char* szSubtitleString);
+bool   MpVideoDisplayViewIsTopView(void);
+void   MpVideoDisplayViewShowNocontentImage(void);
+void   MpVideoDisplayViewHideNocontentImage(void);
+
+#endif
diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h
new file mode 100755 (executable)
index 0000000..845fbbd
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#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-log.h b/include/mp-video-log.h
new file mode 100755 (executable)
index 0000000..d43b2bc
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_LOG_H_
+#define _VIDEO_LOG_H_
+
+#include <dlog.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+
+#define LOG_TAG "video-player"
+
+#define VideoLogInfoWithTid(fmt,arg...)                        LOGI( "[VP][TID:%d][%s][%d]" fmt "\n", syscall(__NR_gettid), __FUNCTION__, __LINE__, ##arg)
+#define VideoLogInfo(fmt,arg...)                               LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg)
+#define VideoLogDebug(fmt,arg...)                              LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+#define VideoLogWarning(fmt,arg...)                            LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+#define VideoLogError( fmt,arg...)                             LOGD( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg)
+
+ #endif /*_MPVIDEO_LOG_H_*/
diff --git a/include/mp-video-player-mgr.h b/include/mp-video-player-mgr.h
new file mode 100755 (executable)
index 0000000..387996f
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _MP_VIDEO_PLAYER_MGR_H_
+#define _MP_VIDEO_PLAYER_MGR_H_
+
+#include <mm_player.h>
+#include <mm_message.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;
+
+
+bool   MpPlayerMgrIsActive(void);
+
+bool   MpPlayerMgrGetAttrs(MMHandleType* Attrs, MMPlayerAttrsType Type);
+void   MpPlayerMgrSetAttrs(MMHandleType Attrs, MMPlayerAttrsType Type);
+
+void   MpPlayerMgrSetMessageCallback(MMMessageCallback Callback, void* pUserData);
+bool   MpPlayerMgrSetAudioCallback(mm_player_audio_stream_callback CallBack, void* pUserData);
+
+bool   MpPlayerMgrCreate       (const char* szPath);
+bool   MpPlayerMgrDestroy      (void);
+
+bool   MpPlayerMgrRealize      (void);
+bool   MpPlayerMgrUnrealize(void);
+
+bool   MpPlayerMgrPlay         (void);
+bool   MpPlayerMgrStop         (void);
+bool   MpPlayerMgrResume       (void);
+bool   MpPlayerMgrPause        (void);
+
+int    MpPlayerMgrGetPosition(void);
+void   MpPlayerMgrSetPosition(unsigned int nPos);
+
+bool   MpPlayerMgrGetVisible(void);
+void   MpPlayerMgrSetVisible(bool bEnabled);
+
+void   MpPlayerMgrSetMute(bool bMuteEnable);
+bool   MpPlayerMgrGetMute(void);
+bool   MpPlayerMgrSetBtHeadset(bool bEnable, char* szAddress);
+
+int    MpPlayerMgrGetStreamingType(void);
+void   MpPlayerMgrSetProgressiveDownload(int nFileSize);
+void   MpPlayerMgrSetDownloadComplete(void);
+void   MpPlayerMgrSetProgressTimerInterval(int nInterval);
+int    MpPlayerMgrGetPdduration(void);
+int    MpPlayerMgrGetDuration(char* szFilePath);
+bool   MpPlayerMgrSetRatioVideoScreenSize(MpPlayerMgrDisplayMethod ScreenSize);
+bool   MpPlayerMgrSetOverlayXid(void* pOverlayXid);
+bool   MpPlayerMgrSetSoundPriority(void);
+int    MpPlayerMgrGetVideoWidthResolution(void);
+int    MpPlayerMgrGetVideoHeightResolution(void);
+bool   MpPlayerMgrSetSubtitleSilent(bool bSilent);
+bool   MpPlayerMgrSetSubtitle(const char* szSubtitlePath);
+int    MpPlayerMgrSetBluetoothHeadset(char* szBlutoothAddress, int nMode);
+
+int    MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight);
+int    MpPlayerMgrSetVerticalOverlayPos(int nY);
+
+bool   MpPlayerMgrSetUseragentForStreaming(const char* szUserAgent);
+bool   MpPlayerMgrSetProxAddressForStreaming(const char* szProxyAddress);
+bool   MpPlayerMgrSetCookieForStreaming(const char* szCookie);
+
+
+int    MpPlayerMgrGetBufferingPosition(void);
+
+
+#endif
diff --git a/include/mp-video-progressbar.h b/include/mp-video-progressbar.h
new file mode 100755 (executable)
index 0000000..1908626
--- /dev/null
@@ -0,0 +1,34 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_PROGRESS_BAR_CTRL_\r
+#define _VIDEO_PROGRESS_BAR_CTRL_\r
+\r
+\r
+void*  MpVideoProgressbarGetEdjHandle(void);\r
+void*  MpVideoProgressbarInit(void* pUserData);\r
+void   MpVideoProgressbarDestroy(void);\r
+void   MpVideoProgressbarCreateTimer(void* pUserData);\r
+void   MpVideoProgressbarDeleteTimer(void);\r
+void   MpVideoProgressbarUpdateDurationTime(char* szDurationTime);\r
+void   MpVideoProgressbarReset(void* pUserData);\r
+void   MpVideoProgressbarSetSkipEvent(bool bSkip);\r
+\r
+#endif /* _VIDEO_PROGRESS_BAR_CTRL_ */\r
diff --git a/include/mp-video-sound-path-ctrl.h b/include/mp-video-sound-path-ctrl.h
new file mode 100755 (executable)
index 0000000..d884a78
--- /dev/null
@@ -0,0 +1,32 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _MP_VIDEO_SOUND_PATH_\r
+#define _MP_VIDEO_SOUND_PATH_\r
+\r
+\r
+bool   MpVideoSoundpathShow(void* pUserData);\r
+void   MpVideoSoundpathHide(void);\r
+\r
+bool   MpVideoSoundpathIsConnectOtherSoundpath(void);\r
+int            MpVideoSoundpathGetCurrConnectedSoundpath(void);\r
+\r
+#endif // _MP_UTIL_\r
diff --git a/include/mp-video-streaming-ctrl.h b/include/mp-video-streaming-ctrl.h
new file mode 100755 (executable)
index 0000000..ff8781d
--- /dev/null
@@ -0,0 +1,36 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _STREAMING_PLAYER_H_\r
+#define _STREAMING_PLAYER_H_\r
+\r
+\r
+bool   MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress);\r
+bool   MpVideoStreamingCtrlGetProxy(char* szRetProxy);\r
+bool   MpVideoStreamingCtrlIsNetworkOn(void);\r
+int    MpVideoStreamingCtrlGetNetworkStatus(void);\r
+int    MpVideoStreamingCtrlGetWifiState();\r
+int    MpVideoStreamingCtrlGetCellularState();\r
+bool   MpVideoStreamingCtrlInit(void *pUserData);\r
+void   MpVideoStreamingCtrlDestroy(void *pUserData);\r
+\r
+\r
+#endif /* _STREAMING_PLAYER_H_ */\r
diff --git a/include/mp-video-streaming-view.h b/include/mp-video-streaming-view.h
new file mode 100755 (executable)
index 0000000..51f6ce9
--- /dev/null
@@ -0,0 +1,49 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+\r
+#ifndef _VIDEO_STREAMING_VIEW_\r
+#define  _VIDEO_STREAMING_VIEW_\r
+\r
+\r
+typedef enum\r
+{\r
+       MP_STREAMING_VIEW_STATE_ACTIVATE                = 0,\r
+       MP_STREAMING_VIEW_STATE_UNACTIVATE,\r
+       MP_STREAMING_VIEW_STATE_MAX,\r
+}VideoStreamingViewState;\r
+\r
+\r
+void   MpVideoStreamingViewPush(void* pNaviFrame,void* pShowInfoViewCb, void* pUserData);\r
+void   MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData);\r
+void   MpVideoStreamingViewDestroy(void* pUserData);\r
+\r
+void   MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData);\r
+void   MpVideoStreamingViewUpdatePauseKey(void);\r
+void   MpVideoStreamingViewUpdateResumeKey(void);\r
+void   MpVideoStreamingViewShowControlPanel(void* pUserData);\r
+void   MpVideoStreamingViewHideControlPanel(void* pUserData);\r
+void   MpVideoStreamingViewActivate(void);\r
+void   MpVideoStreamingViewUnactivate(void);\r
+void   MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate);\r
+bool   MpVideoStreamingViewGetBufferingState(void);\r
+bool   MpVideoStreamingViewIsTopView(void);\r
+#endif\r
diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h
new file mode 100755 (executable)
index 0000000..1bc8de8
--- /dev/null
@@ -0,0 +1,73 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_STRING_DEFINE_\r
+#define  _VIDEO_STRING_DEFINE_\r
+\r
+\r
+#define        MP_STREAMING_PLAYER_STR                                 "Streaming player"\r
+#define MP_SYS_STRING                                                  "sys_string"\r
+\r
+#define MP_VIDEO_PATH_KEY                                              "path"\r
+#define MP_VIDEO_COOKIE_KEY                                            "cookie"\r
+#define MP_VIDEO_SORT_TYPE_KEY                                 "order_type"\r
+#define MP_VIDEO_LIST_TYPE_KEY                                 "video_list_type"\r
+#define MP_VIDEO_TAG_NAME_KEY                                  "tag_name"\r
+#define MP_VIDEO_SPLIT_VIEW_KEY                                        "split_screen"\r
+#define MP_VIDEO_START_POS_TIME_KEY                            "start_pos_time"\r
+#define MP_VIDEO_LAUNCHING_BY_APP_KEY                  "launching_application"\r
+#define MP_VIDEO_EDIT_MODE_KEY                                 "edit_mode"\r
+\r
+#define MP_VPL_GPS_LATITUDE                            "Latitude"\r
+#define MP_VPL_GPS_LONGITUTD                           "Longitude"\r
+\r
+\r
+// SMTP video player string\r
+#define MP_VPL_CONNECTION_FAIL                                 (dgettext("sys_string", "IDS_COM_POP_CONNECTION_ERROR"))\r
+#define MP_VPL_UNABLE_TO_PLAY_VIDEO                            "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"\r
+#define MP_VPL_HEADER_SHARE_VIDEO_ABB                  "IDS_VPL_HEADER_SHARE_VIDEO_ABB"\r
+#define MP_VPL_OPT_SET_AS                                              "IDS_VPL_OPT_SET_AS"\r
+#define MP_VPL_POP_INVALID_STREAMING_DATA              "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"\r
+#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT            "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"\r
+#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT            "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"\r
+#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE               "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"\r
+#define MP_VIDEO_POPUP_SHARE                                   "IDS_COM_SK4_SHARE"\r
+#define MP_VIDEO_SOUND_PATH                                            "Sound Path"\r
+\r
+// Default system string\r
+#define MP_COM_POP_ERROR                                               "IDS_COM_POP_ERROR"\r
+#define        MP_COM_BODY_LOW_BATTERY                                 "IDS_COM_BODY_LOW_BATTERY"\r
+#define MP_COM_BODY_DELETE                                             "IDS_COM_BODY_DELETE"\r
+#define MP_COM_BODY_BACK                                               "IDS_COM_BODY_BACK"\r
+#define MP_COM_SK_BACK                                                 "IDS_COM_SK_BACK"\r
+#define MP_COM_SK_YES                                                  "IDS_COM_SK_YES"\r
+#define MP_COM_SK_NO                                                   "IDS_COM_SK_NO"\r
+#define MP_COM_BODY_SIZE                                               "IDS_COM_BODY_SIZE"\r
+#define MP_COM_BODY_DETAILS_TITLE                              "IDS_COM_BODY_DETAILS_TITLE"\r
+#define MP_COM_BODY_FORMAT                                             "IDS_COM_BODY_FORMAT"\r
+#define MP_COM_POP_DATE                                                        "IDS_COM_POP_DATE"\r
+#define MP_IDLE_BODY_RESOLUTION                                        "IDS_IDLE_BODY_RESOLUTION"\r
+#define MP_COM_BODY_DETAILS                                            "IDS_COM_BODY_DETAILS"\r
+#define MP_COM_BUTTON_CANCEL                                   "IDS_IDLE_BUTTON_CANCEL"\r
+#define MP_COM_BUTTON_SHARE                                            "IDS_COM_BUTTON_SHARE"\r
+#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"\r
+\r
+\r
+#endif //_VIDEO_STRING_DEFINE_\r
diff --git a/include/mp-video-subtitle-ctrl.h b/include/mp-video-subtitle-ctrl.h
new file mode 100755 (executable)
index 0000000..538e0c1
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#ifndef _MP_VIDEO_SUBTITLE_CTRL_
+#define _MP_VIDEO_SUBTITLE_CTRL_
+
+bool MpVideoSubtitleCtrlInit(void *pUserData);
+void MpVideoSubtitleCtrlDestroy(void);
+bool MpVideoSubtitleCtrlIsExistSubtitle(void);
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath);
+
+#endif                         // _MP_VIDEO_SUBTITLE_CTRL_
diff --git a/include/mp-video-type-define.h b/include/mp-video-type-define.h
new file mode 100755 (executable)
index 0000000..54e30d0
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_TYPE_DEFINE_
+#define  _VIDEO_TYPE_DEFINE_
+
+
+typedef enum
+{
+       MP_LAUNCH_APP_DEFAULT                           = 0,            // For launching by my-file.
+       MP_LAUNCH_APP_GALLERY,
+       MP_LAUNCH_APP_IMAGE_VIEWER,
+       MP_LAUNCH_APP_SIMPLE_VIEW,
+       MP_LAUNCH_APP_MAX,
+}MpLaunchingAppType;
+
+
+typedef enum
+{
+       MP_MEDIA_SORT_BY_NONE                           = 0,
+       MP_MEDIA_SORT_BY_NAME_DESC,
+       MP_MEDIA_SORT_BY_NAME_ASC,
+       MP_MEDIA_SORT_BY_DATE_DESC,
+       MP_MEDIA_SORT_BY_DATE_ASC,
+       MP_MEDIA_SORT_BY_MAX,
+}MpMediaSortType;
+
+
+typedef enum
+{
+       MP_VIDEO_LIST_TYPE_FOLDER                       = 0,
+       MP_VIDEO_LIST_TYPE_ALL_FOLDER_GALLERY,
+       MP_VIDEO_LIST_TYPE_TAG_GALLERY,
+       MP_VIDEO_LIST_TYPE_FAVORITE,
+       MP_VIDEO_LIST_TYPE_MAX,
+}MpVideoListType;
+
+
+typedef enum
+{
+       MP_STREAMING_PLAYER                                     = 0,
+       MP_VIDEO_PLAYER,
+}VideoPlayerType;
+
+
+typedef enum
+{
+       MP_HTTP_STREAMING                                       = 0,
+       MP_RTSP_STREAMING,
+}MpProtocolType;
+
+
+typedef enum
+{
+       MP_DISPLAY_METHOD_LETTER_BOX            = 0,
+       MP_DISPLAY_METHOD_ORIGIN_SIZE,
+       MP_DISPLAY_METHOD_FULL_SCREEN,
+       MP_DISPLAY_METHOD_CROPPED_FULL,
+       MP_DISPLAY_METHOD_CUSTOM_ROI,
+}MpDisplayMethod;
+
+
+typedef enum
+{
+       MP_ORDER_BY_NAME                                        = 0,
+       MP_ORDER_BY_DATE,
+       MP_ORDER_BY_ASCENDING,
+       MP_ORDER_BY_DESENDING,
+       MP_ORDER_BY_MAX,
+}MpFileSortOrder;
+
+
+typedef enum
+{
+       MP_SOUND_PATH_SPEAKER                           = 0,
+       MP_SOUND_PATH_EARJACK,
+       MP_SOUND_PATH_BLUETOOTH,
+       MP_SOUND_PATH_MAX,
+}MpSoundPathType;
+
+
+typedef struct
+{
+       char    szURL                   [STR_LEN_MAX];
+       int             id;
+       int             streaming_type;
+}MpXMLItemInfo;
+
+
+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         = 0,
+       MP_PLAYING_SPEED_2X,
+       MP_PLAYING_SPEED_3X,
+       MP_PLAYING_SPEED_4X,
+       MP_PLAYING_SPEED_5X,
+       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;
+
+
+#endif //_VIDEO_TYPE_DEFINE_
diff --git a/include/mp-video-value-define.h b/include/mp-video-value-define.h
new file mode 100755 (executable)
index 0000000..4ac0c89
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_VALUE_DEFINE_
+#define  _VIDEO_VALUE_DEFINE_
+
+#include <utilX.h>
+
+
+//PLAY_TIME_FORMAT
+#define PLAY_TIME_FORMAT "02u:%02u:%02u"
+
+
+//PLAY_TIME_ARGS
+#define PLAY_TIME_ARGS(t) \
+        (t) / (60 * 60), \
+        ((t) / 60) % 60, \
+        (t) % 60
+
+#define PLAY_TIME_LENGTH 9
+
+
+#define _EDJ(x) elm_layout_edje_get(x)
+
+
+#ifdef PREFIX
+#undef PREFIX
+#endif
+
+#ifdef LOCALEDIR
+#undef LOCALEDIR
+#endif
+
+#define PREFIX                                         "/opt/apps/org.tizen.video-player"
+#define EDJ_PATH                                       "/opt/apps/org.tizen.video-player/res/edje"
+#define LOCALEDIR                                      "/opt/apps/org.tizen.video-player/res/locale"
+
+#define VIDEO_HEAD_ICON_ADD                            PREFIX"/res/images/01_header_icon_add.png"
+#define VIDEO_HEAD_ICON_DEL                            PREFIX"/res/images/01_header_icon_cancel.png"
+#define VIDEO_HEAD_ICON_OTHERS                         PREFIX"/res/images/01_header_icon_others.png"
+
+#define VIDEO_HEAD_ICON_SOUNDPATH                      PREFIX"/res/images/T01_icon_soundPath_h.png"
+
+#define VIDEO_PLAYER_MAIN_EDJ                          EDJ_PATH"/main.edj"
+#define VIDEO_PLAYER_CONTROL_EDJ                       EDJ_PATH"/control.edj"
+#define VIDEO_PLAYER_PANEL_EDJ                         EDJ_PATH"/panel.edj"
+#define VIDEO_PLAYER_PROGRESS_EDJ                      EDJ_PATH"/progress.edj"
+#define VIDEO_PLAYER_ADD_TAG                           EDJ_PATH"/add_tag.edj"
+#define VIDEO_PLAYER_ANIMATION_EDJ                     EDJ_PATH"/animation.edj"
+#define VIDEO_PLAYER_DETAIL_EDJ                                EDJ_PATH"/detail.edj"
+#define VIDEO_PLAYER_SUBTITLE_EDJ                      EDJ_PATH"/subtitle.edj"
+#define VIDEO_CUSTOM_THEME                             EDJ_PATH"/vp-custom-winset-style.edj"
+#define VIDEO_PLAYER_HIDDEN_PANEL_EDJ                  EDJ_PATH"/hidden_button_panel.edj"
+#define VIDEO_PLAYER_OPTION_BUTTON_EDJ                 EDJ_PATH"/option_button.edj"
+
+#define MAIN_EDJ_GROUP                                 "main"
+#define CONTROL_EDJ_GROUP                              "control"
+#define PROGRESS_EDJ_GROUP                             "progress"
+#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 HIDDEN_PANEL_EDJ_GROUP                 "hidden_panel"
+#define OPTION_EDJ_GROUP                               "option"
+
+#define SWALLOW_MAIN_CONTROL                           "main.panel"
+#define SWALLOW_MAIN_ANIMATION                         "main.animation"
+#define SWALLOW_MAIN_HIDDEN_BUTTON                     "main.hidden.button"
+#define SWALLOW_MAIN_OPTION_BUTTON                     "main.option.button"
+
+
+#define SWALLOW_PANEL_CONTROL                          "panel.control"
+#define SWALLOW_PANEL_PROGRESS_BAR                     "panel.progress"
+
+#define SWALLOW_DETAIL_LIST                            "detail.list"
+#define SUBTITLE_TEXT                                  "subtitle.txt"
+#define PART_BUTTON_ICON                               "icon"
+
+
+#define SIGNAL_CONTROL_PART_PLAY_BUTTON                        "control.play.button"
+#define SIGNAL_CONTROL_PART_BACK_BUTTON                        "control.back.button"
+#define SIGNAL_CONTROL_PART_VOL_BUTTON                 "control.volume.button"
+#define SIGNAL_CONTROL_PART_SOUNDPATH_BUTTON           "control.soundpath.button"
+#define SIGNAL_CONTROL_PART_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_HQ_BUTTON                  "control.streaming.hq.button"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH           "hidden.button.panel.soundpath"
+
+#define SIGNAL_CONTROL_MODE_NORMAL                     "signal.control.mode.normal"
+#define SIGNAL_CONTROL_MODE_STREAMING                  "signal.control.mode.streaming"
+#define SIGNAL_CONTROL_MODE_VISIBLE_OFF                        "signal.control.mode.visible.off"
+#define SIGNAL_CONTROL_BACK_BUTTON_DOWN                        "signal.control.back.button.down"
+
+#define SIGNAL_CONTROL_FF_MODE_NORMAL                  "signal.control.ff.normal"
+#define SIGNAL_CONTROL_FF_MODE_EXTEND                  "signal.control.ff.extend"
+
+#define SIGNAL_CONTROL_REW_MODE_NORMAL                 "signal.control.rew.normal"
+#define SIGNAL_CONTROL_REW_MODE_EXTEND                 "signal.control.rew.extend"
+
+#define SIGNAL_CONTROL_VOL_BUTTON_DOWN                 "signal.control.volume.button.down"
+#define SIGNAL_CONTROL_VOL_BUTTON_UP                   "signal.control.volume.button.up"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_DOWN           "signal.control.soundpath.button.down"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UP             "signal.control.soundpath.button.up"
+#define SIGNAL_CONTROL_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_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_HQ_BUTTON_DOWN                  "signal.control.streaming.hq.button.down"
+#define SIGNAL_CONTROL_HQ_BUTTON_UP                    "signal.control.streaming.hq.button.up"
+#define SIGNAL_HIDDEN_PANEL_SOUNDPATH_DOWN             "signal.hidden.button.panel.soundpath.down"
+#define SIGNAL_HIDDEN_PANEL_SOUNDPATH_UP               "signal.hidden.button.panel.soundpath.up"
+
+#define SIGNAL_CONTROL_VOL_BUTTON_MUTE                 "signal.control.volume.button.mute"
+#define SIGNAL_CONTROL_VOL_BUTTON_UNMUTE               "signal.control.volume.button.unmute"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_ACTIVE         "signal.control.soundpath.button.active"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UNACTIVE       "signal.control.soundpath.button.unactive"
+#define SIGNAL_CONTROL_STREAMING_QUALITY_HIGH          "signal.control.streaming.quality.high"
+#define SIGNAL_CONTROL_STREAMING_QUALITY_NORMAL                "signal.control.streaming.quality.normal"
+#define SIGNAL_CONTROL_STREAMING_QUALITY_HIDE          "signal.control.streaming.quality.hide"
+
+
+#define SIGNAL_OPTION_PART_SCREEN_SIZE                 "option.screensize"
+#define SIGNAL_OPTION_PART_DETAIL                      "option.detail"
+
+#define SIGNAL_OPTION_SCREEN_SIZE_DOWN                 "signal.option.screensize.down"
+#define SIGNAL_OPTION_DETAIL_DOWN                      "signal.option.detail.down"
+
+#define SIGNAL_OPTION_SCREEN_SIZE_NORMAL               "signal.option.screensize.normal"
+#define SIGNAL_OPTION_SCREEN_SIZE_EXPAND               "signal.option.screensize.expand"
+
+// Callback signals.
+#define SIGNAL_CONTROL_PLAY_BUTTON_DOWN                        "signal.control.play.button.down"
+#define SIGNAL_CONTROL_PLAY_BUTTON_UP                  "signal.control.play.button.up"
+#define SIGNAL_CONTROL_PLAY_PAUSE_PRESS                        "signal.control.play.pause.press"
+#define SIGNAL_CONTROL_PLAY_RESUME_PRESS               "signal.control.play.resume.press"
+
+// Emit signals.
+#define SIGNAL_CONTROL_PLAY_RESUME                     "signal.control.play.resume"
+#define SIGNAL_CONTROL_PLAY_PAUSE                      "signal.control.play.pause"
+
+#define SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL                "signal.control.screensize.button.normal"
+#define SIGNAL_CONTROL_SCREENSIZE_BUTTON_EXPAND                "signal.control.screensize.button.expand"
+
+#define SIGNAL_OPTION_MODE_STREAMING                           "signal.option.mode.streaming"
+
+
+#define SIGNAL_MAIN_MUTE_SHOW                          "signal.main.mute.show"
+#define SIGNAL_MAIN_MUTE_HIDE                          "signal.main.mute.hide"
+
+#define SIGNAL_MAIN_NOCONTENTS_SHOW                                    "signal.main.nocontents.show"
+#define SIGNAL_MAIN_NOCONTENTS_HIDE                                    "signal.main.nocontents.hide"
+
+#define SIGNAL_MAIN_SCREEN_TOUCH_PRESS                 "signal.main.screen.touch.press"
+#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_MAIN_OPTION_BUTTON_BG_HIDE              "signal.main.option.button.bg.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 TAG_FAVOURITES                                 "Favourites"
+#define PACKAGE                                                "video-player"
+#define PAUSE_KEY                                      "XF86AudioPause"
+#define PLAY_KEY                                       "XF86AudioPlay"
+#define STOP_KEY                                       "XF86AudioStop"
+#define NEXT_KEY                                       "XF86AudioNext"
+#define PREV_KEY                                       "XF86AudioPrev"
+#define FORWARD_KEY                                    "XF86AudioForward"
+#define REWIND_KEY                                     "XF86AudioRewind"
+#define END_KEY                                                KEY_END
+#define HOME_KEY                                       KEY_SELECT
+#define KEY_CANCLE                                     KEY_CANCEL
+#define POWER_KEY                                      "XF86PowerOff"
+#define VOLUME_DOWN_KEY                                        KEY_VOLUMEDOWN
+#define VOLUME_MUTE                                    0
+#define KEY_GRAB_SHARED                                        SHARED_GRAB
+#define KEY_GRAB_EXCLUSIVE                             EXCLUSIVE_GRAB
+#define KEY_GRAB_TOP_POSITION                          TOP_POSITION_GRAB
+#define KEY_GRAB_OR_EXCLUSIVE                          OR_EXCLUSIVE_GRAB
+#define STR_LEN_MAX                                    4096 * 3
+
+#define        XML_ITEM_NUM                                    6
+#define _WIFI_MODE_                                    1
+#define _3G_MODE_                                      2
+#define USE_STREAMING_ANI                              1
+#define LONG_PRESS_INTERVAL                            0.5
+
+#define        SCREEN_TOUCH_TOGGLE_AREA_Y_START                0.065
+#define        SCREEN_TOUCH_TOGGLE_AREA_Y_END                  0.78
+
+#define        TAG_LIST_SIZE                                   256
+
+#define ANIMATION_TIMER_INTERVAL                       0.05
+#define ANIMATION_MAX_COUNT                            30
+
+#define BOOSTER_STEP_DISTANCE                          30
+#define SIGNAL_TEXT_MAX_LEN                            64
+#define CAPTION_TEXT_MAX_LEN                           16
+#define STR_UUID_LEN_MAX                               37
+
+#endif //_VIDEO_VALUE_DEFINE_
diff --git a/include/mp-video-view-ctrl.h b/include/mp-video-view-ctrl.h
new file mode 100755 (executable)
index 0000000..ff5ee18
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_VIEW_CTRL_
+#define  _VIDEO_VIEW_CTRL_
+
+
+
+bool   MpVideoViewCtrlInit(VideoAppData* pAppData);
+void   MpVideoViewCtrlDestroy(void* pUserData);
+void   MpVideoViewCtrlInitAfterBeginOfStream(void*);
+void   MpVideoViewCtrlPause(void* pUserData);
+void   MpVideoViewCtrlResume(void* pUserData);
+void   MpVideoViewShowLayout(void* pUserData);
+void   MpVideoViewHideLayout(void* pUserData);
+void   MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData);
+void   MpVideoViewHideSoundpath(void* pUserData);
+void   MpVideoViewCtrlChangeTitle(void *pUserData);
+void   MpVideoViewCtrlUpdateSubtitle(double nDuration, char* szSubtitleString);
+bool   MpVideoViewCtrlIsTopView(void *pUserData);
+void   MpVideoViewCtrlShowNocontentImage(void);
+void   MpVideoViewCtrlHideNocontentImage(void);
+
+#endif //_VIDEO_VIEW_CTRL_
diff --git a/include/mp-xml-parser.h b/include/mp-xml-parser.h
new file mode 100755 (executable)
index 0000000..b1e033a
--- /dev/null
@@ -0,0 +1,40 @@
+/*\r
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+\r
+#ifndef _MP_XML_PARSER_H_\r
+#define _MP_XML_PARSER_H_\r
+\r
+\r
+#include <stdio.h>\r
+#include <stdbool.h>\r
+\r
+\r
+\r
+void mp_xml_init();\r
+void mp_xml_destroy();\r
+\r
+unsigned int mp_read_xml_file(const char *file_name, char **data);\r
+ bool mp_get_url_from_xml(const char *content, int length, char **streamer_url, int mode);\r
+char *mp_get_title_from_xml(const char *file_name);\r
+int mp_get_xmlitem(const char *content, int length, MpXMLItemInfo *item,int *nHttpCount, int *nRtspCount);\r
+\r
+#endif\r
diff --git a/include/video-player.h b/include/video-player.h
new file mode 100755 (executable)
index 0000000..65c68fd
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __VIDEO_PLAYER__
+#define         __VIDEO_PLAYER__
+
+#include <stdbool.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+
+
+typedef struct _VideoAppData           VideoAppData;
+
+
+typedef struct
+{
+       void (*VideoAppCtrlStart)                               (VideoAppData* pAppData);
+       void (*VideoAppCtrlStop)                                (VideoAppData* pAppData);
+       void (*VideoAppCtrlPause)                               (VideoAppData* pAppData);
+       void (*VideoAppCtrlResume)                              (VideoAppData* pAppData);
+       void (*VideoAppCtrlStopByAppPause)              (VideoAppData* pAppData);
+       void (*VideoAppCtrlStartByAppResume)    (VideoAppData* pAppData);
+       void (*VideoAppCtrlFFDown)                              (VideoAppData* pAppData);
+       void (*VideoAppCtrlRewDown)                             (VideoAppData* pAppData);
+       void (*VideoAppCtrlFFUp)                                (VideoAppData* pAppData);
+       void (*VideoAppCtrlRewUp)                               (VideoAppData* pAppData);
+       void (*VideoAppCtrlSetMute)                             (VideoAppData* pAppData);
+       void (*VideoAppCtrlSetScreenType)               (VideoAppData* pAppData);
+       void (*VideoAppCtrlSetScreenSize)               (VideoAppData* pAppData, int nScreenSize);
+       void (*VideoAppCtrlGetPosition)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlSetPosition)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlHideLayout)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlShowLayout)                  (VideoAppData* pAppData);
+       void (*VideoAppCtrlGetVideoResolution)  (VideoAppData* pAppData);
+       void (*VideoAppCtrlReqDurationTime)             (VideoAppData* pAppData);
+       void (*VideoAppCtrlChangeResolution)    (VideoAppData* pAppData);
+       void (*VideoAppCtrlBeginOfStream)               (VideoAppData* pAppData);
+       void (*VideoAppCtrlEndOfStream)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlExit)                                (VideoAppData* pAppData);
+       void (*VideoAppCtrlStartStreaming)              (VideoAppData* pAppData);
+       void (*VideoAppCtrlReLaunching)                 (VideoAppData* pAppData);
+       void (*VideoAppCtrlPlayPreMedia)                (VideoAppData* pAppData);
+       void (*VideoAppCtrlPlayNextMedia)               (VideoAppData* pAppData);
+       void (*VideoAppCtrlGetBufferingPosition)(VideoAppData* pAppData);
+}VideoAppCtrlFunc;
+
+
+struct _VideoAppData
+{
+       bool                            bIsMute;
+
+       int                                     nDuration;
+       int                                     nSetPosition;
+       int                                     nCurPosition;
+       int                                     nSubtitleDuration;
+       int                                     nBufferingPosition;
+
+       int                                     nVideoWidthResolution;
+       int                                     nVideoHeightResolution;
+
+       char                            szSubtitle[STR_LEN_MAX];
+       char                            szVideoTitle[STR_LEN_MAX];
+
+       char                            szMediaUri[STR_LEN_MAX];
+       char                            szPreMediaUri[STR_LEN_MAX];
+       char                            szNextMediaUri[STR_LEN_MAX];
+       char                            szTagNameForVideoList[STR_LEN_MAX];
+
+       Evas_Object*            pMainWindow;
+
+       MpPlayerState           nPrePlayerState;
+       MpPlayerState           nCurPlayerState;
+       MpLaunchingAppType      nLaunchingAppType;
+       MpMediaSortType         nVideoSortType;
+       MpVideoListType         nVideoListType;
+       VideoPlayerType         nCurPlayerType;
+       VideoAppCtrlFunc        VideoAppCtrlCallbackFunc;
+
+       char                            szProxyAddress[STR_LEN_MAX];
+       char                            szUserAgent[STR_LEN_MAX];
+       char                            szCookie[STR_LEN_MAX];
+
+       int                                     nDlnaMediaID;
+       int                                     nDlnaSortType;
+};
+
+#endif //__VIDEO_PLAYER__
diff --git a/org.tizen.video-player.desktop.in b/org.tizen.video-player.desktop.in
new file mode 100755 (executable)
index 0000000..aa65757
--- /dev/null
@@ -0,0 +1,14 @@
+Name=Video player
+Name[en_US]=Video player
+Name[ko_KR]=비디오 플레이어
+Type=Application
+Exec=/opt/apps/org.tizen.video-player/bin/video-player
+nodisplay=True
+removable=false
+Comment=video-player
+Version=0.1
+Icon=org.tizen.video-player.png
+MimeType=video/mp4; video/3gp; video/x-msvideo; video/x-ms-wmv; video/x-ms-asf; video/3gpp; video/x-matroska; video/vnd.ms-playready.media.pyv; application/vnd.apple.mpegurl; application/x-mpegurl; audio/x-mpegurl; video/x-mpegurl; video/x-flv; video/ogg
+x-tizen-taskManage=true
+x-tizen-multiple=false
+x-tizen-svc=http://tizen.org/appsvc/operation/view|NULL|video/*; http://tizen.org/appsvc/operation/view|http|video/*;
diff --git a/packaging/org.tizen.video-player.spec b/packaging/org.tizen.video-player.spec
new file mode 100755 (executable)
index 0000000..349276c
--- /dev/null
@@ -0,0 +1,67 @@
+Name:       org.tizen.video-player
+Summary:    Video & streaming player
+Version:       0.1.5
+Release:    1
+Group:      TO_BE/FILLED_IN
+License:    Samsung
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(ui-gadget)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(mm-common)
+BuildRequires: pkgconfig(mm-player)
+BuildRequires: pkgconfig(mm-sound)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(pmapi)
+BuildRequires: pkgconfig(mm-session)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(mm-ta)
+BuildRequires: pkgconfig(mm-fileinfo)
+BuildRequires: pkgconfig(appcore-common)
+BuildRequires: pkgconfig(libmedia-service)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(ail)
+BuildRequires: pkgconfig(efreet-mime)
+
+
+BuildRequires: cmake
+BuildRequires: gettext-tools
+BuildRequires: edje-tools
+BuildRequires: prelink
+BuildRequires: libicu-devel
+
+%description
+Video & streaming player
+
+
+%prep
+%setup -q
+
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX=/opt/apps/org.tizen.video-player
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+
+%make_install
+execstack -c %{buildroot}/opt/apps/org.tizen.video-player/bin/video-player
+
+%post
+chown -R 5000:5000 %dir /opt/apps/org.tizen.video-player/data
+
+%files -n org.tizen.video-player
+/opt/apps/org.tizen.video-player/bin/*
+/opt/apps/org.tizen.video-player/res/locale/*
+/opt/apps/org.tizen.video-player/res/icons/default/small/*
+/opt/apps/org.tizen.video-player/res/edje/*
+/opt/apps/org.tizen.video-player/res/images/*
+/opt/share/applications/*
diff --git a/res/edc/add_tag.edc b/res/edc/add_tag.edc
new file mode 100755 (executable)
index 0000000..17caa29
--- /dev/null
@@ -0,0 +1,366 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+collections {
+       group {
+               name: "favorite";
+               parts {
+                       part {
+                               name: "background";
+                               type, RECT;
+                               mouse_events: 0;
+                               description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; }
+                               rel2 { relative: 1.0 1.0; offset: -1 -1; }
+                               color, 0 0 0 255 ;
+                           }
+                       }
+
+                       part {
+                               name: "selectall_bg";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 80;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "background"; }
+                                       rel2 { relative: 1.0 0.0; to: "background"; }
+                                       visible : 0;
+                                       color: 37 37 37 153;
+                                       visible : 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+               part {
+                       name: "selectall_check_leftpadding";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 15 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+
+                               color: 0 0 0 255;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; to: "selectall_bg"; }
+                               rel2 { relative: 0.0 1.0; to: "selectall_bg"; }
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               part {
+                       name: "selectall_check";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               fixed: 1 1;
+                               min: 44 44;
+                               rel1 { relative: 1.0 0.0; to: "selectall_check_leftpadding"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_check_leftpadding"; }
+                               visible : 0;
+
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "selectall_check_rightpadding";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 15 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               rel1 { relative: 1.0 0.0; to: "selectall_check"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_check"; }
+                                visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "selectall_text";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               rel1 { relative: 1.0 0.0; to: "selectall_check_rightpadding"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_bg"; }
+                               color: 255 255 255 255;
+                               text {
+                                       font: "SLP";
+                                       size: 32;
+                                       text: "Select all";
+                                       align: 0.0 0.5;
+                               }
+                               visible: 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "selectall_inner";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+
+                       description {
+                               state: "defalut" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 1.0; to: "selectall_bg"; }
+                               rel2 { relative: 1.0 1.0; to: "selectall_bg"; }
+                               color: 90 90 90 0;
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+
+               // tab style container
+               part {
+                       name: "elm.swallow.tabbar";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+
+               // tool style container.
+               part {
+                       name: "elm.swallow.toolbar_bg";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 50;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; offset: 0 50;}
+
+                       }
+               }
+
+               // tool style container.
+               part {
+                       name: "elm.swallow.toolbar";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               //min: 0 76;
+                               min: 0 86;
+                               fixed: 1 1;
+                               align: 0.5 1.0;
+                               rel1 { relative: 0.0 1.0;}
+                               rel2 { relative: 1.0 1.0;}
+
+                       }
+                       description {
+                               state: "moveup" 0.0;
+                               //min: 0 86;
+                               min: 0 50;
+                               fixed: 1 1;
+                               //align: 0.5 1.0;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 5 0;}
+                               rel2 { relative: 1.0 0.0; offset: -5 50;}
+
+                       }
+                       description {
+                               state: "moveup_progressbar" 0.0;
+                               min: 0 62;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 0.0; offset: 0 62;}
+
+                       }
+               }
+
+               // view container. This is used, when tool items is added.
+               part {
+                       name: "elm.swallow.view";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";}
+
+                       }
+                       description {
+                               state: "edit_default" 0.0;
+                               rel1 { relative: 0.0 1.0; to: "selectall_inner"; }
+                               rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";}
+
+                       }
+                       description {
+                               state: "moveup_toolbar" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "elm.swallow.toolbar_bg";}
+                               rel2 { relative: 1.0 1.0; }
+                       }
+                       description {
+                               state: "moveup_toolbar_progressbar" 0.0;
+                               rel1 { relative: 0.0 1.0; to: "elm.swallow.toolbar";}
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                       name: "view_bg";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description {
+                       state: "default" 0.0;
+                       rel1 { relative: 0.0 0.0; offset: 0 0; to: "elm.swallow.view";}
+                       rel2 { relative: 1.0 1.0; offset: 0 0; to: "elm.swallow.view";}
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                inherit: "default" 0.0;
+                               visible: 0;
+            }
+               }
+       }//GROUP
+
+       programs {
+               program {
+                       name: "swallow_view_default";
+                       signal: "elm,swallow_view,state,default";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.swallow.view", "default", 0.0);
+                               set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position
+                       }
+               }
+               program {
+                       name: "swallow_view_edit_default";
+                       signal: "elm,swallow_view,state,edit_default";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.swallow.view", "edit_default", 0.0);
+                               set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position
+                       }
+               }
+               program {
+                       name: "swallow_view_moveup_toolbar";
+                       signal: "elm,swallow_view,state,moveup_toolbar";
+                       source: "elm";
+                       script {
+                               set_state(PART:"elm.swallow.toolbar", "moveup", 0.0); //move toolbar up
+                               set_state(PART:"elm.swallow.view", "moveup_toolbar", 0.0);
+                       }
+               }
+               program {
+                       name: "swallow_view_moveup_toolbar_progressbar";
+                       signal: "elm,swallow_view,state,moveup_toolbar_progressbar";
+                       source: "elm";
+                       script {
+                   set_state(PART:"elm.swallow.toolbar", "moveup_progressbar", 0.0); //move toolbar+progressbar up
+                               set_state(PART:"elm.swallow.view", "moveup_toolbar_progressbar", 0.0);
+                       }
+               }
+               program {
+                       name: "view_bg_default";
+                       signal: "elm,view,bg,state,default";
+                       source: "elm";
+                       script {
+                               set_state(PART:"view_bg", "default", 0.0);
+                       }
+               }
+               program {
+                       name: "view_bg_disable";
+                       signal: "elm,view,bg,state,disabled";
+                       source: "elm";
+                       script {
+                               set_state(PART:"view_bg", "disabled", 0.0);
+                       }
+               }
+               program {
+                       name: "selectall_show";
+                       signal: "selectall_show";
+                       source: "elm";
+                       action: STATE_SET "visible" 0.0;
+                       target: "selectall_bg";
+                       target: "selectall_check_leftpadding";
+                       target: "selectall_check";
+                       target: "selectall_check_rightpadding";
+                       target: "selectall_text";
+                       target: "selectall_inner";
+               }
+               program {
+                       name: "selectall_hide";
+                       signal: "selectall_hide";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "selectall_bg";
+                       target: "selectall_check_leftpadding";
+                       target: "selectall_check";
+                       target: "selectall_check_rightpadding";
+                       target: "selectall_text";
+                       target: "selectall_inner";
+               }
+       }//PROGRAMS
+} /* collections */
diff --git a/res/edc/animation.edc b/res/edc/animation.edc
new file mode 100755 (executable)
index 0000000..c66681d
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#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_NANE;
+                                               size: 32;
+                                               text: "";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+
+                       }
+                       part {
+                               name: "loading.image";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 138 138;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5;}
+                                       rel2 { relative: 0.5 0.5;}
+                                       image { normal: "gallery_loading_ani_01.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_01.png"; }
+                               }
+                               description {
+                                       state: "step_1" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_01.png"; }
+                               }
+                               description {
+                                       state: "step_2" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_02.png"; }
+                               }
+                               description {
+                                       state: "step_3" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_03.png"; }
+                               }
+                               description {
+                                       state: "step_4" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_04.png"; }
+                               }
+                               description {
+                                       state: "step_5" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_05.png"; }
+                               }
+                               description {
+                                       state: "step_6" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_06.png"; }
+                               }
+                               description {
+                                       state: "step_7" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_07.png"; }
+                               }
+                               description {
+                                       state: "step_8" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_08.png"; }
+                               }
+                               description {
+                                       state: "step_9" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_09.png"; }
+                               }
+                               description {
+                                       state: "step_10" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_10.png"; }
+                               }
+                               description {
+                                       state: "step_11" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_11.png"; }
+                               }
+                               description {
+                                       state: "step_12" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_12.png"; }
+                               }
+                               description {
+                                       state: "step_13" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_13.png"; }
+                               }
+                               description {
+                                       state: "step_14" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_14.png"; }
+                               }description {
+                                       state: "step_15" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_15.png"; }
+                               }
+                               description {
+                                       state: "step_16" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_16.png"; }
+                               }
+                               description {
+                                       state: "step_17" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_17.png"; }
+                               }
+                               description {
+                                       state: "step_18" 0.0;
+                                       inherit: "show" 0.0;
+                                       image { normal: "gallery_loading_ani_18.png"; }
+                               }
+                               description {
+                                       state: "step_19" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_19.png"; }
+                               }
+                               description {
+                                       state: "step_20" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_20.png"; }
+                               }
+                               description {
+                                       state: "step_21" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_21.png"; }
+                               }
+                               description {
+                                       state: "step_22" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_22.png"; }
+                               }
+                               description {
+                                       state: "step_23" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_23.png"; }
+                               }
+                               description {
+                                       state: "step_24" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_24.png"; }
+                               }
+                               description {
+                                       state: "step_25" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_25.png"; }
+                               }
+                               description {
+                                       state: "step_26" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_26.png"; }
+                               }
+                               description {
+                                       state: "step_27" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_27.png"; }
+                               }
+                               description {
+                                       state: "step_28" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_28.png"; }
+                               }
+                               description {
+                                       state: "step_29" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_29.png"; }
+                               }
+                               description {
+                                       state: "step_30" 0.0;
+                                       inherit: "show" 0.0;
+                                       visible: 1;
+                                       image { normal: "gallery_loading_ani_30.png"; }
+                               }
+
+                               description {
+                                       state: "step_0" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+               }       /* parts */
+               programs {
+                       CONTROL_BUTTON_STEP( "loading.image", 0);
+                       CONTROL_BUTTON_STEP( "loading.image", 1);
+                       CONTROL_BUTTON_STEP( "loading.image", 2);
+                       CONTROL_BUTTON_STEP( "loading.image", 3);
+                       CONTROL_BUTTON_STEP( "loading.image", 4);
+                       CONTROL_BUTTON_STEP( "loading.image", 5);
+                       CONTROL_BUTTON_STEP( "loading.image", 6);
+                       CONTROL_BUTTON_STEP( "loading.image", 7);
+                       CONTROL_BUTTON_STEP( "loading.image", 8);
+                       CONTROL_BUTTON_STEP( "loading.image", 9);
+                       CONTROL_BUTTON_STEP( "loading.image", 10);
+                       CONTROL_BUTTON_STEP( "loading.image", 11);
+                       CONTROL_BUTTON_STEP( "loading.image", 12);
+                       CONTROL_BUTTON_STEP( "loading.image", 13);
+                       CONTROL_BUTTON_STEP( "loading.image", 14);
+                       CONTROL_BUTTON_STEP( "loading.image", 15);
+                       CONTROL_BUTTON_STEP( "loading.image", 16);
+                       CONTROL_BUTTON_STEP( "loading.image", 17);
+                       CONTROL_BUTTON_STEP( "loading.image", 18);
+                       CONTROL_BUTTON_STEP( "loading.image", 19);
+                       CONTROL_BUTTON_STEP( "loading.image", 20);
+                       CONTROL_BUTTON_STEP( "loading.image", 21);
+                       CONTROL_BUTTON_STEP( "loading.image", 22);
+                       CONTROL_BUTTON_STEP( "loading.image", 23);
+                       CONTROL_BUTTON_STEP( "loading.image", 24);
+                       CONTROL_BUTTON_STEP( "loading.image", 25);
+                       CONTROL_BUTTON_STEP( "loading.image", 26);
+                       CONTROL_BUTTON_STEP( "loading.image", 27);
+                       CONTROL_BUTTON_STEP( "loading.image", 28);
+                       CONTROL_BUTTON_STEP( "loading.image", 29);
+                       CONTROL_BUTTON_STEP( "loading.image", 30);
+
+               }       /* programs */
+       }       /* group */
+}      /* collections */
diff --git a/res/edc/control.edc b/res/edc/control.edc
new file mode 100755 (executable)
index 0000000..27f68fe
--- /dev/null
@@ -0,0 +1,727 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define BUTTON_PRESS_COLOR     240 123 20 255
+
+#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_ , _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_; }                                                   \
+               rel2 { relative: _rel_x2_ _rel_y2_; }                                                   \
+               image { normal: _img_def_; border: 4 4 0 0;}                            \
+               color: 255 255 255 255;                                                                 \
+       }                                                                                                               \
+       description {                                                                                           \
+               state: "pressed" 0.0;                                                                   \
+               min: _w_ _h_;                                                                                   \
+               fixed: 1 1;                                                                                     \
+               align: _align_x_ _align_y_;                                                             \
+               rel1 { relative: _rel_x1_ _rel_y1_; }                                                   \
+               rel2 { relative: _rel_x2_ _rel_y2_; }                                                   \
+               image { normal: _img_press_; border: 4 4 0 0;}                  \
+               color: 255 255 255 255;                                                                 \
+       }                                                                                                               \
+       description {                                                                                           \
+               state: "hide" 0.0;                                                                              \
+               inherit: "default" 0.0;                                                                         \
+               visible: 0;                                                                                     \
+       }                                                                                                               \
+}      /* CONTROL_BUTTON_PRESS_PART */
+
+
+
+/* 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: "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: streaming */
+                       public val_ff_mode = 0;                 /* 0: normal, 1: extend */
+                       public val_rew_mode = 0;                /* 0: normal, 1: extend */
+
+                       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) {           /* streaming mode */
+                                       run_program(PROGRAM:"set.mode.streaming");
+                               }
+                       }       /* 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 */
+
+                       public change_ff_mode() {
+                               if(get_int(val_ff_mode ) == 0) {
+                                       run_program(PROGRAM:"set.ff.normal.mode");
+                               }
+                               else {
+                                       run_program(PROGRAM:"set.ff.extend.mode");
+                               }
+
+                       }       /* change_ff_mode */
+
+                       public change_rew_mode() {
+                               if(get_int(val_rew_mode ) == 0) {
+                                       run_program(PROGRAM:"set.rew.normal.mode");
+                               }
+                               else {
+                                       run_program(PROGRAM:"set.rew.extend.mode");
+                               }
+                       }       /* change_rew_mode */
+
+                       public check_ff_press() {
+                               if(get_int(val_ff_mode ) == 0) {
+                                       run_program(PROGRAM:"set.ff.normal.press");
+                               }
+                               else {
+                                       run_program(PROGRAM:"set.ff.extend.press");
+                               }
+
+                       }       /* check_ff_press */
+
+                       public check_rew_press() {
+                               if(get_int(val_rew_mode ) == 0) {
+                                       run_program(PROGRAM:"set.rew.normal.press");
+                               }
+                               else {
+                                       run_program(PROGRAM:"set.rew.extend.press");
+                               }
+                       }       /* check_rew_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;
+                               }
+                       }
+
+                       CONTROL_BUTTON_PRESS_PART("control.back.button.bg", 74 ,74, 1.0, 0.0, 1.0, 1.0, 0.15625, 0.15625, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+                       part {
+                               name: "control.back.button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5; to: "control.back.button.bg"; }
+                                       rel2 { relative: 0.5 0.5; to: "control.back.button.bg"; }
+                                       image { normal: "T01_back.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       CONTROL_BUTTON_PRESS_PART("control.volume.button.bg", 74 ,74, 0.0, 0.0, 0.0, 0.0, 0.15625, 0.15625, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+                       part {
+                               name: "control.volume.button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+                                       rel2 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+                                       image { normal: "gallery_video_icon_volume.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "mute" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+                                       rel2 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+                                       image { normal: "gallery_video_icon_mute.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "control.play.button";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 80 80;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.5 0.2205; }
+                                       rel2 { relative: 0.5 0.2205; }
+                                       image { normal: "gallery_video_control_play.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "pause" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "gallery_video_control_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: "gallery_video_control_play.png"; }
+                                       color: BUTTON_PRESS_COLOR;
+                               }
+                               description {
+                                       state: "press_pause" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "gallery_video_control_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: 80 80;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.3 0.2205; }
+                                       rel2 { relative: 0.3 0.2205; }
+                                       image { normal: "gallery_video_control_rew.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "extend" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "gallery_video_control_prev.png"; }
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: BUTTON_PRESS_COLOR;
+                               }
+                               description {
+                                       state: "pressed.extend" 0.0;
+                                       inherit: "extend" 0.0;
+                                       color: BUTTON_PRESS_COLOR;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "control.normal.ff.button";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 80 80;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.7 0.2205; }
+                                       rel2 { relative: 0.7 0.2205; }
+                                       image { normal: "gallery_video_control_ff.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "extend" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "gallery_video_control_next.png"; }
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: BUTTON_PRESS_COLOR;
+                               }
+                               description {
+                                       state: "pressed.extend" 0.0;
+                                       inherit: "extend" 0.0;
+                                       color: BUTTON_PRESS_COLOR;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       /* <-- normal 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.streaming";
+                               source: "*";
+                               script {
+                                       set_int(val_display_mode, 1);
+                                       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.back.button.bg";
+                               target: "control.volume.button";
+                               target: "control.volume.button.bg";
+                               target: "control.normal.rew.button";
+                               target: "control.normal.ff.button";
+                       }
+
+                       program {
+                               name: "set.mode.normal";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+
+                               target: "control.play.button";
+                               target: "control.back.button";
+                               target: "control.back.button.bg";
+                               target: "control.volume.button";
+                               target: "control.volume.button.bg";
+                               target: "control.normal.rew.button";
+                               target: "control.normal.ff.button";
+                       }
+
+                       program {
+                               name: "set.mode.streaming";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+
+                               target: "control.play.button";
+                               target: "control.back.button";
+                               target: "control.back.button.bg";
+                               target: "control.volume.button";
+                               target: "control.volume.button.bg";
+                       }
+
+                       program {
+                               signal: "signal.control.back.button.down";
+                               source: "control.back.button";
+                               script: { set_state(PART:"control.back.button.bg", "pressed", 0.0); }
+                       }
+
+                       program {
+                               signal: "signal.control.back.button.up";
+                               source: "control.back.button";
+                               script: { set_state(PART:"control.back.button.bg", "default", 0.0); }
+                       }
+
+                       program {
+                               name: "control.volume.button.bg.press";
+                               source: "control.volume.button";
+                               signal: "signal.control.volume.button.down";
+                               script: {
+                                               set_state(PART:"control.volume.button.bg", "pressed", 0.0);
+                                               set_volume_check();
+                               }
+                       }
+
+                       program {
+                               name: "control.volume.button.bg.up";
+                               source: "control.volume.button";
+                               signal: "signal.control.volume.button.up";
+                               script: {
+                                               set_state(PART:"control.volume.button.bg", "default", 0.0);
+                                               set_volume_check();
+                               }
+                       }
+
+                       program {
+                               name: "control.normal.rew.button.press";
+                               source: "control.normal.rew.button";
+                               signal: "signal.control.normal.rew.button.down";
+                               script: {
+                                               check_rew_press();
+                               }
+                       }
+
+                       program {
+                               name: "control.normal.ff.button.press";
+                               source: "control.normal.ff.button";
+                               signal: "signal.control.normal.ff.button.down";
+                               script: {
+                                               check_ff_press();
+                               }
+                       }
+
+                       program {
+                               name: "control.normal.rew.button.up";
+                               source: "control.normal.rew.button";
+                               signal: "signal.control.normal.rew.button.up";
+                               script: {
+                                               change_rew_mode();
+                               }
+                       }
+
+                       program {
+                               name: "control.normal.ff.button.up";
+                               source: "control.normal.ff.button";
+                               signal: "signal.control.normal.ff.button.up";
+                               script: {
+                                               change_ff_mode();
+                               }
+                       }
+
+
+                       /* --> 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 {
+                               name: "set.ff.normal.mode";
+                               action: STATE_SET "default" 0.0;
+                               target: "control.normal.ff.button";
+                       }
+
+                       program {
+                               name: "set.rew.normal.mode";
+                               action: STATE_SET "default" 0.0;
+                               target: "control.normal.rew.button";
+                       }
+
+                       program {
+                               name: "set.ff.extend.mode";
+                               action: STATE_SET "extend" 0.0;
+                               target: "control.normal.ff.button";
+                       }
+
+                       program {
+                               name: "set.rew.extend.mode";
+                               action: STATE_SET "extend" 0.0;
+                               target: "control.normal.rew.button";
+                       }
+
+                       program {
+                               name: "set.ff.normal.press";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "control.normal.ff.button";
+                       }
+
+                       program {
+                               name: "set.rew.normal.press";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "control.normal.rew.button";
+                       }
+
+                       program {
+                               name: "set.ff.extend.press";
+                               action: STATE_SET "pressed.extend" 0.0;
+                               target: "control.normal.ff.button";
+                       }
+
+                       program {
+                               name: "set.rew.extend.press";
+                               action: STATE_SET "pressed.extend" 0.0;
+                               target: "control.normal.rew.button";
+                       }
+
+                       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 {
+                               signal: "signal.control.ff.normal";
+                               source: "*";
+                               script {
+                                       set_int(val_ff_mode, 0);
+                                       change_ff_mode();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.control.ff.extend";
+                               source: "*";
+                               script {
+                                       set_int(val_ff_mode, 1);
+                                       change_ff_mode();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.control.rew.normal";
+                               source: "*";
+                               script {
+                                       set_int(val_rew_mode, 0);
+                                       change_rew_mode();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.control.rew.extend";
+                               source: "*";
+                               script {
+                                       set_int(val_rew_mode, 1);
+                                       change_rew_mode();
+                               }
+                       }
+
+                       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";
+                       }
+                       /* <-- play status part */
+
+                       /* -->common control prog */
+                       CONTROL_BUTTON_PROG("control.play.button");
+                       CONTROL_BUTTON_PROG("control.back.button");
+                       CONTROL_BUTTON_PROG("control.volume.button");
+                       /* <-- common control prog */
+
+                       /* -->normal mode prog */
+                       CONTROL_BUTTON_PROG("control.normal.ff.button");
+                       CONTROL_BUTTON_PROG("control.normal.rew.button");
+
+                       /* <-- normal mode prog */
+               }       /*programs */
+       } /* group */
+} /* collections */
+
diff --git a/res/edc/detail.edc b/res/edc/detail.edc
new file mode 100755 (executable)
index 0000000..b26514d
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#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 */
diff --git a/res/edc/hidden_button_panel.edc b/res/edc/hidden_button_panel.edc
new file mode 100755 (executable)
index 0000000..f9fba57
--- /dev/null
@@ -0,0 +1,293 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#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: "hidden_panel";
+
+               script {
+                       public val_quality_select = 1;  /* 0: normal, 1: high */
+                       public set_quality_check() {
+                               if(get_int(val_quality_select ) == 0) {
+                                       run_program(PROGRAM:"set.streaming.quality.normal");
+                               }
+                               if(get_int(val_quality_select ) == 1) {
+                                       run_program(PROGRAM:"set.streaming.quality.high");
+                               }
+                               if(get_int(val_quality_select ) == 2) {
+                                       run_program(PROGRAM:"set.streaming.quality.hide");
+                               }
+                       }
+               } /* scrpit */
+
+               parts {
+                       part {
+                               name: "hidden.button.panel.soundpath";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 72 72;
+                                       fixed: 1 1;
+                                       align: 0.0 0.5;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 0.0 0.0;}
+                                       color: 255 255 255 255;
+                                       image { normal: "T01_icon_soundPath.png"; }
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: "T01_icon_soundPath_press.png"; }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "control.streaming.hq.button.bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 72 72;
+                                       fixed: 1 1;
+                                       align: 1.0 0.5;
+                                       rel1 { relative: 1.0 0.0; }
+                                       rel2 { relative: 1.0 0.0; }
+                                       image { normal: "T01_controller_btn_press.png"; border: 4 4 0 0;}
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       visible: 1;
+                                       min: 72 72;
+                                       fixed: 1 1;
+                                       align: 1.0 0.5;
+                                       rel1 { relative: 1.0 0.0; }
+                                       rel2 { relative: 1.0 0.0; }
+                                       image { normal: "T01_controller_btn.png"; border: 4 4 0 0;}
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+
+                       part {
+                               name: "control.streaming.hq.txt";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255;
+                                       visible: 1;
+                                       min: 72 72;
+                                       fixed: 1 1;
+                                       align: 1.0 0.5;
+                                       rel1 { relative: 1.0 0.0; }
+                                       rel2 { relative: 1.0 0.0; }
+                                       text {
+                                               font: FONT_NANE;
+                                               size: 26;
+                                               text:  "HQ";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "control.streaming.hq.button";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 48 48;
+                                       fixed: 1 1;
+                                       align: 1.0 0.5;
+                                       rel1 { relative: 1.0 0.0;}
+                                       rel2 { relative: 1.0 0.0;}
+                                       color: 255 255 255 0;
+                               }
+                               description {
+                                       state: "normal" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+               } /* parts */
+
+               programs {
+                       program {
+                               name: "hidden.button.panel.soundpath.pressed";
+                               source: "hidden.button.panel.soundpath";
+                               signal: "mouse,down,1";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "hidden.button.panel.soundpath";
+                               after: "send.hidden.button.panel.soundpath.down.signal";
+                       }
+
+                       program {
+                               name: "send.hidden.button.panel.soundpath.down.signal";
+                               action: SIGNAL_EMIT "signal.hidden.button.panel.soundpath.down" "hidden.button.panel.soundpath";
+                       }
+
+                       program {
+                               name: "hidden.button.panel.soundpath.clicked";
+                               source: "hidden.button.panel.soundpath";
+                               signal: "mouse,up,1";
+                               action: STATE_SET "default" 0.0;
+                               target: "hidden.button.panel.soundpath";
+                               after: "send.hidden.button.panel.soundpath.up.signal";
+                       }
+
+                       program {
+                               name: "send.hidden.button.panel.soundpath.up.signal";
+                               action: SIGNAL_EMIT "signal.hidden.button.panel.soundpath.up" "hidden.button.panel.soundpath";
+                       }
+
+                       program {
+                               signal: "signal.hidden.button.panel.soundpath.show";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "hidden.button.panel.soundpath";
+                       }
+
+                       program {
+                               signal: "signal.hidden.button.panel.soundpath.hide";
+                               source: "*";
+                               action: STATE_SET "hide" 0.0;
+                               target: "hidden.button.panel.soundpath";
+                       }
+
+                       program {
+                               signal: "signal.control.streaming.quality.high";
+                               source: "*";
+                               script {
+                                       set_int(val_quality_select, 1);
+                                       set_quality_check();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.control.streaming.quality.normal";
+                               source: "*";
+                               script {
+                                       set_int(val_quality_select, 0);
+                                       set_quality_check();
+                               }
+                       }
+
+                       program {
+                               signal: "signal.control.streaming.quality.hide";
+                               source: "*";
+                               script {
+                                       set_int(val_quality_select, 2);
+                                       set_quality_check();
+                               }
+                       }
+
+                       program {
+                               name: "set.streaming.quality.high";
+                               action: STATE_SET "default" 0.0;
+                               target: "control.streaming.hq.button.bg";
+                               target: "control.streaming.hq.txt";
+                               target: "control.streaming.hq.button";
+                       }
+
+                       program {
+                               name: "set.streaming.quality.normal";
+                               action: STATE_SET "normal" 0.0;
+                               target: "control.streaming.hq.button.bg";
+                               target: "control.streaming.hq.txt";
+                               target: "control.streaming.hq.button";
+                       }
+
+                       program {
+                               name: "set.streaming.quality.hide";
+                               action: STATE_SET "hide" 0.0;
+                               target: "control.streaming.hq.button.bg";
+                               target: "control.streaming.hq.txt";
+                               target: "control.streaming.hq.button";
+                       }
+
+                       CONTROL_BUTTON_PROG("control.streaming.hq.button");
+               } /* programs */
+       } /* group */
+} /* collections */
diff --git a/res/edc/image_res.edc b/res/edc/image_res.edc
new file mode 100755 (executable)
index 0000000..dc225cf
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+images {
+       image: "gallery_video_player_bg.png" COMP;
+       image: "gallery_video_popup_mute.png" COMP;
+       image: "gallery_video_control_pause.png" COMP;
+       image: "gallery_video_control_play.png" COMP;
+       image: "gallery_video_control_next.png" COMP;
+       image: "gallery_video_control_prev.png" COMP;
+       image: "gallery_video_control_rew.png" COMP;
+       image: "gallery_video_control_ff.png" COMP;
+       image: "gallery_video_icon_volume.png" COMP;
+       image: "gallery_video_icon_mute.png" COMP;
+       image: "gallery_video_icon_btn.png" COMP;
+       image: "gallery_video_icon_btn_press.png" COMP;
+       image: "gallery_video_control_frame_back.png" COMP;
+       image: "gallery_video_control_frame_forword.png" COMP;
+       image: "gallery_video_add_btn.png" COMP;
+       image: "gallery_video_add_btn_press.png" COMP;
+       image: "gallery_video_delete_btn.png" COMP;
+       image: "gallery_video_delete_btn_press.png" COMP;
+       image: "T01_sound_path.png" COMP;
+       image: "video_sound_path_dim.png" COMP;
+       image: "T01_player_progress_point.png" COMP;
+       image: "T01_player_progress_bar.png" COMP;
+       image: "T01_player_progress_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: "navibar_item_separator_shadow.png" COMP;
+       image: "T01_control_top_arrow.png" COMP;
+       image: "T01_control_top_bg.png" COMP;
+       image: "T01_Option_header_bt_press.png" COMP;
+       image: "T01_Option_header_bt.png" COMP;
+       image: "T01_toolbar_bg.png" COMP;
+       image: "T01_toolbar_press.png" COMP;
+       image: "T01_icon_reduce.png" COMP;
+       image: "T01_icon_expand.png" COMP;
+       image: "T01_icon_soundPath.png" COMP;
+       image: "T01_icon_soundPath_press.png" COMP;
+       image: "T01_controller_btn.png" COMP;
+       image: "T01_controller_btn_press.png" COMP;
+       image: "00_winset_control_top_arrow.png" COMP;
+       image: "naviframe_optionheader.png" COMP;
+       image: "naviframe_optionheader_arrow.png" COMP;
+       image: "T01_btn_prev.png" COMP;
+       image: "00_button_01_normal.png" COMP;
+       image: "00_button_01_normal_press.png" COMP;
+       image: "00_button_01_normal_dim.png" COMP;
+       image: "T01_control_icon_fullscreen.png" COMP;
+       image: "T01_control_icon_detail.png" COMP;
+       image: "T01_controlbar_icon_cancel.png" COMP;
+       image: "T01_control_icon_reduce.png" COMP;
+       image: "T01_Nocontents_multimedia.png" COMP;
+       image: "T01_back.png" COMP;
+}
+
diff --git a/res/edc/main.edc b/res/edc/main.edc
new file mode 100755 (executable)
index 0000000..7fc04b7
--- /dev/null
@@ -0,0 +1,311 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define GRAY_RECT_COLOR                        128 128 128 128
+
+
+#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.screen.touch";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.065; }
+                                       rel2 { relative: 1.0 0.78; }
+                                       color: 255 255 255 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.mute.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.mute.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: "gallery_video_popup_mute.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       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.option.button.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 96;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 0.0; }
+                                       color: 37 37 37 64;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.option.button";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 96;
+                                       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;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "main.hidden.button";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 112;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.0277 0.0; to_y: "main.panel";}
+                                       rel2 { relative: 0.9723 0.0; to_y: "main.panel";}
+                               }
+                               description {
+                                       state: "hide" 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 266;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.0 1.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                               }
+                       }
+
+
+
+                       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;
+                               }
+                       }
+               } /* parts */
+
+               programs {
+                       program {
+                               name: "signal.main.screen.touch";
+                               source: "main.screen.touch";
+                               signal: "mouse,up,1";
+                               action: SIGNAL_EMIT "signal.main.screen.touch.press" "main.screen.touch.toggle";
+                       }
+
+                       program {
+                               signal: "signal.main.mute.show";
+                               source: "*";
+                                action: STATE_SET "show" 0.0;
+                                target: "main.mute.image";
+                                target: "main.mute.bg";
+                       }
+
+                       program {
+                               signal: "signal.main.mute.hide";
+                               source: "*";
+                                action: STATE_SET "default" 0.0;
+                                target: "main.mute.image";
+                                target: "main.mute.bg";
+                       }
+
+                       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.animation.show";
+                               source: "*";
+                                action: STATE_SET "show" 0.0;
+                                target: "main.animation";
+                       }
+                       program {
+                               signal: "signal.main.animation.hide";
+                               source: "*";
+                                action: STATE_SET "default" 0.0;
+                                target: "main.animation";
+                       }
+                       program {
+                               signal: "signal.main.option.button.bg.hide";
+                               source: "*";
+                                action: STATE_SET "hide" 0.0;
+                                target: "main.option.button.bg";
+                       }
+               }       /* programs */
+       }       /* group */
+} /* collections */
diff --git a/res/edc/option_button.edc b/res/edc/option_button.edc
new file mode 100755 (executable)
index 0000000..1a6af55
--- /dev/null
@@ -0,0 +1,234 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _img_def_ , _img_press_ )    \
+part {                                                                                                                 \
+       name: _name_;                                                                                   \
+       type: IMAGE;                                                                                            \
+       scale: 1;                                                                                                       \
+       mouse_events: 1;                                                                                        \
+       description {                                                                                           \
+               state: "default" 0.0;                                                                   \
+               min: _w_ _h_;                                                                                   \
+               fixed: 1 1;                                                                                     \
+               visible: 0;                                                                                             \
+               align: _align_x_ _align_y_;                                                             \
+               rel1 { relative: _rel_x1_ _rel_y1_; }                                                   \
+               rel2 { relative: _rel_x2_ _rel_y2_; }                                                   \
+               image { normal: _img_def_; border: 4 4 0 0;}                            \
+               color: 255 255 255 255;                                                                 \
+       }                                                                                                               \
+       description {                                                                                           \
+               state: "pressed" 0.0;                                                                   \
+               visible: 1;                                                                                             \
+               min: _w_ _h_;                                                                                   \
+               fixed: 1 1;                                                                                     \
+               align: _align_x_ _align_y_;                                                             \
+               rel1 { relative: _rel_x1_ _rel_y1_; }                                                   \
+               rel2 { relative: _rel_x2_ _rel_y2_; }                                                   \
+               image { normal: _img_press_; border: 4 4 0 0;}                  \
+               color: 255 255 255 255;                                                                 \
+       }                                                                                                               \
+       description {                                                                                           \
+               state: "hide" 0.0;                                                                              \
+               inherit: "default" 0.0;                                                                         \
+               visible: 0;                                                                                     \
+       }                                                                                                               \
+}      /* CONTROL_BUTTON_PRESS_PART */
+
+
+#define CONTROL_BUTTON_PROG(_item_name_)                                       \
+program {                                                                                                      \
+       name: _item_name_".pressed";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,down,1";                                                                         \
+       action: STATE_SET "pressed" 0.0;                                                        \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".down.signal";                                                \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: _item_name_".clicked";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,up,1";                                                                           \
+       action: STATE_SET "default" 0.0;                                                                \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".up.signal";                                          \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".down.signal";                                                 \
+       action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_;    \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".up.signal";                                           \
+       action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_;      \
+} /* CONTROL_BUTTON_PROG */
+
+
+collections {
+       group {
+               name: "option";
+
+               script {
+                       public val_screensize_check = 0;        /* 0: reduce, 1: full */
+
+                       public change_screensize() {
+                               if(get_int(val_screensize_check) == 0) {
+                                       set_int(val_screensize_check, 1);
+                                       set_state(PART:"option.screensize", "reduce", 0.0);
+                                       run_program(PROGRAM:"send.screensize.expand");
+                               } else {
+                                       set_int(val_screensize_check, 0);
+                                       set_state(PART:"option.screensize", "default", 0.0);
+                                       run_program(PROGRAM:"send.screensize.normal");
+                               }
+                       }
+
+               }
+
+               parts {
+                       part {
+                               name: "option.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 255 255 255 0;
+                               }
+                       }
+
+                       CONTROL_BUTTON_PRESS_PART("option.screensize.button.bg", 74 ,74, 0.0, 0.0, 0.05, 0.05, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+                       part {
+                               name: "option.screensize";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.05 0.114; }
+                                       rel2 { relative: 0.05 0.114; }
+                                       image { normal: "T01_control_icon_fullscreen.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "reduce" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: "T01_control_icon_reduce.png"; }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       CONTROL_BUTTON_PRESS_PART("option.detail.button.bg", 74 ,74, 1.0, 0.0, 0.95, 0.95, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+                       part {
+                               name: "option.detail";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 1.0 0.0;
+                                       rel1 { relative: 0.95 0.114; }
+                                       rel2 { relative: 0.95 0.114; }
+                                       image { normal: "T01_control_icon_detail.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       programs {
+                               CONTROL_BUTTON_PROG("option.screensize");
+                               CONTROL_BUTTON_PROG("option.detail");
+
+                               program {
+                                       signal: "signal.option.screensize.down";
+                                       source: "*";
+                                       action: STATE_SET "pressed" 0.0;
+                                       target: "option.screensize.button.bg";
+                               }
+
+                               program {
+                                       signal: "signal.option.screensize.up";
+                                       source: "*";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "option.screensize.button.bg";
+                                       after: "option.screensize.change";
+                               }
+
+                               program {
+                                       name: "option.screensize.change";
+                                       script: { change_screensize(); }
+                               }
+
+                               program {
+                                       name: "send.screensize.normal";
+                                       action: SIGNAL_EMIT "signal.option.screensize.normal" "option.screensize";
+                               }
+
+                               program {
+                                       name: "send.screensize.expand";
+                                       action: SIGNAL_EMIT "signal.option.screensize.expand" "option.screensize";
+                               }
+
+                               program {
+                                       signal: "signal.option.detail.down";
+                                       source: "*";
+                                       action: STATE_SET "pressed" 0.0;
+                                       target: "option.detail.button.bg";
+                               }
+
+                               program {
+                                       signal: "signal.option.detail.up";
+                                       source: "*";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "option.detail.button.bg";
+                               }
+
+                               program {
+                                       signal: "signal.option.mode.streaming";
+                                       source: "*";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "option.detail";
+                                       target: "option.detail.button.bg";
+                               }
+                       } //programs
+               } //parts
+       } //group
+} //collections
diff --git a/res/edc/panel.edc b/res/edc/panel.edc
new file mode 100755 (executable)
index 0000000..54989eb
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define LINE_RECT_COLOR                73 73 73 255
+
+collections {
+       group {
+               name: "panel";
+
+               parts {
+                       part {
+                               name: "panel.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+                       part {
+                               name: "panel.progress";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 129;
+                                       fixed: 0 1;
+                                       align: 0.5 0.0;
+                                       color: 255 0 0 255;
+                                       rel1 { relative: 0.05 0.0;}
+                                       rel2 { relative: 0.95 0.0;}
+                               }
+                       }
+                       part {
+                               name: "panel.line";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 3;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.05 0.0; to_y: "panel.control";}
+                                       rel2 { relative: 0.95 0.0; to_y: "panel.control";}
+                                       color: LINE_RECT_COLOR;
+                               }
+                       }
+                       part {
+                               name: "panel.control";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 136;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 { relative: 0.03 1.0;}
+                                       rel2 { relative: 0.97 1.0;}
+                               }
+                       }
+               } /* parts */
+       }       /* group */
+} /* collections */
diff --git a/res/edc/progress.edc b/res/edc/progress.edc
new file mode 100755 (executable)
index 0000000..1a9f1a3
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+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.bg";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 16;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.4174;}
+                                       rel2 { relative: 1.0 0.4174;}
+                                       color: 255 255 255 255;
+                                       image { normal: "T01_player_progress_bg.png"; }
+                               }
+                       }
+                       part {
+                               name: "progress.buffer.bar";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 16;
+                                       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 16;
+                                       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: "T01_player_progress_bar.png";}
+                               }
+                       }
+                       part { name: "progress.buffering";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 18 16;
+                                       fixed: 1 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: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 18 16;
+                                       fixed: 1 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;
+                                       image { normal: "T01_player_progress_point.png";}
+                               }
+                       }
+
+                       part { name: "progress.playing";
+                               type: RECT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       visible: 1;
+                                       state: "default" 0.0;
+                                       color: 255 255 255 0;
+                                       min: 18 16;
+                                       fixed: 1 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.txt.played";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 180 65;
+                                       fixed: 1 1;
+                                       align: 0.0 1.0;
+                                       rel1 { relative: 0.0 0.7985; }
+                                       rel2 { relative: 1.0 0.7985; }
+                                       color: FONT_START_COLOR;
+                                       text { font: FONT_NANE;
+                                               size: 25;
+                                               text: "00:00:00";
+                                               align: 0.0 1.0;
+                                       }
+                               }
+                       }
+
+                       part { name: "progress.txt.total";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 180 65;
+                                       fixed: 1 1;
+                                       align: 1.0 1.0;
+                                       rel1 { relative: 0.0 0.7985; }
+                                       rel2 { relative: 1.0 0.7985; }
+                                       color: FONT_END_COLOR;
+                                       text { font: FONT_NANE;
+                                               size: 25;
+                                               text: "--:--:--";
+                                               align: 1.0 1.0;
+                                       }
+                               }
+                       }
+               }       /* parts */
+       } /* group */
+} /* collections */
+
diff --git a/res/edc/subtitle.edc b/res/edc/subtitle.edc
new file mode 100755 (executable)
index 0000000..70ba6ae
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "vp_font.edc"
+#define SUBTITLE_W 400
+#define SUBTITLE_H 100
+
+
+
+collections {
+       group {
+               name: "subtitle";
+
+               parts {
+                       part {
+                               name: "subtitle.txt";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: SUBTITLE_W SUBTITLE_H;
+                                       color: FONT_COLOR;
+                                       color3: 0 0 0 255;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.5; offset: 0 0; }
+                                       rel2 { relative: 1.0 0.7; offset: 0 0; }
+                                       text {
+                                               text_class: "list_line1";
+                                               font: FONT_NANE;
+                                               size: TITLE_FONT_SIZE;
+                                               text:  "";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+               } /* parts */
+       } /* group */
+} /* collections */
diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc
new file mode 100755 (executable)
index 0000000..504c4de
--- /dev/null
@@ -0,0 +1,1089 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#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-controlbar.edc b/res/edc/vp-controlbar.edc
new file mode 100755 (executable)
index 0000000..280ac41
--- /dev/null
@@ -0,0 +1,775 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#define CONTROLBAR_LARGE_H             78
+#define CONTROLBAR_LARGE_LANDSCAPE_H           62
+#define CONTROLBAR_SMALL_H             65
+#define CONTROLBAR_SMALL_LANDSCAPE_H           50
+#define CONTROLBAR_W                   78
+
+#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 22 22 22 255
+#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 63 63 63 255
+
+
+       group{
+               name: "elm/controlbar/base/video/default";
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_image";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "large" 0.0;
+                                       min: 0 CONTROLBAR_LARGE_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "small" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "left" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 0.0 0.5;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 0.0 1.0; offset: 0 -1;}
+                               }
+                               description{
+                                       state: "right" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.5;
+                                       rel1 {relative: 1.0 0.0; offset: -1 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.items";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_image";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_image";}
+                               }
+                       }
+               }
+               programs{
+                       program{
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "large";
+                               signal: "elm,state,large";
+                               source: "elm";
+                               action: STATE_SET "large" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "small";
+                               signal: "elm,state,small";
+                               source: "elm";
+                               action: STATE_SET "small" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "left";
+                               signal: "elm,state,left";
+                               source: "elm";
+                               action: STATE_SET "left" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "right";
+                               signal: "elm,state,right";
+                               source: "elm";
+                               action: STATE_SET "right" 0.0;
+                               target: "bg_image";
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/background/video/default";
+               images{
+                       image: "T01_toolbar_bg.png" COMP;
+               }
+               parts{
+                       part{
+                               name: "bg_image";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       image.normal: "T01_toolbar_bg.png";
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       programs {
+                               program {
+                                       name: "tabbar_bg";
+                                       signal: "elm,state,tabbar";
+                                       source: "elm";
+                                       action: STATE_SET "tabbar" 0.0;
+                                       target: "bg_image";
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/view/video/default";
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               mouse_events:1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.view";
+                               type: SWALLOW;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_rect";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_rect";}
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/item_bg/video/default";
+               images{
+                       image: "T01_toolbar_press.png" COMP;
+               }
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_H;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_img";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "toolbar_pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {relative: 0.0 0.07; offset: 3 0;}
+                                       rel2 {relative: 1.0 0.93; offset: -3 0;}
+                                       image.normal: "T01_toolbar_press.png";
+                                       image.border: 2 2 2 2;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "left_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 5;}
+                                       rel2 {relative: 0.0 1.0; offset: 1 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "right_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 1.0 0.0; offset: -1 5;}
+                                       rel2 {relative: 1.0 1.0; offset: 0 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "top_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 5 0;}
+                                       rel2 {relative: 1.0 0.0; offset: -5 1;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "bottom_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 1.0; offset: 5 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -5 0;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "item";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {to: "bg_rect";}
+                                       rel2 {to: "bg_rect";}
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "toolbar_pressed";
+                               signal: "elm,state,toolbar_pressed";
+                               source: "elm";
+                               action: STATE_SET "toolbar_pressed" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unselected";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unpressed";
+                               signal: "elm,state,unpressed";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "left_line_show";
+                               signal: "elm,state,left_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "left_line_hide";
+                               signal: "elm,state,left_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "right_line_show";
+                               signal: "elm,state,right_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "right_line_hide";
+                               signal: "elm,state,right_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "top_line_show";
+                               signal: "elm,state,top_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "top_line_hide";
+                               signal: "elm,state,top_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "bottom_line_show";
+                               signal: "elm,state,bottom_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "bottom_line";
+                       }
+                       program {
+                               name: "bottom_line_hide";
+                               signal: "elm,state,bottom_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bottom_line";
+                       }
+               }
+       }
+
+
+       group{
+               name: "elm/controlbar/base/video/landscape/default";
+
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_image";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "large" 0.0;
+                                       min: 0 CONTROLBAR_LARGE_LANDSCAPE_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "small" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_LANDSCAPE_H;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {relative: 0.0 1.0; offset: 0 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "left" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 0.0 0.5;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 0.0 1.0; offset: 0 -1;}
+                               }
+                               description{
+                                       state: "right" 0.0;
+                                       min: CONTROLBAR_W 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.5;
+                                       rel1 {relative: 1.0 0.0; offset: -1 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.items";
+                               type: SWALLOW;
+                               scale: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_image";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_image";}
+                               }
+                       }
+               }
+               programs{
+                       program{
+                               name: "default";
+                               signal: "elm,state,default";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "large";
+                               signal: "elm,state,large";
+                               source: "elm";
+                               action: STATE_SET "large" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "small";
+                               signal: "elm,state,small";
+                               source: "elm";
+                               action: STATE_SET "small" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "left";
+                               signal: "elm,state,left";
+                               source: "elm";
+                               action: STATE_SET "left" 0.0;
+                               target: "bg_image";
+                       }
+                       program{
+                               name: "right";
+                               signal: "elm,state,right";
+                               source: "elm";
+                               action: STATE_SET "right" 0.0;
+                               target: "bg_image";
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/background/video/landscape/default";
+
+               images{
+                       image: "T01_toolbar_bg.png" COMP;
+               }
+
+               parts{
+                       part{
+                               name: "bg_image";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events:0;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       image.normal: "T01_toolbar_bg.png";
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       programs {
+                               program {
+                                       name: "tabbar_bg";
+                                       signal: "elm,state,tabbar";
+                                       source: "elm";
+                                       action: STATE_SET "tabbar" 0.0;
+                                       target: "bg_image";
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/view/video/landscape/default";
+
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               mouse_events:1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "elm.swallow.view";
+                               type: SWALLOW;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "bg_rect";}
+                                       rel2 {relative: 1.0 1.0; to: "bg_rect";}
+                               }
+                       }
+               }
+       }
+
+       group{
+               name: "elm/controlbar/item_bg/video/landscape/default";
+               images{
+                       image: "T01_toolbar_press.png" COMP;
+               }
+
+               parts{
+                       part{
+                               name: "bg_rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       min: 0 CONTROLBAR_SMALL_LANDSCAPE_H;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "bg_img";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 {relative: 1.0 1.0; offset: -1 -1;}
+                               }
+                               description{
+                                       state: "toolbar_pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {relative: 0.0 0.07; offset: 3 0;}
+                                       rel2 {relative: 1.0 0.93; offset: -3 0;}
+                                       image.normal: "T01_toolbar_press.png";
+                                       image.border: 2 2 2 2;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "left_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 0 5;}
+                                       rel2 {relative: 0.0 1.0; offset: 1 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "right_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 1.0 0.0; offset: -1 5;}
+                                       rel2 {relative: 1.0 1.0; offset: 0 -3;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "top_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 0.0; offset: 5 0;}
+                                       rel2 {relative: 1.0 0.0; offset: -5 1;}
+                                       color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "bottom_line";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description{
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 {relative: 0.0 1.0; offset: 5 -1;}
+                                       rel2 {relative: 1.0 1.0; offset: -5 0;}
+                                       color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+                               }
+                               description{
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "item";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description{
+                                       state: "default" 0.0;
+                                       rel1 {to: "bg_rect";}
+                                       rel2 {to: "bg_rect";}
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "toolbar_pressed";
+                               signal: "elm,state,toolbar_pressed";
+                               source: "elm";
+                               action: STATE_SET "toolbar_pressed" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unselected";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "unpressed";
+                               signal: "elm,state,unpressed";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bg_img";
+                       }
+                       program {
+                               name: "left_line_show";
+                               signal: "elm,state,left_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "left_line_hide";
+                               signal: "elm,state,left_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "left_line";
+                       }
+                       program {
+                               name: "right_line_show";
+                               signal: "elm,state,right_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "right_line_hide";
+                               signal: "elm,state,right_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "right_line";
+                       }
+                       program {
+                               name: "top_line_show";
+                               signal: "elm,state,top_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "top_line_hide";
+                               signal: "elm,state,top_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "top_line";
+                       }
+                       program {
+                               name: "bottom_line_show";
+                               signal: "elm,state,bottom_line_show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "bottom_line";
+                       }
+                       program {
+                               name: "bottom_line_hide";
+                               signal: "elm,state,bottom_line_hide";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bottom_line";
+                       }
+               }
+       }
+
diff --git a/res/edc/vp-custom-winset-style.edc b/res/edc/vp-custom-winset-style.edc
new file mode 100755 (executable)
index 0000000..55dd0e3
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "image_res.edc"
+
+collections {
+       #include "vp-button.edc"
+       #include "vp-controlbar.edc"
+       #include "vp-naviframe.edc"
+}
diff --git a/res/edc/vp-naviframe.edc b/res/edc/vp-naviframe.edc
new file mode 100755 (executable)
index 0000000..12adf39
--- /dev/null
@@ -0,0 +1,4260 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#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_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_PADDING_INC 5
+#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 31 31 31 255
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 235 236 237 255         //#define NAVIFRAME_TITLE_TEXT_COLOR_INC 255 255 255 255
+#define NAVIFRAME_TITLE_BG_COLOR_INC 92 92 92 255              //#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 255
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+#define CONTROLBAR_WIDTH_INC 122
+
+#define NAVIFRAME_TEXT_PADDING_INC 144
+#define NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 278
+#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.3
+
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+
+   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;
+      }
+      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: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            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; }
+            }
+            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;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to_x: "elm.swallow.content";
+               rel1.to_y: "title_clip";
+               rel1.relative: 0 1;
+               rel2.to_x: "elm.swallow.content";
+               rel2.to_y: "title_clip";
+               visible: 0;
+            }
+            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_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_clip"; }
+               rel2 { to: "optionheader_clip"; }
+               image { normal: "naviframe_optionheader.png";
+                  border: 0 0 4 0;
+               }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: "elm.swallow.optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: 1 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to_y: "optionheader_bg";
+               rel1.relative: 0 1;
+            }
+         }
+         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_clip";
+            }
+           description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 1.0;
+               rel2.relative: 0.0 0.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 1.0;
+               rel2.relative: 2.0 0.0;
+            }
+         }
+         part { name: "title_base";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "title_clip"; }
+               rel2 { to: "title_clip"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+         }
+         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_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               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: "elm.swallow.left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               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: "elm.swallow.right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_more_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: 0.0 0.0; to: "elm.swallow.more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+               visible: 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_base"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+               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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "icon_visible" 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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_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";
+                  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;
+               rel1.to: "padding_center_text1";
+               rel1.relative: 1 0;
+               rel2.to: "padding_center_text2";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               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;
+             description { state: "default" 0.0;
+                rel1 { to: "title_base"; }
+                rel2 { to: "title_base"; }
+             }
+         }
+         part { name: "elm.swallow.left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "padding_before_left_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_before_left_btn";
+               rel2.relative: 1 1;
+            }
+         }
+         part { name: "elm.swallow.right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_after_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_after_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_before_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_before_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         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;
+               rel1.to: "elm.swallow.more_btn";
+               rel1.relative: 0 1;
+               rel2.to: "elm.swallow.more_btn";
+               rel2.relative: 1 1;
+               image {
+                  normal: "naviframe_optionheader_arrow.png";
+               }
+               visible: 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+               }
+            }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "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: "elm.swallow.content";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_clip", "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_clip", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_clip";
+            target: "optionheader_clip";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+         }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,elm.swallow.more_btn,show";
+            source: "elm";
+            action: STATE_SET "more_button" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,elm.swallow.more_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            action: STATE_SET "icon_visible" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,elm.swallow.optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,elm.swallow.optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name:"elm/naviframe/item/video/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
+      }
+      parts {
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            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; }
+            }
+            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;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to_x: "elm.swallow.content";
+               rel1.to_y: "title_clip";
+               rel1.relative: 0 1;
+               rel2.to_x: "elm.swallow.content";
+               rel2.to_y: "title_clip";
+               visible: 0;
+            }
+            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_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_clip"; }
+               rel2 { to: "optionheader_clip"; }
+               image { normal: "naviframe_optionheader.png";
+                  border: 0 0 4 0;
+               }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: "elm.swallow.optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: "elm.swallow.optionheader.mid.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.optionheader2";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.swallow.optionheader.bottom.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader2"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to_y: "optionheader_bg";
+               rel1.relative: 0 1;
+            }
+         }
+         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_clip";
+            }
+           description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 1.0;
+               rel2.relative: 0.0 0.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 1.0;
+               rel2.relative: 2.0 0.0;
+            }
+         }
+         part { name: "title_base";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "title_clip"; }
+               rel2 { to: "title_clip"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+         }
+         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_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               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: "elm.swallow.left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               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: "elm.swallow.right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+               visible: 0;
+            }
+            description { state: "more_btn" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+         }
+         }
+         part { name: "padding_before_more_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: 0.0 0.0; to: "elm.swallow.more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+               visible: 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_base"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+               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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "icon_visible" 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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_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";
+                  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;
+               rel1.to: "padding_center_text1";
+               rel1.relative: 1 0;
+               rel2.to: "padding_center_text2";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               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;
+             description { state: "default" 0.0;
+                rel1 { to: "title_base"; }
+                rel2 { to: "title_base"; }
+             }
+         }
+         part { name: "elm.swallow.left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "padding_before_left_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_before_left_btn";
+               rel2.relative: 1 1;
+            }
+         }
+         part { name: "elm.swallow.right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_after_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_after_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_before_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_before_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         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;
+               rel1.to: "elm.swallow.more_btn";
+               rel1.relative: 0 1;
+               rel2.to: "elm.swallow.more_btn";
+               rel2.relative: 1 1;
+               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_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "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: "elm.swallow.content";
+         }
+         program { name: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_clip", "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_clip", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_clip";
+            target: "optionheader_clip";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+         }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,elm.swallow.more_btn,show";
+            source: "elm";
+            action: STATE_SET "more_button" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,elm.swallow.more_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.more_btn";
+            target: "padding_before_right_btn";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            action: STATE_SET "icon_visible" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,elm.swallow.optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,elm.swallow.optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name: "elm/naviframe/item/video/segment/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            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; }
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to_y: "title_clip";
+               rel1.relative: 0 1;
+            }
+         }
+         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_clip";
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_clip";
+            }
+           description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 1.0;
+               rel2.relative: 0.0 0.0;
+           }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 1.0;
+               rel2.relative: 2.0 0.0;
+            }
+         }
+         part { name: "title_base";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "title_clip"; }
+               rel2 { to: "title_clip"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+         }
+         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_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               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: "elm.swallow.left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               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: "elm.swallow.right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+               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";
+                  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: 0 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;
+             description { state: "default" 0.0;
+                rel1 { to: "title_base"; }
+                rel2 { to: "title_base"; }
+             }
+         }
+         part { name: "elm.swallow.left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               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";
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "elm.swallow.right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               align: 1 0;
+               fixed: 1 0;
+               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";
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "elm.swallow.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: "elm.swallow.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_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "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: "elm.swallow.content";
+         }
+         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_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "left_btn_show";
+            signal: "elm,state,elm.swallow.left_btn,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            target: "elm.swallow.left_btn";
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,elm.swallow.left_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.left_btn";
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,elm.swallow.right_btn,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            target: "elm.swallow.right_btn";
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,elm.swallow.right_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.right_btn";
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.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: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_clip";
+            }
+           description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 0.0;
+               rel2.relative: 0.0 0.0;
+           }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 0.0;
+               rel2.relative: 2.0 0.0;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            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: "elm.swallow.content";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"elm.swallow.content", "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: "elm.swallow.content";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name:"elm/naviframe/item/video/basic/instant/default";
+      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
+      }
+      parts {
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            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; }
+            }
+            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;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to_x: "elm.swallow.content";
+               rel1.to_y: "title_clip";
+               rel1.relative: 0 1;
+               rel2.to_x: "elm.swallow.content";
+               rel2.to_y: "title_clip";
+               visible: 0;
+            }
+            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_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_clip"; }
+               rel2 { to: "optionheader_clip"; }
+               image { normal: "naviframe_optionheader.png";
+                  border: 0 0 4 0;
+               }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: "elm.swallow.optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: 1 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to_y: "optionheader_bg";
+               rel1.relative: 0 1;
+            }
+         }
+         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_clip";
+            }
+         }
+         part { name: "title_base";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "title_clip"; }
+               rel2 { to: "title_clip"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+         }
+         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_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               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: "elm.swallow.left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               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: "elm.swallow.right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_more_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: 0.0 0.0; to: "elm.swallow.more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+               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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "icon_visible" 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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_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_base"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+               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";
+                  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;
+               rel1.to: "padding_center_text1";
+               rel1.relative: 1 0;
+               rel2.to: "padding_center_text2";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               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;
+             description { state: "default" 0.0;
+                rel1 { to: "title_base"; }
+                rel2 { to: "title_base"; }
+             }
+         }
+         part { name: "elm.swallow.left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "padding_before_left_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_before_left_btn";
+               rel2.relative: 1 1;
+            }
+         }
+         part { name: "elm.swallow.right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_after_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_after_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_before_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_before_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         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;
+               rel1.to: "elm.swallow.more_btn";
+               rel1.relative: 0 1;
+               rel2.to: "elm.swallow.more_btn";
+               rel2.relative: 1 1;
+               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_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+               }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      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_clip", "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_clip", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_clip";
+            target: "optionheader_clip";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+         }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,elm.swallow.more_btn,show";
+            source: "elm";
+            action: STATE_SET "more_button" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,elm.swallow.more_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            action: STATE_SET "icon_visible" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,elm.swallow.optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,elm.swallow.optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name:"elm/naviframe/item/video/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
+      }
+      parts {
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            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; }
+            }
+            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;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 0 1;
+               rel1.to_x: "elm.swallow.content";
+               rel1.to_y: "title_clip";
+               rel1.relative: 0 1;
+               rel2.to_x: "elm.swallow.content";
+               rel2.to_y: "title_clip";
+               visible: 0;
+            }
+            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_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_clip"; }
+               rel2 { to: "optionheader_clip"; }
+               image { normal: "naviframe_optionheader.png";
+                  border: 0 0 4 0;
+               }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: "elm.swallow.optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 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: "elm.swallow.optionheader.mid.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.optionheader2";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.swallow.optionheader.bottom.padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader2"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to_y: "optionheader_bg";
+               rel1.relative: 0 1;
+            }
+         }
+         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_clip";
+            }
+         }
+         part { name: "title_base";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "title_clip"; }
+               rel2 { to: "title_clip"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+         }
+         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_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               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: "elm.swallow.left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               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: "elm.swallow.right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_more_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: 0.0 0.0; to: "elm.swallow.more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+               visible: 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_base"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+               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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "icon_visible" 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_TEXT_PADDING_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               visible: 0;
+            }
+            description { state: "more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_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";
+                  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;
+               rel1.to: "padding_center_text1";
+               rel1.relative: 1 0;
+               rel2.to: "padding_center_text2";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               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;
+             description { state: "default" 0.0;
+                rel1 { to: "title_base"; }
+                rel2 { to: "title_base"; }
+             }
+         }
+         part { name: "elm.swallow.left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "padding_before_left_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_before_left_btn";
+               rel2.relative: 1 1;
+            }
+         }
+         part { name: "elm.swallow.right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_after_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_after_right_btn";
+               rel2.relative: 0 1;
+         }
+         }
+         part { name: "elm.swallow.more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1.to: "padding_before_right_btn";
+               rel1.relative: 0 0;
+               rel2.to: "padding_before_right_btn";
+               rel2.relative: 0 1;
+            }
+         }
+         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;
+               rel1.to: "elm.swallow.more_btn";
+               rel1.relative: 0 1;
+               rel2.to: "elm.swallow.more_btn";
+               rel2.relative: 1 1;
+               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_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      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_clip", "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_clip", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_clip";
+            target: "optionheader_clip";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+         }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,elm.swallow.more_btn,show";
+            source: "elm";
+            action: STATE_SET "more_button" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,elm.swallow.more_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text2";
+            target: "padding_before_right_btn";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            action: STATE_SET "icon_visible" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "padding_center_text1";
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "optionheader_show";
+            signal: "elm,state,elm.swallow.optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,elm.swallow.optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_clip", "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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            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_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+   group { name: "elm/naviframe/item/video/segment/instant/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            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; }
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to_y: "title_clip";
+               rel1.relative: 0 1;
+            }
+         }
+         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_clip";
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_clip";
+            }
+        }
+         part { name: "title_base";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "title_clip"; }
+               rel2 { to: "title_clip"; }
+               color: NAVIFRAME_TITLE_BG_COLOR_INC;
+            }
+         }
+         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_base"; }
+               rel2 { relative: 0.0 1.0; to: "title_base"; }
+               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: "elm.swallow.left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 1.0 1.0; to: "title_base"; }
+               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: "elm.swallow.right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "elm.swallow.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_base"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+               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";
+                  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: 0 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;
+             description { state: "default" 0.0;
+                rel1 { to: "title_base"; }
+                rel2 { to: "title_base"; }
+             }
+         }
+         part { name: "elm.swallow.left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               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";
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "elm.swallow.right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               align: 1 0;
+               fixed: 1 0;
+               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";
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "elm.swallow.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: "elm.swallow.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_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      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_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "left_btn_show";
+            signal: "elm,state,elm.swallow.left_btn,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            target: "elm.swallow.left_btn";
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,elm.swallow.left_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.left_btn";
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,elm.swallow.right_btn,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            target: "elm.swallow.right_btn";
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,elm.swallow.right_btn,hide";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.right_btn";
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.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;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_clip";
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.5 1;
+               visible: 0;
+               rel1.to_x: "elm.swallow.content";
+               rel2.to_x: "elm.swallow.content";
+            }
+            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_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_clip"; }
+               rel2 { to: "controlbar_clip"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to: "controlbar_bg";
+               rel1.relative: 0 0;
+               rel2.to: "controlbar_bg";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "elm.swallow.controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.prev_btn";
+               rel1.relative: 1 0;
+               rel2.to: "padding_after_controlbar";
+               rel2.relative: 0 1;
+            }
+         }
+         part { name: "padding_after_controlbar";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+               align: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+         }
+      }
+      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_clip,show", "elm");
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,elm.swallow.controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_clip,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,elm.swallow.controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_clip,hide", "elm");
+            }
+         }
+         program { name: "controlbar_clip_show";
+            signal: "elm,state,controlbar_clip,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_clip", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_clip_hide";
+            signal: "elm,state,controlbar_clip,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_clip", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_clip";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_clip";
+            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,elm.swallow.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,elm.swallow.controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
diff --git a/res/edc/vp_font.edc b/res/edc/vp_font.edc
new file mode 100755 (executable)
index 0000000..da02c31
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define FONT_NANE                      "SLP:style=Bold"
+#define FONT_NORMAL_NANE       "SLP:style=Medium"
+#define FONT_COLOR                     255 255 255 255
+
+
+#define FONT_START_COLOR       149 149 149 255
+#define FONT_END_COLOR         149 149 149 255
+
+#define TITLE_FONT_SIZE                28
diff --git a/res/images/00_Option_header_bt.png b/res/images/00_Option_header_bt.png
new file mode 100755 (executable)
index 0000000..659fc23
Binary files /dev/null and b/res/images/00_Option_header_bt.png differ
diff --git a/res/images/00_Option_header_bt_dim.png b/res/images/00_Option_header_bt_dim.png
new file mode 100755 (executable)
index 0000000..3fb76e2
Binary files /dev/null and b/res/images/00_Option_header_bt_dim.png differ
diff --git a/res/images/00_Option_header_bt_press.png b/res/images/00_Option_header_bt_press.png
new file mode 100755 (executable)
index 0000000..8a05504
Binary files /dev/null and b/res/images/00_Option_header_bt_press.png differ
diff --git a/res/images/00_button_01_normal.png b/res/images/00_button_01_normal.png
new file mode 100755 (executable)
index 0000000..fd06c1c
Binary files /dev/null and b/res/images/00_button_01_normal.png differ
diff --git a/res/images/00_button_01_normal_dim.png b/res/images/00_button_01_normal_dim.png
new file mode 100755 (executable)
index 0000000..7bb54fc
Binary files /dev/null and b/res/images/00_button_01_normal_dim.png differ
diff --git a/res/images/00_button_01_normal_press.png b/res/images/00_button_01_normal_press.png
new file mode 100755 (executable)
index 0000000..829554a
Binary files /dev/null and b/res/images/00_button_01_normal_press.png differ
diff --git a/res/images/00_winset_btn_prev.png b/res/images/00_winset_btn_prev.png
new file mode 100755 (executable)
index 0000000..15b43b0
Binary files /dev/null and b/res/images/00_winset_btn_prev.png differ
diff --git a/res/images/00_winset_btn_prev_press.png b/res/images/00_winset_btn_prev_press.png
new file mode 100755 (executable)
index 0000000..1ffbb0b
Binary files /dev/null and b/res/images/00_winset_btn_prev_press.png differ
diff --git a/res/images/00_winset_control_top_arrow.png b/res/images/00_winset_control_top_arrow.png
new file mode 100755 (executable)
index 0000000..9f31c89
Binary files /dev/null and b/res/images/00_winset_control_top_arrow.png differ
diff --git a/res/images/01_controlbar_icon_delete.png b/res/images/01_controlbar_icon_delete.png
new file mode 100755 (executable)
index 0000000..07e2898
Binary files /dev/null and b/res/images/01_controlbar_icon_delete.png differ
diff --git a/res/images/01_controlbar_icon_set_as.png b/res/images/01_controlbar_icon_set_as.png
new file mode 100755 (executable)
index 0000000..3f5a68f
Binary files /dev/null and b/res/images/01_controlbar_icon_set_as.png differ
diff --git a/res/images/01_controlbar_icon_share.png b/res/images/01_controlbar_icon_share.png
new file mode 100755 (executable)
index 0000000..76ef1ce
Binary files /dev/null and b/res/images/01_controlbar_icon_share.png differ
diff --git a/res/images/01_header_icon_add.png b/res/images/01_header_icon_add.png
new file mode 100755 (executable)
index 0000000..43c4984
Binary files /dev/null and b/res/images/01_header_icon_add.png differ
diff --git a/res/images/01_header_icon_cancel.png b/res/images/01_header_icon_cancel.png
new file mode 100755 (executable)
index 0000000..4fb54c3
Binary files /dev/null and b/res/images/01_header_icon_cancel.png differ
diff --git a/res/images/01_header_icon_others.png b/res/images/01_header_icon_others.png
new file mode 100755 (executable)
index 0000000..4fc9dfa
Binary files /dev/null and b/res/images/01_header_icon_others.png differ
diff --git a/res/images/12_music_player_sound_path.png b/res/images/12_music_player_sound_path.png
new file mode 100755 (executable)
index 0000000..771ebb8
Binary files /dev/null and b/res/images/12_music_player_sound_path.png differ
diff --git a/res/images/T01_Nocontents_multimedia.png b/res/images/T01_Nocontents_multimedia.png
new file mode 100755 (executable)
index 0000000..a59046f
Binary files /dev/null and b/res/images/T01_Nocontents_multimedia.png differ
diff --git a/res/images/T01_Option_header_bt.png b/res/images/T01_Option_header_bt.png
new file mode 100755 (executable)
index 0000000..94b1e2f
Binary files /dev/null and b/res/images/T01_Option_header_bt.png differ
diff --git a/res/images/T01_Option_header_bt_press.png b/res/images/T01_Option_header_bt_press.png
new file mode 100755 (executable)
index 0000000..17331c1
Binary files /dev/null and b/res/images/T01_Option_header_bt_press.png differ
diff --git a/res/images/T01_back.png b/res/images/T01_back.png
new file mode 100755 (executable)
index 0000000..73d57a5
Binary files /dev/null and b/res/images/T01_back.png differ
diff --git a/res/images/T01_btn_prev.png b/res/images/T01_btn_prev.png
new file mode 100755 (executable)
index 0000000..ccaf337
Binary files /dev/null and b/res/images/T01_btn_prev.png differ
diff --git a/res/images/T01_control_icon_detail.png b/res/images/T01_control_icon_detail.png
new file mode 100755 (executable)
index 0000000..e82b44d
Binary files /dev/null and b/res/images/T01_control_icon_detail.png differ
diff --git a/res/images/T01_control_icon_fullscreen.png b/res/images/T01_control_icon_fullscreen.png
new file mode 100755 (executable)
index 0000000..7fa140f
Binary files /dev/null and b/res/images/T01_control_icon_fullscreen.png differ
diff --git a/res/images/T01_control_icon_reduce.png b/res/images/T01_control_icon_reduce.png
new file mode 100755 (executable)
index 0000000..fbdb906
Binary files /dev/null and b/res/images/T01_control_icon_reduce.png differ
diff --git a/res/images/T01_control_top_arrow.png b/res/images/T01_control_top_arrow.png
new file mode 100755 (executable)
index 0000000..3f2ee50
Binary files /dev/null and b/res/images/T01_control_top_arrow.png differ
diff --git a/res/images/T01_control_top_bg.png b/res/images/T01_control_top_bg.png
new file mode 100755 (executable)
index 0000000..e7b5045
Binary files /dev/null and b/res/images/T01_control_top_bg.png differ
diff --git a/res/images/T01_controlbar_icon_cancel.png b/res/images/T01_controlbar_icon_cancel.png
new file mode 100755 (executable)
index 0000000..5cb7824
Binary files /dev/null and b/res/images/T01_controlbar_icon_cancel.png differ
diff --git a/res/images/T01_controlbar_icon_done.png b/res/images/T01_controlbar_icon_done.png
new file mode 100755 (executable)
index 0000000..46304a4
Binary files /dev/null and b/res/images/T01_controlbar_icon_done.png differ
diff --git a/res/images/T01_controller_btn.png b/res/images/T01_controller_btn.png
new file mode 100755 (executable)
index 0000000..4db7a11
Binary files /dev/null and b/res/images/T01_controller_btn.png differ
diff --git a/res/images/T01_controller_btn_press.png b/res/images/T01_controller_btn_press.png
new file mode 100755 (executable)
index 0000000..4069b0f
Binary files /dev/null and b/res/images/T01_controller_btn_press.png differ
diff --git a/res/images/T01_icon_expand.png b/res/images/T01_icon_expand.png
new file mode 100755 (executable)
index 0000000..ba1158e
Binary files /dev/null and b/res/images/T01_icon_expand.png differ
diff --git a/res/images/T01_icon_reduce.png b/res/images/T01_icon_reduce.png
new file mode 100755 (executable)
index 0000000..7e80daa
Binary files /dev/null and b/res/images/T01_icon_reduce.png differ
diff --git a/res/images/T01_icon_soundPath.png b/res/images/T01_icon_soundPath.png
new file mode 100755 (executable)
index 0000000..79e0cda
Binary files /dev/null and b/res/images/T01_icon_soundPath.png differ
diff --git a/res/images/T01_icon_soundPath_h.png b/res/images/T01_icon_soundPath_h.png
new file mode 100755 (executable)
index 0000000..ad3b1d4
Binary files /dev/null and b/res/images/T01_icon_soundPath_h.png differ
diff --git a/res/images/T01_icon_soundPath_press.png b/res/images/T01_icon_soundPath_press.png
new file mode 100755 (executable)
index 0000000..9fcc466
Binary files /dev/null and b/res/images/T01_icon_soundPath_press.png differ
diff --git a/res/images/T01_player_progress_bar.png b/res/images/T01_player_progress_bar.png
new file mode 100755 (executable)
index 0000000..2f25452
Binary files /dev/null and b/res/images/T01_player_progress_bar.png differ
diff --git a/res/images/T01_player_progress_bg.png b/res/images/T01_player_progress_bg.png
new file mode 100755 (executable)
index 0000000..58d94cc
Binary files /dev/null and b/res/images/T01_player_progress_bg.png differ
diff --git a/res/images/T01_player_progress_point.png b/res/images/T01_player_progress_point.png
new file mode 100755 (executable)
index 0000000..0e8c5c5
Binary files /dev/null and b/res/images/T01_player_progress_point.png differ
diff --git a/res/images/T01_sound_path.png b/res/images/T01_sound_path.png
new file mode 100755 (executable)
index 0000000..d4f3843
Binary files /dev/null and b/res/images/T01_sound_path.png differ
diff --git a/res/images/T01_title_btn.png b/res/images/T01_title_btn.png
new file mode 100755 (executable)
index 0000000..20c31f1
Binary files /dev/null and b/res/images/T01_title_btn.png differ
diff --git a/res/images/T01_title_btn_press.png b/res/images/T01_title_btn_press.png
new file mode 100755 (executable)
index 0000000..49861ed
Binary files /dev/null and b/res/images/T01_title_btn_press.png differ
diff --git a/res/images/T01_toolbar_bg.png b/res/images/T01_toolbar_bg.png
new file mode 100755 (executable)
index 0000000..e02c6c6
Binary files /dev/null and b/res/images/T01_toolbar_bg.png differ
diff --git a/res/images/T01_toolbar_press.png b/res/images/T01_toolbar_press.png
new file mode 100755 (executable)
index 0000000..851583e
Binary files /dev/null and b/res/images/T01_toolbar_press.png differ
diff --git a/res/images/gallery_loading_ani_01.png b/res/images/gallery_loading_ani_01.png
new file mode 100755 (executable)
index 0000000..9402e71
Binary files /dev/null and b/res/images/gallery_loading_ani_01.png differ
diff --git a/res/images/gallery_loading_ani_02.png b/res/images/gallery_loading_ani_02.png
new file mode 100755 (executable)
index 0000000..e71d491
Binary files /dev/null and b/res/images/gallery_loading_ani_02.png differ
diff --git a/res/images/gallery_loading_ani_03.png b/res/images/gallery_loading_ani_03.png
new file mode 100755 (executable)
index 0000000..1ed0de9
Binary files /dev/null and b/res/images/gallery_loading_ani_03.png differ
diff --git a/res/images/gallery_loading_ani_04.png b/res/images/gallery_loading_ani_04.png
new file mode 100755 (executable)
index 0000000..18cc497
Binary files /dev/null and b/res/images/gallery_loading_ani_04.png differ
diff --git a/res/images/gallery_loading_ani_05.png b/res/images/gallery_loading_ani_05.png
new file mode 100755 (executable)
index 0000000..036c49b
Binary files /dev/null and b/res/images/gallery_loading_ani_05.png differ
diff --git a/res/images/gallery_loading_ani_06.png b/res/images/gallery_loading_ani_06.png
new file mode 100755 (executable)
index 0000000..3cb5e33
Binary files /dev/null and b/res/images/gallery_loading_ani_06.png differ
diff --git a/res/images/gallery_loading_ani_07.png b/res/images/gallery_loading_ani_07.png
new file mode 100755 (executable)
index 0000000..fae06de
Binary files /dev/null and b/res/images/gallery_loading_ani_07.png differ
diff --git a/res/images/gallery_loading_ani_08.png b/res/images/gallery_loading_ani_08.png
new file mode 100755 (executable)
index 0000000..70eaaf0
Binary files /dev/null and b/res/images/gallery_loading_ani_08.png differ
diff --git a/res/images/gallery_loading_ani_09.png b/res/images/gallery_loading_ani_09.png
new file mode 100755 (executable)
index 0000000..7fb390c
Binary files /dev/null and b/res/images/gallery_loading_ani_09.png differ
diff --git a/res/images/gallery_loading_ani_10.png b/res/images/gallery_loading_ani_10.png
new file mode 100755 (executable)
index 0000000..941fc3b
Binary files /dev/null and b/res/images/gallery_loading_ani_10.png differ
diff --git a/res/images/gallery_loading_ani_11.png b/res/images/gallery_loading_ani_11.png
new file mode 100755 (executable)
index 0000000..a67149d
Binary files /dev/null and b/res/images/gallery_loading_ani_11.png differ
diff --git a/res/images/gallery_loading_ani_12.png b/res/images/gallery_loading_ani_12.png
new file mode 100755 (executable)
index 0000000..b36421a
Binary files /dev/null and b/res/images/gallery_loading_ani_12.png differ
diff --git a/res/images/gallery_loading_ani_13.png b/res/images/gallery_loading_ani_13.png
new file mode 100755 (executable)
index 0000000..d70d609
Binary files /dev/null and b/res/images/gallery_loading_ani_13.png differ
diff --git a/res/images/gallery_loading_ani_14.png b/res/images/gallery_loading_ani_14.png
new file mode 100755 (executable)
index 0000000..ab52db7
Binary files /dev/null and b/res/images/gallery_loading_ani_14.png differ
diff --git a/res/images/gallery_loading_ani_15.png b/res/images/gallery_loading_ani_15.png
new file mode 100755 (executable)
index 0000000..1de8adb
Binary files /dev/null and b/res/images/gallery_loading_ani_15.png differ
diff --git a/res/images/gallery_loading_ani_16.png b/res/images/gallery_loading_ani_16.png
new file mode 100755 (executable)
index 0000000..521b61f
Binary files /dev/null and b/res/images/gallery_loading_ani_16.png differ
diff --git a/res/images/gallery_loading_ani_17.png b/res/images/gallery_loading_ani_17.png
new file mode 100755 (executable)
index 0000000..6cb5ba9
Binary files /dev/null and b/res/images/gallery_loading_ani_17.png differ
diff --git a/res/images/gallery_loading_ani_18.png b/res/images/gallery_loading_ani_18.png
new file mode 100755 (executable)
index 0000000..a636079
Binary files /dev/null and b/res/images/gallery_loading_ani_18.png differ
diff --git a/res/images/gallery_loading_ani_19.png b/res/images/gallery_loading_ani_19.png
new file mode 100755 (executable)
index 0000000..0a4f650
Binary files /dev/null and b/res/images/gallery_loading_ani_19.png differ
diff --git a/res/images/gallery_loading_ani_20.png b/res/images/gallery_loading_ani_20.png
new file mode 100755 (executable)
index 0000000..14cc339
Binary files /dev/null and b/res/images/gallery_loading_ani_20.png differ
diff --git a/res/images/gallery_loading_ani_21.png b/res/images/gallery_loading_ani_21.png
new file mode 100755 (executable)
index 0000000..0e78db7
Binary files /dev/null and b/res/images/gallery_loading_ani_21.png differ
diff --git a/res/images/gallery_loading_ani_22.png b/res/images/gallery_loading_ani_22.png
new file mode 100755 (executable)
index 0000000..80d592e
Binary files /dev/null and b/res/images/gallery_loading_ani_22.png differ
diff --git a/res/images/gallery_loading_ani_23.png b/res/images/gallery_loading_ani_23.png
new file mode 100755 (executable)
index 0000000..b4bd7ca
Binary files /dev/null and b/res/images/gallery_loading_ani_23.png differ
diff --git a/res/images/gallery_loading_ani_24.png b/res/images/gallery_loading_ani_24.png
new file mode 100755 (executable)
index 0000000..69445e4
Binary files /dev/null and b/res/images/gallery_loading_ani_24.png differ
diff --git a/res/images/gallery_loading_ani_25.png b/res/images/gallery_loading_ani_25.png
new file mode 100755 (executable)
index 0000000..233a038
Binary files /dev/null and b/res/images/gallery_loading_ani_25.png differ
diff --git a/res/images/gallery_loading_ani_26.png b/res/images/gallery_loading_ani_26.png
new file mode 100755 (executable)
index 0000000..d52a017
Binary files /dev/null and b/res/images/gallery_loading_ani_26.png differ
diff --git a/res/images/gallery_loading_ani_27.png b/res/images/gallery_loading_ani_27.png
new file mode 100755 (executable)
index 0000000..4221ecc
Binary files /dev/null and b/res/images/gallery_loading_ani_27.png differ
diff --git a/res/images/gallery_loading_ani_28.png b/res/images/gallery_loading_ani_28.png
new file mode 100755 (executable)
index 0000000..da37330
Binary files /dev/null and b/res/images/gallery_loading_ani_28.png differ
diff --git a/res/images/gallery_loading_ani_29.png b/res/images/gallery_loading_ani_29.png
new file mode 100755 (executable)
index 0000000..41e97e1
Binary files /dev/null and b/res/images/gallery_loading_ani_29.png differ
diff --git a/res/images/gallery_loading_ani_30.png b/res/images/gallery_loading_ani_30.png
new file mode 100755 (executable)
index 0000000..ac0bb55
Binary files /dev/null and b/res/images/gallery_loading_ani_30.png differ
diff --git a/res/images/gallery_video_add_btn.png b/res/images/gallery_video_add_btn.png
new file mode 100755 (executable)
index 0000000..63f7d63
Binary files /dev/null and b/res/images/gallery_video_add_btn.png differ
diff --git a/res/images/gallery_video_add_btn_press.png b/res/images/gallery_video_add_btn_press.png
new file mode 100755 (executable)
index 0000000..2bfc65b
Binary files /dev/null and b/res/images/gallery_video_add_btn_press.png differ
diff --git a/res/images/gallery_video_control_ff.png b/res/images/gallery_video_control_ff.png
new file mode 100755 (executable)
index 0000000..57d60d6
Binary files /dev/null and b/res/images/gallery_video_control_ff.png differ
diff --git a/res/images/gallery_video_control_frame_back.png b/res/images/gallery_video_control_frame_back.png
new file mode 100755 (executable)
index 0000000..7a0428d
Binary files /dev/null and b/res/images/gallery_video_control_frame_back.png differ
diff --git a/res/images/gallery_video_control_frame_forword.png b/res/images/gallery_video_control_frame_forword.png
new file mode 100755 (executable)
index 0000000..af2b776
Binary files /dev/null and b/res/images/gallery_video_control_frame_forword.png differ
diff --git a/res/images/gallery_video_control_next.png b/res/images/gallery_video_control_next.png
new file mode 100755 (executable)
index 0000000..e0a49f1
Binary files /dev/null and b/res/images/gallery_video_control_next.png differ
diff --git a/res/images/gallery_video_control_pause.png b/res/images/gallery_video_control_pause.png
new file mode 100755 (executable)
index 0000000..d36fbf4
Binary files /dev/null and b/res/images/gallery_video_control_pause.png differ
diff --git a/res/images/gallery_video_control_play.png b/res/images/gallery_video_control_play.png
new file mode 100755 (executable)
index 0000000..16b49a5
Binary files /dev/null and b/res/images/gallery_video_control_play.png differ
diff --git a/res/images/gallery_video_control_prev.png b/res/images/gallery_video_control_prev.png
new file mode 100755 (executable)
index 0000000..029e57c
Binary files /dev/null and b/res/images/gallery_video_control_prev.png differ
diff --git a/res/images/gallery_video_control_rew.png b/res/images/gallery_video_control_rew.png
new file mode 100755 (executable)
index 0000000..ad63c27
Binary files /dev/null and b/res/images/gallery_video_control_rew.png differ
diff --git a/res/images/gallery_video_delete_btn.png b/res/images/gallery_video_delete_btn.png
new file mode 100755 (executable)
index 0000000..fe62076
Binary files /dev/null and b/res/images/gallery_video_delete_btn.png differ
diff --git a/res/images/gallery_video_delete_btn_press.png b/res/images/gallery_video_delete_btn_press.png
new file mode 100755 (executable)
index 0000000..2d2466f
Binary files /dev/null and b/res/images/gallery_video_delete_btn_press.png differ
diff --git a/res/images/gallery_video_icon_btn.png b/res/images/gallery_video_icon_btn.png
new file mode 100755 (executable)
index 0000000..9ef6888
Binary files /dev/null and b/res/images/gallery_video_icon_btn.png differ
diff --git a/res/images/gallery_video_icon_btn_press.png b/res/images/gallery_video_icon_btn_press.png
new file mode 100755 (executable)
index 0000000..628c8e7
Binary files /dev/null and b/res/images/gallery_video_icon_btn_press.png differ
diff --git a/res/images/gallery_video_icon_mute.png b/res/images/gallery_video_icon_mute.png
new file mode 100755 (executable)
index 0000000..e92f376
Binary files /dev/null and b/res/images/gallery_video_icon_mute.png differ
diff --git a/res/images/gallery_video_icon_volume.png b/res/images/gallery_video_icon_volume.png
new file mode 100755 (executable)
index 0000000..49d9cf5
Binary files /dev/null and b/res/images/gallery_video_icon_volume.png differ
diff --git a/res/images/gallery_video_player_bg.png b/res/images/gallery_video_player_bg.png
new file mode 100755 (executable)
index 0000000..611a7b7
Binary files /dev/null and b/res/images/gallery_video_player_bg.png differ
diff --git a/res/images/gallery_video_popup_mute.png b/res/images/gallery_video_popup_mute.png
new file mode 100755 (executable)
index 0000000..32f447c
Binary files /dev/null and b/res/images/gallery_video_popup_mute.png differ
diff --git a/res/images/navibar_item_separator_shadow.png b/res/images/navibar_item_separator_shadow.png
new file mode 100755 (executable)
index 0000000..05d347d
Binary files /dev/null and b/res/images/navibar_item_separator_shadow.png differ
diff --git a/res/images/naviframe_optionheader.png b/res/images/naviframe_optionheader.png
new file mode 100755 (executable)
index 0000000..e90f19c
Binary files /dev/null and b/res/images/naviframe_optionheader.png differ
diff --git a/res/images/naviframe_optionheader_arrow.png b/res/images/naviframe_optionheader_arrow.png
new file mode 100755 (executable)
index 0000000..de84372
Binary files /dev/null and b/res/images/naviframe_optionheader_arrow.png differ
diff --git a/res/images/org.tizen.video-player.png b/res/images/org.tizen.video-player.png
new file mode 100755 (executable)
index 0000000..a420dd7
Binary files /dev/null and b/res/images/org.tizen.video-player.png differ
diff --git a/res/images/video_sound_path_dim.png b/res/images/video_sound_path_dim.png
new file mode 100755 (executable)
index 0000000..02b5867
Binary files /dev/null and b/res/images/video_sound_path_dim.png differ
diff --git a/res/po/CMakeLists.txt b/res/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..407cb2b
--- /dev/null
@@ -0,0 +1,23 @@
+# for i18n
+
+SET(POFILES el_GR.po es_ES.po it_IT.po ko_KR.po pt_PT.po tr_TR.po zh_HK.po de_DE.po en.po fr_FR.po ja_JP.po nl_NL.po ru_RU.po zh_CN.po zh_TW.po)
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/res/po/POTFILES.in b/res/po/POTFILES.in
new file mode 100755 (executable)
index 0000000..567ca5d
--- /dev/null
@@ -0,0 +1,13 @@
+# List of source files containing translatable strings.
+video-player.c
+mp-util.c
+mp-video-app-ctrl.c
+mp-video-view-ctrl.c
+mp-video-display-view.c
+mp-video-info-view.c
+mp-external-ug.c
+mp-util-media-service.c
+mp-video-sound-path-ctrl.c
+mp-video-streaming-view.c
+mp-video-streaming-ctrl.c
+mp-external-appsvc.c
\ No newline at end of file
diff --git a/res/po/de_DE.po b/res/po/de_DE.po
new file mode 100755 (executable)
index 0000000..50a784c
--- /dev/null
@@ -0,0 +1,180 @@
+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_SK_CONFIRM"
+msgstr "Bestät."
+
+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"
+
diff --git a/res/po/el_GR.po b/res/po/el_GR.po
new file mode 100755 (executable)
index 0000000..6896d0d
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Υπάρχει ήδη"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Το κύριο στερεοφωνικό σετ ακουστικών Bluetooth αποσυνδέθηκε"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Το αρχείο DRM υποστηρ. μόνο για κλείδωμα προώθησης"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Νέα ετικέτα"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Αρχικό"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Αναπαραγωγή σε αθόρυβη λειτουργία;"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή του αρχείου DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Δεν είναι δυνατή η αποστολή. Έχει απενεργοποιηθεί η δυνατότητα προώθησης"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Μη υποστηριζόμενη έκδοση DivX DRM"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Σελιδοδείκτης"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Τέλος"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Αγαπημένα"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Λεπτομέρειες"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Ανάλυση"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Προσθήκη σελιδοδείκτη"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Μήνυμα"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Όνομα"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Στο AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Περικοπή ως νέο βίντεο"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Περικοπή αρχικού βίντεο"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Λογαριασμός"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Προσθήκη συντόμευσης"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Πρ. ετικ."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Η λίστα σελιδοδεικτών είναι πλήρης. Θέλετε να διαγράψετε μερικούς σελιδοδείκτες"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Αποσυνδέθηκε από τον διακομιστή"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Λήξη χρονικού ορίου για πύλη"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Σφάλμα"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Η άδεια χρήσης έχει λήξει"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Φόρτωση..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Δεν βρέθηκαν αρχεία"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Η μνήμη εξαντλήθηκε"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Αποθήκευση ως"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Για την αναπαραγωγή προστατευμένων βίντεο DivX, η συσκευή σας πρέπει να είναι εγγεγραμμένη. Κωδικός εγγραφής: %s. Κάντε εγγραφή στη διεύθυνση http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Περικοπή βίντεο..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Δεν είναι δυνατή η σύνδεση"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή. Μη έγκυρο πακέτο από διακομιστή"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε την αναλογική έξοδο για να προβάλλετε αυτό το προστατευμένο βίντεο DivX"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε HDMI για να προβάλλετε αυτό το προστατευμένο βίντεο DivX"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Η συσκευή σας δεν έχει εξουσιοδότηση για αναπαραγωγή αυτού του προστατευμένου βίντεο DivX®"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Επιβεβαίωση"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Ξάκρισμα"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Βίντεο"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Δεν βρέθηκε αρχείο μέσων"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Προέκυψε σφάλμα"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Μέγεθος αρχείου"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Κόψιμο"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Κοινή χρ.βίν."
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Λίστα βίντεο"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Διατήρηση αναλογίας εικόνας"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Ορισμός ως"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Υπότιτλοι"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Δεν είναι δυνατή η εύρεση του αρχείου"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Μη έγκυρα δεδομένα ροής"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Μη υποστηριζόμενη μορφή ήχου"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Μη υποστηριζόμενος τύπος αρχείου"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Μη υποστ. μορφή"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Μη υποστηριζόμενη μορφή βίντεο"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Ανάλυση"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση"
+
diff --git a/res/po/en.po b/res/po/en.po
new file mode 100755 (executable)
index 0000000..04476ad
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Already exists"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth stereo headset disconnected"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "DRM file not supported except for forward lock type"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "New tag"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Play in Silent mode?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Unable to play DRM file"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Unable to send. This item is forward-locked"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Unsupported DivX DRM version"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Bookmark"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Done"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favourite"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Details"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Add bookmark"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Name"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "On AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Trim as new video"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Trim original video"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Account"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Add shortcut"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Add tag"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Bookmark list full. Delete some bookmarks"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Disconnected from server"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Gateway timeout"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Internal server error"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licence expired"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Loading..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "No files"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Out of memories"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Save as"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "To play DivX locked videos, your device must be registered. Registration code: %s Register at http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Trimming video..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Unable to connect"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Unable to play. Invalid packet from server"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Unauthorized Video Output. Please use Analog output to view this DivX Protected video"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Unauthorized Video Output. Please use HDMI to view this DivX Protected video"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Your device is not authorized to play this DivX® protected video."
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Confirm"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Trim"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Video player"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "No media file"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Unable to play video. Error occurred"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "File size"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Trim"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Share video"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Video list"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Keep aspect ratio"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Set as"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Subtitles"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Unable to find file"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Unable to play video. Invalid streaming data"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Unsupported audio format"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Unsupported format"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Unsupported video format"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolution"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Unable to play video during call"
+
diff --git a/res/po/es_ES.po b/res/po/es_ES.po
new file mode 100755 (executable)
index 0000000..1481c71
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Ya existe"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Auricular estéreo Bluetooth desconectado"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Archivo DRM incompat, salvo para tipo bloq reenvío"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Nueva etiqueta"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "¿Reproducir en modo silencio?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "No se puede reproducir archivo DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Imposible enviar. Este elemento está bloqueado para el reenvío."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Versión DivX DRM no admitida"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Favorito"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Finalizado"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favorito"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Detalles"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Añadir elemento favorito"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Mensajes"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nombre"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "En AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Recortar como vídeo nuevo"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Recortar vídeo original"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Cuenta"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Agregar acceso directo"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Añad etiq"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de favoritos llena. Elimine algunos favoritos"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Desconectado del servidor"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Tiempo de espera de puerta de enlace"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Error interno del servidor"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "La licencia ha caducado"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Cargando..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Ningún archivo"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Sin memoria"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Guardar como"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Para reproducir vídeos DivX protegidos, su dispositivo debe estar registrado. Código de registro: %s. Regístrese en http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Recortando vídeo..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "No se puede conectar"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "No se puede reproducir. Paquete no válido procedente del servidor"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Salida de vídeo no autorizada. Utilice la salida analógica para ver este vídeo DivX protegido"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Salida de vídeo no autorizada. Utilice HDMI para ver este vídeo DivX protegido"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Su aparato no esta autorizado para reproducir este video de DivX® protegido."
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Confirmar"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Recortar"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Vídeos"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "No hay archivo multimedia"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "No se puede reproducir vídeo. Se ha producido un error"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Tamaño del archivo"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Recortar"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Compart vídeo"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Lista de vídeos"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Mantener relación de aspecto"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Definir como"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Subtítulos"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "No se puede encontrar el archivo"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "No se puede reproducir vídeo. Datos de streaming no válidos"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de audio no compatible"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Formato no admitido"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo no admitido"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolución"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "No se puede reproducir vídeo durante la llamada"
+
diff --git a/res/po/fr_FR.po b/res/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..c37e194
--- /dev/null
@@ -0,0 +1,180 @@
+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_SK_CONFIRM"
+msgstr "Confirmer"
+
+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"
+
diff --git a/res/po/it_IT.po b/res/po/it_IT.po
new file mode 100755 (executable)
index 0000000..b8985a2
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Già esiste"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Auricolare stereo Bluetooth disconnesso"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "File DRM non support.escl.tipo bloccato per invio"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Nuovo tag"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Originali"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Riprodurre con profilo Silenzioso?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Impossibile riprodurre file DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Impossibile inviare. L'elemento è bloccato per l'invio"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Versione DRM DivX non supportata"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Preferito"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Fatto"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Preferiti"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Dettagli"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Risoluzione"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Aggiungi preferito"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "DLNA"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Messaggio"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Su AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Ritaglia come nuovo video"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Ritaglia video originale"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Account"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Aggiungi collegamento"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Aggiungi tag"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Elenco preferiti pieno. Eliminare alcuni preferiti"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Disconnesso dal server"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Time out Gateway"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Errore interno server"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licenza scaduta"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Caricamento"
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Nessun file"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Memoria insufficiente"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Salva con nome"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Per riprodurre video DivX protetti, il dispositivo deve essere registrato. Codice di registrazione: %s. Registrarsi su http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Ritaglio video in corso..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Impossibile stabilire connessione"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Impossibile avviare riproduzione. Pacchetto non valido dal server"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Output video non autorizzato. Utilizzare l'output analogico per visualizzare questo video DivX protetto"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Output video non autorizzato. Utilizzare l'HDMI per visualizzare questo video DivX protetto"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Il dispositivo non è autorizzato a riprodurre un video DivX® protetto"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Conferma"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Ritaglia"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Lettore video"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Nessun file multimediale"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Impossibile riprodurre il video. Si è verificato un errore"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Dimensioni file"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Ritaglia"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Condiv. video"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Elenco video"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Conserva formato"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Imposta come"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Sottotitoli"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Espl. file non riuscita"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Impossibile riprodurre il video. Dati di streaming non validi"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato audio non supportato"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo file non supportato"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Formato non supp."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato video non supportato"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Risoluzione"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossibile riprodurre durante chiamata"
+
diff --git a/res/po/ja_JP.po b/res/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..29da5a2
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "既に登録されています。"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth​ステレオ​ヘッド​セット​は​切断​され​ました"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "フォワード​ロック​タイプ​以外​の​DRM​ファイル​には​対応​して​いません"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新しい​タグ"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "オリジナル"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "マナーモード中ですが、再生しますか?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRMファイルを再生できません"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "送信​できません。​この​アイテム​は​転送​ロック​されて​います"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "未対応​DivX DRM​バージョン"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "ブック​マーク"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完了"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "お気に入り"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "詳細"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "ブックマーク登録"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名前"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "新しいビデオとしてトリミング"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "元のビデオをトリミング"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "アカウント"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "ショートカット​を​追加​"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "タグ​を​追加​"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "ブックマーク​リスト​が​いっぱいです。​ブックマーク​を​いくつか​削除​してください。"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "サーバー​から​切断​され​ました"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "ゲートウェイ​タイムアウト"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Internal server error"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "ライセンス​の​有効期限​が​切れ​ました"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "読み込み中..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "ファイルがありません。"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "メモリが不足しています"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "名前​を​付けて​保存​"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "DivX​保護​ビデオを​再生するには、デバイスの​登録が​必要です。登録​コード: %s 登録はhttp://vod.divx.com にて行ってください"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "ビデオをトリミング中..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "接続​できません。"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "再生​できません。​サーバー​から​の​パケット​が​無効​です"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "許可されていない​ビデオが​再生されました。​​保護されてるDivX​ビデオを​再生するには​アナログ出力を​使用してください"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "許可されていない​ビデオが​再生されました。保護されてるDivXビデオを​再生するには​HDMI出力を​使用してください"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "このデバイスではDivX®保護ビデオを再生できません"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "確認"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "整備"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "動画"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "メディア​ファイルが​ありません"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "ビデオ​を​再生​できません​。​エラー​が​発生​しました"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "ファイル​サイズ"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "トリミング"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "動画を共有"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "ビデオ​リスト"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "縦横​比​を​保存​"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "登録"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "サブタイトル"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "ファイル​が​見つかり​ません"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "ビデオ​を​再生​できません​。​無効​な​ストリーミング​データ​です"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "サポートされていない​オーディオ​形式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "未対応のファイルです"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "未対応フォーマット"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "未対応​ビデオ​形式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "撮影サイズ"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通話中​は​ビデオ​再生​できません"
+
diff --git a/res/po/ko_KR.po b/res/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..9dfa9b3
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "이미 저장되어 있습니다"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "블루투스 스테레오 헤드셋 연결이 끊어졌습니다"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "전달 잠금 파일을 제외한 DRM 파일은 지원되지 않습니다"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "태그 추가"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "원본"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "무음 모드에서 재생할까요?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRM 파일은 재생할 수 없습니다"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "전송할 수 없습니다. 잠금이 설정되어 있습니다"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "지원되지 않는 DivX DRM 버전입니다"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "북마크"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "완료"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "즐겨찾기"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "상세 정보"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "북마크 추가"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "메시지"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "이름"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "AllShare에서"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "새 동영상으로 잘라내기"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "원본 동영상 잘라내기"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "계정"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "단축메뉴 추가"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "태그 추가"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "북마크 목록이 가득 찼습니다. 북마크 일부를 삭제하세요"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "서버와 연결이 끊어졌습니다"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "게이트웨이 시간이 만료되었습니다"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "서버 오류가 발생하였습니다"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "라이선스 기한이 만료되었습니다"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "로딩 중..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "파일이 없습니다"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "메모리가 부족합니다"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "저장"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "DivX 동영상을 재생하려면 내 디바이스를 등록해야 합니다.  등록 코드: %s  http://vod.divx.com에서 등록하세요"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "동영상 잘라내는 중..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "연결할 수 없습니다"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "서버에서 받은 패킷이 바르지 않아 재생할 수 없습니다"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 아날로그 출력 방식을 사용하세요"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 HDMI 방식를 사용하세요"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "귀하의 제품은 DivX® DRM이 적용된 동영상의 재생 권한이 없습니다."
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "확인"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "잘라내기"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "비디오 플레이어"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "미디어 파일이 없습니다"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "동영상을 재생할 수 없습니다. 오류가 발생하였습니다"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "파일 크기"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "잘라내기"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "동영상 공유"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "동영상 목록"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "비율 유지"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "설정"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "자막"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "파일을 찾을 수 없습니다"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "동영상을 재생할 수 없습니다. 스트리밍 데이터가 바르지 않습니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "지원되지 않는 오디오 포맷입니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "지원되지 않는 파일 형식입니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "지원되지 않는 형식입니다"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "지원되지 않는 동영상 포맷입니다"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "해상도"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "통화 중에는 동영상을 재생할 수 없습니다"
+
diff --git a/res/po/nl_NL.po b/res/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..a41f518
--- /dev/null
@@ -0,0 +1,180 @@
+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_SK_CONFIRM"
+msgstr "OK"
+
+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"
+
diff --git a/res/po/pt_PT.po b/res/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..9ec1c05
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Já existe"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Auricular estéreo Bluetooth desligado"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Fich. DRM não supor. excepto p/ tipo bloq. reenc."
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Etiqueta nova"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Original"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Reproduzir no modo silencioso?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Impossível reproduzir ficheiro DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Impossível enviar. Este item tem o reencaminhamento bloqueado."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Versão de DRM DivX não suportada"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Favorito"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Concluir"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Favoritos"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Detalhes"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Adicionar favorito"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Mensagem"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Nome"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "Com AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Cortar como vídeo novo"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Cortar vídeo original"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Conta"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Adicionar atalho"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Ad. etiq."
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Lista de marcadores cheia. Apague alguns marcadores"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Desligada do servidor"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Tempo de gateway esgotado"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Erro interno de servidor"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Licença expirou"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "A carregar"
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Sem ficheiros"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Memória esgotada"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Guardar como"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Para reproduzir vídeos DivX protegidos, o dispositivo tem de estar registado. Código de registo: %s. Registar em http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "A limitar vídeo..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Impossível ligar"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Impossível reproduzir. Pacote inválido do servidor"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Saída de vídeo não autorizada. Utilize a saída analógica para ver este vídeo protegido DivX"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Saída de vídeo não autorizada. Utilize HDMI para ver este vídeo protegido DivX"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "O seu dispositivo não está autorizado a reproduzir vídeos protegidos DivX®"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Confirmar"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Cortar"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Leitor de vídeo"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Nenhum ficheiro multimédia"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Impossível reproduzir vídeo. Ocorreu um erro"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Tamanho do ficheiro"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Cortar"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Part. vídeo"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Lista de vídeos"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Manter relação de visualização"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Definir como"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Legendas"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Ficheiro não encontrado"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Impossível reproduzir vídeo. Dados de streaming inválidos"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Formato de áudio não suportado"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de ficheiro não suportado"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Formato não suportado"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Formato de vídeo não suportado"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Resolução"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Impossível reproduzir vídeo durante chamada"
+
diff --git a/res/po/ru_RU.po b/res/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..f6db550
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Уже существует"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Стереогарнитура Bluetooth отключена"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "Поддерживается только запрет на пересылку для файлов DRM"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Новый тег"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Исходный"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Воспроизвести в профиле “Без звука”?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Невозможно воспроизвести файл DRM"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Нельзя отправить. Этот элемент заблокирован для пересылки."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Неподдерживаемая DRM-версия DivX"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Закладка"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Готово"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Избранное"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Сведения"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Добавить закладку"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Сообщение"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "Имя"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "На AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Обрезать и сохранить"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Обрезать исходное видео"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Учетная запись"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Добавить ссылку"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "Добавить метку"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Список закладок заполнен.\nУдалите некоторые закладки"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Отключен от сервера"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Тайм-аут шлюза"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Внутренняя ошибка сервера"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Лицензия просрочена"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Загрузка..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Нет файлов"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Недостаточно памяти"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Сохранить как"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "Для воспроизведения защищенного видео DivX необходимо зарегистрировать устройство. Код регистрации: %s. Регистрация выполняется на сайте http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Обрезка видео..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Невозможно подключиться"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Сбой воспроизведения. От сервера получен недопустимый пакет"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX аналоговый вывод"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX кабель HDMI"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Это устройство не авторизовано для воспроизведения защищенного видео DivX®"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Да"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Обрезать"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Видеоплеер"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Нет медиафайлов"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Невозможно воспроизвести видео. Ошибка"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Размер файла"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Настроить"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Обмен видео"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Список видео"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "Сохранять пропорции"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Установить как"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Субтитры"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Невозможно найти файл"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Невозможно воспроизвести видео. Недопустимые потоковые данные"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Неподдерживаемый формат аудио"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдерживаемый тип файла"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Неподдерживаемый формат"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Неподдерживаемый формат видео"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Разрешение"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Воспроизведение видео во время вызова невозможно"
+
diff --git a/res/po/tr_TR.po b/res/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..3f769f4
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "Zaten var"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "Bluetooth stereo kulaklık takılı değil"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "DRM dosyası iletme türü hariç desteklenmiyor"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "Yeni im"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "Orijinal"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "Sessiz modda oynatılsın mı?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "DRM dosyası çalınamıyor"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "Gönderilemiyor. Bu öğe iletmeye karşı kilitli."
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "Desteklenmeyen DivX DRM sürümü"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "Yer imi"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "Tamam"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "Sık kullanılanlar"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "Ayrıntılar"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "Çözünürlük"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "Yer imi ekle"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "Mesaj"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "İsim"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "AllShare üzerinde"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "Yeni videoyu kırp"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "Orijinal videoyu kırp"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "Hesap"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "Kısayol ekle"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "İm ekle"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "Yer işaretleri listesi dolu.  Bazılarını silin"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "Sunucu bağlantısı kesildi"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "Ağ geçidi zaman aşımı"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "Dahili sunucu hatası"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "Lisans süresi doldu"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "Yükleniyor..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "Dosya yok"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "Bellek yetersiz"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "Farklı kaydet"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "DivX korumalı videoları oynatmak için cihazınız kayıtlı olmalıdır. Kayıt kodu: %s. http://vod.divx.com adresine kayıt olun"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "Video kırpılıyor..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "Bağlantı başarısız"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "Oynatılamıyor. Sunucudan geçersiz paket"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Yetkisiz Video Çıkışı. Lütfen DivX Korumalı videoyu izlemek için Analog çıkış kullanın"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "Yetkisiz Video Çıkışı. Lütfen DivX Korumalı videoyu izlemek için HDMI kullanın"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "Cihazınızın DivX korumalı videoyu oynatma izni yok"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "Onayla"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "Kes"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "Video oynatıcı"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "Hiç ortam dosyası yok"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "Video oynatılamıyor. Hata oluştu"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "Dosya boyutu"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "Kes"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "Video paylaş"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "Video listesi"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "En-boy oranını koru"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "Yap"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "Altyazılar"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "Dosya bulunamıyor"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "Video oynatılamıyor. Geçersiz veri akışı."
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "Desteklenmeyen ses biçimi"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "Desteklenmeyen dosya türü"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "Desteklenmeyen biçim"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "Desteklenmeyen video biçimi"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "Çözünürlük"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "Görüşme sırasında video oynatılamıyor"
+
diff --git a/res/po/zh_CN.po b/res/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..82c9c2d
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "已经存在"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "蓝牙立体声耳机未连接"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "不支持除转寄锁定类型之外的 DRM 文件"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新标签"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "原作"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "在安静模式下播放?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "无法播放DRM文件"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "无法发送。此项目禁止转发"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "不支持的DivX® DRM版本"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "书签"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "收藏"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "详情"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "添加书签"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "娱乐共享"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "信息"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名称"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "在AllShare上"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "修剪作为新视频"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "修剪原始视频"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "帐户"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "添加快捷键"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "添加标签"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "书签列表满。删除部分书签"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "已从服务器断开"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "网关超时"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "内部服务器无效"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "许可已过期"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "裝载中…"
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "无文件"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "内存不足"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "另存为"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "如欲播放被保护的DivX®视频,必须注册您的设备。请在 http://vod.divx.com注册,注册码:%s"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "正在剪切视频…"
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "无法连接"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "无法播放。服务器无效信息包"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未经授权的视频输出。请使用模拟输出查看该DivX®保护视频"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未经授权的视频输出。请使用HDMI查看该DivX®保护视频"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "您的设备没有被授权播放这个DivX®加密的视频."
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "确认"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "剪切"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "视频播放器"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "没有媒体文件"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "无法播放视频。出现错误"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "文件大小"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "剪切"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "共享视频"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "视频列表"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "保持屏幕高宽比例"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "设定为"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "说明字幕"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "无法找到文件"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "无法播放视频。无效视频流数据"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支持的音频格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支持的文件类型"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "不支持格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支持的视频格式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "分辨率"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通话中无法播放视频"
+
diff --git a/res/po/zh_HK.po b/res/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..720e2d7
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "已存在"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "藍牙立體聲耳機已中斷連接"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "不支援 DRM 檔案,轉寄鎖定類型除外"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新標籤"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "原圖"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "以靜音模式播放?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Unable to play DRM file"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "無法發送。此項目已轉寄鎖定"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "不支援的 DivX DRM 版本"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "書籤"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "我的最愛"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "詳情"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "加入書籤"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "訊息"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "在 AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "修剪為新影片"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "修剪原始影片"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "帳戶"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "加入捷徑"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "加入標籤"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "書籤清單已滿。請刪除一些書籤"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "伺服器連接中斷"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "網關逾時"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "內部伺服器錯誤"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "許可已過期"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "正在載入..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "無檔案"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "記憶體不足"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "另存為"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "要播送DivX保護的影片,必須登記裝置。登記號碼:%s ,請前往http://vod.divx.com網站登記"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "正在修剪影片..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "無法連接"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "無法播放。來自伺服器的分組數據無效"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用模擬輸出觀看此段受 DivX 保護的影片"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用 HDMI 觀看此段受 DivX 保護的影片"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "裝置未獲授權,無法播放此DivX®保護的影片"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "確認"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "修剪"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "影片播放器"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "無媒體檔案"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "無法播放影片。發生錯誤"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "檔案大小"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "修剪"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "共享影片"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "影片清單"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "保持屏幕寬高比例"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "設定為"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "字幕"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "無法尋找檔案"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "無法播放影片。無效串流數據"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支援的音效格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "不支援格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支援的影片格式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "解像度"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "通話期間無法播放影片"
+
diff --git a/res/po/zh_TW.po b/res/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..c9757a9
--- /dev/null
@@ -0,0 +1,180 @@
+msgid "IDS_VPL_BODY_ALREADY_EXISTS"
+msgstr "已存在"
+
+msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED"
+msgstr "藍牙立體聲耳機已中斷連線"
+
+msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE"
+msgstr "不支援除了轉寄鎖定類型外的 DRM 檔案"
+
+msgid "IDS_VPL_BODY_NEW_TAG"
+msgstr "新標籤"
+
+msgid "IDS_VPL_BODY_ORIGINAL"
+msgstr "原圖"
+
+msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q"
+msgstr "在靜音模式下播放嗎?"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE"
+msgstr "Unable to play DRM file"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED"
+msgstr "無法傳送。此項目已鎖定轉寄"
+
+msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION"
+msgstr "不支援的 DivX DRM 版本"
+
+msgid "IDS_VPL_BUTTON_BOOKMARK"
+msgstr "書籤"
+
+msgid "IDS_VPL_BUTTON_DONE"
+msgstr "完成"
+
+msgid "IDS_VPL_HEADER_FAVOURITE"
+msgstr "我的最愛"
+
+msgid "IDS_VPL_MBODY_DETAILS_ABB"
+msgstr "詳細"
+
+msgid "IDS_VPL_MBODY_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_VPL_OPT_ADD_BOOKMARK"
+msgstr "新增書籤"
+
+msgid "IDS_VPL_OPT_ALLSHARE"
+msgstr "AllShare"
+
+msgid "IDS_VPL_OPT_MESSAGE"
+msgstr "訊息"
+
+msgid "IDS_VPL_OPT_NAME"
+msgstr "名稱"
+
+msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB"
+msgstr "On AllShare"
+
+msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB"
+msgstr "剪輯為新影片"
+
+msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB"
+msgstr "剪輯原始影片"
+
+msgid "IDS_VPL_POP_ACCOUNT"
+msgstr "帳戶"
+
+msgid "IDS_VPL_POP_ADD_SHORTCUT"
+msgstr "加入捷徑"
+
+msgid "IDS_VPL_POP_ADD_TAG"
+msgstr "加入標籤"
+
+msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS"
+msgstr "書籤清單已滿。請刪除部分書籤"
+
+msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER"
+msgstr "伺服器連線中斷"
+
+msgid "IDS_VPL_POP_GATEWAY_TIME_OUT"
+msgstr "閘道逾時"
+
+msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR"
+msgstr "內部伺服器錯誤"
+
+msgid "IDS_VPL_POP_LICENCE_EXPIRED"
+msgstr "授權已到期"
+
+msgid "IDS_VPL_POP_LOADING_ING"
+msgstr "正在載入..."
+
+msgid "IDS_VPL_POP_NO_FILES"
+msgstr "無檔案"
+
+msgid "IDS_VPL_POP_OUT_OF_MEMORIES"
+msgstr "記憶體不足"
+
+msgid "IDS_VPL_POP_SAVE_AS"
+msgstr "另存為"
+
+msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX"
+msgstr "要播放DivX保護的影片,您的設備必須註冊。註冊代碼:%s登錄在http://vod.divx.com"
+
+msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING"
+msgstr "正在剪輯影片..."
+
+msgid "IDS_VPL_POP_UNABLE_TO_CONNECT"
+msgstr "無法連線"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER"
+msgstr "無法播放。來自伺服器的封包無效"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用模擬輸出觀賞受DivX保護的影片"
+
+msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX"
+msgstr "未經授權的影片輸出。請使用HDMI觀賞受DivX保護的影片"
+
+msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX"
+msgstr "您的設備沒有被授權播放這個DivX®加密的視頻。"
+
+msgid "IDS_VPL_SK_CONFIRM"
+msgstr "確認"
+
+msgid "IDS_VPL_SK3_TRIM"
+msgstr "修剪"
+
+msgid "IDS_VPL_HEADER_VIDEO_PLAYER"
+msgstr "視訊播放器"
+
+msgid "IDS_VPL_POP_NO_MEDIA_FILE"
+msgstr "無媒體文件"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"
+msgstr "無法播放影片。發生錯誤"
+
+msgid "IDS_VPL_BODY_FILE_SIZE"
+msgstr "檔案大小"
+
+msgid "IDS_VPL_BUTTON_TRIM"
+msgstr "剪輯"
+
+msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB"
+msgstr "影像分享"
+
+msgid "IDS_VPL_HEADER_VIDEO_LIST"
+msgstr "影片清單"
+
+msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO"
+msgstr "保持螢幕顯示比例"
+
+msgid "IDS_VPL_OPT_SET_AS"
+msgstr "設定為"
+
+msgid "IDS_VPL_OPT_SUBTITLES"
+msgstr "字幕"
+
+msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE"
+msgstr "無法找到檔案"
+
+msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"
+msgstr "無法播放影片。無效的串流數據"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"
+msgstr "不支援的音訊格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT"
+msgstr "不支援格式"
+
+msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"
+msgstr "不支援的視訊格式"
+
+msgid "IDS_VPL_OPT_RESOLUTION"
+msgstr "解析度"
+
+msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"
+msgstr "無法在通話期間播放影片"
+
diff --git a/src/mp-util-media-service.c b/src/mp-util-media-service.c
new file mode 100755 (executable)
index 0000000..088b33a
--- /dev/null
@@ -0,0 +1,659 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <media-svc.h>
+#include <visual-svc.h>
+#include <media-svc-error.h>
+#include <media-svc-types.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 *VideoItemList = NULL;
+static Eina_List *pAllTagList = NULL;
+
+MediaSvcHandle *pMediaSvcHandle = NULL;
+
+/*
+ * Callback function
+ */
+static int MpUtilMediaSvcMitemIterateCb(Mitem * pItem, void *pUserData)
+{
+       VideoLogInfo("Cluster ID: %s, File path:%s", pItem->cluster_uuid, pItem->file_url);
+
+       if (pItem->type == MINFO_ITEM_VIDEO) {
+               Eina_List **pList = (Eina_List **)pUserData;
+               *pList = eina_list_append(*pList, pItem);
+       }
+
+       return 0;
+}
+
+static int MpUtilMediaSvcMtagIterateGetTagListCb(Mtag * pItem, void *pUserData)
+{
+       VideoLogInfo("");
+
+       Eina_List **pList = (Eina_List **)pUserData;
+       *pList = eina_list_append(*pList, pItem);
+
+       return 0;
+}
+
+/*
+ * 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;
+}
+
+bool MpUtilMediaSvcDestroyList(Eina_List *pList)
+{
+       if (!pList) {
+               VideoLogInfo("pList is empty already.");
+               return FALSE;
+       }
+
+       Mitem *pMitem = NULL;
+       EINA_LIST_FREE(pList, pMitem) {
+               if (pMitem) {
+                       minfo_destroy_mtype_item(pMitem);
+                       pMitem = NULL;
+               }
+       }
+
+       pList = NULL;
+
+       return TRUE;
+}
+
+/*
+ * External function
+ */
+
+void MpUtilMediaSvcInitSession(void)
+{
+       VideoLogInfo("");
+
+       int nRet = 0;
+
+       nRet = media_svc_connect(&pMediaSvcHandle);
+
+       if(nRet < 0)
+       {
+               VideoLogInfo("[ERR]");
+       }
+}
+
+void MpUtilMediaSvcFinishSession(void)
+{
+       VideoLogInfo("");
+
+       media_svc_disconnect(pMediaSvcHandle);
+}
+
+void MpUtilMediaSvcDestoryVideoList(void)
+{
+       VideoLogInfo("");
+
+       if (VideoItemList) {
+               MpUtilMediaSvcDestroyList(VideoItemList);
+               VideoItemList = NULL;
+       }
+}
+
+bool MpUtilMediaSvcDestroyItem(char *szFilePath)
+{
+       VideoLogInfo("");
+
+       if (!szFilePath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       if (!VideoItemList) {
+               VideoLogInfo("pList is empty already.");
+               return FALSE;
+       }
+
+       Mitem *pMitem = NULL;
+       Eina_List *pIterateList = NULL;
+       EINA_LIST_FOREACH(VideoItemList, pIterateList, pMitem) {
+               if (pMitem) {
+                       if (!strcmp(pMitem->file_url, szFilePath)) {
+                               VideoItemList = eina_list_remove(VideoItemList, pMitem);
+                       }
+               }
+       }
+       return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListFromFolder(char *szFilePath, int nSortType)
+{
+       VideoLogInfo("");
+
+       if (!szFilePath) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       if (VideoItemList) {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       VideoLogInfo("szFilePath : %s", szFilePath);
+
+       int nRet = 0;
+       char szFolderID[STR_UUID_LEN_MAX] = { 0, };
+       char szDirectoryPath[STR_LEN_MAX] = { 0, };
+       minfo_item_filter m_Filter = { 0, };
+
+       // Get directory path from filepath.
+       MpUtilMediaSvcGetFileDirectoryName(szFilePath, NULL, NULL, szDirectoryPath);
+       VideoLogInfo("Directory Path : %s", szDirectoryPath);
+
+       // Get folder ID by directory path.
+       nRet = minfo_get_cluster_id_by_url(pMediaSvcHandle, szDirectoryPath, szFolderID, STR_UUID_LEN_MAX);
+       VideoLogInfo("Folder ID : %s", szFolderID);
+
+       // Set sorting type.
+       switch (nSortType) {
+       case MP_MEDIA_SORT_BY_NONE:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NONE;
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_DESC;
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_DESC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_ASC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+               break;
+
+       default:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+       }
+
+       // Set sorting type.
+       m_Filter.favorite = MINFO_MEDIA_FAV_ALL;
+       m_Filter.file_type = MINFO_ITEM_VIDEO;
+       m_Filter.start_pos = -1;
+       m_Filter.end_pos = -1;
+       m_Filter.with_meta = TRUE;
+
+       // Get Item List.
+       minfo_get_item_list(pMediaSvcHandle, szFolderID, m_Filter, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+       return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListFromAllFolderOfGallery(int nSortType)
+{
+       VideoLogInfo("");
+
+       if (VideoItemList) {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       minfo_item_filter m_Filter = { 0 };
+
+       /* Set sorting type. */
+       switch (nSortType) {
+       case MP_MEDIA_SORT_BY_NONE:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NONE;
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_DESC;
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_DESC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_ASC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+               break;
+
+       default:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+       }
+
+       VideoLogInfo("Sorting : %d", nSortType);
+
+       /* Set sorting type. */
+       m_Filter.favorite = MINFO_MEDIA_FAV_ALL;
+       m_Filter.file_type = MINFO_ITEM_VIDEO;
+       m_Filter.start_pos = -1;
+       m_Filter.end_pos = -1;
+       m_Filter.with_meta = TRUE;
+
+       /* Get All Item. */
+       minfo_get_all_item_list(pMediaSvcHandle, MINFO_CLUSTER_TYPE_LOCAL_ALL, m_Filter, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListByTagName(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 nRet = minfo_get_media_list_by_tagname(pMediaSvcHandle, szTagName, FALSE, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+       if (nRet < 0) {
+               VideoLogInfo("Failed to get a media items' list. error code->%d", nRet);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListFromFavorite(int nSortType)
+{
+       VideoLogInfo("");
+
+       if (VideoItemList) {
+               VideoLogInfo("Already exist video list.");
+               return FALSE;
+       }
+
+       minfo_item_filter m_Filter = { 0 };
+
+       /* Set sorting type. */
+       switch (nSortType) {
+       case MP_MEDIA_SORT_BY_NONE:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NONE;
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_DESC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_DESC;
+               break;
+
+       case MP_MEDIA_SORT_BY_NAME_ASC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_DESC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+               break;
+
+       case MP_MEDIA_SORT_BY_DATE_ASC:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+               break;
+
+       default:
+               m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+       }
+
+       m_Filter.favorite = MINFO_MEDIA_FAV_ONLY;
+       m_Filter.file_type = MINFO_ITEM_VIDEO;
+       m_Filter.start_pos = -1;
+       m_Filter.end_pos = -1;
+       m_Filter.with_meta = FALSE;
+
+       int nRet = minfo_get_item_list(pMediaSvcHandle, NULL, m_Filter, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+       if (nRet < 0) {
+               VideoLogInfo("Failed to get a media items' list. error code->%d", nRet);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void MpUtilMediaSvcMtagIterateDestroyTagList(void)
+{
+       VideoLogInfo("");
+
+       if (!pAllTagList) {
+               VideoLogInfo("pAllTagList is empty already.");
+               return;
+       }
+
+       Mtag *pMtag = NULL;
+       EINA_LIST_FREE(pAllTagList, pMtag) {
+               if (pMtag) {
+                       if (pMtag->tag_name) {
+                               free(pMtag->tag_name);
+                               pMtag->tag_name = NULL;
+                       }
+                       free(pMtag);
+                       pMtag = NULL;
+               }
+       }
+
+       pAllTagList = NULL;
+}
+
+int MpUtilMediaSvcMtagGetAllTagList(char *pTagList[])
+{
+       VideoLogInfo("");
+
+       int nErr = 0;
+       int nCount = 0;
+
+       if (pAllTagList) {
+               MpUtilMediaSvcMtagIterateDestroyTagList();
+       }
+
+       minfo_get_tag_list_by_media_id(pMediaSvcHandle, NULL, MpUtilMediaSvcMtagIterateGetTagListCb, &pAllTagList);
+
+       if (nErr == 0 && pAllTagList != NULL) {
+               Mtag *pMtag = NULL;
+               Eina_List *pTmpList = NULL;
+
+               EINA_LIST_FOREACH(pAllTagList, pTmpList, pMtag) {
+                       if (pMtag && pMtag->tag_name) {
+                               VideoLogInfo("%s of the tag has %d item(s).", pMtag->tag_name, pMtag->count);
+                               pTagList[nCount++] = pMtag->tag_name;
+                       }
+               }
+       }
+
+       VideoLogInfo("Size of User tag list is %d.", nCount);
+
+       return nCount;
+}
+
+bool MpUtilMediaSvcMtagAddItemToTag(const char *szTagName, char *szMediaUri)
+{
+       VideoLogInfo("");
+
+       if (!szTagName) {
+               VideoLogInfo("[ERR] No exist string pointer szTagName.");
+               return FALSE;
+       }
+
+       Mitem *m_Item = NULL;
+
+       if (szMediaUri) {
+               minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+       }
+
+       if (m_Item) {
+               minfo_add_tag(pMediaSvcHandle, m_Item->uuid, szTagName);
+               minfo_destroy_mtype_item(m_Item);
+       } else {
+               minfo_add_tag(pMediaSvcHandle, NULL, szTagName);
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcMtagGetItemToFavorite(char *szMediaUri)
+{
+       VideoLogInfo("");
+
+       if (!szMediaUri) {
+               VideoLogInfo("[ERR] No exist string pointer szMediaUri.");
+               return FALSE;
+       }
+
+       Mitem *m_Item = NULL;
+
+       minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+
+       if (m_Item) {
+               VideoLogInfo("Favorate value : %d", m_Item->rate);
+               if (m_Item->rate) {
+                       minfo_destroy_mtype_item(m_Item);
+                       return TRUE;
+               } else {
+                       minfo_destroy_mtype_item(m_Item);
+                       return FALSE;
+               }
+
+       } else {
+               VideoLogInfo("[ERR] m_Item is NULL.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpUtilMediaSvcMtagAddItemToFavorite(char *szMediaUri, bool bFavorite)
+{
+       VideoLogInfo("");
+
+       if (!szMediaUri) {
+               VideoLogInfo("[ERR] No exist string pointer szMediaUri.");
+               return FALSE;
+       }
+
+       Mitem *m_Item = NULL;
+
+       minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+
+       if (m_Item) {
+               int nRet = minfo_update_media_favorite(pMediaSvcHandle, m_Item->uuid, bFavorite);
+
+               if (nRet == 0) {
+                       VideoLogInfo("success to add item to favourites folder.");
+               } else {
+                       VideoLogInfo("fail - error code : %d ", nRet);
+               }
+
+               minfo_destroy_mtype_item(m_Item);
+       } else {
+               VideoLogInfo("[ERR] m_Item is NULL.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+char *MpUtilMediaSvcMitemGetThumbnailUrl(char *szMediaUri)
+{
+       VideoLogInfo("");
+
+       if (!szMediaUri) {
+               VideoLogInfo("[ERR] No exist string pointer szMediaUri.");
+               return FALSE;
+       }
+
+       Mitem *m_Item = NULL;
+       char *thumb_path = NULL;
+
+       minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+
+       if (m_Item) {
+               /* prevent 2011/07/12 */
+               thumb_path = strdup(m_Item->thumb_url);
+               minfo_destroy_mtype_item(m_Item);
+               return thumb_path;
+       }
+
+       return NULL;
+}
+
+bool MpUtilMediaSvcGetPreNextVideoUrl(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri)
+{
+       VideoLogInfo("");
+
+       if (!szCurrMediaUri) {
+               VideoLogInfo("[ERR] No exist current file path.");
+               return FALSE;
+       }
+
+       if (!VideoItemList) {
+               VideoLogInfo("No exist VideoItemList.");
+               return FALSE;
+       }
+
+       int nCount = 0;
+       int nListSize = 0;
+       Mitem *m_Item = 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, m_Item) {
+               if (m_Item == NULL)
+                       continue;
+
+               VideoLogInfo("URL of the File item - %s (%d / %d)", m_Item->file_url, nCount, nListSize);
+
+               if (!strcmp(m_Item->file_url, szCurrMediaUri)) {
+                       m_Item = NULL;
+                       m_Item = (Mitem *) eina_list_nth(VideoItemList, nCount - 1);
+                       if (m_Item) {
+                               strncpy(szPreMediaUri, m_Item->file_url, (sizeof(char) * STR_LEN_MAX) - 1);
+                       }
+
+                       m_Item = NULL;
+                       m_Item = (Mitem *) eina_list_nth(VideoItemList, nCount + 1);
+                       if (m_Item) {
+                               strncpy(szNextMediaUri, m_Item->file_url, (sizeof(char) * STR_LEN_MAX) - 1);
+                       }
+
+                       VideoLogInfo("PreMediaUri:%s", szPreMediaUri);
+                       VideoLogInfo("NextMediaUri:%s", szNextMediaUri);
+
+                       return TRUE;
+               }
+
+               ++nCount;
+       }
+
+       return FALSE;
+}
+
+void MpUtilMediaSvcGetVideoID(const char *szPath, char *szVideoID)
+{
+
+       VideoLogInfo("");
+
+       Mitem *item = NULL;
+       int ret = 0;
+
+       ret = minfo_get_item(pMediaSvcHandle, szPath, &item);
+       if (ret < 0) {
+               VideoLogInfo("minfo_get_item API error return:%s, %d", szPath, ret);
+               return;
+       }
+
+       if (item) {
+               memset((void*)szVideoID, 0, STR_LEN_MAX);
+               strncpy(szVideoID, item->uuid, STR_LEN_MAX-1);
+               minfo_destroy_mtype_item(item);
+       }
+}
+
+
+void MpUtilMediaSvcSaveLastPlayedTime(char* szMediaUri, unsigned int nLastPlayedTime)
+{
+       if (!szMediaUri) {
+               VideoLogInfo("No exist media uri.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       char szVid[STR_LEN_MAX] = {0};
+
+       MpUtilMediaSvcGetVideoID(szMediaUri, szVid);
+
+       if (strlen(szVid) > 0) {
+               minfo_update_video_meta_info_int(pMediaSvcHandle, szVid, MINFO_VIDEO_META_BOOKMARK_LAST_PLAYED, nLastPlayedTime);
+       } else {
+               VideoLogInfo("Invalid video ID.");
+       }
+}
diff --git a/src/mp-util.c b/src/mp-util.c
new file mode 100755 (executable)
index 0000000..15977c1
--- /dev/null
@@ -0,0 +1,1470 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <aul.h>
+#include <glib.h>
+#include <errno.h>
+#include <vconf.h>
+#include <pmapi.h>
+#include <utilX.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sensor.h>
+#include <appsvc.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <Ecore_Evas.h>
+#include <vconf-keys.h>
+#include <mm_session.h>
+#include <mm_sound.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-xml-parser.h"
+#include "mp-util-media-service.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-info-ctrl.h"
+
+#define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME               "org.tizen.bluetooth"
+
+#define MP_UTIL_VIDEO_PATH             "path"
+#define MP_UTIL_USER_AGENT_KEY "db/admin/uagent"
+#define MP_UTIL_COOKIE                 "cookie"
+
+#define MP_UTIL_MMC_PATH               "/opt/storage/sdcard"
+
+#define MP_UTIL_FILE_PREFIX            "file://"
+
+
+static Ecore_X_Window pMainXwindow = 0;
+static Ecore_X_Display *pX11DisplayHandle = NULL;
+static Evas_Object *pPopUpHandle = NULL;
+static Evas_Object *pPopupWindow = NULL;
+
+MpXMLItemInfo pXmlItem[XML_ITEM_NUM];
+int nXmlItemCount = 0;
+int nHttpQuality = 0;
+int nHttpCount = 0;
+int nRtspCount = 0;
+bool bXmlLoad = FALSE;
+
+/*
+ * Callback function
+ */
+
+static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       int nLowBatteryStatus = 0;
+
+       if (!pUserData) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!vconf_get_int
+           (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
+               if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+                       return;
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf");
+       }
+}
+
+static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       char szFilename[9] = { 0 };
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       char *keyname = vconf_keynode_get_name(pKeyNode);
+       if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) {
+               int nMMCState = vconf_keynode_get_int(pKeyNode);
+               if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) {
+                       strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1);
+                       VideoLogInfo("FILE NAME[%s]", szFilename);
+                       if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) {
+                               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+                       }
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf");
+       }
+}
+
+
+/*
+ * External function
+ */
+
+void MpUtilExitVideoPlayer(void)
+{
+       VideoLogInfo("");
+
+       elm_exit();
+}
+
+static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject,
+                                   void *pEvent)
+{
+       VideoLogInfo("");
+
+       MpUtilExitVideoPlayer();
+}
+
+void MpUtilResetForRelaunching(void)
+{
+       VideoLogInfo("");
+
+       pX11DisplayHandle = NULL;
+       pPopUpHandle = NULL;
+       pPopupWindow = NULL;
+
+       memset(pXmlItem, 0, sizeof(MpXMLItemInfo) * XML_ITEM_NUM);
+
+       nXmlItemCount = 0;
+       nHttpQuality = 0;
+       nHttpCount = 0;
+       nRtspCount = 0;
+       bXmlLoad = FALSE;
+}
+
+void *MpUtilCreateMainWindow(const char *pStrName)
+{
+       VideoLogInfo("");
+
+       if (!pStrName) {
+               VideoLogInfo("[ERR] No exist pStrName.");
+               return NULL;
+       }
+
+       if (pMainXwindow) {
+               evas_object_del((Evas_Object *)pMainXwindow);
+               pMainXwindow = 0;
+       }
+
+       int nWidth, nHeight;
+       Evas_Object *pEvasObject;
+
+       ecore_evas_app_comp_sync_set(0);
+       pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
+       if (pEvasObject) {
+               elm_win_title_set(pEvasObject, pStrName);
+               elm_win_borderless_set(pEvasObject, EINA_TRUE);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &nWidth, &nHeight);
+
+               evas_object_resize(pEvasObject, nWidth, nHeight);
+
+               evas_object_smart_callback_add(pEvasObject, "delete,request",
+                                              MpUtilDestroyMainWindow, NULL);
+       }
+
+       pMainXwindow = elm_win_xwindow_get(pEvasObject);
+
+       ////////////////////////////
+       // TEMP
+
+       Evas_Object *pRect = NULL;
+       Evas *pMainWindowEvas = evas_object_evas_get(pEvasObject);
+       
+       pRect = evas_object_rectangle_add(pMainWindowEvas);
+       evas_object_color_set(pRect, 0, 0, 0, 0);
+       evas_object_render_op_set(pRect, EVAS_RENDER_COPY);
+       evas_object_resize(pRect, nWidth, nHeight);
+       evas_object_show(pRect);
+
+       return (void *)pEvasObject;
+}
+
+void *MpUtilCreateWindow(const char *pStrName)
+{
+       VideoLogInfo("");
+
+       if (!pStrName) {
+               VideoLogInfo("[ERR] No exist pStrName.");
+               return NULL;
+       }
+
+       if (!pMainXwindow) {
+               VideoLogInfo("[ERR] No exist pMainXwindow.");
+               return NULL;
+       }
+
+       int nWidth = 0, nHeight = 0;
+       Evas_Object *pEvasObject = NULL;
+
+       pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
+       if (pEvasObject) {
+               elm_win_title_set(pEvasObject, pStrName);
+               elm_win_borderless_set(pEvasObject, EINA_TRUE);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &nWidth, &nHeight);
+               evas_object_resize(pEvasObject, nWidth, nHeight);
+       }
+
+       elm_win_alpha_set(pEvasObject, TRUE);
+       ecore_x_icccm_transient_for_set(elm_win_xwindow_get(pEvasObject), pMainXwindow);
+       utilx_set_window_effect_state(ecore_x_display_get(), elm_win_xwindow_get(pEvasObject), 0);
+       evas_object_show(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;
+       }
+
+       if (strstr(szUriPath, "rtp"))
+               return TRUE;
+       else if (strstr(szUriPath, "rtsp"))
+               return TRUE;
+
+       return FALSE;
+}
+
+int MpUtilCheckPlayerType(char *szUriPath)
+{
+       if(szUriPath == NULL) {
+               VideoLogInfo("ERR:");
+               return FALSE;
+       }
+
+       VideoLogInfo(" URI : %s", szUriPath);
+
+       if (strstr(szUriPath, "rtp"))
+               return 1;
+       else if (strstr(szUriPath, "rtsp"))
+               return 1;
+       else if (strstr(szUriPath, "http"))
+               return 1;
+       else if (strstr(szUriPath, "https"))
+               return 1;
+
+       return 0;
+}
+
+bool MpUtilGetURIFromBundle(bundle * pBundleData, VideoAppData *pAppData)
+{
+       char *pStrVideoURI = NULL;
+
+       if (!pBundleData || !bundle_get_count(pBundleData)) {
+               VideoLogInfo
+                   ("[ERR] No exist pBundleData pointer or bundle count value.");
+               return FALSE;
+       }
+
+       pStrVideoURI = (char *)bundle_get_val(pBundleData, MP_UTIL_VIDEO_PATH);
+       if (pStrVideoURI) {
+               strncpy(pAppData->szMediaUri, pStrVideoURI, STR_LEN_MAX - 1);
+       } else {
+               VideoLogInfo("[ERR] No exist video/streaming URI.");
+               return FALSE;
+       }
+
+       VideoLogInfo("Video/Streaming URI path pStrVideoURI : %s",
+                    pStrVideoURI);
+       VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s",
+                    pAppData->szMediaUri);
+
+       return TRUE;
+}
+
+bool MpUtilGetURIFromAUL(bundle * pBundleData, VideoAppData *pAppData)
+{
+       char *pStrVideoURI = NULL;
+
+       if (!pBundleData || !bundle_get_count(pBundleData)) {
+               VideoLogInfo
+                   ("[ERR] No exist pBundleData pointer or bundle count value.");
+               return FALSE;
+       }
+
+
+       if(!strcmp(APPSVC_OPERATION_VIEW , appsvc_get_operation(pBundleData)))
+       {
+               pStrVideoURI = (char *)appsvc_get_uri(pBundleData);
+               if (pStrVideoURI) {
+                       strncpy(pAppData->szMediaUri, pStrVideoURI, STR_LEN_MAX - 1);
+               } else {
+                       VideoLogInfo("[ERR] No exist video/streaming URI.");
+                       return FALSE;
+               }
+       }
+       else
+       {
+               VideoLogInfo("[ERR] No exist Operation.");
+               return FALSE;
+       }
+
+       VideoLogInfo("Video/Streaming URI path pStrVideoURI : %s",
+                    pStrVideoURI);
+       VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s",
+                    pAppData->szMediaUri);
+
+       return TRUE;
+}
+
+
+bool MpUtilGetCookieFromBundle(bundle * pBundleData, VideoAppData *pAppData)
+{
+       char *pStrVideoCookie = NULL;
+
+       if (!pBundleData || !bundle_get_count(pBundleData)) {
+               VideoLogInfo
+                   ("[ERR] No exist pBundleData pointer or bundle count value.");
+               return FALSE;
+       }
+
+       pStrVideoCookie = (char *)bundle_get_val(pBundleData, MP_UTIL_COOKIE);
+       if (pStrVideoCookie) {
+               strncpy(pAppData->szCookie, pStrVideoCookie, STR_LEN_MAX - 1);
+       } else {
+               VideoLogInfo("[ERR] No exist video/streaming URI.");
+               return FALSE;
+       }
+
+       VideoLogInfo("Video/Streaming URI path Cookie : %s", pStrVideoCookie);
+
+       return TRUE;
+}
+
+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 MpUtilCheckVideoURI(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if (pAppData == NULL) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       if (strlen(pAppData->szMediaUri) > 0) {
+               if (MpUtilCheckPlayerType(pAppData->szMediaUri)) {
+                       VideoLogInfo("=== SETTING STREAMING TYPE ===");
+                       strncpy(pAppData->szVideoTitle, MP_STREAMING_PLAYER_STR,
+                               STR_LEN_MAX - 1);
+                       pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+               } else {
+                       VideoLogInfo("=== SETTING VIDEO TYPE ===");
+                       pAppData->nCurPlayerType = MP_VIDEO_PLAYER;
+               }
+       } else {
+               VideoLogInfo("[ERR] No exist video/streaming URI.");
+               return FALSE;
+       }
+
+       VideoLogInfo("pAppData->szMediaUri : %s", pAppData->szMediaUri);
+
+       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 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 TRUE;
+}
+
+
+
+int MpUtilMMCstatusNotiIgnore(void)
+{
+       VideoLogInfo("");
+
+       if (vconf_ignore_key_changed
+           (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) {
+               VideoLogInfo("[ERR] Fail to ignore MMC status.");
+       }
+
+       return TRUE;
+}
+
+void MpUtilLanguageInit(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if (!pAppData) {
+               VideoLogInfo("[ERR] No exist appdata.");
+               return;
+       }
+
+       char *szPath = NULL;
+
+       szPath = vconf_get_str(VCONFKEY_LANGSET);
+       if (!szPath) {
+               VideoLogInfo("Language setting has no proper value (nil)");
+               return;
+       }
+
+       VideoLogInfo("Setting language is %s", szPath);
+
+       setenv("LANG", szPath, 1);
+       setenv("LC_ALL", szPath, 1);
+       setenv("LANGUAGE", szPath, 1);
+       setlocale(LC_ALL, "");
+       bindtextdomain(PACKAGE, LOCALEDIR);
+       textdomain(PACKAGE);
+}
+
+int MpUtilCheckStartPositionTime(void *pBundle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle data.");
+               return 0;
+       }
+
+       int nStartPositionTime = 0;
+       char *szStartPosTime = (char *)bundle_get_val(pBundle, szBundleKey);
+
+       if (!szStartPosTime) {
+               VideoLogInfo("No exist start position time.");
+               return 0;
+       }
+
+       nStartPositionTime = atoi(szStartPosTime);
+
+       VideoLogInfo("Start position time : %d", nStartPositionTime);
+
+       return nStartPositionTime;
+}
+
+bool MpUtilCheckLaunchingByMime(void *pBundle, char *szMediaUri)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("[ERR] No Exist bundle.");
+               return FALSE;
+       }
+
+       if (!szMediaUri) {
+               VideoLogInfo("[ERR] No Exist media uri.");
+               return FALSE;
+       }
+
+       char *szMimeContent =
+           (char *)bundle_get_val(pBundle, AUL_K_MIME_CONTENT);
+
+       if (!szMimeContent) {
+               VideoLogInfo("No exist mime type.");
+               return FALSE;
+       }
+
+       VideoLogInfo("Mime content : %s", szMimeContent);
+       strncpy(szMediaUri, szMimeContent, STR_LEN_MAX - 1);
+
+       return TRUE;
+}
+
+int MpUtilCheckLaunchingByOtherApp(void *pBundle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle data.");
+               return MP_LAUNCH_APP_DEFAULT;
+       }
+
+       char *szLaunchingByOtherApp =
+           (char *)bundle_get_val(pBundle, szBundleKey);
+       MpLaunchingAppType nTmpLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
+
+       if (!szLaunchingByOtherApp) {
+               VideoLogInfo("No exist Launching application.");
+               return nTmpLaunchingAppType;
+       }
+
+       if (!strcmp(szLaunchingByOtherApp, "gallery")) {
+               nTmpLaunchingAppType = MP_LAUNCH_APP_GALLERY;
+       } else if (!strcmp(szLaunchingByOtherApp, "image_viewer")) {
+               nTmpLaunchingAppType = MP_LAUNCH_APP_IMAGE_VIEWER;
+       } else if (!strcmp(szLaunchingByOtherApp, "email")) {
+               nTmpLaunchingAppType = MP_LAUNCH_APP_SIMPLE_VIEW;
+       } else if (!strcmp(szLaunchingByOtherApp, "message")) {
+               nTmpLaunchingAppType = MP_LAUNCH_APP_SIMPLE_VIEW;
+       } else if (!strcmp(szLaunchingByOtherApp, "light_play_view")) {
+               nTmpLaunchingAppType = MP_LAUNCH_APP_SIMPLE_VIEW;
+       } else {
+               nTmpLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
+       }
+
+       VideoLogInfo("Start position time : %d", nTmpLaunchingAppType);
+
+       return (int)nTmpLaunchingAppType;
+}
+
+int MpUtilCheckSortType(void *pBundle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle data.");
+               return (int)MP_MEDIA_SORT_BY_NONE;
+       }
+
+       char *szSortType = (char *)bundle_get_val(pBundle, szBundleKey);
+       MpMediaSortType nTmpSortType = MP_MEDIA_SORT_BY_NAME_DESC;
+
+       if (!szSortType) {
+               VideoLogInfo("No exist sort type information.");
+               return (int)nTmpSortType;
+       }
+
+       if (!strcmp(szSortType, "name_asc")) {
+               nTmpSortType = MP_MEDIA_SORT_BY_NAME_ASC;
+       } else if (!strcmp(szSortType, "name_desc")) {
+               nTmpSortType = MP_MEDIA_SORT_BY_NAME_DESC;
+       } else if (!strcmp(szSortType, "date_asc")) {
+               nTmpSortType = MP_MEDIA_SORT_BY_DATE_ASC;
+       } else if (!strcmp(szSortType, "date_desc")) {
+               nTmpSortType = MP_MEDIA_SORT_BY_DATE_DESC;
+       } else if (!strcmp(szSortType, "none")) {
+               nTmpSortType = MP_MEDIA_SORT_BY_NONE;
+       } else {
+               nTmpSortType = MP_MEDIA_SORT_BY_NAME_DESC;
+       }
+
+       return (int)nTmpSortType;
+}
+
+int MpUtilCheckListType(void *pBundle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle data.");
+               VideoLogInfo("Video list type : folder");
+               return (int)MP_VIDEO_LIST_TYPE_FOLDER;
+       }
+
+       if (!szBundleKey) {
+               VideoLogInfo("No exist bundle kay.");
+               VideoLogInfo("Video list type : folder");
+               return (int)MP_VIDEO_LIST_TYPE_FOLDER;
+       }
+
+       char *szVideoListType = (char *)bundle_get_val(pBundle, szBundleKey);
+       MpVideoListType nTmpVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+
+       if (!szVideoListType) {
+               VideoLogInfo("No exist video list type information.");
+               VideoLogInfo("Video list type : folder");
+               return (int)nTmpVideoListType;
+       }
+
+       if (!strcmp(szVideoListType, "folder")) {
+               nTmpVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+               VideoLogInfo("Video list type : folder");
+       } else if (!strcmp(szVideoListType, "all_folder_video")) {
+               nTmpVideoListType = MP_VIDEO_LIST_TYPE_ALL_FOLDER_GALLERY;
+               VideoLogInfo("Video list type : all_folder_video");
+       } else if (!strcmp(szVideoListType, "tag_video")) {
+               nTmpVideoListType = MP_VIDEO_LIST_TYPE_TAG_GALLERY;
+               VideoLogInfo("Video list type : tag_video");
+       } else if (!strcmp(szVideoListType, "favorite")) {
+               nTmpVideoListType = MP_VIDEO_LIST_TYPE_FAVORITE;
+               VideoLogInfo("Video list type : favorite");
+       } else {
+               nTmpVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+               VideoLogInfo("Video list type : folder");
+       }
+
+       return (int)nTmpVideoListType;
+}
+
+bool MpUtilGetTagNameOfGallery(void *pBundle, char *szBundleKey,
+                              char *szTagName)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle.");
+               return FALSE;
+       }
+
+       if (!szBundleKey) {
+               VideoLogInfo("No exist bundle kay.");
+               return FALSE;
+       }
+
+       if (!szTagName) {
+               VideoLogInfo("No exist pAppData.");
+               return FALSE;
+       }
+
+       char *szVideoTagName = (char *)bundle_get_val(pBundle, szBundleKey);
+
+       if (!szVideoTagName) {
+               VideoLogInfo("No exist video tag name.");
+               return FALSE;
+       }
+
+       strncpy(szTagName, szVideoTagName, STR_LEN_MAX - 1);
+
+       VideoLogInfo("szTagName : %s", szTagName);
+
+       return TRUE;
+}
+
+int MpUtilCheckDlnaSortType(void *pBundle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle data.");
+               return (int)MP_MEDIA_SORT_BY_NONE;
+       }
+
+       char *szSortType = (char *)bundle_get_val(pBundle, szBundleKey);
+       if(szSortType == NULL) {
+               VideoLogInfo("No exist bundle value.");
+               return -1;
+       }
+       int nTmpSortType = atoi(szSortType);
+
+       return (int)nTmpSortType;
+}
+
+int MpUtilCheckDlnaMediaID(void *pBundle, char *szBundleKey)
+{
+       VideoLogInfo("");
+
+       if (!pBundle) {
+               VideoLogInfo("No exist bundle data.");
+               return -1;
+       }
+
+       char *szMediID = (char *)bundle_get_val(pBundle, szBundleKey);
+
+       if (szMediID == NULL) {
+               VideoLogInfo("No exist bundle value.");
+               return -1;
+       }
+
+       int media_id = atoi(szMediID);
+
+       return (int)media_id;
+}
+
+bool MpUtilIsXMLUrl(char *szMediaUri)
+{
+       VideoLogInfo("URI : %s", szMediaUri);
+
+       if (!g_str_has_suffix(szMediaUri, ".xml")) {
+               VideoLogInfo("No have xml uri.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+void MpUtilInitXML()
+{
+       VideoLogInfo("");
+
+       mp_xml_init();
+}
+
+void MpUtilDestroyXML()
+{
+       VideoLogInfo("");
+
+       mp_xml_destroy();
+}
+
+char *MpUtilGetXMLQualityURL(void)
+{
+       VideoLogInfo("");
+
+       if (nHttpCount > 1 || nRtspCount > 1) {
+               nHttpQuality = (nHttpQuality + 1) % 2;
+               return strdup(pXmlItem[nHttpQuality].szURL);
+       }
+
+       return NULL;
+}
+
+bool MpUtilParsingXML(char *szMediaUri, VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+       char *pXmlData = NULL;
+       char *szTmpUri = NULL;
+       int nInsertCount = 0;
+       unsigned int nFileSize = 0;
+
+       if (!szMediaUri) {
+               VideoLogInfo("[ERR] No have Media uri.");
+               return FALSE;
+       }
+       MpUtilInitXML();
+
+       szTmpUri = (char *)strdup(pAppData->szMediaUri);
+
+       if (szTmpUri == NULL) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       if (!g_str_has_suffix(szTmpUri, ".xml")) {
+               VideoLogInfo("No have xml uri.");
+               if (szTmpUri)
+                       free(szTmpUri);
+               return TRUE;
+       }
+
+       memset(pXmlItem, 0, sizeof(MpXMLItemInfo) * XML_ITEM_NUM);
+
+       nFileSize = mp_read_xml_file(szTmpUri, &pXmlData);
+       if (nFileSize == 0 || pXmlData == NULL) {
+               VideoLogInfo("[ERR] Invalid XML File : %s", szTmpUri);
+               if (szTmpUri)
+                       free(szTmpUri);
+
+               if (pXmlData)
+                       free(pXmlData);
+
+               return FALSE;
+       }
+
+       nInsertCount = mp_get_xmlitem(pXmlData, nFileSize,
+                                     pXmlItem, &nHttpCount, &nRtspCount);
+       if (nInsertCount > 0) {
+               VideoLogInfo("Get xml item : %d", nInsertCount);
+               nXmlItemCount = nInsertCount;
+       }
+
+       if (nHttpCount > 1) {
+               nHttpQuality = 0;
+               memset((void *)pAppData->szMediaUri, 0,
+                      sizeof(pAppData->szMediaUri));
+               strncpy(pAppData->szMediaUri, pXmlItem[nHttpQuality].szURL,
+                       STR_LEN_MAX - 1);
+               nXmlItemCount = nHttpCount;
+       } else if (nRtspCount > 1) {
+               nHttpQuality = 0;
+               memset((void *)pAppData->szMediaUri, 0,
+                      sizeof(pAppData->szMediaUri));
+               strncpy(pAppData->szMediaUri, pXmlItem[nHttpQuality].szURL,
+                       STR_LEN_MAX - 1);
+               VideoLogInfo("URL : %s", pAppData->szMediaUri);
+               nXmlItemCount = nRtspCount;
+       } else {
+               char *szParsedUrl = NULL;
+               bool bResult =
+                   mp_get_url_from_xml(pXmlData, nFileSize, &szParsedUrl,
+                                       _WIFI_MODE_);
+
+               if (bResult == FALSE || szParsedUrl == NULL) {
+                       VideoLogInfo("[ERR] XML parsing failed!");
+                       free(szTmpUri);
+                       return FALSE;
+               }
+
+               memset((void *)pAppData->szMediaUri, 0, STR_LEN_MAX);
+               strncpy(pAppData->szMediaUri, szParsedUrl, STR_LEN_MAX - 1);
+
+               if (szParsedUrl) {
+                       free(szParsedUrl);
+               }
+       }
+
+       pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+
+       strncpy(pAppData->szVideoTitle, mp_get_title_from_xml(szTmpUri),
+               STR_LEN_MAX - 1);
+
+       bXmlLoad = TRUE;
+
+       if (pXmlData) {
+               free(pXmlData);
+       }
+
+       if (szTmpUri) {
+               free(szTmpUri);
+       }
+
+       return TRUE;
+}
+
+int MpUtilGetXMLItemCount(void)
+{
+       VideoLogInfo("");
+
+       if (nHttpCount > 0)
+               return nHttpCount;
+
+       if (nRtspCount > 0)
+               return nRtspCount;
+
+       return 0;
+
+}
+
+bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle)
+{
+       VideoLogInfo("");
+
+       if (!szFilepath || !szTitle) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       char *szTitleName;
+       char *szExt;
+
+       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("");
+
+       mm_session_init(MM_SESSION_TYPE_EXCLUSIVE);
+}
+
+void MpUtilFinishSession(void)
+{
+       VideoLogInfo("");
+
+       mm_session_finish();
+}
+
+void MpUtilVolumeTypeSet(void)
+{
+       VideoLogInfo("");
+
+       mm_sound_volume_primary_type_set(VOLUME_TYPE_MEDIA);
+}
+
+void MpUtilVolumeTypeUnset(void)
+{
+       VideoLogInfo("");
+
+       mm_sound_volume_primary_type_clear();
+}
+
+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.");
+       }
+}
+
+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();
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(pPopUpHandle, szContents);
+       elm_object_part_text_set(pPopUpHandle, "title,text", dgettext("sys_string", MP_COM_POP_ERROR));
+       elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+       if (PopupButtonCallbackFunc) {
+               evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
+       }
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+bool 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();
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       elm_object_text_set(pPopUpHandle, szContents);
+       elm_object_part_text_set(pPopUpHandle, "title,text", dgettext("sys_string", MP_COM_POP_ERROR));
+       elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+       if (PopupButtonCallbackFunc) {
+               evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
+       }
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+
+bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents,
+                     void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc)
+{
+       VideoLogInfo("");
+
+       if (szTitle == NULL || szContents == NULL || pAppData == NULL) {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       Evas_Object *pButton = NULL;
+
+       MpUtilDeletePopupHandle();
+
+       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_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_SK_YES));
+       elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+       if(PopupYesButtonCallbackFunc)
+       {
+               evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData);
+       }
+
+       pButton = elm_button_add(pPopUpHandle);
+       elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_SK_NO));
+       elm_object_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;
+}
+
+void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pLabel = NULL;
+
+       pLabel = elm_label_add(pBox);
+       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, char *szTitle, void *PopupButtonCallbackFunc)
+{
+       VideoLogInfo("");
+
+       if(szTitle == NULL || pAppData == NULL)
+       {
+               VideoLogInfo("No have popup message or pAppData is null.");
+               return FALSE;
+       }
+
+       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;
+
+       Evas_Object *pBox = NULL;
+       Evas_Object *pButton = NULL;
+
+       MpUtilDeletePopupHandle();
+
+       pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       MpVideoInfoCtrlGetFileInfo(pAppData->szMediaUri, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX);
+       MpVideoInfoCtrlGetGPS(pAppData->szMediaUri, &nLongtitude, &nLatitude);
+
+       pBox = elm_box_add(pPopUpHandle);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s </align></font_size>", dgettext(MP_SYS_STRING, MP_COM_BODY_DETAILS_TITLE), pAppData->szVideoTitle);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", dgettext(MP_SYS_STRING, MP_COM_BODY_FORMAT), szTmpFileExtension);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", dgettext(MP_SYS_STRING, MP_COM_POP_DATE), szTmpFileDate);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", dgettext(MP_SYS_STRING, MP_COM_BODY_SIZE), szTmpFileSize);
+       MpUtilSetLabelForDetail(pBox, szTmpStr);
+       memset(szTmpStr, 0, STR_LEN_MAX);
+
+       snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %d x %d</align></font_size>", dgettext(MP_SYS_STRING, MP_IDLE_BODY_RESOLUTION), pAppData->nVideoWidthResolution, pAppData->nVideoHeightResolution);
+       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_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_SK_BACK));
+       elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+       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();
+       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);
+
+       evas_object_show(pPopUpHandle);
+
+       return TRUE;
+}
+
+void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool nX, bool nY, void *pUserData, char* szButtonStyle, void *func)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pButton = NULL;
+       Evas_Object *pIcon = NULL;
+
+       pButton = elm_button_add(pParent);
+       pIcon = elm_icon_add(pParent);
+       elm_icon_file_set(pIcon, szIconPath, NULL);
+       evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+       elm_icon_resizable_set(pIcon, nX, nY);
+
+       if(szButtonStyle) {
+               elm_object_style_set(pButton, szButtonStyle);
+       }
+
+       elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon);
+       evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData);
+       evas_object_show(pButton);
+
+       return (void *)pButton;
+}
+
+int MpUtilSendFileViaBluetooth(char *szFilepath)
+{
+       VideoLogInfo("");
+
+       if (!szFilepath) {
+               VideoLogInfo("[ERR] filepath == NULL.");
+       }
+
+       int nRet = 0;
+
+       bundle *pBundleHandle = NULL;
+
+       pBundleHandle = bundle_create();
+
+       bundle_add(pBundleHandle, "launch-type", "send");
+       bundle_add(pBundleHandle, "filecount", "1");
+       bundle_add(pBundleHandle, "files", szFilepath);
+
+       nRet = aul_launch_app(MP_LAUNCH_BLUETOOTH_PACKAGE_NAME, pBundleHandle);
+
+       bundle_free(pBundleHandle);
+
+       return nRet;
+}
+
+void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pEdj = NULL;
+       int nWidth = 0;
+       int nHeight = 0;
+
+       pEdj = edje_object_add(pEvas);
+       if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) {
+               VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName,
+                            szGroupName);
+               return NULL;
+       }
+
+       edje_object_size_min_get(pEdj, &nWidth, &nHeight);
+       evas_object_resize(pEdj, nWidth, nHeight);
+
+       return (void *)pEdj;
+}
+
+bool MpUtilCheckCallStatus(void)
+{
+       VideoLogInfo("");
+
+       int nCallStatus = 0;
+
+       if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) {
+               if (nCallStatus != VCONFKEY_CALL_OFF) {
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+bool MpUtilIsConnectEarjack(void)
+{
+       VideoLogInfo("");
+
+       int nEarjack = 0;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) {
+               if (nEarjack) {
+                       return TRUE;
+               }
+       }
+
+       return FALSE;
+}
+
+bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData)
+{
+       if (!pEarjackCb) {
+               VideoLogInfo("pEarjackCb is empty.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData);
+
+       return TRUE;
+}
+
+int *MpUtilGetMainWindowXID(void)
+{
+       VideoLogInfo("");
+
+       if (pMainXwindow) {
+               VideoLogInfo("pMainXwindow : %d", pMainXwindow);
+               return (int *)&pMainXwindow;
+       } else {
+               VideoLogInfo("No exist main window XID.");
+       }
+
+       return 0;
+}
+
+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 (!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, 0);
+}
+
+void MpUtilLcdNormalPowerUnlockForPause(void)
+{
+       VideoLogInfo("");
+
+       pm_unlock_state(LCD_NORMAL, PM_KEEP_TIMER);
+}
+
+void MpUtilLcdOffForPowerButton(void)
+{
+       VideoLogInfo("");
+
+       pm_unlock_state(LCD_NORMAL, PM_KEEP_TIMER);
+}
+
+void MpUtilMultimediaKeyGrab(void)
+{
+       VideoLogInfo("");
+
+       MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE);
+       MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE);
+}
+
+void MpUtilMultimediaKeyUngrab(void)
+{
+       VideoLogInfo("");
+
+       MpUtilSetKeyUngrab(PAUSE_KEY);
+       MpUtilSetKeyUngrab(PLAY_KEY);
+       MpUtilSetKeyUngrab(STOP_KEY);
+       MpUtilSetKeyUngrab(NEXT_KEY);
+       MpUtilSetKeyUngrab(PREV_KEY);
+       MpUtilSetKeyUngrab(FORWARD_KEY);
+       MpUtilSetKeyUngrab(REWIND_KEY);
+}
+
diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c
new file mode 100755 (executable)
index 0000000..63aae3a
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <appcore-efl.h>
+
+#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)
+{
+       char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
+
+       snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d",
+                SIGNAL_ANIMATION_IMAGE_LOADING, nIconIndex);
+
+       edje_object_signal_emit(pAnimationEdj, sig_format, "*");
+
+       nIconIndex += 1;
+       if (nIconIndex > ANIMATION_MAX_COUNT)
+               nIconIndex = 1;
+
+       return EINA_TRUE;
+}
+
+void *MpVideoAnimationCtrlInit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pUserData == NULL) {
+               VideoLogInfo("data is NULL");
+               return NULL;
+       }
+
+       Evas *pMainWindowEvas = (Evas *) pUserData;
+
+       pAnimationEdj = MpUtilLoadEdjFile(pMainWindowEvas,
+                                         VIDEO_PLAYER_ANIMATION_EDJ,
+                                         ANIMATION_EDJ_GROUP);
+
+       evas_object_hide(pAnimationEdj);
+
+       return (void *)pAnimationEdj;
+}
+
+void MpVideoAnimationCtrlDestroy(void)
+{
+       VideoLogInfo("");
+
+       if (pAnimationTimer) {
+               ecore_timer_del(pAnimationTimer);
+               pAnimationTimer = NULL;
+       }
+
+       if (pAnimationEdj) {
+               evas_object_hide(pAnimationEdj);
+               evas_object_del(pAnimationEdj);
+               pAnimationEdj = NULL;
+       }
+
+       nIconIndex = 0;
+}
+
+void MpVideoAnimationCtrlSetPercent(int nPercent)
+{
+       VideoLogInfo("");
+       if (nPercent >= 0) {
+               char szBuffering[BUFFERING_TXT_MAX_LEN] = { 0, };
+
+               snprintf(szBuffering, BUFFERING_TXT_MAX_LEN, "Loading %d%%...",
+                        nPercent);
+               edje_object_part_text_set(pAnimationEdj, "loading.txt",
+                                         szBuffering);
+       } else {
+               edje_object_part_text_set(pAnimationEdj, "loading.txt",
+                                         "Loading...");
+       }
+}
+
+void MpVideoAnimationCtrlPlay(void)
+{
+       VideoLogInfo("");
+       if (pAnimationTimer == NULL) {
+               pAnimationTimer = ecore_timer_add(ANIMATION_TIMER_INTERVAL,
+                                                 MpVideoAnimationCtrlTimerCb,
+                                                 NULL);
+       }
+}
+
+void MpVideoAnimationCtrlStop(void)
+{
+       VideoLogInfo("");
+
+       if (pAnimationTimer) {
+               ecore_timer_del(pAnimationTimer);
+               pAnimationTimer = NULL;
+       }
+}
+
+void MpVideoAnimationCtrlShow(void)
+{
+       VideoLogInfo("");
+
+       if (pAnimationTimer == NULL) {
+               MpVideoAnimationCtrlPlay();
+               MpVideoAnimationCtrlSetPercent(-1);
+               evas_object_show(pAnimationEdj);
+       }
+}
+
+void MpVideoAnimationCtrlHide(void)
+{
+       VideoLogInfo("");
+
+       MpVideoAnimationCtrlStop();
+       evas_object_hide(pAnimationEdj);
+}
+
+bool MpVideoAnimationCtrlGetActiveState(void)
+{
+       VideoLogInfo("");
+       if (pAnimationTimer)
+               return true;
+       else
+               return false;
+}
diff --git a/src/mp-video-app-ctrl.c b/src/mp-video-app-ctrl.c
new file mode 100755 (executable)
index 0000000..dfec7ae
--- /dev/null
@@ -0,0 +1,1606 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <mm_error.h>
+#include <mm_message.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-app-ctrl.h"
+#include "mp-video-view-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-subtitle-ctrl.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-ctrl.h"
+
+#include "mp-video-ctrl-mgr.h"
+
+static int nBufferingRate = 0;
+static double nDurationTime = 0;
+static char szSubtitleString[STR_LEN_MAX] = {0};
+static int nErrorCode = 0;
+
+static Ecore_Pipe      *pEcorePipeHandleForErrorMsg = NULL;
+static Ecore_Pipe      *pEcorePipeHandleBOF = NULL;
+static Ecore_Pipe      *pEcorePipeHandleEOF = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForBuffering = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForBluetooth = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForSubTitle = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForResumed = NULL;
+static Ecore_Pipe      *pEcorePipeHandleForInterruped = 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 MpVideoAppCtrlSetMute(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetScreenType(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetScreenSize(VideoAppData *pAppData, int nScreenSize);
+static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData);
+static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData);
+static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData);
+static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData);
+static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData);
+static void MpVideoAppCtrlExit(VideoAppData *pAppData);
+static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData);
+static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData);
+static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData);
+static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlErrorMsg(VideoAppData *pAppData, unsigned int nErrorCode);
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
+
+
+/*
+ * Callback function
+ */
+static void MpVideoAppCtrlWarningPopupCb(void *pUserData, Evas_Object *pObject,
+                                        void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilDeletePopupHandle();
+}
+
+static void MpVideoAppCtrlExitCb(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 MpVideoAppCtrlPauseByInterrupteCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoViewHideSoundpath(pUserData);
+       MpVideoAppCtrlPause(pAppData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoAppCtrlSetMute(pAppData);
+       MpVideoAppCtrlBeginOfStream(pAppData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       MpVideoAppCtrlEndOfStream(pAppData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlBufferingCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData);
+
+       return 0;
+}
+
+static int MpVideoAppCtrlBluetoothCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       return 0;
+}
+
+static int MpVideoAppCtrlResumeByRewCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoAppCtrlResume(pAppData);
+
+       return 0;
+}
+
+static Eina_Bool MpVideoAppCtrlUpdateSubtitleCb(void* pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return EINA_FALSE;
+       }
+
+       VideoLogInfo("");
+
+       if (strlen(szSubtitleString) > 0 && nDurationTime > 0) {
+               MpVideoViewCtrlUpdateSubtitle(nDurationTime, szSubtitleString);
+       }
+
+       return EINA_FALSE;
+}
+
+static int MpVideoAppCtrlMmfErrormsgCb(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return 0;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoAppCtrlErrorMsg(pAppData, nErrorCode);
+
+       return 0;
+}
+
+static void MpVideoAppCtrlErrorMsg(VideoAppData *pAppData,
+                                  unsigned int nErrorCode)
+{
+       VideoLogInfo("[MMF ERROR] CtrlErrorMsg.");
+
+       switch (nErrorCode) {
+       case 1:
+               VideoLogInfo("Connection Fail.");
+               break;
+
+       case MM_ERROR_PLAYER_CODEC_NOT_FOUND:
+               VideoLogInfo("CODEC NOT FOUND");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_AUDIO_CODEC_NOT_FOUND:
+               VideoLogInfo("UNSUPPORTED_AUDIO_FORMAT");
+               MpUtilNotifyPopUp(pAppData,
+                                 _(MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT),
+                                 MpVideoAppCtrlWarningPopupCb);
+               break;
+
+       case MM_ERROR_PLAYER_VIDEO_CODEC_NOT_FOUND:
+               VideoLogInfo("UNSUPPORTED_VIDEO_FORMAT");
+               MpVideoViewCtrlShowNocontentImage();
+               MpUtilNotifyPopUp(pAppData,
+                                 _(MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT),
+                                 MpVideoAppCtrlWarningPopupCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_AUDIO:
+               VideoLogInfo("UNSUPPORTED_AUDIO_FORMAT");
+               MpUtilNotifyPopUp(pAppData,
+                                 _(MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT),
+                                 MpVideoAppCtrlWarningPopupCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_VIDEO:
+               VideoLogInfo("UNSUPPORTED_VIDEO_FORMAT");
+               MpVideoViewCtrlShowNocontentImage();
+               MpUtilNotifyPopUp(pAppData,
+                                 _(MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT),
+                                 MpVideoAppCtrlWarningPopupCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL:
+               VideoLogInfo("CONNECTION_FAILED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_INVALID_STREAM:
+               VideoLogInfo("MM_ERROR_PLAYER_INVALID_STREAM");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_FILE_NOT_FOUND:
+               VideoLogInfo("MM_ERROR_PLAYER_FILE_NOT_FOUND");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_POP_INVALID_STREAMING_DATA),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_DNS_FAIL:
+               VideoLogInfo("DNS_FAILED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED:
+               VideoLogInfo("DESCONNECTED_FROM_SERVER");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_BAD_SERVER:
+               VideoLogInfo("UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_INVALID_PROTOCOL:
+               VideoLogInfo("UNSUPPORTED_TRANSPORT_PROTOCOL");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_INVALID_URL:
+               VideoLogInfo("INVALID_URL");
+               MpUtilNotifyPopUp(pAppData,
+                                 _(MP_VPL_POP_INVALID_STREAMING_DATA),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_UNEXPECTED_MSG:
+               VideoLogInfo("UNEXPECTED_MESSAGE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_OUT_OF_MEMORIES:
+               VideoLogInfo("OUT_OF_MEMORIES");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_RTSP_TIMEOUT:
+               VideoLogInfo("NO_RESPONSE_FROM_SERVER");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_BAD_REQUEST:
+               VideoLogInfo("BAD_REQUEST");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_NOT_AUTHORIZED:
+               VideoLogInfo("NOT_AUTHORIZED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_PAYMENT_REQUIRED:
+               VideoLogInfo("PAYMENT_REQUIRED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_FORBIDDEN:
+               VideoLogInfo("FORBIDDEN");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_CONTENT_NOT_FOUND:
+               VideoLogInfo("CONTENT_NOT_FOUND");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_METHOD_NOT_ALLOWED:
+               VideoLogInfo("METHOD_NOT_ALLOWED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_NOT_ACCEPTABLE:
+               VideoLogInfo("NOT_ACCEPTABLE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_PROXY_AUTHENTICATION_REQUIRED:
+               VideoLogInfo("PROXY_AUTHENTICATION_REQUIRED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_SERVER_TIMEOUT:
+               VideoLogInfo("SERVER_TIMEOUT");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_GONE:
+               VideoLogInfo("GONE_MERROR");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_LENGTH_REQUIRED:
+               VideoLogInfo("LENGTH_REQUIRED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_PRECONDITION_FAILED:
+               VideoLogInfo("PRECONDITION_FAILED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_REQUEST_ENTITY_TOO_LARGE:
+               VideoLogInfo("REQUEST_ENTITY_TOO_LARGE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_REQUEST_URI_TOO_LARGE:
+               VideoLogInfo("REQUEST_URI_TOO_LARGE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_MEDIA_TYPE:
+               VideoLogInfo("UNSUPPORTED_MEDIA_TYPE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_PARAMETER_NOT_UNDERSTOOD:
+               VideoLogInfo("PARAMETER_NOT_UNDERSTOOD");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_CONFERENCE_NOT_FOUND:
+               VideoLogInfo("CONFERENCE_NOT_FOUND");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_NOT_ENOUGH_BANDWIDTH:
+               VideoLogInfo("NOT_ENOUGH_BANDWIDTH");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_NO_SESSION_ID:
+               VideoLogInfo("NO_SESSION_ID");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_METHOD_NOT_VALID_IN_THIS_STATE:
+               VideoLogInfo("METHOD_NOT_VALID_IN_THIS_STATE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_HEADER_FIELD_NOT_VALID_FOR_SOURCE:
+               VideoLogInfo("HEADER_FIELD_NOT_VALID_FOR_SOURCE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_INVALID_RANGE:
+               VideoLogInfo("INVALID_RANGE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_PARAMETER_IS_READONLY:
+               VideoLogInfo("PARAMETER_IS_READONLY");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_AGGREGATE_OP_NOT_ALLOWED:
+               VideoLogInfo("AGGREGATE_OP_NOT_ALLOWED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_ONLY_AGGREGATE_OP_ALLOWED:
+               VideoLogInfo("ONLY_AGGREGATE_OP_ALLOWED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_BAD_TRANSPORT:
+               VideoLogInfo("BAD_TRANSPORT");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_DESTINATION_UNREACHABLE:
+               VideoLogInfo("DESTINATION_UNREACHABLE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_INTERNAL_SERVER_ERROR:
+               VideoLogInfo("INTERNAL_SERVER_ERROR");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_NOT_IMPLEMENTED:
+               VideoLogInfo("NOT_IMPLEMENTED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_BAD_GATEWAY:
+               VideoLogInfo("BAD_GATEWAY");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_SERVICE_UNAVAILABLE:
+               VideoLogInfo("SERVICE_UNAVAILABLE");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_GATEWAY_TIME_OUT:
+               VideoLogInfo("GATEWAY_TIME_OUT");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_RTSP_VERSION_NOT_SUPPORTED:
+               VideoLogInfo("RTSP_VERSION_NOT_SUPPORTED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_OPTION_NOT_SUPPORTED:
+               VideoLogInfo("OPTION_NOT_SUPPORTED");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       case MM_ERROR_PLAYER_STREAMING_FAIL:
+               VideoLogInfo("INTERNAL_ERROR");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+                                 MpVideoAppCtrlExitCb);
+               break;
+       case MM_MESSAGE_DRM_NOT_AUTHORIZED :
+               VideoLogInfo("DRM_NOT_AUTHORIZED ERROR");
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+                                 MpVideoAppCtrlExitCb);
+               break;
+
+       default:
+               break;
+       }
+
+ }
+
+static void MpVideoAppCtrlPlayerMsgCallback(int MessageType,
+                                           void *MessageParam, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfoWithTid("Callback func");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       MMMessageParamType *pParam = (MMMessageParamType *) MessageParam;
+
+       switch (MessageType) {
+       case MM_MESSAGE_UNKNOWN:
+               VideoLogInfo("MM_MESSAGE_UNKNOWN", MessageType);
+               if(pEcorePipeHandleForErrorMsg) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+
+               break;
+
+       case MM_MESSAGE_ERROR:
+               VideoLogInfo("[ERR]MM_MESSAGE_ERROR : code-0x%x",
+                            (int)pParam->code);
+               nErrorCode = (int)pParam->code;
+               if(pEcorePipeHandleForErrorMsg) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_STATE_CHANGED:
+               VideoLogInfo("MM_MESSAGE_STATE_CHANGED");
+               break;
+
+       case MM_MESSAGE_BEGIN_OF_STREAM:
+               VideoLogInfo("MM_MESSAGE_BEGIN_OF_STREAM");
+               if(pEcorePipeHandleBOF) {
+                       if(!ecore_pipe_write(pEcorePipeHandleBOF,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_END_OF_STREAM:
+               VideoLogInfo("END OF STREAM.");
+               if(pEcorePipeHandleEOF) {
+                       if(!ecore_pipe_write(pEcorePipeHandleEOF,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_READY_TO_RESUME:
+               VideoLogInfo("MM_MESSAGE_READY_TO_RESUME");
+               break;
+
+       case MM_MESSAGE_CONNECTING:
+               VideoLogInfo("MM_MESSAGE_CONNECTING");
+               break;
+
+       case MM_MESSAGE_CONNECTED:
+               VideoLogInfo("MM_MESSAGE_CONNECTED");
+               break;
+
+       case MM_MESSAGE_CONNECTION_TIMEOUT:
+               VideoLogInfo("MM_MESSAGE_CONNECTION_TIMEOUT");
+               break;
+
+       case MM_MESSAGE_BUFFERING:
+               VideoLogInfo("MM_MESSAGE_BUFFERING - Buffering : %d%% ",
+                            pParam->connection.buffering);
+               nBufferingRate = pParam->connection.buffering;
+
+               if (nBufferingRate < 10)
+                       MpVideoAppCtrlShowLayout(pAppData);
+               if(pEcorePipeHandleForBuffering) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForBuffering,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_BLUETOOTH_ON:
+               VideoLogInfo("MM_MESSAGE_BLUETOOTH_ON");
+               break;
+
+       case MM_MESSAGE_BLUETOOTH_OFF:
+               VideoLogInfo("MM_MESSAGE_BLUETOOTH_OFF ");
+               if(pEcorePipeHandleForBluetooth) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForBluetooth,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_UPDATE_SUBTITLE:
+               VideoLogInfo("UPDATE_SUBTITLE ");
+
+               nDurationTime = 0;
+               memset(szSubtitleString, 0, sizeof(char) * STR_LEN_MAX);
+
+               if (pParam->subtitle.duration <= 0) {
+                       VideoLogInfo("[ERR] MMF Error : code-0x%x", (int)pParam->code);
+                       break;
+               } else {
+                               nDurationTime = (double)pParam->subtitle.duration / 1000;
+               }
+
+               if (pParam->data == NULL) {
+                       VideoLogInfo("[ERR] MMF Error : code-0x%x", (int)pParam->code);
+                       break;
+               } else {
+                       strncpy(szSubtitleString, pParam->data, STR_LEN_MAX - 1);
+               }
+
+               VideoLogInfo("Subtitle duration : %d sec", nDurationTime);
+               VideoLogInfo("Subtitle contents : %s", szSubtitleString);
+               if(pEcorePipeHandleForSubTitle) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForSubTitle,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_RESUMED_BY_REW:
+               VideoLogInfo("Change play state to play.");
+               if(pEcorePipeHandleForResumed) {
+                       if(!ecore_pipe_write(pEcorePipeHandleForResumed,
+                                       (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_RTP_SENDER_REPORT:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_RTP_RECEIVER_REPORT:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_RTP_SESSION_STATUS:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_SENDER_STATE:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_RECEIVER_STATE:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_FILE_NOT_SUPPORTED:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_FILE_NOT_FOUND:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_DRM_NOT_AUTHORIZED:
+               VideoLogInfo("%08x", MessageType);
+               break;
+
+       case MM_MESSAGE_STATE_INTERRUPTED:
+               VideoLogDebug("%08x", MessageType);
+
+               switch ((int)pParam->code) {
+               case MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP:
+                       VideoLogInfo("MM_ERROR_PLAYER_BT_CONNECTION");
+                       break;
+
+               case MM_MSG_CODE_INTERRUPTED_BY_CALL_START:
+                       VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_CALL_START");
+                       break;
+
+               case MM_MSG_CODE_INTERRUPTED_BY_CALL_END:
+                       VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_CALL_END");
+                       break;
+
+               case MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG:
+                       VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG");
+                       break;
+
+               case MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT:
+                       VideoLogInfo
+                           ("MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT");
+                       break;
+
+               case MM_MSG_CODE_INTERRUPTED_BY_ALARM_START:
+                       VideoLogInfo
+                           ("MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
+                       break;
+
+               case MM_MSG_CODE_INTERRUPTED_BY_ALARM_END:
+                       VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_ALARM_END");
+                       break;
+               }
+               if(pEcorePipeHandleForInterruped) {
+                       if(!ecore_pipe_write(
+                               pEcorePipeHandleForInterruped,
+                               (void *)pAppData, sizeof(pAppData))) {
+                               VideoLogDebug("FAIL PIPE WRITE");
+                       }
+               }
+               break;
+       case MM_MESSAGE_SEEK_COMPLETED:
+               {
+                       VideoLogInfo("MM_MESSAGE_SEEK_COMPLETED");
+                       if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+                               VideoLogInfo("RTSP SEEK Start");
+                               nBufferingRate = 100;
+                               MpVideoAppCtrlShowLayout(pAppData);
+                               if(pEcorePipeHandleForBuffering) {
+                                       if(!ecore_pipe_write(pEcorePipeHandleForBuffering,
+                                                       (void *)pAppData, sizeof(pAppData))) {
+                                               VideoLogDebug("FAIL PIPE WRITE");
+                                       }
+                               }
+
+                       }
+
+               }
+               break;
+       default:
+               VideoLogInfo("No message %08x", MessageType);
+               break;
+       }
+}
+
+/*
+ * 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.VideoAppCtrlSetMute =
+           (void *)MpVideoAppCtrlSetMute;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenType =
+           (void *)MpVideoAppCtrlSetScreenType;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize =
+           (void *)MpVideoAppCtrlSetScreenSize;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition =
+           (void *)MpVideoAppCtrlGetPosition;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition =
+           (void *)MpVideoAppCtrlSetPosition;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout =
+           (void *)MpVideoAppCtrlHideLayout;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout =
+           (void *)MpVideoAppCtrlShowLayout;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution =
+           (void *)MpVideoAppCtrlGetVideoResolution;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime =
+           (void *)MpVideoAppCtrlReqDurationTime;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream =
+           (void *)MpVideoAppCtrlBeginOfStream;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream =
+           (void *)MpVideoAppCtrlEndOfStream;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit =
+           (void *)MpVideoAppCtrlExit;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming =
+           (void *)MpVideoAppCtrlStartStreaming;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching =
+           (void *)MpVideoAppCtrlReLaunching;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia =
+           (void *)MpVideoAppCtrlPlayPreMedia;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia =
+           (void *)MpVideoAppCtrlPlayNextMedia;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition =
+           (void *)MpVideoAppCtrlGetBufferingPosition;
+}
+
+static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if (strlen(pAppData->szPreMediaUri) <= 0) {
+               VideoLogInfo("szPreMediaUri is NULL.");
+               return;
+       }
+
+       VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
+       VideoLogInfo("Previous media uri : %s", pAppData->szPreMediaUri);
+
+       strncpy(pAppData->szMediaUri, pAppData->szPreMediaUri,
+               sizeof(pAppData->szMediaUri) - 1);
+       MpVideoAppCtrlShowLayout(pAppData);
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri,
+                                                pAppData->szPreMediaUri,
+                                                pAppData->szNextMediaUri);
+       }
+
+       MpVideoAppCtrlReLaunching(pAppData);
+}
+
+static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if (strlen(pAppData->szNextMediaUri) <= 0) {
+               VideoLogInfo("szNextMediaUri is NULL.");
+               return;
+       }
+
+       VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
+       VideoLogInfo("Next media uri : %s", pAppData->szNextMediaUri);
+
+       strncpy(pAppData->szMediaUri, pAppData->szNextMediaUri,
+               sizeof(pAppData->szMediaUri) - 1);
+       MpVideoAppCtrlShowLayout(pAppData);
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri,
+                                                pAppData->szPreMediaUri,
+                                                pAppData->szNextMediaUri);
+       }
+
+       MpVideoAppCtrlReLaunching(pAppData);
+}
+
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       if (pAppData == NULL) {
+               VideoLogInfo("ERR");
+               return;
+       }
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               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("");
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               char szSubtitleUri[STR_LEN_MAX] = {0};
+
+               if (!MpVideoSubtitleCtrlGetSubtitleUri(szSubtitleUri)) {
+                       memset(szSubtitleUri, 0, STR_LEN_MAX);
+               } else {
+                       VideoLogInfo("szSubtitleUriPath : %s", szSubtitleUri);
+               }
+
+               if (!MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
+                                         MpVideoAppCtrlPlayerMsgCallback,
+                                         (void *)MpUtilGetMainWindowXID(),
+                                         szSubtitleUri,
+                                         (void *)pAppData)) {
+                       MpUtilNotifyPopUp(pAppData,
+                                         "It is unable to play video contents.",
+                                         MpVideoAppCtrlExitCb);
+               }
+
+               if (pAppData->nSetPosition > 0) {
+                       VideoLogInfo("Start position time : %dms",
+                                    pAppData->nSetPosition);
+                       MpVideoAppCtrlSetPosition(pAppData);
+               }
+
+               MpVideoCtrlMgrMediaPlay((void *)pAppData);
+
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER ) {
+               if (MpVideoStreamingCtrlInit((void *)pAppData)) {
+                       VideoLogInfo("Connect to network.");
+                       MpVideoAppCtrlStartStreaming((void *)pAppData);
+               } else {
+                       VideoLogInfo("No connect to network.");
+                       MpUtilNotifyPopUp(pAppData,
+                         "It is impossible to connect to network.",
+                         MpVideoAppCtrlExitCb);
+               }
+       }
+}
+
+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 (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();
+
+       MpUtilMultimediaKeyUngrab();
+
+       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData);
+       }
+
+}
+
+static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlStart(pAppData);
+       MpVideoViewCtrlResume(pAppData);
+       MpVideoAppCtrlShowLayout(pAppData);
+       MpUtilLcdNormalPowerLockForResume();
+
+       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 MpVideoAppCtrlSetMute(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if (pAppData->bIsMute) {
+               MpVideoCtrlMgrSetMute(TRUE);
+       } else {
+               MpVideoCtrlMgrSetMute(FALSE);
+       }
+}
+
+static void MpVideoAppCtrlSetScreenType(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlSetScreenSize(VideoAppData *pAppData, int nScreenSize)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       switch(nScreenSize)
+       {
+       case MP_DISPLAY_METHOD_LETTER_BOX:      VideoLogInfo("LETTER_BOX");     break;
+       case MP_DISPLAY_METHOD_ORIGIN_SIZE:     VideoLogInfo("ORIGIN_SIZE");    break;
+       case MP_DISPLAY_METHOD_FULL_SCREEN:     VideoLogInfo("FULL_SCREEN");    break;
+       case MP_DISPLAY_METHOD_CROPPED_FULL:    VideoLogInfo("CROPPED_FULL");   break;
+       case MP_DISPLAY_METHOD_CUSTOM_ROI:      VideoLogInfo("CUSTOM_ROI");     break;
+       default:        VideoLogInfo("Nothing.");       return;
+       }
+
+       MpVideoCtrlMgrSetRatioVideoScreen((void*)pAppData, nScreenSize);
+}
+
+static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData)
+{
+       pAppData->nCurPosition = MpVideoCtrlMgrGetPosition();
+}
+
+static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoCtrlMgrSetPosition(pAppData->nSetPosition);
+
+       if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+               VideoLogInfo("RTSP SEEK Start");
+               nBufferingRate = 0;
+               MpVideoAppCtrlBufferingCb((void *)pAppData);
+
+       }
+}
+
+static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewHideLayout((void *)pAppData);
+}
+
+static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoViewShowLayout((void *)pAppData);
+}
+
+static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pAppData->nVideoWidthResolution =
+           MpVideoCtrlMgrGetVideoWidthResolution();
+       pAppData->nVideoHeightResolution =
+           MpVideoCtrlMgrGetVideoHeightResolution();
+}
+
+static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+}
+
+static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+       MpUtilMultimediaKeyGrab();
+
+       MpVideoAppCtrlGetVideoResolution(pAppData);
+       pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+       MpVideoViewCtrlInitAfterBeginOfStream((void *)pAppData);
+}
+
+static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if (pAppData->nLaunchingAppType == MP_LAUNCH_APP_GALLERY ) {
+               if (pAppData->nCurPosition >= 0 ) {
+                       MpUtilMediaSvcSaveLastPlayedTime(pAppData->szMediaUri, 0);
+               } else {
+                       VideoLogInfo("Invalid Plaing time or duration time.");
+               }
+       }
+
+       if (strlen(pAppData->szNextMediaUri) > 0) {
+               MpVideoAppCtrlPlayNextMedia(pAppData);
+       }
+       else {
+               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 (pEcorePipeHandleForBluetooth) {
+               ecore_pipe_del(pEcorePipeHandleForBluetooth);
+               pEcorePipeHandleForBluetooth = NULL;
+       }
+
+       if (pEcorePipeHandleForSubTitle) {
+               ecore_pipe_del(pEcorePipeHandleForSubTitle);
+               pEcorePipeHandleForSubTitle = NULL;
+       }
+       if (pEcorePipeHandleForResumed) {
+               ecore_pipe_del(pEcorePipeHandleForResumed);
+               pEcorePipeHandleForResumed = NULL;
+       }
+       if (pEcorePipeHandleForInterruped) {
+               ecore_pipe_del(pEcorePipeHandleForInterruped);
+               pEcorePipeHandleForInterruped = NULL;
+       }
+
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+
+       MpUtilDeletePopupHandle();
+
+       MpVideoViewCtrlDestroy((void *)pAppData);
+
+       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingCtrlDestroy((void *)pAppData);
+       }
+
+       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("");
+
+       MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
+                                 MpVideoAppCtrlPlayerMsgCallback,
+                                 (void *)MpUtilGetMainWindowXID(),
+                                 NULL,
+                                 (void *)pAppData);
+
+       MpVideoCtrlMgrMediaPlay((void *)pAppData);
+
+       if (pAppData->nSetPosition > 0) {
+               VideoLogInfo("Start position time : %dms",
+                            pAppData->nSetPosition);
+               MpVideoAppCtrlSetPosition(pAppData);
+       }
+}
+
+
+static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+
+       pAppData->nSetPosition = 0;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               memset(pAppData->szVideoTitle, 0, STR_LEN_MAX);
+               MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle);
+               MpVideoSubtitleCtrlInit(pAppData);
+       }
+
+       MpVideoViewCtrlChangeTitle(pAppData);
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoAppCtrlStart(pAppData);
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoAppCtrlStartStreaming(pAppData);
+       }
+
+       MpVideoAppCtrlSetMute(pAppData);
+}
+
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return;
+       }
+
+       VideoLogInfo("");
+       if(pEcorePipeHandleForErrorMsg) {
+               ecore_pipe_del(pEcorePipeHandleForErrorMsg);
+               pEcorePipeHandleForErrorMsg = NULL;
+       }
+       pEcorePipeHandleForErrorMsg = ecore_pipe_add(
+               (Ecore_Pipe_Cb)MpVideoAppCtrlMmfErrormsgCb,
+               (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 (pEcorePipeHandleForBluetooth) {
+               ecore_pipe_del(pEcorePipeHandleForBluetooth);
+               pEcorePipeHandleForBluetooth = NULL;
+       }
+       pEcorePipeHandleForBluetooth = ecore_pipe_add(
+               (Ecore_Pipe_Cb)MpVideoAppCtrlBluetoothCb,
+               (void *)pAppData);
+
+       if (pEcorePipeHandleForSubTitle) {
+               ecore_pipe_del(pEcorePipeHandleForSubTitle);
+               pEcorePipeHandleForSubTitle = NULL;
+       }
+       pEcorePipeHandleForSubTitle = ecore_pipe_add(
+               (Ecore_Pipe_Cb)MpVideoAppCtrlUpdateSubtitleCb,
+               (void *)pAppData);
+
+       if (pEcorePipeHandleForResumed) {
+               ecore_pipe_del(pEcorePipeHandleForResumed);
+               pEcorePipeHandleForResumed = NULL;
+       }
+       pEcorePipeHandleForResumed = ecore_pipe_add(
+               (Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb,
+               (void *)pAppData);
+
+       if (pEcorePipeHandleForInterruped) {
+               ecore_pipe_del(pEcorePipeHandleForInterruped);
+               pEcorePipeHandleForInterruped = NULL;
+       }
+       pEcorePipeHandleForInterruped = ecore_pipe_add(
+               (Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb,
+               (void *)pAppData);
+
+}
+
+
+
+/*
+ * External function
+ */
+bool MpVideoAppCtrlInit(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlFuncInit(pAppData);
+       MpVideoSubtitleCtrlInit(pAppData);
+       MpVideoViewCtrlInit(pAppData);
+
+       if (!MpUtilCheckCallStatus()) {
+               MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
+               return FALSE;
+       }
+
+       if (!MpUtilCheckBatteryStatus()) {
+               MpUtilNotifyPopUp(pAppData, dgettext("sys_string", MP_COM_BODY_LOW_BATTERY), MpVideoAppCtrlExitCb);
+               return FALSE;
+       }
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               if (!MpUtilCheckLocalFileExist(pAppData->szMediaUri)) {
+                       MpUtilNotifyPopUp(pAppData, "File not Exist", MpVideoAppCtrlExitCb);
+                       return FALSE;
+               }
+
+               memset(pAppData->szVideoTitle, 0, STR_LEN_MAX);
+               MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle);
+               MpVideoViewCtrlChangeTitle(pAppData);
+       }
+
+       MpVideoAppCtrlPipeInit(pAppData);
+
+       MpVideoAppCtrlStart(pAppData);
+
+       return TRUE;
+}
+
+bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData)
+{
+       if (!pAppData) {
+               VideoLogInfo("No exist appdata.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoAppCtrlStop(pAppData);
+       MpVideoCtrlMgrMediaDestroy(pAppData);
+       MpUtilDeletePopupHandle();
+       MpVideoViewCtrlDestroy((void *)pAppData);
+       MpUtilMediaSvcDestoryVideoList();
+       MpUtilMediaSvcFinishSession();
+       MpUtilMediaSvcMtagIterateDestroyTagList();
+       MpUtilMMCstatusNotiIgnore();
+       MpUtilBatteryStatusNotiIgnore();
+       MpVideoSubtitleCtrlDestroy();
+
+       nBufferingRate = 0;
+       nErrorCode = 0;
+
+       pAppData->bIsMute = FALSE;
+       pAppData->nDuration = 0;
+       pAppData->nSetPosition = 0;
+       pAppData->nCurPosition = 0;
+       pAppData->nSubtitleDuration = 0;
+       pAppData->nBufferingPosition = 0;
+       pAppData->nVideoWidthResolution = 0;
+       pAppData->nVideoHeightResolution = 0;
+
+       memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX);
+       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);
+       memset(pAppData->szTagNameForVideoList, 0, sizeof(char) * STR_LEN_MAX);
+
+       pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR;
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+       pAppData->nLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
+       pAppData->nVideoSortType = MP_MEDIA_SORT_BY_NONE;
+       pAppData->nVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+       pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+
+       memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX);
+       memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX);
+
+       MpUtilResetForRelaunching();
+
+       return TRUE;
+}
+
+bool MpVideoAppCtrlIsTopView(void* pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       return MpVideoViewCtrlIsTopView(pUserData);
+}
+
+bool MpVideoAppCtrlIsExistPlayerHandle(void)
+{
+       VideoLogInfo("");
+
+       return MpVideoCtrlMgrIsExistPlayerHandle();
+}
diff --git a/src/mp-video-ctrl-mgr.c b/src/mp-video-ctrl-mgr.c
new file mode 100755 (executable)
index 0000000..0e9b395
--- /dev/null
@@ -0,0 +1,365 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <stdio.h>
+#include <string.h>
+#include <mm_sound_private.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"
+
+bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pMmfPlayerCallback,
+                             void *pOverlayXid, char* szSubtitleUri, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+       VideoLogInfo("XID : %d", *(int *)pOverlayXid);
+
+       if (!MpPlayerMgrCreate(szMediaURI)) {
+               VideoLogInfo("[ERR] Fail to create player handle.");
+               return FALSE;
+       }
+
+       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+
+               MpUtilGetUserAgent(pAppData);
+
+               if (!MpPlayerMgrSetUseragentForStreaming(pAppData->szUserAgent)) {
+                       VideoLogInfo("[ERR] Fail to set useragent.");
+                       return FALSE;
+               }
+
+               if (!MpPlayerMgrSetProxAddressForStreaming
+                   (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 (!MpPlayerMgrRealize()) {
+               VideoLogInfo("[ERR] Fail relization.");
+               return FALSE;
+       }
+
+       if (!MpPlayerMgrSetSoundPriority()) {
+               VideoLogInfo("[ERR] Fail to set sound priority.");
+               return FALSE;
+       }
+
+       if (!MpPlayerMgrSetOverlayXid(pOverlayXid)) {
+               VideoLogInfo("[ERR] Fail to set overlay window.");
+               return FALSE;
+       }
+
+       MpPlayerMgrSetMessageCallback(pMmfPlayerCallback, pAppData);
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+
+       return TRUE;
+}
+
+void MpVideoCtrlMgrMediaDestroy(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo(" Already destroy player handle.");
+               return;
+       }
+
+       if (!MpPlayerMgrUnrealize()) {
+               VideoLogInfo("[ERR] Fail to unrealize player handle.");
+               return;
+       }
+
+       if (!MpPlayerMgrDestroy()) {
+               VideoLogInfo("[ERR] Fail to destroy player handle.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+}
+
+bool MpVideoCtrlMgrMediaPlay(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrPlay()) {
+               VideoLogInfo("[ERR] Fail to play multimedia player.");
+               return FALSE;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+
+       return TRUE;
+}
+
+void MpVideoCtrlMgrMediaStop(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR] Player handle is destroyed.");
+               return;
+       }
+
+       if (!MpPlayerMgrStop()) {
+               VideoLogInfo("[ERR] Fail to stop multimedia player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
+}
+
+void MpVideoCtrlMgrMediaPause(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+               VideoLogInfo
+                   ("It is not possible to pause when player state is stop.");
+               return;
+       }
+
+       if (!MpPlayerMgrPause()) {
+               VideoLogInfo("[ERR] Fail to pause multimedia player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
+}
+
+void MpVideoCtrlMgrMediaResume(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("");
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+               VideoLogInfo
+                   ("It is not possible to resume when player state is stop.");
+               return;
+       }
+
+       if (!MpPlayerMgrResume()) {
+               VideoLogInfo("[ERR] Fail to resume multimedia player.");
+               return;
+       }
+
+       pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
+}
+
+void MpVideoCtrlMgrSetOverlayXid(void *pXid)
+{
+       VideoLogInfo(" XID:%d", *((int *)pXid));
+
+       if (!MpPlayerMgrSetOverlayXid(pXid)) {
+               VideoLogInfo("[ERR] Fail to set overlay window.");
+               return;
+       }
+}
+
+void MpVideoCtrlMgrSetPosition(int nSetPosition)
+{
+       VideoLogInfo("");
+
+       VideoLogInfo("Set position - %d", nSetPosition);
+
+       if (nSetPosition > -1) {
+               MpPlayerMgrSetPosition(nSetPosition);
+       }
+}
+
+int MpVideoCtrlMgrGetPosition(void)
+{
+       return MpPlayerMgrGetPosition();
+}
+
+int MpVideoCtrlMgrGetDuration(void)
+{
+       VideoLogInfo("");
+
+       int nDuration = 0;
+
+       nDuration = MpPlayerMgrGetPdduration();
+
+       VideoLogInfo(" content duration : %d ms", nDuration);
+
+       return nDuration;
+}
+
+void MpVideoCtrlMgrSetROI(void *pUserData, int nOverlayX, int nOverlayY,
+                         int nOverlayWidth, int nOverlayHeight)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return;
+       }
+
+       VideoLogInfo(" ROI - X:%d, Y:%d, W:%d, H:%d,", nOverlayX, nOverlayY,
+                    nOverlayWidth, nOverlayHeight);
+
+       if (!MpPlayerMgrSetRatioVideoScreenSize(DISPLAY_METHOD_CUSTOM_ROI)) {
+               VideoLogInfo("[ERR] Fail to set ROI screen.");
+               return;
+       }
+
+       if (!MpPlayerMgrSetDisplayArea
+           (nOverlayX, nOverlayY, nOverlayWidth, nOverlayHeight)) {
+               VideoLogInfo("[ERR] Fail to set overlay display area for ROI.");
+               return;
+       }
+}
+
+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("");
+
+       MpPlayerMgrSetRatioVideoScreenSize(nRatioScreenSize);
+}
+
+void MpVideoCtrlMgrSetVerticalOverlayPos(int nOverlayY)
+{
+       VideoLogInfo("");
+
+       if (nOverlayY < 0) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("Overlay Y position : %d", nOverlayY);
+
+       if (!MpPlayerMgrSetVerticalOverlayPos(nOverlayY)) {
+               VideoLogInfo("[ERR]");
+       }
+}
+
+void MpVideoCtrlMgrSetMute(bool bMuteEnable)
+{
+       VideoLogInfo("");
+
+       MpPlayerMgrSetMute(bMuteEnable);
+}
+
+bool MpVideoCtrlMgrGetMuteState(void)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrGetMute();
+}
+
+int MpVideoCtrlMgrGetBufferingPosition(void)
+{
+       return MpPlayerMgrGetBufferingPosition();
+}
+
+bool MpVideoCtrlMgrIsExistPlayerHandle(void)
+{
+       VideoLogInfo("");
+
+       return MpPlayerMgrIsActive();
+}
diff --git a/src/mp-video-display-view.c b/src/mp-video-display-view.c
new file mode 100755 (executable)
index 0000000..bb7e393
--- /dev/null
@@ -0,0 +1,1210 @@
+
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <aul.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <appcore-efl.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-subtitle-ctrl.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#define MUTE_POPUP_INTERVAL_TIME                               3.0
+#define CTRL_PANEL_SHOW_TIME                                   5.0
+#define DOUBLE_CLICK_TIME                                              0.2
+#define MP_VIDEO_SUBTITLE_X_RATIO_LANDSCAPE            0.1
+#define MP_VIDEO_SUBTITLE_Y_RATIO_LANDSCAPE            0.15
+#define MP_VIDEO_SUBTITLE_W_RATIO_LANDSCAPE            0.8
+#define MP_VIDEO_SUBTITLE_H_RATIO_LANDSCAPE            0.2
+#define MP_VIDEO_SUBTITLE_Y_RATIO_LANDSCAPE_WITHOUT_UI 0.47
+#define MP_VIDEO_SUBTITLE_X_RATIO_PORTRAIT             0.1
+#define MP_VIDEO_SUBTITLE_Y_RATIO_PORTRAIT             0.5
+#define MP_VIDEO_SUBTITLE_W_RATIO_PORTRAIT             0.8
+#define MP_VIDEO_SUBTITLE_H_RATIO_PORTRAIT             0.2
+#define MP_VIDEO_SPEED_2X_SEEK_TIME                            1000
+#define MP_VIDEO_SPEED_3X_SEEK_TIME                            3000
+#define MP_VIDEO_SPEED_4X_SEEK_TIME                            5000
+#define MP_VIDEO_SPEED_5X_SEEK_TIME                            7000
+
+
+typedef enum
+{
+       MP_PLAYING_SPEED_NOTHING        = 0,
+       MP_PLAYING_SPEED_FF,
+       MP_PLAYING_SPEED_REW,
+}MpVideoDisplayViewSpeedModeType;
+
+
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pDisplayViewNaviControlBar = NULL;
+static Evas_Object *pDisplayViewLayout = NULL;
+static Evas_Object *pDisplayViewPanelEdj = NULL;
+static Evas_Object *pDisplayViewCtrlEdj = NULL;
+static Evas_Object *pDisplayViewSubtitleEdj = NULL;
+static Evas_Object *pDisplayViewOptionEdj = NULL;
+static Evas_Object *pDisplaySoundpathButton = NULL;
+
+static Ecore_Timer *pVolLongPressTimer = NULL;
+static Ecore_Timer *pMutePopupShowTimer = NULL;
+static Ecore_Timer *pCtrlPanelHideTimer = NULL;
+static Ecore_Timer *pSpeedPressTimer = NULL;
+static Ecore_Timer *pSubtitleTimer = NULL;
+
+static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
+static Ecore_Event_Handler *pMouseEventHandler = NULL;
+
+static bool bIsVolumeLongPress = FALSE;
+static bool bIsVolumePopupShow = FALSE;
+static bool bSwitchDisplayViewUI = TRUE;
+static int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+static int nCountCalledSpeedPlaying = 0;
+
+static int nSpeedMode = MP_PLAYING_SPEED_NOTHING;
+
+
+
+
+/*
+ * When the video display view is hieded by others view(favorite/info/etc),
+ * passing click event of mouse up in video display view.
+ */
+static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+
+
+/*
+ * Callback function.
+ */
+
+static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilDeletePopupHandle();
+}
+
+static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+               VideoLogInfo("Connect BT or earjack.");
+               MpVideoSoundpathShow(pUserData);
+       } else {
+               MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
+       }
+}
+
+static void MpVideoDisplayViewPressOptionScreenSizeCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_NORMAL)) {
+               VideoLogInfo("Screen size : Normal");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_LETTER_BOX);
+               nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+       } else if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_EXPAND)) {
+               VideoLogInfo("Screen size : Expand");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_CROPPED_FULL);
+               nScreensizeStatus = MP_DISPLAY_METHOD_CROPPED_FULL;
+       } else {
+               VideoLogInfo("Screen size : Nothing");
+               nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+       }
+}
+
+static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
+               VideoLogInfo("Press Pause button.");
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME ||
+                   pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+       }
+}
+
+static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
+               VideoLogInfo("Press Resume/Play button.");
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume
+                           (pAppData);
+               }
+       }
+}
+
+static Eina_Bool MpVideoDisplayViewSpeedLongPressCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nSeekPos = 0;
+
+       ++nCountCalledSpeedPlaying;
+       switch (nCountCalledSpeedPlaying) {
+               case MP_PLAYING_SPEED_NORMAL:   nSeekPos = 0;   break;
+               case MP_PLAYING_SPEED_2X:       nSeekPos = MP_VIDEO_SPEED_2X_SEEK_TIME; break;
+               case MP_PLAYING_SPEED_3X:       nSeekPos = MP_VIDEO_SPEED_3X_SEEK_TIME; break;
+               case MP_PLAYING_SPEED_4X:       nSeekPos = MP_VIDEO_SPEED_4X_SEEK_TIME; break;
+               case MP_PLAYING_SPEED_5X:       nSeekPos = MP_VIDEO_SPEED_5X_SEEK_TIME; break;
+       }
+
+       if (nCountCalledSpeedPlaying > MP_PLAYING_SPEED_5X) {
+               nSeekPos = MP_VIDEO_SPEED_5X_SEEK_TIME;
+       }
+
+       VideoLogInfo("nSeekPos : %d", nSeekPos);
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+       if (nSpeedMode == MP_PLAYING_SPEED_FF) {
+               nSeekPos = pAppData->nCurPosition + nSeekPos;
+       } else if (nSpeedMode == MP_PLAYING_SPEED_REW) {
+               nSeekPos = pAppData->nCurPosition - nSeekPos;
+       }
+
+       VideoLogInfo("pAppData->nCurPosition : %d, nSeekPos : %d", pAppData->nCurPosition, nSeekPos);
+
+       if (0 >= nSeekPos || pAppData->nDuration <= nSeekPos) {
+               if (pSpeedPressTimer) {
+                       ecore_timer_del(pSpeedPressTimer);
+                       pSpeedPressTimer = NULL;
+               }
+               nCountCalledSpeedPlaying = 0;
+               return EINA_FALSE;
+       }
+
+       pAppData->nSetPosition = nSeekPos;
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+
+       return EINA_TRUE;
+}
+
+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;
+               }
+
+               nCountCalledSpeedPlaying = 0;
+
+               nSpeedMode = MP_PLAYING_SPEED_FF;
+               pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
+       }
+}
+
+static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
+               if (nCountCalledSpeedPlaying  == MP_PLAYING_SPEED_NORMAL) {
+                       VideoLogInfo("Press FF up button.");
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
+               }
+       }
+
+       if(strlen(pAppData->szNextMediaUri) > 0) {
+               VideoLogInfo("Next File : %s", pAppData->szNextMediaUri);
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_EXTEND, "*");
+       }
+       else {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_NORMAL, "*");
+       }
+       if(strlen(pAppData->szPreMediaUri) > 0) {
+               VideoLogInfo("Prev File : %s", pAppData->szPreMediaUri);
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_EXTEND, "*");
+       }
+       else {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_NORMAL, "*");
+       }
+
+       if (pSpeedPressTimer) {
+               ecore_timer_del(pSpeedPressTimer);
+               pSpeedPressTimer = NULL;
+       }
+
+       nCountCalledSpeedPlaying = 0;
+}
+
+static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
+               VideoLogInfo("Press Rewind donw button.");
+
+               if (pCtrlPanelHideTimer) {
+                       ecore_timer_del(pCtrlPanelHideTimer);
+                       pCtrlPanelHideTimer = NULL;
+               }
+
+               if (pSpeedPressTimer) {
+                       ecore_timer_del(pSpeedPressTimer);
+                       pSpeedPressTimer = NULL;
+               }
+
+               nCountCalledSpeedPlaying = 0;
+
+               nSpeedMode = MP_PLAYING_SPEED_REW;
+               pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
+       }
+}
+
+static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
+               if (nCountCalledSpeedPlaying  == MP_PLAYING_SPEED_NORMAL) {
+                       VideoLogInfo("Press Rewind up button.");
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
+               }
+       }
+       if(strlen(pAppData->szNextMediaUri) > 0) {
+               VideoLogInfo("Next File : %s", pAppData->szNextMediaUri);
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_EXTEND, "*");
+       }
+       else {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_NORMAL, "*");
+       }
+       if(strlen(pAppData->szPreMediaUri) > 0) {
+               VideoLogInfo("Prev File : %s", pAppData->szPreMediaUri);
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_EXTEND, "*");
+       }
+       else {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_NORMAL, "*");
+       }
+
+       if (pSpeedPressTimer) {
+               ecore_timer_del(pSpeedPressTimer);
+               pSpeedPressTimer = NULL;
+       }
+
+       nCountCalledSpeedPlaying = 0;
+}
+
+static Eina_Bool MpVideoDisplayViewVolPopupCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       if (pMutePopupShowTimer) {
+               ecore_timer_del(pMutePopupShowTimer);
+               pMutePopupShowTimer = NULL;
+       }
+
+       bIsVolumePopupShow = FALSE;
+       edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+       return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoDisplayViewVolLongPressCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pVolLongPressTimer) {
+               ecore_timer_del(pVolLongPressTimer);
+               pVolLongPressTimer = NULL;
+       }
+
+       bIsVolumeLongPress = TRUE;
+
+       if (pAppData->bIsMute == FALSE) {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_MUTE, "*");
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_MUTE_SHOW, "*");
+
+               pMutePopupShowTimer = ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, MpVideoDisplayViewVolPopupCb, (void *)pAppData);
+               bIsVolumePopupShow = TRUE;
+               pAppData->bIsMute = TRUE;
+       } else {
+               edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_UNMUTE, "*");
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+               bIsVolumePopupShow = FALSE;
+               pAppData->bIsMute = FALSE;
+       }
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute(pAppData);
+
+       return EINA_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->nLaunchingAppType == MP_LAUNCH_APP_GALLERY ) {
+               if (pAppData->nCurPosition >= 0 ) {
+                       MpUtilMediaSvcSaveLastPlayedTime(pAppData->szMediaUri, pAppData->nCurPosition);
+               } else {
+                       VideoLogInfo("Invalid Plaing time or duration time.");
+               }
+       }
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+
+       MpVideoDisplayViewPop(pDisplayViewNaviControlBar, 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("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pVolLongPressTimer) {
+               ecore_timer_del(pVolLongPressTimer);
+               pVolLongPressTimer = NULL;
+       }
+
+       bIsVolumeLongPress = FALSE;
+       pVolLongPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL,
+                                            MpVideoDisplayViewVolLongPressCb,
+                                            (void *)pAppData);
+}
+
+static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
+                                              Evas_Object *pObject,
+                                              const char *szEmission,
+                                              const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pVolLongPressTimer) {
+               ecore_timer_del(pVolLongPressTimer);
+               pVolLongPressTimer = NULL;
+       }
+
+       if (bIsVolumeLongPress) {
+               return;
+       }
+
+       if (pAppData->bIsMute == TRUE) {
+               if (bIsVolumePopupShow) {
+                       ecore_timer_del(pMutePopupShowTimer);
+               }
+
+               pMutePopupShowTimer =
+                   ecore_timer_add(MUTE_POPUP_INTERVAL_TIME,
+                                   MpVideoDisplayViewVolPopupCb,
+                                   (void *)pAppData);
+
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout),
+                                       SIGNAL_MAIN_MUTE_SHOW, "*");
+
+               bIsVolumePopupShow = TRUE;
+       } else {
+               syspopup_launch("volume", NULL);
+       }
+}
+
+static void MpVideoDisplayViewMainScreenTouchCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
+               return;
+       }
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (bSwitchDisplayViewUI) {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(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 Eina_Bool MpVideoDisplayViewMouseUpCb(void *pUserData, int nType, void *pEvent)
+{
+       if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       VideoLogInfo("");
+
+       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;
+
+       if (!bSwitchDisplayViewUI) {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+       } else {
+               if (pCtrlPanelHideTimer) {
+                       ecore_timer_del(pCtrlPanelHideTimer);
+                       pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
+               }
+       }
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoSoundpathHide();
+       MpUtilDeletePopupHandle();
+
+       if (MpUtilIsConnectEarjack()) {
+               VideoLogInfo("Connect earjack.");
+               if (pDisplaySoundpathButton) {
+                       elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_left_btn", pDisplaySoundpathButton);
+               } else {
+                       pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
+                       elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_left_btn", pDisplaySoundpathButton);
+               }
+       } else {
+               VideoLogInfo("Disconnect earjack.");
+
+               if (pDisplaySoundpathButton) {
+                       evas_object_del(pDisplaySoundpathButton);
+                       pDisplaySoundpathButton = NULL;
+               }
+
+               elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_left_btn");
+       }
+}
+
+static Eina_Bool MpVideoDisplayViewSubtitleDurationCb(void* pUserData)
+{
+       VideoLogInfo("");
+
+       edje_object_part_text_set(pDisplayViewSubtitleEdj, SUBTITLE_TEXT, "");
+
+       if(pSubtitleTimer)
+       {
+               ecore_timer_del(pSubtitleTimer);
+               pSubtitleTimer = NULL;
+       }
+
+       return EINA_FALSE;
+}
+
+/*
+ * Internal function
+ */
+
+void MpVideoDisplayViewInitKeyMouse(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pMouseEventHandler) {
+               ecore_event_handler_del(pMouseEventHandler);
+               pMouseEventHandler = NULL;
+       }
+
+       pMouseEventHandler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, MpVideoDisplayViewMouseUpCb, pAppData);
+}
+
+void MpVideoDisplayViewInitLayout(void *pUserData, int nLaunchingApp, void* pShowInfoViewCb)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
+       if (pDisplayViewLayout) {
+               Evas_Object *pTmpProgressbarEdj = NULL;
+               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);
+
+               pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
+               pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
+
+               edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
+
+               pTmpProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
+               if (pTmpProgressbarEdj) {
+                       edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pTmpProgressbarEdj);
+               } 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, "*");
+
+               if(strlen(pAppData->szPreMediaUri) > 0) {
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_EXTEND, "*");
+                       VideoLogInfo("Prev File : %s", pAppData->szPreMediaUri);
+               }
+               else {
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_NORMAL, "*");
+               }
+
+               if(strlen(pAppData->szNextMediaUri) > 0) {
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_EXTEND, "*");
+                       VideoLogInfo("Next File : %s", pAppData->szNextMediaUri);
+               }
+               else {
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_NORMAL, "*");
+               }
+
+
+               if (nScreensizeStatus == MP_DISPLAY_METHOD_LETTER_BOX) {
+                       VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+               } else if (nScreensizeStatus == MP_DISPLAY_METHOD_CROPPED_FULL) {
+                       VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_CROPPED_FULL");
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_EXPAND, "*");
+               } else {
+                       VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+                       edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+               }
+
+               edje_object_signal_callback_add(pDisplayViewOptionEdj,
+                                               SIGNAL_OPTION_SCREEN_SIZE_NORMAL,
+                                               SIGNAL_OPTION_PART_SCREEN_SIZE,
+                                               (void *)MpVideoDisplayViewPressOptionScreenSizeCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewOptionEdj,
+                                               SIGNAL_OPTION_SCREEN_SIZE_EXPAND,
+                                               SIGNAL_OPTION_PART_SCREEN_SIZE,
+                                               (void *)MpVideoDisplayViewPressOptionScreenSizeCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewOptionEdj,
+                                               SIGNAL_OPTION_DETAIL_DOWN,
+                                               SIGNAL_OPTION_PART_DETAIL,
+                                               (void *)pShowInfoViewCb, (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_REW_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_REW_BUTTON,
+                                               (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
+                                               SIGNAL_CONTROL_PART_REW_BUTTON,
+                                               (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_BACK_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_BACK_BUTTON,
+                                               (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_VOL_BUTTON_DOWN,
+                                               SIGNAL_CONTROL_PART_VOL_BUTTON,
+                                               (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+                                               SIGNAL_CONTROL_VOL_BUTTON_UP,
+                                               SIGNAL_CONTROL_PART_VOL_BUTTON,
+                                               (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(_EDJ(pDisplayViewLayout),
+                                               SIGNAL_MAIN_SCREEN_TOUCH_PRESS,
+                                               SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE,
+                                               (void *)MpVideoDisplayViewMainScreenTouchCb, (void *)pAppData);
+
+               MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
+       }
+}
+
+void MpVideoDisplayViewInitSubTitle(void* pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               VideoLogInfo("No exist subtitle.");
+               return;
+       }
+
+       VideoAppData* pAppData = (VideoAppData*)pUserData;
+
+       Evas* pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+       pDisplayViewSubtitleEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SUBTITLE_EDJ, SUBTITLE_EDJ_GROUP);
+
+       edje_object_part_text_set(pDisplayViewSubtitleEdj, SUBTITLE_TEXT, "");
+}
+
+void MpVideoDisplayViewInit(void *pUserData, int nLaunchingApp, void* pShowInfoViewCb)
+{
+       VideoLogInfo("");
+
+       if (!pNaviFrameHandle|| !pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       MpVideoDisplayViewInitKeyMouse(pUserData);
+       MpVideoDisplayViewInitLayout(pUserData, nLaunchingApp, pShowInfoViewCb);
+       MpVideoDisplayViewInitSubTitle(pUserData);
+}
+
+
+/*
+ * External function
+ */
+void MpVideoDisplayViewPush(void *pNaviFrame, void *pShowInfoViewCb, int nLaunchingApp, void *pUserData)
+{
+       if (!pNaviFrame || !pShowInfoViewCb || !pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       pNaviFrameHandle = pNaviFrame;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoDisplayViewInit(pUserData, nLaunchingApp, pShowInfoViewCb);
+
+       pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, pAppData->szVideoTitle, NULL, NULL, pDisplayViewLayout, "video/1line");
+
+       if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+               pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
+               elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_left_btn", pDisplaySoundpathButton);
+       }
+
+       MpVideoDisplayViewShowControlPanel(pUserData);
+}
+
+void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       elm_win_lower(pAppData->pMainWindow);
+}
+
+void MpVideoDisplayViewDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+       MpVideoDisplayViewHideControlPanel(pUserData);
+       MpVideoProgressbarDestroy();
+
+       pNaviFrameHandle = NULL;
+
+       if (pMouseEventHandler) {
+               ecore_event_handler_del(pMouseEventHandler);
+               pMouseEventHandler = 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 (pVolLongPressTimer) {
+               ecore_timer_del(pVolLongPressTimer);
+               pVolLongPressTimer = NULL;
+       }
+
+       if (pMutePopupShowTimer) {
+               ecore_timer_del(pMutePopupShowTimer);
+               pMutePopupShowTimer = NULL;
+       }
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       if (pDisplayViewNaviControlBar) {
+               evas_object_del(pDisplayViewNaviControlBar);
+               pDisplayViewNaviControlBar = NULL;
+       }
+
+       if (pDisplayViewLayout) {
+               evas_object_del(pDisplayViewLayout);
+               pDisplayViewLayout = NULL;
+       }
+
+       if (pSubtitleTimer) {
+               ecore_timer_del(pSubtitleTimer);
+               pSubtitleTimer = NULL;
+       }
+
+       if (pDisplayViewSubtitleEdj) {
+               evas_object_del(pDisplayViewSubtitleEdj);
+               pDisplayViewSubtitleEdj = NULL;
+       }
+
+       if (pDisplaySoundpathButton) {
+               evas_object_del(pDisplaySoundpathButton);
+               pDisplaySoundpathButton = NULL;
+       }
+
+       if (pSpeedPressTimer) {
+               ecore_timer_del(pSpeedPressTimer);
+               pSpeedPressTimer = NULL;
+       }
+
+
+       bIsVolumeLongPress = FALSE;
+       bIsVolumePopupShow = FALSE;
+
+       nCountCalledSpeedPlaying = 0;
+       nSpeedMode = MP_PLAYING_SPEED_NOTHING;
+
+       bSwitchDisplayViewUI = TRUE;
+       nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+       nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+}
+
+void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, nScreensizeStatus);
+
+       MpVideoProgressbarReset((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);
+       }
+
+       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;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       bSwitchDisplayViewUI = TRUE;
+
+       evas_object_show(pDisplayViewPanelEdj);
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+       } else {
+               pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
+       }
+
+       MpVideoDisplayViewActivate();
+}
+
+void MpVideoDisplayViewHideControlPanel(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!pDisplayViewPanelEdj) {
+               VideoLogInfo("No exist play control panel edc.");
+               return;
+       }
+
+       bSwitchDisplayViewUI = FALSE;
+
+       evas_object_hide(pDisplayViewPanelEdj);
+
+       if (pCtrlPanelHideTimer) {
+               ecore_timer_del(pCtrlPanelHideTimer);
+               pCtrlPanelHideTimer = NULL;
+       }
+}
+
+void MpVideoDisplayViewActivate(void)
+{
+       VideoLogInfo("");
+
+       nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
+}
+
+void MpVideoDisplayViewUnactivate(void)
+{
+       VideoLogInfo("");
+
+       nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+}
+
+void MpVideoDisplayViewHideSoundpath(void)
+{
+       VideoLogInfo("");
+
+       MpVideoSoundpathHide();
+}
+
+void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
+
+       if (pNaviFrameItemForDisplayerView != NULL) {
+               VideoLogInfo("%s", pAppData->szVideoTitle);
+               elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
+       }
+}
+
+void MpVideoDisplayViewUpdateSubtitle(double nDuration, char* szSubtitleString)
+{
+       VideoLogInfo("");
+
+       if (!szSubtitleString) {
+               VideoLogInfo("No Exist szSubtitleString pointer.");
+               return;
+       }
+
+       if (nDuration <= 0) {
+               VideoLogInfo("No Exist Duration time.");
+               return;
+       }
+
+       VideoLogInfo("Subtitle Data: %s", szSubtitleString);
+       VideoLogInfo("Subtitle Duration : %f", nDuration);
+
+       edje_object_part_text_set(pDisplayViewSubtitleEdj, SUBTITLE_TEXT, szSubtitleString);
+
+       if (pSubtitleTimer) {
+               ecore_timer_del(pSubtitleTimer);
+               pSubtitleTimer = NULL;
+       }
+
+       pSubtitleTimer = ecore_timer_add(nDuration, MpVideoDisplayViewSubtitleDurationCb, NULL);
+}
+
+bool MpVideoDisplayViewIsTopView(void)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pTmpContents = NULL;
+       Elm_Object_Item *pTmpItem = NULL;
+
+       if (!pNaviFrameHandle) {
+               VideoLogInfo("[ERR] No exist naviframe 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 naviframe top item.");
+               return FALSE;
+       }
+
+       return FALSE;
+}
+
+void MpVideoDisplayViewShowNocontentImage(void)
+{
+       VideoLogInfo("");
+
+       if (pDisplayViewLayout) {
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
+       }
+}
+
+void MpVideoDisplayViewHideNocontentImage(void)
+{
+       VideoLogInfo("");
+
+       if (pDisplayViewLayout) {
+               edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
+       }
+}
diff --git a/src/mp-video-info-ctrl.c b/src/mp-video-info-ctrl.c
new file mode 100755 (executable)
index 0000000..150bb72
--- /dev/null
@@ -0,0 +1,363 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <aul.h>
+#include <vconf.h>
+#include <mmf/mm.h>
+#include <mm_file.h>
+#include <mmf/mm_file.h>
+#include <libexif/exif-data.h>
+
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include <unicode/udat.h>
+#include <unicode/ustring.h>
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udatpg.h>
+#include <unicode/utmscale.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-info-ctrl.h"
+
+enum VIDEO_PLAYER_FILE_SIZE_TYPE
+{
+       SIZE_BYTE = 0,
+       SIZE_KB,
+       SIZE_MB,
+       SIZE_GB
+};
+
+bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude)
+{
+       if (!szUriPath) {
+               VideoLogInfo("[ERR] No exist szUriPath.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       MMHandleType st_Tag = (MMHandleType) NULL;
+
+       int nRet = -1;
+       char *szTmp = NULL;
+       double nGpsValue = 0.0;
+
+       *nLatitude = 0.0;
+       *nLongtitude = 0.0;
+
+       nRet = mm_file_create_tag_attrs(&st_Tag, szUriPath);
+       if (!st_Tag) {
+               VideoLogInfo("[ERR] : %s", szUriPath);
+               return FALSE;
+       }
+
+       nRet = mm_file_get_attrs(st_Tag, &szTmp, MM_FILE_TAG_LATIDUE, &nGpsValue, NULL);
+       if (nRet == 0) {
+               VideoLogInfo("Latitude : %f", nGpsValue);
+               if (nGpsValue != 0.0) {
+                       *nLatitude = nGpsValue;
+               }
+       } else if (szTmp) {
+               VideoLogInfo("[ERR] - %s", szTmp);
+               free(szTmp);
+               szTmp = NULL;
+               mm_file_destroy_tag_attrs(st_Tag);
+
+               return FALSE;
+       }
+
+       nGpsValue = 0.0;
+
+       nRet = mm_file_get_attrs(st_Tag, &szTmp, MM_FILE_TAG_LONGITUDE, &nGpsValue, NULL);
+       if (nRet == 0) {
+               VideoLogInfo("Longitude: %f", nGpsValue);
+               if (nGpsValue != 0.0) {
+                       *nLongtitude = nGpsValue;
+               }
+       } else if (szTmp) {
+               VideoLogInfo("[ERR] - %s", szTmp);
+               free(szTmp);
+               szTmp = NULL;
+               mm_file_destroy_tag_attrs(st_Tag);
+
+               return FALSE;
+       }
+
+       mm_file_destroy_tag_attrs(st_Tag);
+
+       return TRUE;
+}
+
+bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution(pAppData);
+
+       if (pAppData->nVideoWidthResolution > 0 && pAppData->nVideoHeightResolution > 0) {
+               snprintf(szWidthResolution, STR_LEN_MAX, "%d", pAppData->nVideoWidthResolution);
+               snprintf(szHeightResolution, STR_LEN_MAX, "%d", pAppData->nVideoHeightResolution);
+       } else {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static char *MpVideoInfoCtrlConvertingString(const char *szLocale, const char *szCustomSkeleton, const char *szTimezone, UDate st_Date)
+{
+#define UG_ICU_ARR_LENGTH                      256
+
+       // Copy a byte string encoded in the default codepage to a ustring.
+       // Copies at most n characters. The result will be null terminated if the length of src is less than n.
+       // Performs a host byte to UChar conversion.
+
+       UChar ucustomSkeleton[UG_ICU_ARR_LENGTH] = {0,};
+
+       if (u_uastrncpy(ucustomSkeleton, szCustomSkeleton, UG_ICU_ARR_LENGTH) == NULL) {
+               VideoLogInfo("u_uastrncpy() error.");
+               return NULL;
+       }
+
+       UChar utimezone[UG_ICU_ARR_LENGTH] = {0,};
+
+       if (u_uastrncpy(utimezone, szTimezone, UG_ICU_ARR_LENGTH) == NULL) {
+               VideoLogInfo("u_uastrncpy() error.");
+               return NULL;
+       }
+
+       UErrorCode status = U_ZERO_ERROR;
+       UDateTimePatternGenerator *generator;
+       UDateFormat     *formatter;
+
+       UChar bestPattern[UG_ICU_ARR_LENGTH] = {0,};
+       UChar formatted[UG_ICU_ARR_LENGTH] = {0,};
+       char formattedString[UG_ICU_ARR_LENGTH] = {0,};
+       int32_t bestPatternLength, formattedLength;
+
+       ucal_setDefaultTimeZone(utimezone , &status);
+
+       if (U_FAILURE(status)) {
+               VideoLogInfo("ucal_setDefaultTimeZone() is failed.");
+               return NULL;
+       }
+
+       uloc_setDefault(getenv("LC_TIME"), &status);
+
+       if (U_FAILURE(status)) {
+               VideoLogInfo("ucal_setDefaultTimeZone() is failed.");
+               return NULL;
+       }
+
+       generator = udatpg_open(szLocale, &status);
+       if (generator == NULL) {
+               return NULL;
+       }
+
+       bestPatternLength = udatpg_getBestPattern(generator, ucustomSkeleton, u_strlen(ucustomSkeleton), bestPattern, UG_ICU_ARR_LENGTH, &status);
+       if (bestPatternLength <= 0) {
+               return NULL;
+       }
+
+       formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, szLocale, NULL, -1, bestPattern, -1, &status);
+       if (formatter == 0) {
+               return NULL;
+       }
+
+       formattedLength = udat_format(formatter, st_Date, formatted, UG_ICU_ARR_LENGTH, NULL, &status);
+       if (formattedLength <= 0) {
+               return NULL;
+       }
+
+       u_austrcpy(formattedString, formatted);
+       udatpg_close(generator);
+       udat_close(formatter);
+
+       if (strlen(formattedString) == 0) {
+               return NULL;
+       }
+
+       return strdup(formattedString);
+}
+
+static char* MpVideoInfoCtrlGetDateOfFile(time_t mtime)
+{
+#define UG_DATE_FORMAT_12                      "yMMMdhms"
+#define UG_DATE_FORMAT_24                      "yMMMdHms"
+
+       VideoLogInfo("");
+
+       char* szSkeleton = NULL;
+
+       enum appcore_time_format nTimeformat;
+
+       int nRet = appcore_get_timeformat(&nTimeformat);
+       if (nRet == -1) {
+               VideoLogInfo("Cannot get timeformat.");
+               nTimeformat = APPCORE_TIME_FORMAT_12;
+       }
+
+       if (nTimeformat == APPCORE_TIME_FORMAT_12) {
+               szSkeleton = UG_DATE_FORMAT_12;
+       } else if(nTimeformat == APPCORE_TIME_FORMAT_24) {
+               szSkeleton = UG_DATE_FORMAT_24;
+       } else {
+               VideoLogInfo("Invalid time format : %d", nTimeformat);
+               szSkeleton = UG_DATE_FORMAT_12;         // Default value.
+       }
+
+       char *szLocale = vconf_get_str(VCONFKEY_REGIONFORMAT);          // eg en_US.UTF-8
+       if (szLocale == NULL) {
+               VideoLogInfo("Cannot get region format.");
+               szLocale = "en_US.UTF-8";                       // Default value.
+       }
+
+       char *szTimezone = NULL;
+       szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);       // eg Asia/Seoul
+       if (szTimezone == NULL) {
+               VideoLogInfo("Cannot get time zone.");
+               return strdup("N/A");
+       }
+
+       VideoLogInfo("Locale : %s TimeZone : %s TimeFormat : %s", szLocale, szSkeleton, szTimezone);
+
+       char* szDatestr = NULL;
+       szDatestr = MpVideoInfoCtrlConvertingString(szLocale, szSkeleton, szTimezone, (UDate)mtime * 1000);
+       if(!szDatestr) {
+               VideoLogInfo("Cannot get time string.");
+               return strdup("N/A");
+       }
+
+       VideoLogInfo("ICU Date : %s", szDatestr);
+
+       return szDatestr;
+}
+
+char* MpVideoInfoCtrlGetFileExtension(char *szPath)
+{
+       if (!szPath) {
+               VideoLogInfo("Cannot get file extension. path is NULL");
+               return strdup("Unknown");
+       }
+
+       char *szExt = NULL;
+       szExt = strrchr(szPath, '.');
+
+       if ((szExt != NULL) && ((szExt+1) != NULL)) {
+               return strdup(szExt + 1);
+       }
+
+       return strdup("Unknown");
+}
+
+char* MpVideoInfoCtrlGetFileSize(size_t size)
+{
+       VideoLogInfo("");
+
+#define FILE_SIZE_LEN_MAX                      64
+#define BASIC_SIZE                                     1024    //used for file size check
+
+       int nCount = 0;
+
+       unsigned long int lsize = (unsigned long int)size;
+
+       char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
+       if (pTmp == NULL) {
+               return NULL;
+       }
+
+       while (size >= (BASIC_SIZE)) {
+               lsize = size;
+               size /= BASIC_SIZE;
+               nCount++;
+       }
+
+       float remain = ((float)lsize/BASIC_SIZE) - size;
+
+       if (nCount == SIZE_BYTE) {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu B", size);
+       } else if (nCount == SIZE_KB) {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu KB", size);
+       } else if (nCount == SIZE_MB) {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%.1f MB", size+remain);
+       } else if(nCount == SIZE_GB) {
+               snprintf(pTmp, FILE_SIZE_LEN_MAX,"%.1f GB", size+remain);
+       }
+
+       VideoLogInfo("Size = %lu, OrigSize=%zu", lsize, size);
+
+       return pTmp;
+}
+
+bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize)
+{
+       if (!szUriPath) {
+               VideoLogInfo("[ERR] No exist szUriPath.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       struct stat statbuf;
+
+       if (stat(szUriPath, &statbuf) == -1) {
+               return FALSE;
+       }
+
+       memset(szFileDate, 0, nFileDateSize);
+       memset(szFileExtension, 0, nFileExtensionSize);
+       memset(szFileSize, 0, nFilesizeSize);
+
+       char *szTmpDateOfFile = MpVideoInfoCtrlGetDateOfFile(statbuf.st_mtime);
+       char *szTmpFileExtension = MpVideoInfoCtrlGetFileExtension(szUriPath);
+       char *szTmpFileSize = MpVideoInfoCtrlGetFileSize(statbuf.st_size);
+
+       if (szTmpDateOfFile) {
+               VideoLogInfo("szTmpDateOfFile : %s", szTmpDateOfFile);
+               strncpy(szFileDate, szTmpDateOfFile, nFileDateSize);
+               free(szTmpDateOfFile);
+       }
+
+       if (szTmpFileExtension) {
+               VideoLogInfo("szTmpFileExtension : %s", szTmpFileExtension);
+               strncpy(szFileExtension, szTmpFileExtension, nFileExtensionSize);
+               free(szTmpFileExtension);
+       }
+
+       if (szTmpFileSize) {
+               VideoLogInfo("szTmpFileSize : %s", szTmpFileSize);
+               strncpy(szFileSize, szTmpFileSize, nFilesizeSize);
+               free(szTmpFileSize);
+       }
+
+       return TRUE;
+}
diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c
new file mode 100755 (executable)
index 0000000..1740ecc
--- /dev/null
@@ -0,0 +1,996 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include <mm.h>
+#include <mm_error.h>
+#include <mm_sound.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 int nAntiShock = 0;
+static MMHandleType playerHandle = 0;
+
+bool MpPlayerMgrIsActive(void)
+{
+       return playerHandle ? true : false;
+}
+
+void MpPlayerMgrSetMessageCallback(MMMessageCallback Callback, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (mm_player_set_message_callback(playerHandle, Callback, pUserData) !=
+           MM_ERROR_NONE) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+}
+
+bool MpPlayerMgrSetAudioCallback(mm_player_audio_stream_callback CallBack,
+                                void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (mm_player_set_audio_stream_callback
+           (playerHandle, CallBack, pUserData) != MM_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 = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       VideoLogInfo(" Media path (%s)", szPath);
+
+       if (nPathLength > 0 && nPathLength < MAX_PATH_LEN) {
+               nErr = mm_player_create(&playerHandle);
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo
+                           ("[ERR] Fail to create player handle. (MMF Error code : %x)",
+                            nErr);
+                       return false;
+               }
+
+               nErr =
+                   mm_player_set_attribute(playerHandle, &pErrName,
+                                           "profile_uri", szPath,
+                                           strlen(szPath), NULL);
+
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo("[ERR] (%x):: Fail to set attribute ",
+                                    nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+
+       } else {
+               VideoLogInfo("[ERR] File path is too long.");
+               return false;
+       }
+
+       if (nAntiShock) {
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "sound_fadeup", 1, NULL);
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo("[ERR] (%x):: Fail to set attribute ",
+                                    nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+               nAntiShock = 0;
+       } else {
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "sound_fadeup", 0, NULL);
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo("[ERR] (%x):: Fail to set attribute ",
+                                    nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+               nAntiShock = 1;
+       }
+
+       nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                      "sound_volume_type",
+                                      MM_SOUND_VOLUME_TYPE_MEDIA, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] (%x):: Fail to set attribute ", nErr,
+                            pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrDestroy(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = mm_player_destroy(playerHandle);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       playerHandle = 0;
+
+       return true;
+}
+
+bool MpPlayerMgrRealize(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = mm_player_realize(playerHandle);
+       if (nErr != MM_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 = mm_player_unrealize(playerHandle);
+       if (nErr != MM_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 = mm_player_start(playerHandle);
+       if (nErr != MM_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 = mm_player_stop(playerHandle);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrResume(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+       int nErr = MM_ERROR_NONE;
+
+       if (nAntiShock) {
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "sound_fadeup", 1, NULL);
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo
+                           ("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+
+               nAntiShock = 0;
+       } else {
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "sound_fadeup", 0, NULL);
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo
+                           ("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+
+               nAntiShock = 0;
+       }
+
+       nErr = mm_player_resume(playerHandle);
+       if (nErr != MM_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 = mm_player_pause(playerHandle);
+       if (nErr != MM_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 = mm_player_get_position(playerHandle, MM_PLAYER_POS_FORMAT_TIME,
+                                     &nPos);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+               return 0;
+       }
+
+       return nPos;
+}
+
+void MpPlayerMgrSetPosition(unsigned int nPos)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("Set position - %d", nPos);
+
+       int nErr = 0;
+
+       nErr = mm_player_set_position(playerHandle, MM_PLAYER_POS_FORMAT_TIME,
+                                     (int)nPos);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+       }
+}
+
+bool MpPlayerMgrGetVisible(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       int nVisible = 0;
+       char *pErrName = NULL;
+
+       nErr =
+           mm_player_get_attribute(playerHandle, &pErrName, "display_visible",
+                                   &nVisible, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute.",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return (bool) nVisible;
+}
+
+void MpPlayerMgrSetVisible(bool bEnabled)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (MpPlayerMgrGetVisible() == bEnabled) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       nErr =
+           mm_player_set_attribute(playerHandle, &pErrName, "display_visible",
+                                   (int)bEnabled, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+       }
+}
+
+void MpPlayerMgrSetMute(bool bMuteEnable)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (mm_player_set_mute(playerHandle, (int)bMuteEnable) != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR]");
+       }
+}
+
+bool MpPlayerMgrGetMute(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       bool bIsMute = FALSE;
+
+       if (mm_player_get_mute(playerHandle, (int *)&bIsMute) != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       return bIsMute;
+}
+
+bool MpPlayerMgrSetBtHeadset(bool bEnable, char *szAddress)
+{
+       VideoLogInfo("");
+
+       VideoLogInfo("bt headset enable(%d)", bEnable);
+       VideoLogInfo("============================================");
+       VideoLogInfo("bluetooth headset enable(%d), addr(%s)", bEnable,
+                    szAddress);
+       VideoLogInfo("============================================");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       MMBluetoothType BluetoothParam;
+       memset(&BluetoothParam, 0, sizeof(MMBluetoothType));
+
+       if (bEnable) {
+               BluetoothParam.mode = 1;
+
+               if (szAddress) {
+                       strncpy(BluetoothParam.addr, szAddress,
+                               BT_ADDR_LEN - 1);
+               } else {
+                       VideoLogInfo("[ERR]");
+                       return false;
+               }
+
+               VideoLogInfo("address : %s", szAddress);
+       }
+
+       return true;
+}
+
+int MpPlayerMgrGetStreamingType(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+       int streaming_type = STREAMING_SERVICE_NONE;
+
+       nErr =
+           mm_player_get_attribute(playerHandle, &pErrName, "streaming_type",
+                                   &streaming_type, NULL);
+
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return (int)streaming_type;
+}
+
+void MpPlayerMgrSetProgressiveDownload(int nFileSize)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       nErr = mm_player_set_attribute(playerHandle, &pErrName, "pd_enable", 1,
+                                      "pd_full_content_size", nFileSize, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+       }
+}
+
+void MpPlayerMgrSetDownloadComplete(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       nErr =
+           mm_player_set_attribute(playerHandle, &pErrName, "pd_down_complete",
+                                   1, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+       }
+}
+
+void MpPlayerMgrSetProgressTimerInterval(int nInterval)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       char *pErrName = NULL;
+       int nErr = MM_ERROR_NONE;
+
+       nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                      "profile_progress_interval", nInterval,
+                                      NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+       }
+}
+
+int MpPlayerMgrGetPdduration(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nDuration = -1;
+       char *pErrName = NULL;
+       int nErr = MM_ERROR_NONE;
+
+       nErr =
+           mm_player_get_attribute(playerHandle, &pErrName, "content_duration",
+                                   &nDuration, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return nDuration;
+}
+
+int MpPlayerMgrGetDuration(char *szFilePath)
+{
+       VideoLogInfo("%s", szFilePath);
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nDuration = -1;
+       char *pErrName = NULL;
+       int nErr = MM_ERROR_NONE;
+
+       nErr =
+           mm_player_get_attribute(playerHandle, &pErrName, "content_duration",
+                                   &nDuration, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return nDuration;
+}
+
+bool MpPlayerMgrSetRatioVideoScreenSize(MpPlayerMgrDisplayMethod ScreenSize)
+{
+       VideoLogInfo("Screen size : %d", ScreenSize);
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+       int nErr = MM_ERROR_NONE;
+
+       nErr =
+           mm_player_set_attribute(playerHandle, &pErrName, "display_method",
+                                   ScreenSize, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetOverlayXid(void *pOverlayXid)
+{
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (!pOverlayXid) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       VideoLogInfo("XID : %d", *((int *)pOverlayXid));
+
+       nErr =
+           mm_player_set_attribute(playerHandle, &pErrName, "display_overlay",
+                                   pOverlayXid, sizeof(int),
+                                   "display_rotation",
+                                   MM_DISPLAY_ROTATION_NONE, NULL);
+
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetSoundPriority(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+       int nErr = MM_ERROR_NONE;
+
+       nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                      "sound_volume_type",
+                                      MM_SOUND_VOLUME_TYPE_MEDIA, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo
+                   ("[ERR] Error code : 0x%x -  Fail to set attribute ", nErr,
+                    pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrGetVideoWidthResolution(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+       int nWidth = 0;
+       int nErr = MM_ERROR_NONE;
+
+       nErr = mm_player_get_attribute(playerHandle, &pErrName,
+                                      "content_video_width", &nWidth, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return nWidth;
+}
+
+int MpPlayerMgrGetVideoHeightResolution(void)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+       int nHeight = 0;
+       int nErr = MM_ERROR_NONE;
+
+       nErr = mm_player_get_attribute(playerHandle, &pErrName,
+                                      "content_video_height", &nHeight, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return nHeight;
+}
+
+bool MpPlayerMgrSetSubtitleSilent(bool bSilent)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = mm_player_set_subtitle_silent(playerHandle, (int)bSilent);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - ", nErr);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetSubtitle(const char *szSubtitlePath)
+{
+       VideoLogInfo("%s", szSubtitlePath);
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (!szSubtitlePath) {
+               VideoLogInfo("[ERR] subtitle path is null.");
+               return false;
+       }
+
+       char *pErrName = NULL;
+
+       int nErr = 0;
+       nErr = mm_player_set_attribute(playerHandle, &pErrName, "subtitle_uri",
+                                      (const char *)szSubtitlePath,
+                                      strlen(szSubtitlePath), NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       } else {
+               VideoLogInfo("Success to set subtitle.");
+       }
+
+       return true;
+}
+
+int MpPlayerMgrSetBluetoothHeadset(char *szBlutoothAddress, int nMode)
+{
+       VideoLogInfo("");
+
+       return 1;
+}
+
+int MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+
+       int nErr = 0;
+       nErr = mm_player_set_attribute(playerHandle, &pErrName, "display_roi_x",
+                                      nX, "display_roi_y", nY,
+                                      "display_roi_width", nWidth,
+                                      "display_roi_height", nHeight, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return true;
+}
+
+int MpPlayerMgrSetVerticalOverlayPos(int nY)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       char *pErrName = NULL;
+
+       int nErr = 0;
+       nErr = mm_player_set_attribute(playerHandle, &pErrName, "display_roi_y",
+                                      nY, NULL);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+                            nErr, pErrName);
+               free(pErrName);
+               return false;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetUseragentForStreaming(const char *szUserAgent)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (!szUserAgent) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       if (strlen(szUserAgent) > 0) {
+               VideoLogInfo("User agent (%s)", szUserAgent);
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "streaming_user_agent",
+                                              szUserAgent, strlen(szUserAgent),
+                                              NULL);
+
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo("[ERR] (%x):: Fail to set attribute [%s]",
+                                    nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+       } else {
+               VideoLogInfo("No have useragnet value.");
+               return true;
+       }
+
+       return true;
+}
+
+bool MpPlayerMgrSetProxAddressForStreaming(const char *szProxyAddress)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (!szProxyAddress) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       if (strlen(szProxyAddress) > 0) {
+               VideoLogInfo("Proxy Setting (%s)", szProxyAddress);
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "streaming_proxy",
+                                              szProxyAddress,
+                                              strlen(szProxyAddress), NULL);
+
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo("[ERR] (%x):: Fail to set attribute [%s]",
+                                    nErr, pErrName);
+                       free(pErrName);
+                       return false;
+               }
+       }
+       return true;
+}
+
+bool MpPlayerMgrSetCookieForStreaming(const char *szCookie)
+{
+       VideoLogInfo("");
+
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       if (!szCookie) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+       char *pErrName = NULL;
+
+       if (strlen(szCookie) > 0) {
+               VideoLogInfo("Cookie (%s)", szCookie);
+               nErr = mm_player_set_attribute(playerHandle, &pErrName,
+                                              "streaming_cookie", szCookie,
+                                              strlen(szCookie), NULL);
+
+               if (nErr != MM_ERROR_NONE) {
+                       VideoLogInfo("[ERR] (%x):: Fail to set attribute [%s]",
+                                    nErr, pErrName);
+
+                       if (pErrName)
+                               free(pErrName);
+
+                       return false;
+               }
+       } else {
+               VideoLogInfo("No have useragnet value.");
+               return true;
+       }
+
+       return true;
+}
+
+
+int MpPlayerMgrGetBufferingPosition(void)
+{
+       if (!MpPlayerMgrIsActive()) {
+               VideoLogInfo("[ERR]");
+               return false;
+       }
+
+       int nErr = MM_ERROR_NONE;
+
+       int startPos = 0, stopPos = 0;
+       nErr = mm_player_get_buffer_position(playerHandle,
+                                            MM_PLAYER_POS_FORMAT_PERCENT,
+                                            &startPos, &stopPos);
+       if (nErr != MM_ERROR_NONE) {
+               VideoLogInfo("[ERR]");
+               return -1;
+       }
+
+       return stopPos;
+}
diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c
new file mode 100755 (executable)
index 0000000..05a6c98
--- /dev/null
@@ -0,0 +1,397 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-progressbar.h"
+
+static Evas_Object *pProgressbarEdj = NULL;
+Ecore_Timer *pProgressbarTimer = NULL;
+
+static bool bIsEventSkip = FALSE;
+static bool bIsDrag = FALSE;
+static int nDragPosition = 0;
+
+#define PROGRESS_BAR_TERM                      40
+
+/*
+ * Internal function
+ */
+static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData)
+{
+       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);
+
+       return EINA_TRUE;
+}
+
+static void MpVideoProgressbarUpdateBufferingValue(void *pUserData)
+{
+       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);
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering",
+                                       buffering_ratio, 0.0);
+}
+
+/*
+ * Callback function.
+ */
+static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
+{
+
+       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 (bIsDrag || bIsEventSkip)
+               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);
+
+       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER )
+               MpVideoProgressbarUpdateBufferingValue(pUserData);
+
+       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;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       double ratio = 0.0;
+
+       bIsDrag = TRUE;
+
+       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+       current = ev->canvas.x - PROGRESS_BAR_TERM;
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               current = w;
+
+       ratio = (double)current / w;
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
+           pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
+       }
+
+       nDragPosition = ratio * pAppData->nDuration;
+
+       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;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       double ratio = 0.0;
+
+       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+       current = ev->canvas.x - PROGRESS_BAR_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.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;
+       }
+
+       bIsDrag = FALSE;
+}
+
+static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
+                                    Evas_Object *obj, void *event_info)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!event_info) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (bIsEventSkip)
+               return;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       double ratio = 0.0;
+
+       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+       current = ev->canvas.x - PROGRESS_BAR_TERM;
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               current = w;
+
+       ratio = (double)current / w;
+       nDragPosition = ratio * pAppData->nDuration;
+
+       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;
+       }
+
+       bIsEventSkip = FALSE;
+       bIsDrag = 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;
+       }
+
+       pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData);
+}
+
+void MpVideoProgressbarDeleteTimer(void)
+{
+       VideoLogInfo("");
+
+       if (pProgressbarTimer) {
+               ecore_timer_del(pProgressbarTimer);
+               pProgressbarTimer = 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 MpVideoProgressbarReset(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);
+
+       MpVideoProgressbarCreateTimer(pUserData);
+}
diff --git a/src/mp-video-sound-path-ctrl.c b/src/mp-video-sound-path-ctrl.c
new file mode 100755 (executable)
index 0000000..842cbbd
--- /dev/null
@@ -0,0 +1,418 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <mm_sound.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-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 *pGroupRadio = NULL;
+static Evas_Object *pGenList = NULL;
+
+static Elm_Genlist_Item_Class st_Itc;
+static char szSoundPathItems[MP_VIDEO_SOUND_PATH_NUM][STR_LEN_MAX];
+static bool bIsConnectBluetooth = FALSE;
+static bool bIsConnectEarjack = FALSE;
+
+void MpVideoSoundpathDeleteRadioButton(void)
+{
+       VideoLogInfo("");
+
+       if (pGroupRadio) {
+               evas_object_del(pGroupRadio);
+               pGroupRadio = NULL;
+       }
+}
+
+void MpVideoSoundpathDeletePopupHandle(void)
+{
+       VideoLogInfo("");
+
+       int nCount = 0;
+
+       for (nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++) {
+               memset(&szSoundPathItems[nCount][0], 0,
+                      sizeof(char) * STR_LEN_MAX);
+       }
+
+       MpVideoSoundpathDeleteRadioButton();
+
+       memset(&st_Itc, 0, sizeof(Elm_Genlist_Item_Class));
+
+       if (pGenList) {
+               evas_object_del(pGenList);
+               pGenList = NULL;
+       }
+
+       if (pVideoSoundPathPopUpHandle) {
+               evas_object_del(pVideoSoundPathPopUpHandle);
+               pVideoSoundPathPopUpHandle = 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][0]);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *MpVideoSoundpathGetIconOfGenlistItemCb(const void
+                                                          *pUserData,
+                                                          Evas_Object *pObject,
+                                                          const char *pPart)
+{
+       VideoLogInfo("");
+
+       int nIndex = (int)pUserData;
+       Evas_Object *pTmpRadio = NULL;
+
+       if (!strcmp(pPart, "elm.icon")) {
+               VideoLogInfo("Index : %d", nIndex);
+               pTmpRadio = elm_radio_add(pObject);
+               elm_radio_state_value_set(pTmpRadio, nIndex);
+               evas_object_show(pTmpRadio);
+               elm_radio_group_add(pTmpRadio, pGroupRadio);
+       }
+
+       return pTmpRadio;
+}
+
+static void MpVideoSoundpathSelectSoundPathItemCb(void *pUserData,
+                                                 Evas_Object *pObject,
+                                                 void *pEventInfo)
+{
+       if (pUserData == NULL) {
+               VideoLogInfo("[ERR]No have pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       int nIndex = 0;
+       Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+
+       if (pItem) {
+               nIndex = (int)elm_object_item_data_get(pItem);
+               VideoLogInfo("Select sound path : %s", szSoundPathItems[nIndex]);
+
+               if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_SPEAKER)) {
+                       int nRet = 0;
+
+                       if (MpUtilIsConnectEarjack()) {
+                               nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY);
+                       } else {
+                               nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP);
+                       }
+
+                       elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+               } else if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_EARJACK)) {
+                       int nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP);
+                       if (nRet != MM_ERROR_NONE) {
+                               VideoLogInfo("[ERR] mm_sound_route_set_system_policy(0x%x)",  nRet);
+                       } else {
+                               elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+                       }
+               } else {
+                       int nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT);
+                       if (nRet != MM_ERROR_NONE) {
+                               VideoLogInfo("[ERR] mm_sound_route_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();
+}
+
+void MpVideoSoundpathCurrentState(Evas_Object *pParent)
+{
+       VideoLogInfo("");
+
+       int nBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+       bIsConnectEarjack = FALSE;
+       bIsConnectBluetooth = FALSE;
+
+       /* Speaker */
+       strncpy(&szSoundPathItems[MP_SOUND_PATH_SPEAKER][0], 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][0], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1);
+       } else {
+               VideoLogInfo("No connect earjack.");
+       }
+
+       /*  Add bluetooth stereo sound path. */
+       if (MM_ERROR_NONE != mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName)) {
+               VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+       } else {
+               if (nBluetoothConnect) {
+                       VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName);
+                       bIsConnectBluetooth = TRUE;
+                       strncpy(&szSoundPathItems[MP_SOUND_PATH_BLUETOOTH][0], szBluetoothName, STR_LEN_MAX - 1);
+               } else {
+                       VideoLogInfo("Unactivate Bluetooth stereo A2DP.");
+               }
+       }
+}
+
+void MpVideoSoundpathSetRadioButton(void)
+{
+       VideoLogInfo("");
+
+       int nBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+       system_audio_route_t nPolicy = 0;
+
+       mm_sound_route_get_system_policy(&nPolicy);
+
+       if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT) {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
+
+               if (MM_ERROR_NONE != mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName)) {
+                       VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+               }
+
+               if (nBluetoothConnect) {
+                       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 == SYSTEM_AUDIO_ROUTE_POLICY_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();
+
+       pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+       MpVideoSoundpathCurrentState(pVideoSoundPathPopUpHandle);
+
+       elm_object_style_set(pVideoSoundPathPopUpHandle, "min_menustyle");
+       elm_object_part_text_set(pVideoSoundPathPopUpHandle, "title,text", MP_VIDEO_SOUND_PATH);
+       evas_object_size_hint_weight_set(pVideoSoundPathPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       pButton = elm_button_add(pVideoSoundPathPopUpHandle);
+       elm_object_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. */
+       st_Itc.item_style = "1text.1icon.3";
+       st_Itc.func.text_get = (void *)MpVideoSoundpathGetLabelOfGenlistItemCb;
+       st_Itc.func.content_get = (void *)MpVideoSoundpathGetIconOfGenlistItemCb;
+       st_Itc.func.state_get = NULL;
+       st_Itc.func.del = NULL;
+
+       /* Create genlist handle */
+       pGenList = elm_genlist_add(pVideoSoundPathPopUpHandle);
+       evas_object_size_hint_weight_set(pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       pGroupRadio = elm_radio_add(pGenList);
+
+       if (bIsConnectBluetooth) {
+               elm_genlist_item_append(pGenList, &st_Itc, (void *)MP_SOUND_PATH_BLUETOOTH, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       MpVideoSoundpathSelectSoundPathItemCb,
+                                       pAppData);
+       }
+
+       if (bIsConnectEarjack) {
+               elm_genlist_item_append(pGenList, &st_Itc, (void *)MP_SOUND_PATH_EARJACK, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       MpVideoSoundpathSelectSoundPathItemCb,
+                                       pAppData);
+       }
+
+       elm_genlist_item_append(pGenList, &st_Itc, (void *)MP_SOUND_PATH_SPEAKER, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       MpVideoSoundpathSelectSoundPathItemCb,
+                                       pAppData);
+
+       MpVideoSoundpathSetRadioButton();
+
+       pBox = elm_box_add(pVideoSoundPathPopUpHandle);
+       if (bIsConnectBluetooth && bIsConnectEarjack) {
+               evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get());
+       } else if(bIsConnectBluetooth || bIsConnectEarjack) {
+               evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 225 * elm_config_scale_get());
+       } else {
+               evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 451 * elm_config_scale_get());
+       }
+       elm_box_pack_end(pBox, pGenList);
+       elm_object_content_set(pVideoSoundPathPopUpHandle, pBox);
+
+       evas_object_show(pGenList);
+       evas_object_show(pVideoSoundPathPopUpHandle);
+
+       return TRUE;
+}
+
+void MpVideoSoundpathHide(void)
+{
+       VideoLogInfo("");
+
+       MpVideoSoundpathDeletePopupHandle();
+}
+
+bool MpVideoSoundpathIsConnectOtherSoundpath(void)
+{
+       VideoLogInfo("");
+
+       int nBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+
+       bIsConnectEarjack = FALSE;
+       bIsConnectBluetooth = FALSE;
+
+       if (MpUtilIsConnectEarjack()) {
+               VideoLogInfo("Connect earjack.");
+               bIsConnectEarjack= TRUE;
+               return TRUE;
+       }
+
+       mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName);
+       if (nBluetoothConnect) {
+               VideoLogInfo("Connect bluetooth.");
+               bIsConnectBluetooth = TRUE;
+               return TRUE;
+       }
+
+       VideoLogInfo("Only spaker.");
+       return FALSE;
+}
+
+int MpVideoSoundpathGetCurrConnectedSoundpath(void)
+{
+       VideoLogInfo("");
+
+       int nBluetoothConnect = 0;
+       char *szBluetoothName = NULL;
+       system_audio_route_t nPolicy = 0;
+
+       mm_sound_route_get_system_policy(&nPolicy);
+
+       if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT) {
+               VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
+
+               if (MM_ERROR_NONE != mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName)) {
+                       VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+               }
+
+               if (nBluetoothConnect) {
+                       return MP_SOUND_PATH_BLUETOOTH;
+               } else if (MpUtilIsConnectEarjack()) {
+                       return MP_SOUND_PATH_EARJACK;
+               } else {
+                       return MP_SOUND_PATH_SPEAKER;
+               }
+       } else if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_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;
+       }
+}
diff --git a/src/mp-video-streaming-ctrl.c b/src/mp-video-streaming-ctrl.c
new file mode 100755 (executable)
index 0000000..c1ddccb
--- /dev/null
@@ -0,0 +1,643 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <string.h>
+#include <vconf.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"
+
+
+static char szNetworkProxy[STR_LEN_MAX] = {0};
+static char szNetworkIpAddress[STR_LEN_MAX] = {0};
+static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF;
+static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF;
+static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+
+static Eina_Bool       bIsInitCallbackFunc = FALSE;
+
+
+/*
+ * Callback function.
+ */
+
+
+
+static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) {
+                switch(vconf_keynode_get_int(pKeyNode))
+                {
+               case MP_NETWORK_CLOSE:
+                       VideoLogInfo("MP_NETWORK_CLOSE");
+                       break;
+
+               case MP_NETWORK_ON:
+                       VideoLogInfo("MP_NETWORK_ON");
+                       break;
+
+               default:
+                       VideoLogInfo("UNKNOWN NETWORK CONFIG");
+                       break;
+                }
+       } else {
+       }
+}
+
+static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData)
+{
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoLogInfo("");
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) {
+               switch(vconf_keynode_get_int(pKeyNode))
+               {
+               case VCONFKEY_NETWORK_OFF:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("MP_NETWORK_TYPE_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR:
+                       VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+                       nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI:
+                       VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+                       nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+                       break;
+
+               default:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("UNKNOWN NETWORK STATE");
+                       break;
+               }
+       }
+}
+
+static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+       char *szTmp = NULL;
+
+       memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if(szkeyname == NULL) {
+               VideoLogInfo("key name value is NULL");
+               return;
+       }
+
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) {
+               szTmp = vconf_keynode_get_str(pKeyNode);
+
+               if(szTmp == NULL) {
+                       VideoLogInfo("node string value is NULL");
+                       return;
+               }
+
+               strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
+
+               VideoLogInfo("Network ip address : %s", szNetworkIpAddress);
+       }
+       else {
+               VideoLogInfo("Invalid ip address.");
+       }
+}
+
+static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData || !pKeyNode) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       char *szkeyname = NULL;
+
+       szkeyname = vconf_keynode_get_name(pKeyNode);
+       if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) {
+                switch(vconf_keynode_get_int(pKeyNode))
+                {
+               case VCONFKEY_NETWORK_WIFI_OFF:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       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");
+       }
+}
+
+
+/*
+ * Internal function.
+ */
+
+bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
+                                       MpVideoStreamingCtrlNetworkOnOffCb,
+                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set network on/off notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS,
+                                                                       MpVideoStreamingCtrlNetworkStatusCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set network status notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP,
+                                                                       MpVideoStreamingCtrlChangeIpCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set ip address changing notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE,
+                                                                       MpVideoStreamingCtrlWiFiStateCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set wifi state notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       int nRet = 0;
+
+       nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE,
+                                                                       MpVideoStreamingCtrlCellularStateCb,
+                                                                       (void*)pAppData);
+
+       if (nRet < 0) {
+               VideoLogInfo("[ERR] Fail to set cellular notification.");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+/*
+ * External function.
+ */
+bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress)
+{
+       VideoLogInfo("");
+
+       char *szTmp = NULL;
+
+       szTmp = vconf_get_str(VCONFKEY_NETWORK_IP);
+       if (szTmp) {
+               memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+               strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
+
+               memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+               strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1);
+
+               VideoLogInfo("Current network ip address : %s", szNetworkIpAddress);
+
+               if(szTmp)
+                       free(szTmp);
+
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+bool MpVideoStreamingCtrlGetProxy(char* szRetProxy)
+{
+       VideoLogInfo("");
+
+       char *szTmp = NULL;
+
+       szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY);
+       if (szTmp) {
+               memset(szNetworkProxy, 0, sizeof(char) * STR_LEN_MAX);
+               strncpy(szNetworkProxy, szTmp, STR_LEN_MAX - 1);
+
+               memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX);
+               strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1);
+
+               VideoLogInfo("Current network ip address : %s", szNetworkProxy);
+
+               if(szTmp)
+                       free(szTmp);
+
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+bool MpVideoStreamingCtrlIsNetworkOn(void)
+{
+       VideoLogInfo("");
+
+       int ntmpCheckNetworkON = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) {
+               switch(ntmpCheckNetworkON)
+               {
+               case MP_NETWORK_CLOSE:
+                       VideoLogInfo("Network close.");
+                       return FALSE;
+
+               case MP_NETWORK_ON:
+                       VideoLogInfo("Network on.");
+                       return TRUE;
+               }
+       } else {
+               VideoLogInfo("Network close.");
+       }
+
+       return FALSE;
+}
+
+int MpVideoStreamingCtrlGetNetworkStatus(void)
+{
+       VideoLogInfo("");
+
+       int ntmpGetNetworkStatus = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) {
+               switch(ntmpGetNetworkStatus)
+               {
+               case VCONFKEY_NETWORK_OFF:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("MP_NETWORK_TYPE_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR:
+                       nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+                       VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI:
+                       nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+                       VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+                       break;
+
+               default:
+                       nNetworkStatus = MP_NETWORK_TYPE_OFF;
+                       VideoLogInfo("MP_NETWORK_TYPE_OFF - default");
+                       break;
+               }
+       } else {
+               nNetworkStatus = MP_NETWORK_TYPE_OFF;
+               VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value");
+       }
+
+       return nNetworkStatus;
+}
+
+int MpVideoStreamingCtrlGetWifiState()
+{
+       VideoLogInfo("");
+
+       int ntmpGetWifiState = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) {
+               switch(ntmpGetWifiState)
+               {
+               case VCONFKEY_NETWORK_WIFI_OFF:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+                       break;
+
+               case VCONFKEY_NETWORK_WIFI_CONNECTED:
+                       nWifiState = MP_NETWORK_WIFI_CONNECTED;
+                       VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+                       break;
+
+               default:
+                       nWifiState = MP_NETWORK_WIFI_OFF;
+                       VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
+                       break;
+                }
+       } else {
+               nWifiState = MP_NETWORK_WIFI_OFF;
+               VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
+       }
+
+       return nWifiState;
+
+}
+
+int MpVideoStreamingCtrlGetCellularState()
+{
+       VideoLogInfo("");
+
+       int ntmpGetCellularState = 0;
+
+       if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) {
+               switch(ntmpGetCellularState)
+               {
+               case VCONFKEY_NETWORK_CELLULAR_ON:
+                       nCellularState = MP_NETWORK_CELLULAR_ON;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_ON");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
+                       nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
+                       nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
+                       nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
+                       break;
+
+               case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
+                       nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
+                       break;
+
+               default:
+                       nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+                       VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
+                       break;
+               }
+       } else {
+               nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+               VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
+       }
+
+       return nCellularState;
+}
+
+void MpVideoStreamingCtrlDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+}
+
+
+
+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) {
+               MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData);
+               MpVideoStreamingCtrlSetNotifyChangingIp(pUserData);
+               MpVideoStreamingCtrlSetNotifyWiFiState(pUserData);
+               MpVideoStreamingCtrlSetNotifyCellularState(pUserData);
+
+               bIsInitCallbackFunc = EINA_TRUE;
+       }
+
+       switch(MpVideoStreamingCtrlGetNetworkStatus())
+       {
+       case MP_NETWORK_TYPE_OFF:
+               VideoLogInfo("MP_NETWORK_TYPE_OFF");
+               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);
+               VideoLogInfo("Current Proxy Address : %s", szTmp);
+
+               memset(pAppData->szProxyAddress, 0, STR_LEN_MAX);
+               strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1);
+       }
+
+       return bNetworkState;
+}
+
+
+
diff --git a/src/mp-video-streaming-view.c b/src/mp-video-streaming-view.c
new file mode 100755 (executable)
index 0000000..824e4f8
--- /dev/null
@@ -0,0 +1,899 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <aul.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <appcore-efl.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-progressbar.h"
+#include "mp-video-animation-ctrl.h"
+#include "mp-video-streaming-view.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#define MUTE_POPUP_INTERVAL_TIME                               3.0
+#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 *pStreamingViewHiddenPanelEdj = NULL;
+static Evas_Object *pStreamingViewOptionEdj = NULL;
+
+static Ecore_Timer *pStreamingViewVolLongPressTimer = NULL;
+static Ecore_Timer *pStreamingViewMutePopupShowTimer = NULL;
+static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL;
+
+static Evas_Object *pStreamingSoundpathButton = NULL;
+static Elm_Object_Item *pNaviFrameItemStreamingView = NULL;
+
+static Ecore_Event_Handler *pMouseEventHandler = NULL;
+
+static bool bIsVolumeLongPressOfStreamingView = FALSE;
+static bool bIsVolumePopupShowOfStreamingView = FALSE;
+static bool bSwitchStreamingViewUI = TRUE;
+static bool bIsStreamingHightQuality = TRUE;
+static bool bIsChangeResolution = FALSE;
+static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+static int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+
+/*
+ *     Callback function.
+ */
+static void MpVideoStreamingViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilDeletePopupHandle();
+}
+
+static void MpVideoStreamingViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+               VideoLogInfo("Connect BT or earjack.");
+               MpVideoSoundpathShow(pUserData);
+       } else {
+               MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoStreamingViewWarningPopupCb);
+       }
+}
+
+static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
+               VideoLogInfo("Press Pause button.");
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+       }
+}
+
+static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData,
+                                                   Evas_Object *pObject,
+                                                   const char *szEmission,
+                                                   const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
+               VideoLogInfo("Press Resume/Play button.");
+
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       }
+}
+
+static Eina_Bool MpVideoStreamingViewVolPopupCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       if (pStreamingViewMutePopupShowTimer) {
+               ecore_timer_del(pStreamingViewMutePopupShowTimer);
+               pStreamingViewMutePopupShowTimer = NULL;
+       }
+
+       bIsVolumePopupShowOfStreamingView = FALSE;
+       edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+       return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoStreamingViewVolLongPressCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pStreamingViewVolLongPressTimer) {
+               ecore_timer_del(pStreamingViewVolLongPressTimer);
+               pStreamingViewVolLongPressTimer = NULL;
+       }
+
+       bIsVolumeLongPressOfStreamingView = TRUE;
+
+       if (pAppData->bIsMute == FALSE) {
+               edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_MUTE, "*");
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_SHOW, "*");
+
+               pStreamingViewMutePopupShowTimer = ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, MpVideoStreamingViewVolPopupCb, (void *)pAppData);
+               bIsVolumePopupShowOfStreamingView = TRUE;
+               pAppData->bIsMute = TRUE;
+       } else {
+               edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_UNMUTE, "*");
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+               bIsVolumePopupShowOfStreamingView = FALSE;
+               pAppData->bIsMute = FALSE;
+       }
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute(pAppData);
+
+       return EINA_FALSE;
+}
+
+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) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pStreamingViewVolLongPressTimer) {
+               ecore_timer_del(pStreamingViewVolLongPressTimer);
+               pStreamingViewVolLongPressTimer = NULL;
+       }
+
+       bIsVolumeLongPressOfStreamingView = FALSE;
+       pStreamingViewVolLongPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoStreamingViewVolLongPressCb, (void *)pAppData);
+}
+
+static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pStreamingViewVolLongPressTimer) {
+               ecore_timer_del(pStreamingViewVolLongPressTimer);
+               pStreamingViewVolLongPressTimer = NULL;
+       }
+
+       if (bIsVolumeLongPressOfStreamingView) {
+               return;
+       }
+
+       if (pAppData->bIsMute == TRUE) {
+               if (bIsVolumePopupShowOfStreamingView) {
+                       ecore_timer_del(pStreamingViewMutePopupShowTimer);
+               }
+
+               pStreamingViewMutePopupShowTimer = ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, MpVideoStreamingViewVolPopupCb, (void *)pAppData);
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_SHOW, "*");
+               bIsVolumePopupShowOfStreamingView = TRUE;
+       } else {
+               syspopup_launch("volume", NULL);
+       }
+}
+
+static void MpVideoStreamingViewHqButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+}
+
+static void MpVideoStreamingViewHqButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (bIsChangeResolution)
+               return;
+
+       char *szURL = NULL;
+       szURL = MpUtilGetXMLQualityURL();
+       if (szURL != NULL) {
+               VideoLogInfo("%s", szURL);
+               bIsChangeResolution = TRUE;
+               memset((void *)pAppData->szMediaUri, 0, STR_LEN_MAX);
+               strncpy(pAppData->szMediaUri, szURL, STR_LEN_MAX -1);
+
+               if (szURL)
+                       free(szURL);
+
+               MpVideoProgressbarDeleteTimer();
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+               pAppData->nSetPosition = pAppData->nCurPosition;
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching(pAppData);
+
+               if (bIsStreamingHightQuality) {
+                       bIsStreamingHightQuality = FALSE;
+                       edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_NORMAL, "*");
+               } else {
+                       bIsStreamingHightQuality = TRUE;
+                       edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_HIGH, "*");
+               }
+               bIsChangeResolution = FALSE;
+       }
+}
+
+static void MpVideoStreamingViewMainScreenTouchCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (MpVideoStreamingViewGetBufferingState()) {
+               VideoLogInfo("skip for Buffering");
+               return;
+       }
+
+       if (bSwitchStreamingViewUI) {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+       }
+}
+
+static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No Exist pUserData.");
+               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 Eina_Bool MpVideoStreamingViewMouseUpCb(void *pUserData, int nType,
+                                              void *pEvent)
+{
+       VideoLogInfo("");
+
+       if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
+               VideoLogInfo("");
+               return EINA_FALSE;
+       }
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No Exist pUserData.");
+               return EINA_FALSE;
+       }
+
+       if (!pEvent) {
+               VideoLogInfo("[ERR] No exist pEvent.");
+               return EINA_FALSE;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!bSwitchStreamingViewUI) {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+       } else {
+               if (pStreamingViewCtrlPanelHideTimer) {
+                       ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+                       pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
+               }
+       }
+
+       return EINA_FALSE;
+}
+
+static void MpVideoStreamingViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpVideoSoundpathHide();
+       MpUtilDeletePopupHandle();
+
+       if (MpUtilIsConnectEarjack()) {
+               VideoLogInfo("Connect earjack.");
+               if (pStreamingSoundpathButton) {
+                       elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_left_btn", pStreamingSoundpathButton);
+               } else {
+                       pStreamingSoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoStreamingViewSoundPathCb);
+                       elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_left_btn", pStreamingSoundpathButton);
+               }
+       } else {
+               VideoLogInfo("Disconnect earjack.");
+               if (pStreamingSoundpathButton) {
+                       evas_object_del(pStreamingSoundpathButton);
+                       pStreamingSoundpathButton = NULL;
+               }
+
+               elm_object_item_part_content_unset(pNaviFrameItemStreamingView, "title_left_btn");
+       }
+
+}
+
+static void MpVideoStreamingViewPressOptionScreenSizeCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_NORMAL)) {
+               VideoLogInfo("Screen size : Normal");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_LETTER_BOX);
+               nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+       } else if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_EXPAND)) {
+               VideoLogInfo("Screen size : Expand");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_CROPPED_FULL);
+               nScreensizeStatus = MP_DISPLAY_METHOD_CROPPED_FULL;
+       } else {
+               VideoLogInfo("Screen size : Nothing");
+               nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+       }
+}
+
+
+/*
+ * Internal function
+ */
+void MpVideoStreamingViewInitKeyMouse(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pMouseEventHandler) {
+               ecore_event_handler_del(pMouseEventHandler);
+               pMouseEventHandler = NULL;
+       }
+
+       pMouseEventHandler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, MpVideoStreamingViewMouseUpCb, pAppData);
+}
+
+void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData, void *pShowInfoViewCb)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pStreamingViewLayout = elm_layout_add(pParent);
+       if (pStreamingViewLayout) {
+               Evas_Object *pTmpProgressbarEdj = NULL;
+               Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+               elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
+
+               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_STREAMING, "*");
+
+               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();
+
+               pTmpProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
+               MpVideoProgressbarSetSkipEvent(TRUE);
+               if (pTmpProgressbarEdj) {
+                       edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pTmpProgressbarEdj);
+               } 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, "*");
+
+               pStreamingViewHiddenPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_HIDDEN_PANEL_EDJ, HIDDEN_PANEL_EDJ_GROUP);
+               if (pStreamingViewHiddenPanelEdj) {
+                       elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_HIDDEN_BUTTON, pStreamingViewHiddenPanelEdj);
+                       edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_HIDE, "*");
+                       edje_object_signal_emit(pStreamingViewHiddenPanelEdj,SIGNAL_CONTROL_STREAMING_QUALITY_HIDE,"*");
+               }
+
+
+               if (nScreensizeStatus == MP_DISPLAY_METHOD_LETTER_BOX) {
+                       VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+                       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+               } else if (nScreensizeStatus == MP_DISPLAY_METHOD_CROPPED_FULL) {
+                       VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_CROPPED_FULL");
+                       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_EXPAND, "*");
+               } else {
+                       VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+                       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+               }
+
+               edje_object_signal_callback_add(pStreamingViewOptionEdj,
+                                       SIGNAL_OPTION_SCREEN_SIZE_NORMAL,
+                                       SIGNAL_OPTION_PART_SCREEN_SIZE,
+                                       (void *)MpVideoStreamingViewPressOptionScreenSizeCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewOptionEdj,
+                                       SIGNAL_OPTION_SCREEN_SIZE_EXPAND,
+                                       SIGNAL_OPTION_PART_SCREEN_SIZE,
+                                       (void *)MpVideoStreamingViewPressOptionScreenSizeCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewOptionEdj,
+                                       SIGNAL_OPTION_DETAIL_DOWN,
+                                       SIGNAL_OPTION_PART_DETAIL,
+                                       (void *)pShowInfoViewCb, (void *)pAppData);
+
+               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(_EDJ(pStreamingViewLayout),
+                                       SIGNAL_MAIN_SCREEN_TOUCH_PRESS,
+                                       SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE,
+                                       (void *)MpVideoStreamingViewMainScreenTouchCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewHiddenPanelEdj,
+                                       SIGNAL_CONTROL_HQ_BUTTON_DOWN,
+                                       SIGNAL_CONTROL_PART_HQ_BUTTON,
+                                       (void *)MpVideoStreamingViewHqButtonDownCb, (void *)pAppData);
+
+               edje_object_signal_callback_add(pStreamingViewHiddenPanelEdj,
+                                       SIGNAL_CONTROL_HQ_BUTTON_UP,
+                                       SIGNAL_CONTROL_PART_HQ_BUTTON,
+                                       (void *)MpVideoStreamingViewHqButtonUpCb, (void *)pAppData);
+
+               if (MpUtilGetXMLItemCount() > 1) {
+                       edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_HIGH, "*");
+               }
+
+               MpUtilRegisteEarjackCbFunc((void *)MpVideoStreamingViewChangedEarjackCb, pUserData);
+       }
+}
+
+void MpVideoStreamingViewInit(void *pUserData, void *pShowInfoViewCb)
+{
+       VideoLogInfo("");
+
+       if (!pNaviFrameHandle|| !pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       MpVideoStreamingViewInitKeyMouse(pUserData);
+       MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData, pShowInfoViewCb);
+}
+
+
+
+/*
+ * External function
+ */
+void MpVideoStreamingViewPush(void *pNaviFrame, void *pShowInfoViewCb, void *pUserData)
+{
+       VideoLogInfo("");
+
+       pNaviFrameHandle = pNaviFrame;
+
+       MpVideoStreamingViewInit(pUserData, pShowInfoViewCb);
+
+       pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line");
+
+       if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+               pStreamingSoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoStreamingViewSoundPathCb);
+               elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_left_btn", pStreamingSoundpathButton);
+       }
+
+       MpVideoStreamingViewShowControlPanel(pUserData);
+}
+
+void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+void MpVideoStreamingViewDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+       MpVideoStreamingViewHideControlPanel(pUserData);
+       MpVideoProgressbarDestroy();
+       MpVideoAnimationCtrlDestroy();
+
+       pNaviFrameHandle = NULL;
+       pBufferingAnimationHandle = NULL;
+
+       if (pMouseEventHandler) {
+               ecore_event_handler_del(pMouseEventHandler);
+               pMouseEventHandler = 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 (pStreamingViewVolLongPressTimer) {
+               ecore_timer_del(pStreamingViewVolLongPressTimer);
+               pStreamingViewVolLongPressTimer = NULL;
+       }
+
+       if (pStreamingViewMutePopupShowTimer) {
+               ecore_timer_del(pStreamingViewMutePopupShowTimer);
+               pStreamingViewMutePopupShowTimer = NULL;
+       }
+
+       if (pStreamingViewCtrlPanelHideTimer) {
+               ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+               pStreamingViewCtrlPanelHideTimer = NULL;
+       }
+
+       if (pStreamingViewHiddenPanelEdj) {
+               evas_object_del(pStreamingViewHiddenPanelEdj);
+               pStreamingViewHiddenPanelEdj = NULL;
+       }
+
+       bIsVolumeLongPressOfStreamingView = FALSE;
+       bIsVolumePopupShowOfStreamingView = 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);
+       MpVideoProgressbarReset((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, "*");
+}
+
+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;
+
+       bSwitchStreamingViewUI = TRUE;
+
+       evas_object_show(pStreamingViewPanelEdj);
+
+       if (MpUtilGetXMLItemCount() < 2) {
+               edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_HIDE, "*");
+       }
+
+       if (pStreamingViewCtrlPanelHideTimer) {
+               ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+               pStreamingViewCtrlPanelHideTimer = NULL;
+       }
+
+       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+       } else {
+               pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
+       }
+
+       MpVideoStreamingViewActivate();
+}
+
+void MpVideoStreamingViewHideControlPanel(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       if (!pStreamingViewPanelEdj) {
+               VideoLogInfo("No exist play control panel edc.");
+               return;
+       }
+
+       bSwitchStreamingViewUI = FALSE;
+
+       evas_object_hide(pStreamingViewPanelEdj);
+
+       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 MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate)
+{
+       VideoLogInfo("nSetBufferingRate : %d", nSetBufferingRate);
+
+       if (nSetBufferingRate > 95) {
+               MpVideoAnimationCtrlHide();
+               MpVideoProgressbarSetSkipEvent(FALSE);
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
+       } else {
+               MpVideoProgressbarSetSkipEvent(TRUE);
+               MpVideoAnimationCtrlShow();
+               edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+
+               if(nSetBufferingRate >= 0)
+                       MpVideoAnimationCtrlSetPercent(nSetBufferingRate);
+       }
+}
+
+bool MpVideoStreamingViewGetBufferingState(void)
+{
+       VideoLogInfo("");
+
+       return MpVideoAnimationCtrlGetActiveState();
+}
+
+bool MpVideoStreamingViewIsTopView(void)
+{
+       VideoLogInfo("");
+
+       Evas_Object *pTmpContents = NULL;
+       Elm_Object_Item *pTmpItem = NULL;
+
+       if (!pNaviFrameHandle) {
+               VideoLogInfo("[ERR] No exist naviframe 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;
+}
+
+
diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c
new file mode 100755 (executable)
index 0000000..453ab5a
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <mm_sound.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-subtitle-ctrl.h"
+
+#define MP_VIDEO_SUBTITLE_MENU_NUM             2
+#define VCONFKEY_GALLERY_SUBTITLE_STATE                "db/setting/gallery/subtitle_state" //boolean
+
+static int bSubtitleSettingState = FALSE;
+static bool bExistSubtitleFile = FALSE;
+static char szSubtitleFileUri[STR_LEN_MAX] = { 0 };
+
+static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][STR_LEN_MAX] = { ".srt", ".sub", ".smi" };
+
+
+/*
+ * Internal function
+ */
+bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath)
+{
+       if (!bSubtitleSettingState) {
+               VideoLogInfo("Subtitle .");
+               return FALSE;
+       }
+
+       if (!szMediaUriPath) {
+               VideoLogInfo("No Exist szMediaUri.");
+               return FALSE;
+       }
+
+       if (strlen(szMediaUriPath) < 1) {
+               VideoLogInfo("No Exist szMediaUri.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       struct stat buf;
+       int nCount = 0;
+       int nStrLength = 0;
+
+       bExistSubtitleFile = FALSE;
+       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+
+       for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++) {
+               nStrLength = strcspn(szMediaUriPath, ".");
+               strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength);
+               strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]);
+
+               if (!stat(szSubtitleFileUri, &buf)) {
+                       VideoLogInfo("Success finding subtitle file. - %d", nCount);
+                       bExistSubtitleFile = TRUE;
+                       break;
+               } else {
+                       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+               }
+       }
+
+       if (!bExistSubtitleFile) {
+               VideoLogInfo("Fail finding subtitle file.");
+       }
+
+       return bExistSubtitleFile;
+}
+
+void MpVideoSubtitleCtrlClear(void)
+{
+       VideoLogInfo("");
+
+       bExistSubtitleFile = FALSE;
+       bSubtitleSettingState = FALSE;
+
+       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+}
+
+static void MpVideoSubtitleCtrlStateChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+               if (!bSubtitleSettingState) {
+                       VideoLogInfo("Subtitle OFF.");
+               } else {
+                       VideoLogInfo("Subtitle ON.");
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf - subtitle.");
+       }
+}
+
+/*
+ * External function
+ */
+bool MpVideoSubtitleCtrlInit(void *pUserData)
+{
+       if (pUserData == NULL) {
+               VideoLogInfo("[ERR]No have pUserData");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoSubtitleCtrlClear();
+
+       if (pAppData->nCurPlayerType != MP_VIDEO_PLAYER) {
+               VideoLogInfo("Current player type is not video player.");
+               return FALSE;
+       }
+
+       if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+               if (!bSubtitleSettingState) {
+                       VideoLogInfo("Subtitle OFF.");
+               } else {
+                       VideoLogInfo("Subtitle ON.");
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf - subtitle.");
+       }
+
+       if (vconf_notify_key_changed(VCONFKEY_GALLERY_SUBTITLE_STATE, MpVideoSubtitleCtrlStateChangeCb, pAppData)) {
+               VideoLogInfo("[ERR] Fail to resiste subtitle notification callback.");
+       }
+
+       return MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri);
+}
+
+void MpVideoSubtitleCtrlDestroy(void)
+{
+       VideoLogInfo("");
+
+       MpVideoSubtitleCtrlClear();
+}
+
+bool MpVideoSubtitleCtrlIsExistSubtitle(void)
+{
+       VideoLogInfo("");
+
+       return bExistSubtitleFile;
+}
+
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri)
+{
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return FALSE;
+       }
+
+       if (strlen(szSubtitleFileUri) < 1) {
+               VideoLogInfo("[ERR]No have szSubtitleFileUri");
+               return FALSE;
+       }
+
+       strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1);
+
+       return TRUE;
+}
diff --git a/src/mp-video-view-ctrl.c b/src/mp-video-view-ctrl.c
new file mode 100755 (executable)
index 0000000..cc48a62
--- /dev/null
@@ -0,0 +1,628 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#include <appcore-efl.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-view-ctrl.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"
+
+#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL                     4.0
+#define DETAIL_POPUP_STR_LEN_MAX                                       20
+
+static Evas_Object *pMainLayout = NULL;
+static Evas_Object *pBackGround = NULL;
+static Evas_Object *pNaviFrame = NULL;
+
+static Ecore_Event_Handler *pHWKeyEventDownHandler = NULL;
+static Ecore_Event_Handler *pHWKeyEventUpHandler = NULL;
+
+static bool bIsKeyCancle = FALSE;
+
+/*
+ * Callback function.
+ */
+static void MpVideoViewCtrlInfoVideoPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       MpUtilDeletePopupHandle();
+}
+
+static void MpVideoViewCtrlInfoCb(void *pUserData, Evas_Object *pObject,
+                                 void *pEventInfo)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpUtilDetailPopup(pAppData, dgettext(MP_SYS_STRING, MP_COM_BODY_DETAILS), MpVideoViewCtrlInfoVideoPopupCb);             
+       }
+}
+
+static Eina_Bool MpVideoViewCtrlHardkeyUpCb(void *pUserData, int nType,
+                                             void *pEvent)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       VideoLogInfo("Key down : %s", pKeyEvent->keyname);
+
+       if (bIsKeyCancle) {
+               VideoLogInfo("KEY CANCLE.");
+               bIsKeyCancle = FALSE;
+               return EINA_FALSE;
+       }
+
+       if (!strcmp(pKeyEvent->keyname, END_KEY)) {
+               VideoLogInfo("End key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+       } else if (!strcmp(pKeyEvent->keyname, HOME_KEY)) {
+               VideoLogInfo("Home key up");
+               if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+                       VideoLogInfo("Push Home key at Streaming player Player.");
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+               } else if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+                       VideoLogInfo("Push Home key at video player.");
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+               }
+               MpUtilDeletePopupHandle();
+       } else if (!strcmp(pKeyEvent->keyname, POWER_KEY)) {
+               VideoLogInfo("Power key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+       } else if (!strcmp(pKeyEvent->keyname, PAUSE_KEY)) {
+               VideoLogInfo("Pause key up");
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               } else if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       } else if (!strcmp(pKeyEvent->keyname, PLAY_KEY)) {
+               VideoLogInfo("Play key up");
+               if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               } else if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       } else if (!strcmp(pKeyEvent->keyname, STOP_KEY)) {
+               VideoLogInfo("Stop key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+       } else if (!strcmp(pKeyEvent->keyname, NEXT_KEY)) {
+               VideoLogInfo("Next key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
+       } else if (!strcmp(pKeyEvent->keyname, PREV_KEY)) {
+               VideoLogInfo("Prev key up");
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
+       } else if (!strcmp(pKeyEvent->keyname, FORWARD_KEY)) {
+               VideoLogInfo("Forward key up");
+       } else if (!strcmp(pKeyEvent->keyname, REWIND_KEY)) {
+               VideoLogInfo("Rewind key up");
+       } else {
+       }
+
+       return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoViewCtrlHardkeyDownCb(void *pUserData, int nType, void *pEvent)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return EINA_FALSE;
+       }
+
+       Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+
+       VideoLogInfo("Key down : %s", pKeyEvent->keyname);
+
+       if (!strcmp(pKeyEvent->keyname, END_KEY)) {
+               VideoLogInfo("Back(End) key");
+       } else if (!strcmp(pKeyEvent->keyname, HOME_KEY)) {
+               VideoLogInfo("Home key");
+       } else if (!strcmp(pKeyEvent->keyname, POWER_KEY)) {
+               VideoLogInfo("Power key Down");
+               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");
+       } else if (!strcmp(pKeyEvent->keyname, REWIND_KEY)) {
+               VideoLogInfo("Rewind key down");
+       } else if (!strcmp(pKeyEvent->keyname, KEY_CANCLE)) {
+               bIsKeyCancle = TRUE;
+       }
+
+       return EINA_FALSE;
+}
+
+/*
+ * Internal function.
+ */
+Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow)
+{
+       Evas_Object *pBg = elm_bg_add(pWindow);
+       evas_object_size_hint_weight_set(pBg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(pWindow, pBg);
+       evas_object_show(pBg);
+
+    return pBg;
+}
+
+static Evas_Object *MpVideoViewCtrlCreateMainLayout(Evas_Object *pParent, VideoPlayerType nPlayerType)
+{
+       VideoLogInfo("");
+
+       if (!pParent) {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       if (pMainLayout) {
+               evas_object_del(pMainLayout);
+               pMainLayout = NULL;
+       }
+
+       pMainLayout = elm_layout_add(pParent);
+       pBackGround = MpVideoViewCtrlCreateBg(pParent);
+
+       elm_layout_theme_set(pMainLayout, "layout", "application", "default");
+
+       evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       elm_win_resize_object_add(pParent, pMainLayout);
+
+       elm_object_style_set(pBackGround, "transparent");
+
+       evas_object_show(pMainLayout);
+
+       return pMainLayout;
+}
+
+static Evas_Object *MpVideoViewCtrlCreateNaviFrame(Evas_Object *pParent, MpLaunchingAppType nLaunchingApp)
+{
+       VideoLogInfo("");
+
+       if (!pParent) {
+               VideoLogInfo("[ERR]");
+               return NULL;
+       }
+
+       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;
+}
+
+void MpVideoViewCtrlDestroyControlBar(VideoPlayerType nCurPlayerType)
+{
+       VideoLogInfo("");
+}
+
+void MpVideoViewCtrlInitVideoViews(VideoAppData *pAppData, MpLaunchingAppType nLaunchingApp, int nVideoViewSortType)
+{
+       VideoLogInfo("");
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+
+               switch (nLaunchingApp) {
+               case MP_LAUNCH_APP_DEFAULT:
+               case MP_LAUNCH_APP_IMAGE_VIEWER:
+               case MP_LAUNCH_APP_SIMPLE_VIEW:
+                       break;
+
+               case MP_LAUNCH_APP_GALLERY:
+                       if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_FOLDER) {
+                               MpUtilMediaSvcGetVideoFileListFromFolder(pAppData->szMediaUri, nVideoViewSortType);
+                       } else if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_ALL_FOLDER_GALLERY) {
+                               MpUtilMediaSvcGetVideoFileListFromAllFolderOfGallery(nVideoViewSortType);
+                       } else if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_TAG_GALLERY) {
+                               MpUtilMediaSvcGetVideoFileListByTagName(pAppData->szTagNameForVideoList);
+                       } else if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_FAVORITE) {
+                               MpUtilMediaSvcGetVideoFileListFromFavorite(nVideoViewSortType);
+                       } else {
+                               break;
+                       }
+
+                       MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri, pAppData->szPreMediaUri, pAppData->szNextMediaUri);
+                       break;
+
+               case MP_LAUNCH_APP_MAX:
+               default:
+                       break;
+               }
+
+               MpVideoDisplayViewPush((void *)pNaviFrame, (void *)MpVideoViewCtrlInfoCb, nLaunchingApp, (void *)pAppData);
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewPush((void *)pNaviFrame, (void *)MpVideoViewCtrlInfoCb, (void *)pAppData);
+       }
+}
+
+void MpVideoViewCtrlShowNaviFrame(void)
+{
+       VideoLogInfo("");
+
+       if (pNaviFrame) {
+               evas_object_show(pNaviFrame);
+       }
+}
+
+void MpVideoViewCtrlHideNaviFrame(void)
+{
+       VideoLogInfo("");
+
+       if (pNaviFrame) {
+               evas_object_hide(pNaviFrame);
+       }
+}
+
+/*
+ * External function.
+ */
+bool MpVideoViewCtrlInit(VideoAppData *pAppData)
+{
+       VideoLogInfo("");
+
+       if (!pAppData) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       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);
+       evas_object_color_set(pAppData->pMainWindow, 0, 0, 0, 0);
+       //elm_win_alpha_set(pAppData->pMainWindow, EINA_TRUE);
+       //elm_win_transparent_set(pAppData->pMainWindow, EINA_TRUE);
+       evas_object_move(pAppData->pMainWindow, 0, 0);
+
+       MpVideoViewCtrlCreateMainLayout(pAppData->pMainWindow, pAppData->nCurPlayerType);
+       MpVideoViewCtrlCreateNaviFrame(pMainLayout, pAppData->nLaunchingAppType);
+
+       MpVideoViewCtrlInitVideoViews(pAppData, pAppData->nLaunchingAppType, pAppData->nVideoSortType);
+
+       return TRUE;
+}
+
+void MpVideoViewCtrlDestroy(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       appcore_unset_rotation_cb();
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewDestroy(pUserData);
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewDestroy(pUserData);
+       }
+
+       if (pHWKeyEventDownHandler) {
+               ecore_event_handler_del(pHWKeyEventDownHandler);
+               pHWKeyEventDownHandler = NULL;
+       }
+
+       if (pHWKeyEventUpHandler) {
+               ecore_event_handler_del(pHWKeyEventUpHandler);
+               pHWKeyEventUpHandler = NULL;
+       }
+
+       if (pMainLayout) {
+               evas_object_del(pMainLayout);
+               pMainLayout = NULL;
+       }
+
+       if (pNaviFrame) {
+               evas_object_del(pNaviFrame);
+               pNaviFrame = NULL;
+       }
+
+       if (pBackGround) {
+               evas_object_del(pBackGround);
+               pBackGround = NULL;
+       }
+
+       bIsKeyCancle = FALSE;
+}
+
+void MpVideoViewCtrlInitAfterBeginOfStream(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewInitAfterBeginOfStream(pUserData);
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewInitAfterBeginOfStream(pUserData);
+       }
+}
+
+void MpVideoViewCtrlPause(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewUpdatePauseKey();
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewUpdatePauseKey();
+       }
+}
+
+void MpVideoViewCtrlResume(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewUpdateResumeKey();
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewUpdateResumeKey();
+       }
+}
+
+void MpVideoViewShowLayout(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+       MpVideoViewCtrlShowNaviFrame();
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewActivate();
+               MpVideoDisplayViewShowControlPanel(pUserData);
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewShowControlPanel(pUserData);
+       }
+}
+
+void MpVideoViewHideLayout(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_HIDE);
+       MpVideoViewCtrlHideNaviFrame();
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewHideControlPanel(pUserData);
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               MpVideoStreamingViewHideControlPanel(pUserData);
+       }
+}
+
+void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate,
+                                                void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+                       if(nSetBufferingRate == 0) {
+                               MpVideoStreamingViewSetBufferingRate(-1);
+                       }
+                       else {
+                               MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+                       }
+               }
+               else {
+                       if (nSetBufferingRate >= 0) {
+                               MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+                       }
+               }
+       }
+}
+
+void MpVideoViewHideSoundpath(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewHideSoundpath();
+       }
+}
+
+void MpVideoViewCtrlChangeTitle(void *pUserData)
+{
+       VideoLogInfo("");
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               MpVideoDisplayViewChangeNaviFrameTitle(pUserData);
+       }
+}
+
+void MpVideoViewCtrlUpdateSubtitle(double nDuration,
+               char* szSubtitleString)
+{
+       VideoLogInfo("");
+
+       if (!szSubtitleString) {
+               VideoLogInfo("No Exist szSubtitleString pointer.");
+               return;
+       }
+
+       if (nDuration <= 0 ) {
+               VideoLogInfo("Duration time 0.");
+               return;
+       }
+
+       MpVideoDisplayViewUpdateSubtitle(nDuration, szSubtitleString);
+}
+
+bool MpVideoViewCtrlIsTopView(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       bool bIstopView = FALSE;
+
+       if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+               VideoLogInfo("VIDEO PLAYER");
+               if (!MpVideoDisplayViewIsTopView()) {
+                       VideoLogInfo("");
+                       return FALSE;
+               }
+
+               return TRUE;
+       } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+               VideoLogInfo("STREAMING PLAYER");
+               bIstopView = MpVideoStreamingViewIsTopView();
+       }
+
+       return bIstopView;
+}
+
+void MpVideoViewCtrlShowNocontentImage(void)
+{
+       VideoLogInfo("");
+
+       MpVideoDisplayViewShowNocontentImage();
+}
+
+void MpVideoViewCtrlHideNocontentImage(void)
+{
+       VideoLogInfo("");
+
+       MpVideoDisplayViewHideNocontentImage();
+}
+
diff --git a/src/mp-xml-parser.c b/src/mp-xml-parser.c
new file mode 100755 (executable)
index 0000000..f7eb58b
--- /dev/null
@@ -0,0 +1,374 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <glib.h>
+#include <string.h>
+#include <libxml/parser.h>
+
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-xml-parser.h"
+
+#define MAX_YT_FORMAT 10
+
+/*
+ *
+ * 1 : rtsp | video/3gpp | H.263 / AMR audio |
+ *             176 * 144
+ * 2 : http | video/3gpp | MPEG4 / MPEG4 AAC / 22050 |
+ *             176 * 144
+ * 3 : http | video/mp4| H.264 / AVC / MPEG4 AAC / 44100 |
+ *             480 * 270 / 480 * 360
+ * 5 : http | application/x-shockwave-flash
+ * 6 : rtsp | video/3gpp | MPEG4 / AAC audio |
+ *             176 * 144
+ * 9 : http | video/3gpp | MPEG4 / MPEG4 AAC |
+ *             320 * 240
+ * 10 : rtsp | video/3gpp
+*/
+
+static bool bInitXML = false;
+static bool _parse_url_with_format(const char *content, int length, int format,
+                                  char **streamer_url);
+
+void mp_xml_init()
+{
+       if (!bInitXML) {
+               xmlInitParser();
+               bInitXML = true;
+       }
+
+}
+
+void mp_xml_destroy()
+{
+       if (bInitXML)
+               xmlCleanupParser();
+}
+
+unsigned int mp_read_xml_file(const char *file_name, char **data)
+{
+       unsigned int file_size = 0;
+       FILE *fp = fopen(file_name, "r");
+       if (!fp) {
+               VideoLogInfo("file open failed!");
+               return 0;
+       }
+
+       fseek(fp, 0, SEEK_END); /* move to end */
+       file_size = ftell(fp);
+       VideoLogInfo("file_size of xml = %d", file_size);
+       fseek(fp, 0, SEEK_SET); /* move to start */
+
+       *data = (char *)malloc(file_size);
+       if (*data == NULL) {
+               VideoLogInfo("memory allocation failed!");
+               fclose(fp);
+               return 0;
+       }
+
+       fread(*data, file_size, 1, fp);
+       fclose(fp);
+
+       return file_size;
+}
+
+/* 3: http | video/mp4  | H.264 / AVC / MPEG4 AAC / 44100 |
+480 * 270 / 480 * 360 */
+
+/* 9: http | video/3gpp | MPEG4 / MPEG4 AAC |
+320 * 240 */
+
+/* 2: http | video/3gpp | MPEG4 / MPEG4 AAC / 22050 |
+176 * 144 */
+
+/* 10: rtsp | video/3gpp */
+
+/* 6: rtsp | video/3gpp | MPEG4 / AAC audio |
+176 * 144 */
+
+/* 1: rtsp | video/3gpp | H.263 / AMR audio |
+176 * 144 */
+
+int mp_get_xmlitem(const char *content, int length, MpXMLItemInfo * item,
+                  int *nHttpCount, int *nRtspCount)
+{
+       int xml_order_of_format[MAX_YT_FORMAT] = { 3,
+               9,
+               2,
+               10,
+               6,
+               1,
+               0,
+       };
+
+       int index = 0;
+       char *url = NULL;
+       bool result = false;
+       int insert_item = 0;
+       int http_cnt = 0;
+       int rtsp_cnt = 0;
+       int item_cnt = 0;
+       while (xml_order_of_format[index] != 0) {
+               result =
+                   _parse_url_with_format(content, length,
+                                          xml_order_of_format[index], &url);
+               if (result == false)
+                       return -1;
+
+               if (url != NULL) {
+                       memcpy(item[item_cnt].szURL, url, strlen(url) + 1);
+                       item[item_cnt].id = xml_order_of_format[index];
+                       if (xml_order_of_format[index] != 10 &&
+                           xml_order_of_format[index] != 6 &&
+                           xml_order_of_format[index] != 1) {
+                               item[item_cnt].streaming_type =
+                                   MP_HTTP_STREAMING;
+                               http_cnt++;
+                       } else {
+                               item[item_cnt].streaming_type =
+                                   MP_RTSP_STREAMING;
+                               rtsp_cnt++;
+                       }
+
+                       printf("[%d] : %s\n", item[item_cnt].id,
+                              item[item_cnt].szURL);
+                       if (url) {
+                               free(url);
+                               url = NULL;
+                       }
+                       insert_item++;
+                       item_cnt++;
+               }
+               index++;
+       }
+       *nHttpCount = http_cnt;
+       *nRtspCount = rtsp_cnt;
+       return insert_item;
+}
+
+bool mp_get_url_from_xml(const char *content, int length, char **streamer_url,
+                        int mode)
+{
+       bool result = false;
+       int index = 1;
+
+       /* disable http for field test. must remove comment later.
+          (request from yoserb.yi) */
+       int wifi_order_of_format[MAX_YT_FORMAT] = {
+               3,
+               9,
+               2,
+               10,
+               6,
+               1,
+               0,
+       };
+
+       int order_of_format[MAX_YT_FORMAT] = {
+               9,
+               10,
+               2,
+               6,
+               1,
+               0,
+       };
+
+       if (mode == _WIFI_MODE_) {
+               index = 0;
+               while (wifi_order_of_format[index] != 0) {
+                       result = _parse_url_with_format(content, length,
+                                                       wifi_order_of_format
+                                                       [index], streamer_url);
+                       if (result == false)
+                               return false;
+
+                       if (*streamer_url != NULL) {
+                               VideoLogInfo
+                                   ("success to parse url (yt_format = %d)",
+                                    wifi_order_of_format[index]);
+                               return true;
+                       } else {
+                               VideoLogInfo("no url for yt_format %d",
+                                            wifi_order_of_format[index]);
+                               index++;
+                       }
+               }
+
+       } else {
+               if (mode == _3G_MODE_)
+                       index = 0;
+
+               VideoLogInfo("mode: 0x%x, index: %d", mode, index);
+               while (order_of_format[index] != 0) {
+                       result = _parse_url_with_format(content, length,
+                                                       order_of_format[index],
+                                                       streamer_url);
+                       if (result == false)
+                               return false;
+
+                       if (*streamer_url != NULL) {
+                               VideoLogInfo
+                                   ("success to parse url (yt_format = %d)",
+                                    order_of_format[index]);
+                               return true;
+                       } else {
+                               VideoLogInfo("no url for yt_format %d",
+                                            order_of_format[index]);
+                               index++;
+                       }
+               }
+       }
+       VideoLogInfo("can't find url to play!");
+       return false;
+}
+
+bool _parse_url_with_format(const char *content, int length, int format,
+                           char **streamer_url)
+{
+       char video_url[1024] = "\0";
+       xmlDocPtr doc = NULL;
+       xmlNode *current = NULL;
+
+       doc = xmlReadMemory(content, length, NULL, NULL, 0);
+       if (doc == NULL) {
+               VideoLogInfo("Failed to parse document\n");
+               xmlFreeDoc(doc);
+               xmlMemoryDump();
+
+               return false;
+       }
+
+       xmlChar *url, *yt_format;
+       current = xmlDocGetRootElement(doc);
+       current = current->xmlChildrenNode;
+       while (current != NULL) {
+               if ((!xmlStrcmp(current->name, (const xmlChar *)"group"))) {
+                       xmlNodePtr current_group = current->xmlChildrenNode;
+                       while (current_group != NULL) {
+                               if (!xmlStrcmp(current_group->name,
+                                              (const xmlChar *)"content")) {
+                                       yt_format = xmlGetProp(current_group,
+                                                              (const xmlChar *)
+                                                              "format");
+                                       if (yt_format != NULL && format ==
+                                           atoi((char *)yt_format)) {
+                                               url =
+                                                   xmlGetProp(current_group,
+                                                              (const xmlChar *)
+                                                              "url");
+                                               strncpy(video_url,
+                                                       (const char *)url,
+                                                       sizeof(video_url) - 1);
+                                               xmlFree(url);
+                                               xmlFree(yt_format);
+                                               break;
+                                       }
+                                       xmlFree(yt_format);
+                               }
+                               current_group = current_group->next;
+                       }
+                       break;
+               }
+               current = current->next;
+       }
+
+       xmlFreeDoc(doc);
+       xmlMemoryDump();
+
+       if (strlen(video_url)) {
+               *streamer_url = (char *)calloc(1, strlen(video_url) + 1);
+               memcpy(*streamer_url, video_url, strlen(video_url) + 1);
+       }
+
+       return true;
+}
+
+char *mp_get_title_from_xml(const char *path)
+{
+       char *content = NULL;
+       unsigned int length = 0;
+
+       if (!path)
+               return NULL;
+
+       if (!g_str_has_suffix(path, ".xml"))
+               return NULL;
+
+       length = mp_read_xml_file(path, &content);
+       if (length == 0 || content == NULL) {
+               free(content);
+               return NULL;
+       }
+
+       char title[1024] = "\0";
+       xmlDocPtr doc = NULL;
+       xmlNode *current = NULL;
+
+       doc = xmlReadMemory(content, length, NULL, NULL, 0);
+       if (doc == NULL) {
+               VideoLogInfo("Failed to parse document\n");
+               xmlFreeDoc(doc);
+               xmlMemoryDump();
+
+               return NULL;
+       }
+
+       xmlChar *xml_title = NULL;
+       current = xmlDocGetRootElement(doc);
+       current = current->xmlChildrenNode;
+       while (current != NULL) {
+               if ((!xmlStrcmp(current->name, (const xmlChar *)"group"))) {
+                       xmlNodePtr current_group = current->xmlChildrenNode;
+                       while (current_group != NULL) {
+                               if (!xmlStrcmp
+                                   (current_group->name,
+                                    (const xmlChar *)"title")) {
+                                       xml_title =
+                                           xmlNodeGetContent(current_group);
+                                       if (xml_title) {
+                                               strncpy(title,
+                                                       (const char *)xml_title,
+                                                       sizeof(title) - 1);
+                                               VideoLogInfo("xml_title=%x ",
+                                                            xml_title);
+                                               xmlFree(xml_title);
+                                       }
+                                       break;
+                               }
+                               current_group = current_group->next;
+                       }
+                       break;
+               }
+               current = current->next;
+       }
+
+       xmlFreeDoc(doc);
+       xmlMemoryDump();
+
+       free(content);
+
+       if (strlen(title))
+               return strdup(title);
+       else
+               return NULL;
+
+}
diff --git a/src/video-player.c b/src/video-player.c
new file mode 100755 (executable)
index 0000000..0d8d60d
--- /dev/null
@@ -0,0 +1,277 @@
+/*
+ * Copyright   2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by  JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <appcore-efl.h>
+
+#include <glib.h>
+#include <pmapi.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-app-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+
+static bool bIsForeground = FALSE;
+
+static int app_init(void *pUserData);
+static int app_exit(void *pUserData);
+static int app_reset(bundle *pBundle, void *pUserData);
+static int app_pause(void *pUserData);
+static int app_resume(void *pUserData);
+
+static int app_init(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return 0;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       appcore_set_i18n(PACKAGE, LOCALEDIR);
+       elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME);
+
+       MpUtilInitSession();
+       MpUtilVolumeTypeSet();
+
+       MpUtilLanguageInit(pAppData);
+       return 0;
+}
+
+static int app_reset(bundle *pBundle, void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (bIsForeground) {
+               VideoLogInfo("Defence overlap launching.");
+               return 0;
+       } else {
+               bIsForeground = TRUE;
+       }
+
+       if (!pBundle) {
+               VideoLogInfo("[ERR] No exist pBundle.");
+               return 0;
+       }
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return 0;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (strlen(pAppData->szMediaUri) > 0) {
+               MpVideoAppCtrlResetForRelaunching(pAppData);
+       }
+
+       if (pAppData->pMainWindow == NULL) {
+               VideoLogInfo("Create main window.");
+               pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE);
+       }
+
+       MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED);
+       MpUtilMediaSvcInitSession();
+
+       if (bundle_get_count(pBundle) < 1) {
+               VideoLogInfo("UI gadget bundle value should > 0");
+               return 0;
+       }
+
+       if (MpUtilCheckLaunchingByMime(pBundle, pAppData->szMediaUri)) {
+               VideoLogInfo("=== SETTING VIDEO TYPE ===");
+               VideoLogInfo("Launching by mime. Path : %s",
+                            pAppData->szMediaUri);
+               pAppData->nCurPlayerType = MP_VIDEO_PLAYER;
+       } else {
+               if(!MpUtilGetURIFromBundle(pBundle, pAppData))
+               {
+                       if(!MpUtilGetURIFromAUL(pBundle, pAppData))
+                       {
+                               VideoLogInfo("[ERR] Fail to get URI path from AUL.");
+                               return 0;
+                       }
+               }
+
+               if (MpUtilIsXMLUrl(pAppData->szMediaUri)) {
+                       if (!MpUtilParsingXML(pAppData->szMediaUri, pAppData)) {
+                               VideoLogInfo("[ERR] Fail to get streaming URI path from XML.");
+                               return 0;
+                       }
+               } else {
+                       if (!MpUtilCheckVideoURI(pAppData)) {
+                               VideoLogInfo("[ERR] Fail to get video/streaming URI path.");
+                               return 0;
+                       }
+                       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+                               MpUtilGetCookieFromBundle(pBundle, pAppData);
+                       }
+               }
+       }
+
+       if (!MpUtilMMCstatusNoti(pAppData)) {
+               VideoLogInfo("[ERR] Fail to set MMC notification.");
+               return 0;
+       }
+
+       if (!MpUtilBatteryStatusNoti(pAppData)) {
+               VideoLogInfo("[ERR] Fail to set Battery notification.");
+               return 0;
+       }
+
+       pAppData->nLaunchingAppType = (MpLaunchingAppType) MpUtilCheckLaunchingByOtherApp(pBundle, MP_VIDEO_LAUNCHING_BY_APP_KEY);
+       pAppData->nVideoSortType = (MpMediaSortType) MpUtilCheckSortType(pBundle, MP_VIDEO_SORT_TYPE_KEY);
+       pAppData->nVideoListType = (MpVideoListType) MpUtilCheckListType(pBundle, MP_VIDEO_LIST_TYPE_KEY);
+       pAppData->nSetPosition = MpUtilCheckStartPositionTime(pBundle, MP_VIDEO_START_POS_TIME_KEY);
+
+       if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_TAG_GALLERY) {
+               MpUtilGetTagNameOfGallery(pBundle, MP_VIDEO_TAG_NAME_KEY, pAppData->szTagNameForVideoList);
+               VideoLogInfo("Gallery tag name : %s", pAppData->szTagNameForVideoList);
+       }
+
+       MpUtilVolumeTypeSet();
+       pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
+
+       MpVideoAppCtrlInit(pAppData);
+
+       evas_object_show(pAppData->pMainWindow);
+       elm_win_activate(pAppData->pMainWindow);
+
+       return 0;
+}
+
+static int app_exit(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR] No exist pUserData.");
+               return 0;
+       }
+
+       pm_unlock_state(LCD_NORMAL, GOTO_STATE_NOW);
+
+       MpUtilSetKeyUngrab(HOME_KEY);
+       MpUtilMultimediaKeyUngrab();
+       MpUtilMMCstatusNotiIgnore();
+       MpUtilBatteryStatusNotiIgnore();
+       MpUtilVolumeTypeUnset();
+       MpUtilFinishSession();
+       MpUtilDeletePopupHandle();
+       MpUtilMediaSvcMtagIterateDestroyTagList();
+       MpUtilMediaSvcDestoryVideoList();
+       MpUtilMediaSvcFinishSession();
+       MpUtilDestroyXML();
+
+       bIsForeground = FALSE;
+
+       return 0;
+}
+
+static int app_pause(void *pUserData)
+{
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       if (!MpVideoAppCtrlIsTopView(pUserData)) {
+               VideoLogInfo("Overlay is not staied in top.");
+       } else {
+               if (MpVideoAppCtrlIsExistPlayerHandle()) {
+                       pAppData->nPrePlayerState = pAppData->nCurPlayerState;
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+               }
+       }
+
+       MpUtilVolumeTypeUnset();
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       bIsForeground = FALSE;
+
+       return 0;
+}
+
+static int app_resume(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (bIsForeground) {
+               VideoLogInfo("Defence overlap launching.");
+               return 0;
+       }
+
+       if (!MpVideoAppCtrlIsTopView(pUserData)) {
+               VideoLogInfo("Overlay is not staied in top.");
+               return 0;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpUtilVolumeTypeSet();
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       if (MpVideoAppCtrlIsExistPlayerHandle()) {
+               if (pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME || pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY) {
+                       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+               }
+       } else {
+               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData);
+       }
+
+       bIsForeground = TRUE;
+
+       return 0;
+}
+
+int main(int argc, char *argv[])
+{
+       struct timeval TimeVal;
+       gettimeofday(&TimeVal, NULL);
+
+       VideoLogInfo("======================================================");
+       VideoLogInfo(" Measuring exec() launching  time - %ld:%ldus",
+                    TimeVal.tv_sec, TimeVal.tv_usec);
+       VideoLogInfo("======================================================");
+
+       VideoAppData pAppData;
+       memset(&pAppData, 0, sizeof(VideoAppData));
+
+       struct appcore_ops ops = {
+               .create = app_init,
+               .terminate = app_exit,
+               .pause = app_pause,
+               .resume = app_resume,
+               .reset = app_reset,
+               .data = (void *)&pAppData,
+       };
+
+       if (appcore_efl_main(PACKAGE, &argc, &argv, &ops) == -1)
+               return -1;
+
+       return 0;
+}