apply FSL(Flora Software License)
authorKim Kibum <kb0929.kim@samsung.com>
Fri, 8 Jun 2012 05:54:21 +0000 (14:54 +0900)
committerKim Kibum <kb0929.kim@samsung.com>
Fri, 8 Jun 2012 05:54:21 +0000 (14:54 +0900)
179 files changed:
CMakeLists.txt [new file with mode: 0755]
LICENSE [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/LICENSE b/LICENSE
new file mode 100755 (executable)
index 0000000..bbc9fc3
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,77 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://www.tizenopensource.org/license
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies with the standards set forth in the Compatibility Definition Document and passes the Compatibility Test Suite as defined from time to time by the Tizen Technical Steering Group and certified by the Tizen Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work solely as incorporated into a Tizen Certified Platform, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work solely as incorporated into a Tizen Certified Platform to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof pursuant to the copyright license above, in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.tizenopensource.org/license
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
diff --git a/NOTICE b/NOTICE
new file mode 100755 (executable)
index 0000000..e69de29
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..31b7105
--- /dev/null
@@ -0,0 +1,50 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..831e0ee
--- /dev/null
@@ -0,0 +1,100 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..6202492
--- /dev/null
@@ -0,0 +1,34 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..7909e85
--- /dev/null
@@ -0,0 +1,32 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..ac83a7a
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#ifndef _MP_VIDEO_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..47c9de2
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+
+#ifndef _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);
+void   MpVideoDisplayViewResetProgressBar(void *pUserData);
+
+#endif
diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h
new file mode 100755 (executable)
index 0000000..d076fb9
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _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..7f8cd90
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _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..c422d95
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _MP_VIDEO_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..f8a8046
--- /dev/null
@@ -0,0 +1,32 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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   MpVideoProgressbarBeginOfStream(void* pUserData);\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..96dc40e
--- /dev/null
@@ -0,0 +1,29 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..8703c45
--- /dev/null
@@ -0,0 +1,33 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..594da07
--- /dev/null
@@ -0,0 +1,46 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..07b5f65
--- /dev/null
@@ -0,0 +1,70 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..3c37da3
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#ifndef _MP_VIDEO_SUBTITLE_CTRL_
+#define _MP_VIDEO_SUBTITLE_CTRL_
+
+bool MpVideoSubtitleCtrlInit(void *pUserData);
+void MpVideoSubtitleCtrlDestroy(void);
+bool MpVideoSubtitleCtrlIsExistSubtitle(void);
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath);
+
+#endif                         // _MP_VIDEO_SUBTITLE_CTRL_
diff --git a/include/mp-video-type-define.h b/include/mp-video-type-define.h
new file mode 100755 (executable)
index 0000000..6e1ae81
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _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..0112dbc
--- /dev/null
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _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..039d299
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _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);
+void   MpVideoViewCtrlResetProgressBar(void *pUserData);
+
+#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..d78e51c
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.tizenopensource.org/license\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\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..f7f1c45
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __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..631228a
--- /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:    Flora Software License
+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..160c0d0
--- /dev/null
@@ -0,0 +1,363 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+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..b82b3ab
--- /dev/null
@@ -0,0 +1,316 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_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..2cbdcd7
--- /dev/null
@@ -0,0 +1,724 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#define BUTTON_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..9972153
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+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..67ee7e6
--- /dev/null
@@ -0,0 +1,290 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+/* 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..725e931
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+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..d1be528
--- /dev/null
@@ -0,0 +1,308 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#define 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..464f0e6
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _img_def_ , _img_press_ )    \
+part {                                                                                                                 \
+       name: _name_;                                                                                   \
+       type: IMAGE;                                                                                            \
+       scale: 1;                                                                                                       \
+       mouse_events: 1;                                                                                        \
+       description {                                                                                           \
+               state: "default" 0.0;                                                                   \
+               min: _w_ _h_;                                                                                   \
+               fixed: 1 1;                                                                                     \
+               visible: 0;                                                                                             \
+               align: _align_x_ _align_y_;                                                             \
+               rel1 { relative: _rel_x1_ _rel_y1_; }                                                   \
+               rel2 { relative: _rel_x2_ _rel_y2_; }                                                   \
+               image { normal: _img_def_; border: 4 4 0 0;}                            \
+               color: 255 255 255 255;                                                                 \
+       }                                                                                                               \
+       description {                                                                                           \
+               state: "pressed" 0.0;                                                                   \
+               visible: 1;                                                                                             \
+               min: _w_ _h_;                                                                                   \
+               fixed: 1 1;                                                                                     \
+               align: _align_x_ _align_y_;                                                             \
+               rel1 { relative: _rel_x1_ _rel_y1_; }                                                   \
+               rel2 { relative: _rel_x2_ _rel_y2_; }                                                   \
+               image { normal: _img_press_; border: 4 4 0 0;}                  \
+               color: 255 255 255 255;                                                                 \
+       }                                                                                                               \
+       description {                                                                                           \
+               state: "hide" 0.0;                                                                              \
+               inherit: "default" 0.0;                                                                         \
+               visible: 0;                                                                                     \
+       }                                                                                                               \
+}      /* CONTROL_BUTTON_PRESS_PART */
+
+
+#define CONTROL_BUTTON_PROG(_item_name_)                                       \
+program {                                                                                                      \
+       name: _item_name_".pressed";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,down,1";                                                                         \
+       action: STATE_SET "pressed" 0.0;                                                        \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".down.signal";                                                \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: _item_name_".clicked";                                                            \
+       source: _item_name_;                                                                            \
+       signal: "mouse,up,1";                                                                           \
+       action: STATE_SET "default" 0.0;                                                                \
+       target: _item_name_;                                                                            \
+       after: "send."_item_name_".up.signal";                                          \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".down.signal";                                                 \
+       action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_;    \
+}                                                                                                                      \
+program {                                                                                                      \
+       name: "send."_item_name_".up.signal";                                           \
+       action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_;      \
+} /* CONTROL_BUTTON_PROG */
+
+
+collections {
+       group {
+               name: "option";
+
+               script {
+                       public val_screensize_check = 0;        /* 0: reduce, 1: full */
+
+                       public change_screensize() {
+                               if(get_int(val_screensize_check) == 0) {
+                                       set_int(val_screensize_check, 1);
+                                       set_state(PART:"option.screensize", "reduce", 0.0);
+                                       run_program(PROGRAM:"send.screensize.expand");
+                               } else {
+                                       set_int(val_screensize_check, 0);
+                                       set_state(PART:"option.screensize", "default", 0.0);
+                                       run_program(PROGRAM:"send.screensize.normal");
+                               }
+                       }
+
+               }
+
+               parts {
+                       part {
+                               name: "option.rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 255 255 255 0;
+                               }
+                       }
+
+                       CONTROL_BUTTON_PRESS_PART("option.screensize.button.bg", 74 ,74, 0.0, 0.0, 0.05, 0.05, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+                       part {
+                               name: "option.screensize";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.05 0.114; }
+                                       rel2 { relative: 0.05 0.114; }
+                                       image { normal: "T01_control_icon_fullscreen.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "reduce" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       image { normal: "T01_control_icon_reduce.png"; }
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       CONTROL_BUTTON_PRESS_PART("option.detail.button.bg", 74 ,74, 1.0, 0.0, 0.95, 0.95, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+                       part {
+                               name: "option.detail";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 74 74;
+                                       fixed: 1 1;
+                                       align: 1.0 0.0;
+                                       rel1 { relative: 0.95 0.114; }
+                                       rel2 { relative: 0.95 0.114; }
+                                       image { normal: "T01_control_icon_detail.png"; }
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       programs {
+                               CONTROL_BUTTON_PROG("option.screensize");
+                               CONTROL_BUTTON_PROG("option.detail");
+
+                               program {
+                                       signal: "signal.option.screensize.down";
+                                       source: "*";
+                                       action: STATE_SET "pressed" 0.0;
+                                       target: "option.screensize.button.bg";
+                               }
+
+                               program {
+                                       signal: "signal.option.screensize.up";
+                                       source: "*";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "option.screensize.button.bg";
+                                       after: "option.screensize.change";
+                               }
+
+                               program {
+                                       name: "option.screensize.change";
+                                       script: { change_screensize(); }
+                               }
+
+                               program {
+                                       name: "send.screensize.normal";
+                                       action: SIGNAL_EMIT "signal.option.screensize.normal" "option.screensize";
+                               }
+
+                               program {
+                                       name: "send.screensize.expand";
+                                       action: SIGNAL_EMIT "signal.option.screensize.expand" "option.screensize";
+                               }
+
+                               program {
+                                       signal: "signal.option.detail.down";
+                                       source: "*";
+                                       action: STATE_SET "pressed" 0.0;
+                                       target: "option.detail.button.bg";
+                               }
+
+                               program {
+                                       signal: "signal.option.detail.up";
+                                       source: "*";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "option.detail.button.bg";
+                               }
+
+                               program {
+                                       signal: "signal.option.mode.streaming";
+                                       source: "*";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "option.detail";
+                                       target: "option.detail.button.bg";
+                               }
+                       } //programs
+               } //parts
+       } //group
+} //collections
diff --git a/res/edc/panel.edc b/res/edc/panel.edc
new file mode 100755 (executable)
index 0000000..a1a05ee
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define 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..d201c70
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+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..5b19912
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "vp_font.edc"
+#define SUBTITLE_W 400
+#define SUBTITLE_H 100
+
+
+
+collections {
+       group {
+               name: "subtitle";
+
+               parts {
+                       part {
+                               name: "subtitle.txt";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: SUBTITLE_W SUBTITLE_H;
+                                       color: FONT_COLOR;
+                                       color3: 0 0 0 255;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 { relative: 0.0 0.5; offset: 0 0; }
+                                       rel2 { relative: 1.0 0.7; offset: 0 0; }
+                                       text {
+                                               text_class: "list_line1";
+                                               font: FONT_NANE;
+                                               size: TITLE_FONT_SIZE;
+                                               text:  "";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+               } /* parts */
+       } /* group */
+} /* collections */
diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc
new file mode 100755 (executable)
index 0000000..4eabcfb
--- /dev/null
@@ -0,0 +1,1086 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#define BUTTON_STATE_ENABLED  0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC 146 124 98 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255
+
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4
+#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC 24
+
+#define BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC 106 40
+#define BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC 36 32
+
+#define NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255
+#define NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255
+
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 5 5
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 108 108 108 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 108 108 108 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 108 115 118 255
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/video/style1";
+      alias: "elm/button/base/video/text_only/style1";
+      alias: "elm/button/base/video/center";
+      alias: "elm/button/base/video/icon_and_text/center";
+      alias: "elm/button/base/video/nocontents/search_button";
+      alias: "elm/button/base/video/naviframe/title/default";
+      images {
+         image: "T01_title_btn.png" COMP;
+         image: "T01_title_btn_press.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  normal: "T01_title_btn.png";
+                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "T01_title_btn_press.png";
+               }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "T01_title_btn.png";
+               }
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "T01_title_btn_press.png";
+               }
+            }
+         }
+         part { name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+            }
+         }
+         part { name: "padding_right_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1 {
+                  relative: 1.0 1.0;
+               }
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+               relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_after_icon";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "padding_before_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_before_text";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               align: 0.5 0.5;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_after_icon";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+               visible: 1;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_after_icon";
+            target: "icon_rect";
+            target: "bg";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+         program { name: "focused";
+            //signal: "elm,action,focus";
+            //source: "elm";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            //signal: "elm,action,unfocus";
+            //source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/video/naviframe/back_btn/default";
+       alias: "elm/button/base/video/naviframe/prev_btn/default";
+       alias: "elm/button/base/video/naviframe/end_btn/default";
+       //TODO: Remove this alias later
+       alias: "elm/button/base/video/navigationbar_prev_btn/default";
+       alias: "elm/button/base/video/navigationbar_backbutton/default";
+       alias: "elm/button/base/video/navigationbar_end_btn/default";
+       images {
+         image: "T01_btn_prev.png" COMP;
+
+      }
+      parts {
+         part { name: "button_image";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part {name: "padding_right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1 0;
+               min: 1 0;
+               rel1 { relative: 1 0.2; }
+               rel2 { relative: 1 0.8; }
+               fixed: 1 0;
+               color: NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC;
+            }
+         }
+         part {name: "padding_before_right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1 0;
+               min: 1 0;
+               rel1 { relative: 0 0; to: "padding_right"; }
+               rel2 { relative: 0 1; to: "padding_right"; }
+               fixed: 1 0;
+               color: NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC;
+            }
+         }
+         part { name: "button_center_part";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC;
+               align: 0.5 0.5;
+               rel2 { relative: 0 1; to_x: "padding_before_right"; }
+               image {
+                  normal: "T01_btn_prev.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T01_btn_prev.png";
+            }
+         }
+         part { name: "over1";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over2";
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over1";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            target: "button_center_part";
+         }
+         program { name: "button_unclick";
+            signal: "mouse,up,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+            after: "button_unclick_anim";
+         }
+         program { name: "button_unclick_anim";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "button_center_part";
+         }
+         program { name: "button_unclick2";
+            signal: "mouse,clicked,1";
+            source: "over1";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disabler";
+            target: "button_image";
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disabler";
+            target: "button_image";
+         }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/naviframe_control/multiline";
+      alias: "elm/button/base/video/navigationbar_control/multiline";
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      images.image: "T01_title_btn.png" COMP;
+      images.image: "T01_title_btn_press.png" COMP;
+      styles{
+         style { name: "btn_multiline_navigationbar_controlbar_style";
+            base: "font=SLP:style=Medium font_size="BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed";
+            tag: "br" "\n";
+            tag: "ps" "ps";
+            tag: "tab" "\t";
+         }
+      }
+      parts {
+         part { name: "button_image";
+            type: IMAGE;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+               image.normal: "T01_title_btn.png";
+               image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T01_title_btn.png";
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T01_title_btn_press.png";
+            }
+         }
+         part {
+            name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "padding_right_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1.relative: 1.0 1.0;
+               rel2.relative: 1.0 1.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+         }
+         part {
+            name: "padding_icon_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+           }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               visible: 1;
+               min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               visible: 1;
+               min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_icon_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                   relative: 0.0 0.0;
+                   to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+               color: 255 255 255 255;
+               text {
+                  style: "btn_multiline_navigationbar_controlbar_style";
+                  min: 0 0;
+                  max: 0 1;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 80 0;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 255 255 255 127;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_icon_text";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "focused";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
diff --git a/res/edc/vp-controlbar.edc b/res/edc/vp-controlbar.edc
new file mode 100755 (executable)
index 0000000..6b5c8e1
--- /dev/null
@@ -0,0 +1,772 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define 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..b6d5a22
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "image_res.edc"
+
+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..626b1d9
--- /dev/null
@@ -0,0 +1,4257 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#define 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..0c050d1
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#define 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..a04a503
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..c4487a8
--- /dev/null
@@ -0,0 +1,657 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <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..a3afa48
--- /dev/null
@@ -0,0 +1,1466 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <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..44095bf
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <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..a84a010
--- /dev/null
@@ -0,0 +1,1604 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+#include <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();
+
+       MpVideoViewCtrlResetProgressBar((void *)pAppData);
+
+       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..fd27f2c
--- /dev/null
@@ -0,0 +1,362 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+#include <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..f306308
--- /dev/null
@@ -0,0 +1,1222 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <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;
+       }
+
+       syspopup_launch("volume", NULL);
+
+/*
+       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);
+
+       MpVideoProgressbarBeginOfStream((void *)pAppData);
+
+       if (pAppData->nDuration > 1) {
+               char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
+
+               snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
+
+               MpVideoProgressbarUpdateDurationTime(szDurationTime);
+       }
+
+       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, "*");
+       }
+}
+
+void MpVideoDisplayViewResetProgressBar(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (pDisplayViewLayout) {
+               MpVideoProgressbarReset(pUserData);
+       }
+}
\ No newline at end of file
diff --git a/src/mp-video-info-ctrl.c b/src/mp-video-info-ctrl.c
new file mode 100755 (executable)
index 0000000..7062a56
--- /dev/null
@@ -0,0 +1,360 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <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..9fadbd7
--- /dev/null
@@ -0,0 +1,993 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <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..664b125
--- /dev/null
@@ -0,0 +1,410 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+#include "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 MpVideoProgressbarBeginOfStream(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoProgressbarDeleteTimer();
+
+       pAppData->nCurPosition = 0;
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0);
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00");
+
+       MpVideoProgressbarCreateTimer(pUserData);
+}
+
+void MpVideoProgressbarReset(void *pUserData)
+{
+       VideoLogInfo("");
+
+       if (!pUserData) {
+               VideoLogInfo("[ERR]");
+               return;
+       }
+
+       MpVideoProgressbarDeleteTimer();
+
+       edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0);
+       edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00");
+}
+
diff --git a/src/mp-video-sound-path-ctrl.c b/src/mp-video-sound-path-ctrl.c
new file mode 100755 (executable)
index 0000000..81fc7d9
--- /dev/null
@@ -0,0 +1,415 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <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..ff93885
--- /dev/null
@@ -0,0 +1,640 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <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..0a4fd32
--- /dev/null
@@ -0,0 +1,904 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <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;
+       }
+
+       syspopup_launch("volume", NULL);
+
+/*
+       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);
+       MpVideoProgressbarBeginOfStream((void *)pAppData);
+
+       if (pAppData->nDuration > 1) {
+               char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
+               snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
+                        PLAY_TIME_ARGS(pAppData->nDuration / 1000));
+               MpVideoProgressbarUpdateDurationTime(szDurationTime);
+       }
+
+       MpVideoAnimationCtrlHide();
+       edje_object_signal_emit(_EDJ(pStreamingViewLayout),
+                                               SIGNAL_MAIN_ANIMATION_HIDE, "*");
+
+       edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+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..dbffafc
--- /dev/null
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <mm_sound.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-subtitle-ctrl.h"
+
+#define MP_VIDEO_SUBTITLE_MENU_NUM             2
+#define VCONFKEY_GALLERY_SUBTITLE_STATE                "db/setting/gallery/subtitle_state" //boolean
+
+static int bSubtitleSettingState = FALSE;
+static bool bExistSubtitleFile = FALSE;
+static char szSubtitleFileUri[STR_LEN_MAX] = { 0 };
+
+static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][STR_LEN_MAX] = { ".srt", ".sub", ".smi" };
+
+
+/*
+ * Internal function
+ */
+bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath)
+{
+       if (!bSubtitleSettingState) {
+               VideoLogInfo("Subtitle .");
+               return FALSE;
+       }
+
+       if (!szMediaUriPath) {
+               VideoLogInfo("No Exist szMediaUri.");
+               return FALSE;
+       }
+
+       if (strlen(szMediaUriPath) < 1) {
+               VideoLogInfo("No Exist szMediaUri.");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       struct stat buf;
+       int nCount = 0;
+       int nStrLength = 0;
+
+       bExistSubtitleFile = FALSE;
+       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+
+       for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++) {
+               nStrLength = strcspn(szMediaUriPath, ".");
+               strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength);
+               strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]);
+
+               if (!stat(szSubtitleFileUri, &buf)) {
+                       VideoLogInfo("Success finding subtitle file. - %d", nCount);
+                       bExistSubtitleFile = TRUE;
+                       break;
+               } else {
+                       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+               }
+       }
+
+       if (!bExistSubtitleFile) {
+               VideoLogInfo("Fail finding subtitle file.");
+       }
+
+       return bExistSubtitleFile;
+}
+
+void MpVideoSubtitleCtrlClear(void)
+{
+       VideoLogInfo("");
+
+       bExistSubtitleFile = FALSE;
+       bSubtitleSettingState = FALSE;
+
+       memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+}
+
+static void MpVideoSubtitleCtrlStateChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogInfo("User data is NULL.");
+               return;
+       }
+
+       VideoLogInfo("");
+
+       if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+               if (!bSubtitleSettingState) {
+                       VideoLogInfo("Subtitle OFF.");
+               } else {
+                       VideoLogInfo("Subtitle ON.");
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf - subtitle.");
+       }
+}
+
+/*
+ * External function
+ */
+bool MpVideoSubtitleCtrlInit(void *pUserData)
+{
+       if (pUserData == NULL) {
+               VideoLogInfo("[ERR]No have pUserData");
+               return FALSE;
+       }
+
+       VideoLogInfo("");
+
+       VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+       MpVideoSubtitleCtrlClear();
+
+       if (pAppData->nCurPlayerType != MP_VIDEO_PLAYER) {
+               VideoLogInfo("Current player type is not video player.");
+               return FALSE;
+       }
+
+       if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+               if (!bSubtitleSettingState) {
+                       VideoLogInfo("Subtitle OFF.");
+               } else {
+                       VideoLogInfo("Subtitle ON.");
+               }
+       } else {
+               VideoLogInfo("Fail to get vconf - subtitle.");
+       }
+
+       if (vconf_notify_key_changed(VCONFKEY_GALLERY_SUBTITLE_STATE, MpVideoSubtitleCtrlStateChangeCb, pAppData)) {
+               VideoLogInfo("[ERR] Fail to resiste subtitle notification callback.");
+       }
+
+       return MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri);
+}
+
+void MpVideoSubtitleCtrlDestroy(void)
+{
+       VideoLogInfo("");
+
+       MpVideoSubtitleCtrlClear();
+}
+
+bool MpVideoSubtitleCtrlIsExistSubtitle(void)
+{
+       VideoLogInfo("");
+
+       return bExistSubtitleFile;
+}
+
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri)
+{
+       VideoLogInfo("");
+
+       if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+               return FALSE;
+       }
+
+       if (strlen(szSubtitleFileUri) < 1) {
+               VideoLogInfo("[ERR]No have szSubtitleFileUri");
+               return FALSE;
+       }
+
+       strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1);
+
+       return TRUE;
+}
diff --git a/src/mp-video-view-ctrl.c b/src/mp-video-view-ctrl.c
new file mode 100755 (executable)
index 0000000..8f9d651
--- /dev/null
@@ -0,0 +1,628 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <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();
+}
+
+void MpVideoViewCtrlResetProgressBar(void *pUserData)
+{
+       MpVideoDisplayViewResetProgressBar(pUserData);
+}
\ No newline at end of file
diff --git a/src/mp-xml-parser.c b/src/mp-xml-parser.c
new file mode 100755 (executable)
index 0000000..ec1242e
--- /dev/null
@@ -0,0 +1,371 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <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..1911cb2
--- /dev/null
@@ -0,0 +1,296 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.tizenopensource.org/license
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+#include <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)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("Not exist pUserData.");
+               return 0;
+       }
+
+       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);
+               }
+       }
+*/
+       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();
+
+       MpUtilVolumeTypeUnset();
+
+       elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+       bIsForeground = FALSE;
+
+       return 0;
+}
+
+static int app_resume(void *pUserData)
+{
+       if(!pUserData)
+       {
+               VideoLogInfo("Not exist pUserData.");
+               return 0;
+       }
+
+       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;
+}