--- /dev/null
+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)
--- /dev/null
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
--- /dev/null
+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
--- /dev/null
+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)
+
--- /dev/null
+/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/*
--- /dev/null
+@PREFIX@/bin/*
+@PREFIX@/res/locale/*
+@PREFIX@/res/icons/default/small/*
+@PREFIX@/res/edje/*
+@PREFIX@/res/images/*
+@PREFIX@/data
+/opt/share/applications/*
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+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
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _MP_UTIL_DATABASE_\r
+#define _MP_UTIL_DATABASE_\r
+\r
+\r
+#include "video-player.h"\r
+#include <glib.h>\r
+\r
+void MpUtilMediaSvcInitSession(void);\r
+void MpUtilMediaSvcFinishSession(void);\r
+\r
+void MpUtilMediaSvcDestoryVideoList(void);\r
+bool MpUtilMediaSvcDestroyItem(char* szFilePath);\r
+\r
+bool MpUtilMediaSvcGetVideoFileListFromFolder(char* szFilePath, int nSortType);\r
+bool MpUtilMediaSvcGetVideoFileListFromAllFolderOfGallery(int nSortType);\r
+bool MpUtilMediaSvcGetVideoFileListByTagName(char* szTagName);\r
+bool MpUtilMediaSvcGetVideoFileListFromFavorite(int nSortType);\r
+\r
+void MpUtilMediaSvcMtagIterateDestroyTagList(void);\r
+int MpUtilMediaSvcMtagGetAllTagList(char* pTagList[]);\r
+\r
+bool MpUtilMediaSvcMtagAddItemToTag(const char* szTagName, char* szMediaUri);\r
+bool MpUtilMediaSvcMtagGetItemToFavorite(char* szMediaUri);\r
+bool MpUtilMediaSvcMtagAddItemToFavorite(char* szMediaUri,bool bFavorite);\r
+char* MpUtilMediaSvcMitemGetThumbnailUrl(char* szMediaUri);\r
+bool MpUtilMediaSvcGetPreNextVideoUrl(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri);\r
+\r
+void MpUtilMediaSvcGetVideoID(const char *szPath, char *szVideoID);\r
+void MpUtilMediaSvcSaveLastPlayedTime(char* szMediaUri, unsigned int nLastPlayedTime);\r
+\r
+\r
+\r
+#endif // _MP_UTIL_DATABASE_\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+\r
+#ifndef _MP_UTIL_\r
+#define _MP_UTIL_\r
+\r
+\r
+#include "video-player.h"\r
+\r
+\r
+typedef enum\r
+{\r
+ NORMAL_POPUP_RETURN_TYPE_UNKNOW = 0,\r
+ NORMAL_POPUP_RETURN_TYPE_YES,\r
+ NORMAL_POPUP_RETURN_TYPE_NO,\r
+ NORMAL_POPUP_RETURN_TYPE_ERR,\r
+}NormalPopUpRetType;\r
+\r
+\r
+void MpUtilResetForRelaunching(void);\r
+void* MpUtilCreateMainWindow(const char *pStrName);\r
+void* MpUtilCreateWindow(const char *pStrName);\r
+int MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode);\r
+int MpUtilSetKeyUngrab(const char* szKeyName);\r
+bool MpUtilCheckRTSPType(char *szUriPath);\r
+int MpUtilCheckPlayerType(char *szUriPath);\r
+\r
+bool MpUtilGetURIFromBundle(bundle* pBundleData, VideoAppData* pAppData);\r
+bool MpUtilGetCookieFromBundle(bundle* pBundleData, VideoAppData* pAppData);\r
+bool MpUtilGetURIFromAUL(bundle * pBundleData, VideoAppData *pAppData);\r
+\r
+bool MpUtilCheckLocalFileExist(char *uri);\r
+bool MpUtilCheckVideoURI(VideoAppData* pAppData);\r
+ bool MpUtilCheckBatteryStatus(void);\r
+\r
+int MpUtilBatteryStatusNoti(VideoAppData* pAppData);\r
+int MpUtilBatteryStatusNotiIgnore(void);\r
+int MpUtilMMCstatusNoti(VideoAppData* pAppData);\r
+int MpUtilMMCstatusNotiIgnore(void);\r
+\r
+void MpUtilLanguageInit(VideoAppData* pAppData);\r
+int MpUtilCheckStartPositionTime(void* pBundle, char* szBundleKey);\r
+bool MpUtilCheckLaunchingByMime(void* pBundle, char* szMediaUri);\r
+int MpUtilCheckLaunchingByOtherApp(void* pBundle, char* szBundleKey);\r
+int MpUtilCheckSortType(void* pBundle, char* szBundleKey);\r
+int MpUtilCheckListType(void* pBundle, char* szBundleKey);\r
+bool MpUtilGetTagNameOfGallery(void* pBundle, char* szBundleKey, char* szTagName);\r
+int MpUtilCheckDlnaSortType(void* pBundle, char* szBundleKey);\r
+int MpUtilCheckDlnaMediaID(void* pBundle, char* szBundleKey);\r
+\r
+void MpUtilInitXML();\r
+void MpUtilDestroyXML();\r
+char* MpUtilGetXMLQualityURL(void);\r
+bool MpUtilIsXMLUrl(char* szMediaUri);\r
+bool MpUtilParsingXML(char* szMediaUri, VideoAppData* pAppData);\r
+int MpUtilGetXMLItemCount(void);\r
+\r
+bool MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle);\r
+void MpUtilInitSession(void);\r
+void MpUtilFinishSession(void);\r
+void MpUtilVolumeTypeSet(void);\r
+void MpUtilVolumeTypeUnset(void);\r
+void MpUtilDeletePopupHandle(void);\r
+bool MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc);\r
+bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc);\r
+bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc);\r
+bool MpUtilDetailPopup(VideoAppData *pAppData, char *szTitle, void *PopupButtonCallbackFunc);\r
+bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel);\r
+void* MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bX, bool bY, void *pUserData, char* szButtonStyle, void *func);\r
+int MpUtilSendFileViaBluetooth(char *szFilepath);\r
+void* MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName);\r
+bool MpUtilCheckCallStatus(void);\r
+bool MpUtilIsConnectEarjack(void);\r
+bool MpUtilRegisteEarjackCbFunc(void* pEarjackCb, void* pUserData);\r
+int* MpUtilGetMainWindowXID(void);\r
+void MpUtilGetUserAgent(VideoAppData* pAppData);\r
+double MpUtilGetSysTime(void);\r
+void MpUtilLcdNormalPowerLockForResume(void);\r
+void MpUtilLcdNormalPowerUnlockForPause(void);\r
+void MpUtilLcdOffForPowerButton(void);\r
+void MpUtilMultimediaKeyGrab(void);\r
+void MpUtilMultimediaKeyUngrab(void);\r
+\r
+#endif // _MP_UTIL_\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _VIDEO_LOADING_ANIMATION_CTRL_\r
+#define _VIDEO_LOADING_ANIMATION_CTRL_\r
+\r
+\r
+void* MpVideoAnimationCtrlInit(void* pUserData);\r
+void MpVideoAnimationCtrlDestroy(void);\r
+void MpVideoAnimationCtrlSetPercent(int nPercent);\r
+void MpVideoAnimationCtrlPlay(void);\r
+void MpVideoAnimationCtrlStop(void);\r
+void MpVideoAnimationCtrlShow(void);\r
+void MpVideoAnimationCtrlHide(void);\r
+bool MpVideoAnimationCtrlGetActiveState(void);\r
+\r
+\r
+#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */\r
+\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _VIDEO_APP_CTRL_\r
+#define _VIDEO_APP_CTRL_\r
+\r
+\r
+#include "video-player.h"\r
+\r
+\r
+bool MpVideoAppCtrlInit(VideoAppData* pAppData);\r
+bool MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData);\r
+bool MpVideoAppCtrlIsTopView(void* pUserData);\r
+bool MpVideoAppCtrlIsExistPlayerHandle(void);\r
+\r
+\r
+#endif /* _VIDEO_APP_CTRL_ */\r
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#ifndef _MP_VIDEO_CTRL_MGR_H_
+#define _MP_VIDEO_CTRL_MGR_H_
+
+
+bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pMmfPlayerCallback, void *pOverlayXid, char* szSubtitleUri, void *pUserData);
+void MpVideoCtrlMgrMediaDestroy(void* pUserData);
+bool MpVideoCtrlMgrMediaPlay(void* pUserData);
+void MpVideoCtrlMgrMediaStop(void* pUserData);
+void MpVideoCtrlMgrMediaPause(void* pUserData);
+void MpVideoCtrlMgrMediaResume(void* pUserData);
+void MpVideoCtrlMgrSetOverlayXid(void* pXid);
+void MpVideoCtrlMgrSetPosition(int nSetPosition);
+int MpVideoCtrlMgrGetPosition(void);
+int MpVideoCtrlMgrGetDuration(void);
+void MpVideoCtrlMgrSetROI(void* pUserData, int nOverlayX, int nOverlayY, int nOverlayWidth, int nOverlayHeight);
+int MpVideoCtrlMgrGetVideoWidthResolution(void);
+int MpVideoCtrlMgrGetVideoHeightResolution(void);
+void MpVideoCtrlMgrSetRatioVideoScreen(void* pUserData, int nRatioScreenSize);
+void MpVideoCtrlMgrSetVerticalOverlayPos(int nOverlayY);
+void MpVideoCtrlMgrSetMute(bool bMuteEnable);
+bool MpVideoCtrlMgrGetMuteState(void);
+int MpVideoCtrlMgrGetBufferingPosition(void);
+bool MpVideoCtrlMgrIsExistPlayerHandle(void);
+
+#endif
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+
+#ifndef _VIDEO_DISPLAY_VIEW_
+#define _VIDEO_DISPLAY_VIEW_
+
+
+typedef enum
+{
+ MP_DISPLAY_VIEW_STATE_ACTIVATE = 0,
+ MP_DISPLAY_VIEW_STATE_UNACTIVATE,
+ MP_DISPLAY_VIEW_STATE_MAX,
+}VideoDisplayViewState;
+
+
+void MpVideoDisplayViewPush(void* pNaviFrame, void* pShowInfoViewCb, int nLaunchingAppType, void* pUserData);
+void MpVideoDisplayViewPop(void* pNaviFrame, void* pUserData);
+void MpVideoDisplayViewDestroy(void* pUserData);
+
+void MpVideoDisplayViewInitAfterBeginOfStream(void* pUserData);
+void MpVideoDisplayViewUpdatePauseKey(void);
+void MpVideoDisplayViewUpdateResumeKey(void);
+void MpVideoDisplayViewShowControlPanel(void* pUserData);
+void MpVideoDisplayViewHideControlPanel(void* pUserData);
+void MpVideoDisplayViewActivate(void);
+void MpVideoDisplayViewUnactivate(void);
+void MpVideoDisplayViewHideSoundpath(void);
+void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData);
+void MpVideoDisplayViewUpdateSubtitle(double nDuration, char* szSubtitleString);
+bool MpVideoDisplayViewIsTopView(void);
+void MpVideoDisplayViewShowNocontentImage(void);
+void MpVideoDisplayViewHideNocontentImage(void);
+
+#endif
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_INFO_CTRL_
+#define _VIDEO_INFO_CTRL_
+
+bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude);
+bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData);
+bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize);
+#endif
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_LOG_H_
+#define _VIDEO_LOG_H_
+
+#include <dlog.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+
+#define LOG_TAG "video-player"
+
+#define VideoLogInfoWithTid(fmt,arg...) LOGI( "[VP][TID:%d][%s][%d]" fmt "\n", syscall(__NR_gettid), __FUNCTION__, __LINE__, ##arg)
+#define VideoLogInfo(fmt,arg...) LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg)
+#define VideoLogDebug(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+#define VideoLogWarning(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg)
+#define VideoLogError( fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg)
+
+ #endif /*_MPVIDEO_LOG_H_*/
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _MP_VIDEO_PLAYER_MGR_H_
+#define _MP_VIDEO_PLAYER_MGR_H_
+
+#include <mm_player.h>
+#include <mm_message.h>
+
+
+typedef enum
+{
+ DISPLAY_METHOD_LETTER_BOX = 0,
+ DISPLAY_METHOD_ORIGIN_SIZE,
+ DISPLAY_METHOD_FULL_SCREEN,
+ DISPLAY_METHOD_CROPPED_FULL,
+ DISPLAY_METHOD_CUSTOM_ROI,
+}MpPlayerMgrDisplayMethod;
+
+
+bool MpPlayerMgrIsActive(void);
+
+bool MpPlayerMgrGetAttrs(MMHandleType* Attrs, MMPlayerAttrsType Type);
+void MpPlayerMgrSetAttrs(MMHandleType Attrs, MMPlayerAttrsType Type);
+
+void MpPlayerMgrSetMessageCallback(MMMessageCallback Callback, void* pUserData);
+bool MpPlayerMgrSetAudioCallback(mm_player_audio_stream_callback CallBack, void* pUserData);
+
+bool MpPlayerMgrCreate (const char* szPath);
+bool MpPlayerMgrDestroy (void);
+
+bool MpPlayerMgrRealize (void);
+bool MpPlayerMgrUnrealize(void);
+
+bool MpPlayerMgrPlay (void);
+bool MpPlayerMgrStop (void);
+bool MpPlayerMgrResume (void);
+bool MpPlayerMgrPause (void);
+
+int MpPlayerMgrGetPosition(void);
+void MpPlayerMgrSetPosition(unsigned int nPos);
+
+bool MpPlayerMgrGetVisible(void);
+void MpPlayerMgrSetVisible(bool bEnabled);
+
+void MpPlayerMgrSetMute(bool bMuteEnable);
+bool MpPlayerMgrGetMute(void);
+bool MpPlayerMgrSetBtHeadset(bool bEnable, char* szAddress);
+
+int MpPlayerMgrGetStreamingType(void);
+void MpPlayerMgrSetProgressiveDownload(int nFileSize);
+void MpPlayerMgrSetDownloadComplete(void);
+void MpPlayerMgrSetProgressTimerInterval(int nInterval);
+int MpPlayerMgrGetPdduration(void);
+int MpPlayerMgrGetDuration(char* szFilePath);
+bool MpPlayerMgrSetRatioVideoScreenSize(MpPlayerMgrDisplayMethod ScreenSize);
+bool MpPlayerMgrSetOverlayXid(void* pOverlayXid);
+bool MpPlayerMgrSetSoundPriority(void);
+int MpPlayerMgrGetVideoWidthResolution(void);
+int MpPlayerMgrGetVideoHeightResolution(void);
+bool MpPlayerMgrSetSubtitleSilent(bool bSilent);
+bool MpPlayerMgrSetSubtitle(const char* szSubtitlePath);
+int MpPlayerMgrSetBluetoothHeadset(char* szBlutoothAddress, int nMode);
+
+int MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight);
+int MpPlayerMgrSetVerticalOverlayPos(int nY);
+
+bool MpPlayerMgrSetUseragentForStreaming(const char* szUserAgent);
+bool MpPlayerMgrSetProxAddressForStreaming(const char* szProxyAddress);
+bool MpPlayerMgrSetCookieForStreaming(const char* szCookie);
+
+
+int MpPlayerMgrGetBufferingPosition(void);
+
+
+#endif
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_PROGRESS_BAR_CTRL_\r
+#define _VIDEO_PROGRESS_BAR_CTRL_\r
+\r
+\r
+void* MpVideoProgressbarGetEdjHandle(void);\r
+void* MpVideoProgressbarInit(void* pUserData);\r
+void MpVideoProgressbarDestroy(void);\r
+void MpVideoProgressbarCreateTimer(void* pUserData);\r
+void MpVideoProgressbarDeleteTimer(void);\r
+void MpVideoProgressbarUpdateDurationTime(char* szDurationTime);\r
+void MpVideoProgressbarReset(void* pUserData);\r
+void MpVideoProgressbarSetSkipEvent(bool bSkip);\r
+\r
+#endif /* _VIDEO_PROGRESS_BAR_CTRL_ */\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _MP_VIDEO_SOUND_PATH_\r
+#define _MP_VIDEO_SOUND_PATH_\r
+\r
+\r
+bool MpVideoSoundpathShow(void* pUserData);\r
+void MpVideoSoundpathHide(void);\r
+\r
+bool MpVideoSoundpathIsConnectOtherSoundpath(void);\r
+int MpVideoSoundpathGetCurrConnectedSoundpath(void);\r
+\r
+#endif // _MP_UTIL_\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+#ifndef _STREAMING_PLAYER_H_\r
+#define _STREAMING_PLAYER_H_\r
+\r
+\r
+bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress);\r
+bool MpVideoStreamingCtrlGetProxy(char* szRetProxy);\r
+bool MpVideoStreamingCtrlIsNetworkOn(void);\r
+int MpVideoStreamingCtrlGetNetworkStatus(void);\r
+int MpVideoStreamingCtrlGetWifiState();\r
+int MpVideoStreamingCtrlGetCellularState();\r
+bool MpVideoStreamingCtrlInit(void *pUserData);\r
+void MpVideoStreamingCtrlDestroy(void *pUserData);\r
+\r
+\r
+#endif /* _STREAMING_PLAYER_H_ */\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+\r
+#ifndef _VIDEO_STREAMING_VIEW_\r
+#define _VIDEO_STREAMING_VIEW_\r
+\r
+\r
+typedef enum\r
+{\r
+ MP_STREAMING_VIEW_STATE_ACTIVATE = 0,\r
+ MP_STREAMING_VIEW_STATE_UNACTIVATE,\r
+ MP_STREAMING_VIEW_STATE_MAX,\r
+}VideoStreamingViewState;\r
+\r
+\r
+void MpVideoStreamingViewPush(void* pNaviFrame,void* pShowInfoViewCb, void* pUserData);\r
+void MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData);\r
+void MpVideoStreamingViewDestroy(void* pUserData);\r
+\r
+void MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData);\r
+void MpVideoStreamingViewUpdatePauseKey(void);\r
+void MpVideoStreamingViewUpdateResumeKey(void);\r
+void MpVideoStreamingViewShowControlPanel(void* pUserData);\r
+void MpVideoStreamingViewHideControlPanel(void* pUserData);\r
+void MpVideoStreamingViewActivate(void);\r
+void MpVideoStreamingViewUnactivate(void);\r
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate);\r
+bool MpVideoStreamingViewGetBufferingState(void);\r
+bool MpVideoStreamingViewIsTopView(void);\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+#ifndef _VIDEO_STRING_DEFINE_\r
+#define _VIDEO_STRING_DEFINE_\r
+\r
+\r
+#define MP_STREAMING_PLAYER_STR "Streaming player"\r
+#define MP_SYS_STRING "sys_string"\r
+\r
+#define MP_VIDEO_PATH_KEY "path"\r
+#define MP_VIDEO_COOKIE_KEY "cookie"\r
+#define MP_VIDEO_SORT_TYPE_KEY "order_type"\r
+#define MP_VIDEO_LIST_TYPE_KEY "video_list_type"\r
+#define MP_VIDEO_TAG_NAME_KEY "tag_name"\r
+#define MP_VIDEO_SPLIT_VIEW_KEY "split_screen"\r
+#define MP_VIDEO_START_POS_TIME_KEY "start_pos_time"\r
+#define MP_VIDEO_LAUNCHING_BY_APP_KEY "launching_application"\r
+#define MP_VIDEO_EDIT_MODE_KEY "edit_mode"\r
+\r
+#define MP_VPL_GPS_LATITUDE "Latitude"\r
+#define MP_VPL_GPS_LONGITUTD "Longitude"\r
+\r
+\r
+// SMTP video player string\r
+#define MP_VPL_CONNECTION_FAIL (dgettext("sys_string", "IDS_COM_POP_CONNECTION_ERROR"))\r
+#define MP_VPL_UNABLE_TO_PLAY_VIDEO "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED"\r
+#define MP_VPL_HEADER_SHARE_VIDEO_ABB "IDS_VPL_HEADER_SHARE_VIDEO_ABB"\r
+#define MP_VPL_OPT_SET_AS "IDS_VPL_OPT_SET_AS"\r
+#define MP_VPL_POP_INVALID_STREAMING_DATA "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA"\r
+#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT"\r
+#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT"\r
+#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE"\r
+#define MP_VIDEO_POPUP_SHARE "IDS_COM_SK4_SHARE"\r
+#define MP_VIDEO_SOUND_PATH "Sound Path"\r
+\r
+// Default system string\r
+#define MP_COM_POP_ERROR "IDS_COM_POP_ERROR"\r
+#define MP_COM_BODY_LOW_BATTERY "IDS_COM_BODY_LOW_BATTERY"\r
+#define MP_COM_BODY_DELETE "IDS_COM_BODY_DELETE"\r
+#define MP_COM_BODY_BACK "IDS_COM_BODY_BACK"\r
+#define MP_COM_SK_BACK "IDS_COM_SK_BACK"\r
+#define MP_COM_SK_YES "IDS_COM_SK_YES"\r
+#define MP_COM_SK_NO "IDS_COM_SK_NO"\r
+#define MP_COM_BODY_SIZE "IDS_COM_BODY_SIZE"\r
+#define MP_COM_BODY_DETAILS_TITLE "IDS_COM_BODY_DETAILS_TITLE"\r
+#define MP_COM_BODY_FORMAT "IDS_COM_BODY_FORMAT"\r
+#define MP_COM_POP_DATE "IDS_COM_POP_DATE"\r
+#define MP_IDLE_BODY_RESOLUTION "IDS_IDLE_BODY_RESOLUTION"\r
+#define MP_COM_BODY_DETAILS "IDS_COM_BODY_DETAILS"\r
+#define MP_COM_BUTTON_CANCEL "IDS_IDLE_BUTTON_CANCEL"\r
+#define MP_COM_BUTTON_SHARE "IDS_COM_BUTTON_SHARE"\r
+#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL"\r
+\r
+\r
+#endif //_VIDEO_STRING_DEFINE_\r
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#ifndef _MP_VIDEO_SUBTITLE_CTRL_
+#define _MP_VIDEO_SUBTITLE_CTRL_
+
+bool MpVideoSubtitleCtrlInit(void *pUserData);
+void MpVideoSubtitleCtrlDestroy(void);
+bool MpVideoSubtitleCtrlIsExistSubtitle(void);
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath);
+
+#endif // _MP_VIDEO_SUBTITLE_CTRL_
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_TYPE_DEFINE_
+#define _VIDEO_TYPE_DEFINE_
+
+
+typedef enum
+{
+ MP_LAUNCH_APP_DEFAULT = 0, // For launching by my-file.
+ MP_LAUNCH_APP_GALLERY,
+ MP_LAUNCH_APP_IMAGE_VIEWER,
+ MP_LAUNCH_APP_SIMPLE_VIEW,
+ MP_LAUNCH_APP_MAX,
+}MpLaunchingAppType;
+
+
+typedef enum
+{
+ MP_MEDIA_SORT_BY_NONE = 0,
+ MP_MEDIA_SORT_BY_NAME_DESC,
+ MP_MEDIA_SORT_BY_NAME_ASC,
+ MP_MEDIA_SORT_BY_DATE_DESC,
+ MP_MEDIA_SORT_BY_DATE_ASC,
+ MP_MEDIA_SORT_BY_MAX,
+}MpMediaSortType;
+
+
+typedef enum
+{
+ MP_VIDEO_LIST_TYPE_FOLDER = 0,
+ MP_VIDEO_LIST_TYPE_ALL_FOLDER_GALLERY,
+ MP_VIDEO_LIST_TYPE_TAG_GALLERY,
+ MP_VIDEO_LIST_TYPE_FAVORITE,
+ MP_VIDEO_LIST_TYPE_MAX,
+}MpVideoListType;
+
+
+typedef enum
+{
+ MP_STREAMING_PLAYER = 0,
+ MP_VIDEO_PLAYER,
+}VideoPlayerType;
+
+
+typedef enum
+{
+ MP_HTTP_STREAMING = 0,
+ MP_RTSP_STREAMING,
+}MpProtocolType;
+
+
+typedef enum
+{
+ MP_DISPLAY_METHOD_LETTER_BOX = 0,
+ MP_DISPLAY_METHOD_ORIGIN_SIZE,
+ MP_DISPLAY_METHOD_FULL_SCREEN,
+ MP_DISPLAY_METHOD_CROPPED_FULL,
+ MP_DISPLAY_METHOD_CUSTOM_ROI,
+}MpDisplayMethod;
+
+
+typedef enum
+{
+ MP_ORDER_BY_NAME = 0,
+ MP_ORDER_BY_DATE,
+ MP_ORDER_BY_ASCENDING,
+ MP_ORDER_BY_DESENDING,
+ MP_ORDER_BY_MAX,
+}MpFileSortOrder;
+
+
+typedef enum
+{
+ MP_SOUND_PATH_SPEAKER = 0,
+ MP_SOUND_PATH_EARJACK,
+ MP_SOUND_PATH_BLUETOOTH,
+ MP_SOUND_PATH_MAX,
+}MpSoundPathType;
+
+
+typedef struct
+{
+ char szURL [STR_LEN_MAX];
+ int id;
+ int streaming_type;
+}MpXMLItemInfo;
+
+
+typedef enum
+{
+ MP_PLAYER_STATE_WAIT_FOR_RESUME = -3,
+ MP_PLAYER_STATE_WAIT_FOR_PLAY = -2,
+ MP_PLAYER_STATE_WAIT_FOR_RESPONSE = -1,
+ MP_PLAYER_STATE_CLEAR = 0,
+ MP_PLAYER_STATE_PLAY,
+ MP_PLAYER_STATE_PAUSE,
+ MP_PLAYER_STATE_RESUME,
+ MP_PLAYER_STATE_STOP,
+ MP_PLAYER_STATE_PAUSE_BEFORE_PLAY,
+ MP_PLAYER_STATE_MAX
+}MpPlayerState;
+
+typedef enum
+{
+ MP_PLAYING_SPEED_NORMAL = 0,
+ MP_PLAYING_SPEED_2X,
+ MP_PLAYING_SPEED_3X,
+ MP_PLAYING_SPEED_4X,
+ MP_PLAYING_SPEED_5X,
+ MP_PLAYING_SPEED_MAX = MP_PLAYING_SPEED_5X,
+}MpVideoPlayingSpeedType;
+
+typedef enum
+{
+ MP_SUBTITLE_TYPE_SUB = 0,
+ MP_SUBTITLE_TYPE_SRT,
+ MP_SUBTITLE_TYPE_SMI,
+ MP_SUBTITLE_TYPE_MAX,
+}MpSubTitleType;
+
+
+typedef enum
+{
+ MP_NETWORK_CLOSE = 0,
+ MP_NETWORK_ON,
+ MP_NETWORK_MAX,
+}MpNetworkConfig;
+
+
+typedef enum
+{
+ MP_NETWORK_TYPE_OFF = 0,
+ MP_NETWORK_TYPE_CELLULAR,
+ MP_NETWORK_TYPE_WIFI,
+ MP_NETWORK_TYPE_MAX,
+}MpNetworkType;
+
+
+typedef enum
+{
+ MP_NETWORK_WIFI_OFF = 0,
+ MP_NETWORK_WIFI_NOT_CONNECTED,
+ MP_NETWORK_WIFI_CONNECTED,
+ MP_NETWORK_WIFI_MAX,
+}MpNetworkWifiState;
+
+
+typedef enum
+{
+ MP_NETWORK_CELLULAR_ON = 0,
+ MP_NETWORK_CELLULAR_3G_OPTION_OFF,
+ MP_NETWORK_CELLULAR_ROAMING_OFF,
+ MP_NETWORK_CELLULAR_FLIGHT_MODE,
+ MP_NETWORK_CELLULAR_NO_SERVICE,
+ MP_NETWORK_CELLULAR_MAX,
+}MpNetworkCellularState;
+
+
+#endif //_VIDEO_TYPE_DEFINE_
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_VALUE_DEFINE_
+#define _VIDEO_VALUE_DEFINE_
+
+#include <utilX.h>
+
+
+//PLAY_TIME_FORMAT
+#define PLAY_TIME_FORMAT "02u:%02u:%02u"
+
+
+//PLAY_TIME_ARGS
+#define PLAY_TIME_ARGS(t) \
+ (t) / (60 * 60), \
+ ((t) / 60) % 60, \
+ (t) % 60
+
+#define PLAY_TIME_LENGTH 9
+
+
+#define _EDJ(x) elm_layout_edje_get(x)
+
+
+#ifdef PREFIX
+#undef PREFIX
+#endif
+
+#ifdef LOCALEDIR
+#undef LOCALEDIR
+#endif
+
+#define PREFIX "/opt/apps/org.tizen.video-player"
+#define EDJ_PATH "/opt/apps/org.tizen.video-player/res/edje"
+#define LOCALEDIR "/opt/apps/org.tizen.video-player/res/locale"
+
+#define VIDEO_HEAD_ICON_ADD PREFIX"/res/images/01_header_icon_add.png"
+#define VIDEO_HEAD_ICON_DEL PREFIX"/res/images/01_header_icon_cancel.png"
+#define VIDEO_HEAD_ICON_OTHERS PREFIX"/res/images/01_header_icon_others.png"
+
+#define VIDEO_HEAD_ICON_SOUNDPATH PREFIX"/res/images/T01_icon_soundPath_h.png"
+
+#define VIDEO_PLAYER_MAIN_EDJ EDJ_PATH"/main.edj"
+#define VIDEO_PLAYER_CONTROL_EDJ EDJ_PATH"/control.edj"
+#define VIDEO_PLAYER_PANEL_EDJ EDJ_PATH"/panel.edj"
+#define VIDEO_PLAYER_PROGRESS_EDJ EDJ_PATH"/progress.edj"
+#define VIDEO_PLAYER_ADD_TAG EDJ_PATH"/add_tag.edj"
+#define VIDEO_PLAYER_ANIMATION_EDJ EDJ_PATH"/animation.edj"
+#define VIDEO_PLAYER_DETAIL_EDJ EDJ_PATH"/detail.edj"
+#define VIDEO_PLAYER_SUBTITLE_EDJ EDJ_PATH"/subtitle.edj"
+#define VIDEO_CUSTOM_THEME EDJ_PATH"/vp-custom-winset-style.edj"
+#define VIDEO_PLAYER_HIDDEN_PANEL_EDJ EDJ_PATH"/hidden_button_panel.edj"
+#define VIDEO_PLAYER_OPTION_BUTTON_EDJ EDJ_PATH"/option_button.edj"
+
+#define MAIN_EDJ_GROUP "main"
+#define CONTROL_EDJ_GROUP "control"
+#define PROGRESS_EDJ_GROUP "progress"
+#define PANEL_EDJ_GROUP "panel"
+#define FAVORITE_EDJ_GROUP "favorite"
+#define ANIMATION_EDJ_GROUP "animation"
+#define DETAIL_EDJ_GROUP "detail"
+#define SUBTITLE_EDJ_GROUP "subtitle"
+#define HIDDEN_PANEL_EDJ_GROUP "hidden_panel"
+#define OPTION_EDJ_GROUP "option"
+
+#define SWALLOW_MAIN_CONTROL "main.panel"
+#define SWALLOW_MAIN_ANIMATION "main.animation"
+#define SWALLOW_MAIN_HIDDEN_BUTTON "main.hidden.button"
+#define SWALLOW_MAIN_OPTION_BUTTON "main.option.button"
+
+
+#define SWALLOW_PANEL_CONTROL "panel.control"
+#define SWALLOW_PANEL_PROGRESS_BAR "panel.progress"
+
+#define SWALLOW_DETAIL_LIST "detail.list"
+#define SUBTITLE_TEXT "subtitle.txt"
+#define PART_BUTTON_ICON "icon"
+
+
+#define SIGNAL_CONTROL_PART_PLAY_BUTTON "control.play.button"
+#define SIGNAL_CONTROL_PART_BACK_BUTTON "control.back.button"
+#define SIGNAL_CONTROL_PART_VOL_BUTTON "control.volume.button"
+#define SIGNAL_CONTROL_PART_SOUNDPATH_BUTTON "control.soundpath.button"
+#define SIGNAL_CONTROL_PART_SCREENSIZE_BUTTON "control.screensize.button"
+#define SIGNAL_CONTROL_PART_FF_BUTTON "control.normal.ff.button"
+#define SIGNAL_CONTROL_PART_REW_BUTTON "control.normal.rew.button"
+#define SIGNAL_CONTROL_PART_HQ_BUTTON "control.streaming.hq.button"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH "hidden.button.panel.soundpath"
+
+#define SIGNAL_CONTROL_MODE_NORMAL "signal.control.mode.normal"
+#define SIGNAL_CONTROL_MODE_STREAMING "signal.control.mode.streaming"
+#define SIGNAL_CONTROL_MODE_VISIBLE_OFF "signal.control.mode.visible.off"
+#define SIGNAL_CONTROL_BACK_BUTTON_DOWN "signal.control.back.button.down"
+
+#define SIGNAL_CONTROL_FF_MODE_NORMAL "signal.control.ff.normal"
+#define SIGNAL_CONTROL_FF_MODE_EXTEND "signal.control.ff.extend"
+
+#define SIGNAL_CONTROL_REW_MODE_NORMAL "signal.control.rew.normal"
+#define SIGNAL_CONTROL_REW_MODE_EXTEND "signal.control.rew.extend"
+
+#define SIGNAL_CONTROL_VOL_BUTTON_DOWN "signal.control.volume.button.down"
+#define SIGNAL_CONTROL_VOL_BUTTON_UP "signal.control.volume.button.up"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_DOWN "signal.control.soundpath.button.down"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UP "signal.control.soundpath.button.up"
+#define SIGNAL_CONTROL_SCREENSIZE_NORMAL "signal.control.screensize.normal"
+#define SIGNAL_CONTROL_SCREENSIZE_EXPAND "signal.control.screensize.expand"
+#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN "signal.control.normal.ff.button.down"
+#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP "signal.control.normal.ff.button.up"
+#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN "signal.control.normal.rew.button.down"
+#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP "signal.control.normal.rew.button.up"
+#define SIGNAL_CONTROL_HQ_BUTTON_DOWN "signal.control.streaming.hq.button.down"
+#define SIGNAL_CONTROL_HQ_BUTTON_UP "signal.control.streaming.hq.button.up"
+#define SIGNAL_HIDDEN_PANEL_SOUNDPATH_DOWN "signal.hidden.button.panel.soundpath.down"
+#define SIGNAL_HIDDEN_PANEL_SOUNDPATH_UP "signal.hidden.button.panel.soundpath.up"
+
+#define SIGNAL_CONTROL_VOL_BUTTON_MUTE "signal.control.volume.button.mute"
+#define SIGNAL_CONTROL_VOL_BUTTON_UNMUTE "signal.control.volume.button.unmute"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_ACTIVE "signal.control.soundpath.button.active"
+#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UNACTIVE "signal.control.soundpath.button.unactive"
+#define SIGNAL_CONTROL_STREAMING_QUALITY_HIGH "signal.control.streaming.quality.high"
+#define SIGNAL_CONTROL_STREAMING_QUALITY_NORMAL "signal.control.streaming.quality.normal"
+#define SIGNAL_CONTROL_STREAMING_QUALITY_HIDE "signal.control.streaming.quality.hide"
+
+
+#define SIGNAL_OPTION_PART_SCREEN_SIZE "option.screensize"
+#define SIGNAL_OPTION_PART_DETAIL "option.detail"
+
+#define SIGNAL_OPTION_SCREEN_SIZE_DOWN "signal.option.screensize.down"
+#define SIGNAL_OPTION_DETAIL_DOWN "signal.option.detail.down"
+
+#define SIGNAL_OPTION_SCREEN_SIZE_NORMAL "signal.option.screensize.normal"
+#define SIGNAL_OPTION_SCREEN_SIZE_EXPAND "signal.option.screensize.expand"
+
+// Callback signals.
+#define SIGNAL_CONTROL_PLAY_BUTTON_DOWN "signal.control.play.button.down"
+#define SIGNAL_CONTROL_PLAY_BUTTON_UP "signal.control.play.button.up"
+#define SIGNAL_CONTROL_PLAY_PAUSE_PRESS "signal.control.play.pause.press"
+#define SIGNAL_CONTROL_PLAY_RESUME_PRESS "signal.control.play.resume.press"
+
+// Emit signals.
+#define SIGNAL_CONTROL_PLAY_RESUME "signal.control.play.resume"
+#define SIGNAL_CONTROL_PLAY_PAUSE "signal.control.play.pause"
+
+#define SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL "signal.control.screensize.button.normal"
+#define SIGNAL_CONTROL_SCREENSIZE_BUTTON_EXPAND "signal.control.screensize.button.expand"
+
+#define SIGNAL_OPTION_MODE_STREAMING "signal.option.mode.streaming"
+
+
+#define SIGNAL_MAIN_MUTE_SHOW "signal.main.mute.show"
+#define SIGNAL_MAIN_MUTE_HIDE "signal.main.mute.hide"
+
+#define SIGNAL_MAIN_NOCONTENTS_SHOW "signal.main.nocontents.show"
+#define SIGNAL_MAIN_NOCONTENTS_HIDE "signal.main.nocontents.hide"
+
+#define SIGNAL_MAIN_SCREEN_TOUCH_PRESS "signal.main.screen.touch.press"
+#define SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE "main.screen.touch.toggle"
+#define SIGNAL_MAIN_ANIMATION_SHOW "signal.main.animation.show"
+#define SIGNAL_MAIN_ANIMATION_HIDE "signal.main.animation.hide"
+
+#define SIGNAL_MAIN_OPTION_BUTTON_BG_HIDE "signal.main.option.button.bg.hide"
+
+#define SIGNAL_ANIMATION_IMAGE_LOADING "signal.loading.image.step"
+
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_SHOW "signal.hidden.button.panel.soundpath.show"
+#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_HIDE "signal.hidden.button.panel.soundpath.hide"
+
+#define TAG_FAVOURITES "Favourites"
+#define PACKAGE "video-player"
+#define PAUSE_KEY "XF86AudioPause"
+#define PLAY_KEY "XF86AudioPlay"
+#define STOP_KEY "XF86AudioStop"
+#define NEXT_KEY "XF86AudioNext"
+#define PREV_KEY "XF86AudioPrev"
+#define FORWARD_KEY "XF86AudioForward"
+#define REWIND_KEY "XF86AudioRewind"
+#define END_KEY KEY_END
+#define HOME_KEY KEY_SELECT
+#define KEY_CANCLE KEY_CANCEL
+#define POWER_KEY "XF86PowerOff"
+#define VOLUME_DOWN_KEY KEY_VOLUMEDOWN
+#define VOLUME_MUTE 0
+#define KEY_GRAB_SHARED SHARED_GRAB
+#define KEY_GRAB_EXCLUSIVE EXCLUSIVE_GRAB
+#define KEY_GRAB_TOP_POSITION TOP_POSITION_GRAB
+#define KEY_GRAB_OR_EXCLUSIVE OR_EXCLUSIVE_GRAB
+#define STR_LEN_MAX 4096 * 3
+
+#define XML_ITEM_NUM 6
+#define _WIFI_MODE_ 1
+#define _3G_MODE_ 2
+#define USE_STREAMING_ANI 1
+#define LONG_PRESS_INTERVAL 0.5
+
+#define SCREEN_TOUCH_TOGGLE_AREA_Y_START 0.065
+#define SCREEN_TOUCH_TOGGLE_AREA_Y_END 0.78
+
+#define TAG_LIST_SIZE 256
+
+#define ANIMATION_TIMER_INTERVAL 0.05
+#define ANIMATION_MAX_COUNT 30
+
+#define BOOSTER_STEP_DISTANCE 30
+#define SIGNAL_TEXT_MAX_LEN 64
+#define CAPTION_TEXT_MAX_LEN 16
+#define STR_UUID_LEN_MAX 37
+
+#endif //_VIDEO_VALUE_DEFINE_
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef _VIDEO_VIEW_CTRL_
+#define _VIDEO_VIEW_CTRL_
+
+
+
+bool MpVideoViewCtrlInit(VideoAppData* pAppData);
+void MpVideoViewCtrlDestroy(void* pUserData);
+void MpVideoViewCtrlInitAfterBeginOfStream(void*);
+void MpVideoViewCtrlPause(void* pUserData);
+void MpVideoViewCtrlResume(void* pUserData);
+void MpVideoViewShowLayout(void* pUserData);
+void MpVideoViewHideLayout(void* pUserData);
+void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData);
+void MpVideoViewHideSoundpath(void* pUserData);
+void MpVideoViewCtrlChangeTitle(void *pUserData);
+void MpVideoViewCtrlUpdateSubtitle(double nDuration, char* szSubtitleString);
+bool MpVideoViewCtrlIsTopView(void *pUserData);
+void MpVideoViewCtrlShowNocontentImage(void);
+void MpVideoViewCtrlHideNocontentImage(void);
+
+#endif //_VIDEO_VIEW_CTRL_
--- /dev/null
+/*\r
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * This file is part of org.tizen.video-player\r
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall\r
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability\r
+ * of the software, either express or implied, including but not\r
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as\r
+ * a result of using, modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+\r
+\r
+\r
+#ifndef _MP_XML_PARSER_H_\r
+#define _MP_XML_PARSER_H_\r
+\r
+\r
+#include <stdio.h>\r
+#include <stdbool.h>\r
+\r
+\r
+\r
+void mp_xml_init();\r
+void mp_xml_destroy();\r
+\r
+unsigned int mp_read_xml_file(const char *file_name, char **data);\r
+ bool mp_get_url_from_xml(const char *content, int length, char **streamer_url, int mode);\r
+char *mp_get_title_from_xml(const char *file_name);\r
+int mp_get_xmlitem(const char *content, int length, MpXMLItemInfo *item,int *nHttpCount, int *nRtspCount);\r
+\r
+#endif\r
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#ifndef __VIDEO_PLAYER__
+#define __VIDEO_PLAYER__
+
+#include <stdbool.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+
+
+typedef struct _VideoAppData VideoAppData;
+
+
+typedef struct
+{
+ void (*VideoAppCtrlStart) (VideoAppData* pAppData);
+ void (*VideoAppCtrlStop) (VideoAppData* pAppData);
+ void (*VideoAppCtrlPause) (VideoAppData* pAppData);
+ void (*VideoAppCtrlResume) (VideoAppData* pAppData);
+ void (*VideoAppCtrlStopByAppPause) (VideoAppData* pAppData);
+ void (*VideoAppCtrlStartByAppResume) (VideoAppData* pAppData);
+ void (*VideoAppCtrlFFDown) (VideoAppData* pAppData);
+ void (*VideoAppCtrlRewDown) (VideoAppData* pAppData);
+ void (*VideoAppCtrlFFUp) (VideoAppData* pAppData);
+ void (*VideoAppCtrlRewUp) (VideoAppData* pAppData);
+ void (*VideoAppCtrlSetMute) (VideoAppData* pAppData);
+ void (*VideoAppCtrlSetScreenType) (VideoAppData* pAppData);
+ void (*VideoAppCtrlSetScreenSize) (VideoAppData* pAppData, int nScreenSize);
+ void (*VideoAppCtrlGetPosition) (VideoAppData* pAppData);
+ void (*VideoAppCtrlSetPosition) (VideoAppData* pAppData);
+ void (*VideoAppCtrlHideLayout) (VideoAppData* pAppData);
+ void (*VideoAppCtrlShowLayout) (VideoAppData* pAppData);
+ void (*VideoAppCtrlGetVideoResolution) (VideoAppData* pAppData);
+ void (*VideoAppCtrlReqDurationTime) (VideoAppData* pAppData);
+ void (*VideoAppCtrlChangeResolution) (VideoAppData* pAppData);
+ void (*VideoAppCtrlBeginOfStream) (VideoAppData* pAppData);
+ void (*VideoAppCtrlEndOfStream) (VideoAppData* pAppData);
+ void (*VideoAppCtrlExit) (VideoAppData* pAppData);
+ void (*VideoAppCtrlStartStreaming) (VideoAppData* pAppData);
+ void (*VideoAppCtrlReLaunching) (VideoAppData* pAppData);
+ void (*VideoAppCtrlPlayPreMedia) (VideoAppData* pAppData);
+ void (*VideoAppCtrlPlayNextMedia) (VideoAppData* pAppData);
+ void (*VideoAppCtrlGetBufferingPosition)(VideoAppData* pAppData);
+}VideoAppCtrlFunc;
+
+
+struct _VideoAppData
+{
+ bool bIsMute;
+
+ int nDuration;
+ int nSetPosition;
+ int nCurPosition;
+ int nSubtitleDuration;
+ int nBufferingPosition;
+
+ int nVideoWidthResolution;
+ int nVideoHeightResolution;
+
+ char szSubtitle[STR_LEN_MAX];
+ char szVideoTitle[STR_LEN_MAX];
+
+ char szMediaUri[STR_LEN_MAX];
+ char szPreMediaUri[STR_LEN_MAX];
+ char szNextMediaUri[STR_LEN_MAX];
+ char szTagNameForVideoList[STR_LEN_MAX];
+
+ Evas_Object* pMainWindow;
+
+ MpPlayerState nPrePlayerState;
+ MpPlayerState nCurPlayerState;
+ MpLaunchingAppType nLaunchingAppType;
+ MpMediaSortType nVideoSortType;
+ MpVideoListType nVideoListType;
+ VideoPlayerType nCurPlayerType;
+ VideoAppCtrlFunc VideoAppCtrlCallbackFunc;
+
+ char szProxyAddress[STR_LEN_MAX];
+ char szUserAgent[STR_LEN_MAX];
+ char szCookie[STR_LEN_MAX];
+
+ int nDlnaMediaID;
+ int nDlnaSortType;
+};
+
+#endif //__VIDEO_PLAYER__
--- /dev/null
+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/*;
--- /dev/null
+Name: org.tizen.video-player
+Summary: Video & streaming player
+Version: 0.1.5
+Release: 1
+Group: TO_BE/FILLED_IN
+License: Samsung
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(ui-gadget)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(mm-common)
+BuildRequires: pkgconfig(mm-player)
+BuildRequires: pkgconfig(mm-sound)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(pmapi)
+BuildRequires: pkgconfig(mm-session)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(mm-ta)
+BuildRequires: pkgconfig(mm-fileinfo)
+BuildRequires: pkgconfig(appcore-common)
+BuildRequires: pkgconfig(libmedia-service)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(ail)
+BuildRequires: pkgconfig(efreet-mime)
+
+
+BuildRequires: cmake
+BuildRequires: gettext-tools
+BuildRequires: edje-tools
+BuildRequires: prelink
+BuildRequires: libicu-devel
+
+%description
+Video & streaming player
+
+
+%prep
+%setup -q
+
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX=/opt/apps/org.tizen.video-player
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+
+%make_install
+execstack -c %{buildroot}/opt/apps/org.tizen.video-player/bin/video-player
+
+%post
+chown -R 5000:5000 %dir /opt/apps/org.tizen.video-player/data
+
+%files -n org.tizen.video-player
+/opt/apps/org.tizen.video-player/bin/*
+/opt/apps/org.tizen.video-player/res/locale/*
+/opt/apps/org.tizen.video-player/res/icons/default/small/*
+/opt/apps/org.tizen.video-player/res/edje/*
+/opt/apps/org.tizen.video-player/res/images/*
+/opt/share/applications/*
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+collections {
+ group {
+ name: "favorite";
+ parts {
+ part {
+ name: "background";
+ type, RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 0 0; }
+ rel2 { relative: 1.0 1.0; offset: -1 -1; }
+ color, 0 0 0 255 ;
+ }
+ }
+
+ part {
+ name: "selectall_bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 80;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; to: "background"; }
+ rel2 { relative: 1.0 0.0; to: "background"; }
+ visible : 0;
+ color: 37 37 37 153;
+ visible : 0;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "selectall_check_leftpadding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 15 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+
+ color: 0 0 0 255;
+ visible: 0;
+ rel1 { relative: 0.0 0.0; to: "selectall_bg"; }
+ rel2 { relative: 0.0 1.0; to: "selectall_bg"; }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+ part {
+ name: "selectall_check";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 1 1;
+ min: 44 44;
+ rel1 { relative: 1.0 0.0; to: "selectall_check_leftpadding"; }
+ rel2 { relative: 1.0 1.0; to: "selectall_check_leftpadding"; }
+ visible : 0;
+
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "selectall_check_rightpadding";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 15 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "selectall_check"; }
+ rel2 { relative: 1.0 1.0; to: "selectall_check"; }
+ visible: 0;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "selectall_text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "selectall_check_rightpadding"; }
+ rel2 { relative: 1.0 1.0; to: "selectall_bg"; }
+ color: 255 255 255 255;
+ text {
+ font: "SLP";
+ size: 32;
+ text: "Select all";
+ align: 0.0 0.5;
+ }
+ visible: 0;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "selectall_inner";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+
+ description {
+ state: "defalut" 0.0;
+ min: 0 1;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to: "selectall_bg"; }
+ rel2 { relative: 1.0 1.0; to: "selectall_bg"; }
+ color: 90 90 90 0;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+
+
+ // tab style container
+ part {
+ name: "elm.swallow.tabbar";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ }
+ }
+
+ // tool style container.
+ part {
+ name: "elm.swallow.toolbar_bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 0 50;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; offset: 0 50;}
+
+ }
+ }
+
+ // tool style container.
+ part {
+ name: "elm.swallow.toolbar";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ //min: 0 76;
+ min: 0 86;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0;}
+ rel2 { relative: 1.0 1.0;}
+
+ }
+ description {
+ state: "moveup" 0.0;
+ //min: 0 86;
+ min: 0 50;
+ fixed: 1 1;
+ //align: 0.5 1.0;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; offset: 5 0;}
+ rel2 { relative: 1.0 0.0; offset: -5 50;}
+
+ }
+ description {
+ state: "moveup_progressbar" 0.0;
+ min: 0 62;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 0.0; offset: 0 62;}
+
+ }
+ }
+
+ // view container. This is used, when tool items is added.
+ part {
+ name: "elm.swallow.view";
+ type: SWALLOW;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";}
+
+ }
+ description {
+ state: "edit_default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "selectall_inner"; }
+ rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";}
+
+ }
+ description {
+ state: "moveup_toolbar" 0.0;
+ rel1 { relative: 0.0 1.0; offset: 0 0; to: "elm.swallow.toolbar_bg";}
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "moveup_toolbar_progressbar" 0.0;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.toolbar";}
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+ part {
+ name: "view_bg";
+ type: SWALLOW;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 0 0; to: "elm.swallow.view";}
+ rel2 { relative: 1.0 1.0; offset: 0 0; to: "elm.swallow.view";}
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }//GROUP
+
+ programs {
+ program {
+ name: "swallow_view_default";
+ signal: "elm,swallow_view,state,default";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.view", "default", 0.0);
+ set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position
+ }
+ }
+ program {
+ name: "swallow_view_edit_default";
+ signal: "elm,swallow_view,state,edit_default";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.view", "edit_default", 0.0);
+ set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position
+ }
+ }
+ program {
+ name: "swallow_view_moveup_toolbar";
+ signal: "elm,swallow_view,state,moveup_toolbar";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.toolbar", "moveup", 0.0); //move toolbar up
+ set_state(PART:"elm.swallow.view", "moveup_toolbar", 0.0);
+ }
+ }
+ program {
+ name: "swallow_view_moveup_toolbar_progressbar";
+ signal: "elm,swallow_view,state,moveup_toolbar_progressbar";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.toolbar", "moveup_progressbar", 0.0); //move toolbar+progressbar up
+ set_state(PART:"elm.swallow.view", "moveup_toolbar_progressbar", 0.0);
+ }
+ }
+ program {
+ name: "view_bg_default";
+ signal: "elm,view,bg,state,default";
+ source: "elm";
+ script {
+ set_state(PART:"view_bg", "default", 0.0);
+ }
+ }
+ program {
+ name: "view_bg_disable";
+ signal: "elm,view,bg,state,disabled";
+ source: "elm";
+ script {
+ set_state(PART:"view_bg", "disabled", 0.0);
+ }
+ }
+ program {
+ name: "selectall_show";
+ signal: "selectall_show";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
+ target: "selectall_bg";
+ target: "selectall_check_leftpadding";
+ target: "selectall_check";
+ target: "selectall_check_rightpadding";
+ target: "selectall_text";
+ target: "selectall_inner";
+ }
+ program {
+ name: "selectall_hide";
+ signal: "selectall_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "selectall_bg";
+ target: "selectall_check_leftpadding";
+ target: "selectall_check";
+ target: "selectall_check_rightpadding";
+ target: "selectall_text";
+ target: "selectall_inner";
+ }
+ }//PROGRAMS
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_STEP(_item_name_, _val_) \
+program { \
+ signal: "signal."_item_name_".step."_val_; \
+ source: "*"; \
+ action: STATE_SET "step_"_val_ 0.0; \
+ target: _item_name_; \
+} /* CONTROL_BUTTON_STEP */
+
+
+collections {
+ group {
+ name: "animation";
+
+ parts {
+
+ part {
+ name: "loading.back";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 0 0 255;
+ }
+ }
+
+ part {
+ name: "loading.txt";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 288 54;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: FONT_COLOR;
+ text {
+ font: FONT_NANE;
+ size: 32;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+
+ }
+ part {
+ name: "loading.image";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 138 138;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5;}
+ rel2 { relative: 0.5 0.5;}
+ image { normal: "gallery_loading_ani_01.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_01.png"; }
+ }
+ description {
+ state: "step_1" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_01.png"; }
+ }
+ description {
+ state: "step_2" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_02.png"; }
+ }
+ description {
+ state: "step_3" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_03.png"; }
+ }
+ description {
+ state: "step_4" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_04.png"; }
+ }
+ description {
+ state: "step_5" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_05.png"; }
+ }
+ description {
+ state: "step_6" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_06.png"; }
+ }
+ description {
+ state: "step_7" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_07.png"; }
+ }
+ description {
+ state: "step_8" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_08.png"; }
+ }
+ description {
+ state: "step_9" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_09.png"; }
+ }
+ description {
+ state: "step_10" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_10.png"; }
+ }
+ description {
+ state: "step_11" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_11.png"; }
+ }
+ description {
+ state: "step_12" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_12.png"; }
+ }
+ description {
+ state: "step_13" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_13.png"; }
+ }
+ description {
+ state: "step_14" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_14.png"; }
+ }description {
+ state: "step_15" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_15.png"; }
+ }
+ description {
+ state: "step_16" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_16.png"; }
+ }
+ description {
+ state: "step_17" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_17.png"; }
+ }
+ description {
+ state: "step_18" 0.0;
+ inherit: "show" 0.0;
+ image { normal: "gallery_loading_ani_18.png"; }
+ }
+ description {
+ state: "step_19" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_19.png"; }
+ }
+ description {
+ state: "step_20" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_20.png"; }
+ }
+ description {
+ state: "step_21" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_21.png"; }
+ }
+ description {
+ state: "step_22" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_22.png"; }
+ }
+ description {
+ state: "step_23" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_23.png"; }
+ }
+ description {
+ state: "step_24" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_24.png"; }
+ }
+ description {
+ state: "step_25" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_25.png"; }
+ }
+ description {
+ state: "step_26" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_26.png"; }
+ }
+ description {
+ state: "step_27" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_27.png"; }
+ }
+ description {
+ state: "step_28" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_28.png"; }
+ }
+ description {
+ state: "step_29" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_29.png"; }
+ }
+ description {
+ state: "step_30" 0.0;
+ inherit: "show" 0.0;
+ visible: 1;
+ image { normal: "gallery_loading_ani_30.png"; }
+ }
+
+ description {
+ state: "step_0" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } /* parts */
+ programs {
+ CONTROL_BUTTON_STEP( "loading.image", 0);
+ CONTROL_BUTTON_STEP( "loading.image", 1);
+ CONTROL_BUTTON_STEP( "loading.image", 2);
+ CONTROL_BUTTON_STEP( "loading.image", 3);
+ CONTROL_BUTTON_STEP( "loading.image", 4);
+ CONTROL_BUTTON_STEP( "loading.image", 5);
+ CONTROL_BUTTON_STEP( "loading.image", 6);
+ CONTROL_BUTTON_STEP( "loading.image", 7);
+ CONTROL_BUTTON_STEP( "loading.image", 8);
+ CONTROL_BUTTON_STEP( "loading.image", 9);
+ CONTROL_BUTTON_STEP( "loading.image", 10);
+ CONTROL_BUTTON_STEP( "loading.image", 11);
+ CONTROL_BUTTON_STEP( "loading.image", 12);
+ CONTROL_BUTTON_STEP( "loading.image", 13);
+ CONTROL_BUTTON_STEP( "loading.image", 14);
+ CONTROL_BUTTON_STEP( "loading.image", 15);
+ CONTROL_BUTTON_STEP( "loading.image", 16);
+ CONTROL_BUTTON_STEP( "loading.image", 17);
+ CONTROL_BUTTON_STEP( "loading.image", 18);
+ CONTROL_BUTTON_STEP( "loading.image", 19);
+ CONTROL_BUTTON_STEP( "loading.image", 20);
+ CONTROL_BUTTON_STEP( "loading.image", 21);
+ CONTROL_BUTTON_STEP( "loading.image", 22);
+ CONTROL_BUTTON_STEP( "loading.image", 23);
+ CONTROL_BUTTON_STEP( "loading.image", 24);
+ CONTROL_BUTTON_STEP( "loading.image", 25);
+ CONTROL_BUTTON_STEP( "loading.image", 26);
+ CONTROL_BUTTON_STEP( "loading.image", 27);
+ CONTROL_BUTTON_STEP( "loading.image", 28);
+ CONTROL_BUTTON_STEP( "loading.image", 29);
+ CONTROL_BUTTON_STEP( "loading.image", 30);
+
+ } /* programs */
+ } /* group */
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define BUTTON_PRESS_COLOR 240 123 20 255
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+/* part macro */
+
+#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _img_def_ , _img_press_ ) \
+part { \
+ name: _name_; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; } \
+ rel2 { relative: _rel_x2_ _rel_y2_; } \
+ image { normal: _img_def_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; } \
+ rel2 { relative: _rel_x2_ _rel_y2_; } \
+ image { normal: _img_press_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+} /* CONTROL_BUTTON_PRESS_PART */
+
+
+
+/* program macro */
+
+#define CONTROL_BUTTON_PROG(_item_name_) \
+program { \
+ name: _item_name_".pressed"; \
+ source: _item_name_; \
+ signal: "mouse,down,1"; \
+ action: STATE_SET "pressed" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".down.signal"; \
+} \
+program { \
+ name: _item_name_".clicked"; \
+ source: _item_name_; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".up.signal"; \
+} \
+program { \
+ name: "send."_item_name_".down.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \
+} \
+program { \
+ name: "send."_item_name_".up.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \
+} /* CONTROL_BUTTON_PROG */
+
+
+
+
+
+collections {
+ group {
+ name: "control";
+
+ script {
+ public val_volume_check = 0; /* 0: unmute, 1: mute */
+ public val_play_status = 0; /* 0: pause , 1: resume */
+ public val_display_mode = 0; /* 0: normal, 1: streaming */
+ public val_ff_mode = 0; /* 0: normal, 1: extend */
+ public val_rew_mode = 0; /* 0: normal, 1: extend */
+
+ public change_display_mode() {
+
+ run_program(PROGRAM:"set.visible.off");
+
+ if(get_int(val_display_mode ) == 0) { /* normal mode */
+ run_program(PROGRAM:"set.mode.normal");
+ }
+ if(get_int(val_display_mode ) == 1) { /* streaming mode */
+ run_program(PROGRAM:"set.mode.streaming");
+ }
+ } /* change_display_mode */
+
+
+ public set_volume_check() {
+ if(get_int(val_volume_check ) == 0) {
+ run_program(PROGRAM:"set.volume.unmute");
+ }
+ else {
+ run_program(PROGRAM:"set.volume.mute");
+ }
+ } /* set_volume_check */
+
+ public send_play_value() {
+ if(get_int(val_play_status ) == 0) {
+ run_program(PROGRAM:"send.play.resume");
+ }
+ else {
+ run_program(PROGRAM:"send.play.pause");
+ }
+ } /* send_play_value */
+
+
+ public set_play_status() {
+ if(get_int(val_play_status ) == 0) {
+ run_program(PROGRAM:"set.play.default");
+ }
+ else {
+ run_program(PROGRAM:"set.play.pause");
+ }
+ } /* set_play_status */
+
+
+ public set_play_button_press() {
+ if(get_int(val_play_status ) == 0) {
+ run_program(PROGRAM:"press.resume.button");
+ }
+ else {
+ run_program(PROGRAM:"press.pause.button");
+ }
+ } /* set_play_button_press */
+
+ public change_ff_mode() {
+ if(get_int(val_ff_mode ) == 0) {
+ run_program(PROGRAM:"set.ff.normal.mode");
+ }
+ else {
+ run_program(PROGRAM:"set.ff.extend.mode");
+ }
+
+ } /* change_ff_mode */
+
+ public change_rew_mode() {
+ if(get_int(val_rew_mode ) == 0) {
+ run_program(PROGRAM:"set.rew.normal.mode");
+ }
+ else {
+ run_program(PROGRAM:"set.rew.extend.mode");
+ }
+ } /* change_rew_mode */
+
+ public check_ff_press() {
+ if(get_int(val_ff_mode ) == 0) {
+ run_program(PROGRAM:"set.ff.normal.press");
+ }
+ else {
+ run_program(PROGRAM:"set.ff.extend.press");
+ }
+
+ } /* check_ff_press */
+
+ public check_rew_press() {
+ if(get_int(val_rew_mode ) == 0) {
+ run_program(PROGRAM:"set.rew.normal.press");
+ }
+ else {
+ run_program(PROGRAM:"set.rew.extend.press");
+ }
+ } /* check_rew_press */
+ } /* script */
+
+ parts {
+ part {
+ name: "control.rect";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ visible : 0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 255 0 0 0;
+ }
+ }
+
+ CONTROL_BUTTON_PRESS_PART("control.back.button.bg", 74 ,74, 1.0, 0.0, 1.0, 1.0, 0.15625, 0.15625, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+ part {
+ name: "control.back.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.back.button.bg"; }
+ rel2 { relative: 0.5 0.5; to: "control.back.button.bg"; }
+ image { normal: "T01_back.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ CONTROL_BUTTON_PRESS_PART("control.volume.button.bg", 74 ,74, 0.0, 0.0, 0.0, 0.0, 0.15625, 0.15625, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+ part {
+ name: "control.volume.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+ rel2 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+ image { normal: "gallery_video_icon_volume.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "mute" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+ rel2 { relative: 0.5 0.5; to: "control.volume.button.bg"; }
+ image { normal: "gallery_video_icon_mute.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "control.play.button";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 80;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.2205; }
+ rel2 { relative: 0.5 0.2205; }
+ image { normal: "gallery_video_control_play.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "pause" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_pause.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "press_resume" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_play.png"; }
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "press_pause" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_pause.png"; }
+ color: BUTTON_PRESS_COLOR;
+ }
+ }
+
+
+ /* normal mode control part */
+ part {
+ name: "control.normal.rew.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 80;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.3 0.2205; }
+ rel2 { relative: 0.3 0.2205; }
+ image { normal: "gallery_video_control_rew.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "extend" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_prev.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "pressed.extend" 0.0;
+ inherit: "extend" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "control.normal.ff.button";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 80 80;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.7 0.2205; }
+ rel2 { relative: 0.7 0.2205; }
+ image { normal: "gallery_video_control_ff.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "extend" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "gallery_video_control_next.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "pressed.extend" 0.0;
+ inherit: "extend" 0.0;
+ color: BUTTON_PRESS_COLOR;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ /* <-- normal mode control part */
+
+ } /* parts */
+
+
+ programs {
+ program {
+ signal: "signal.control.mode.normal";
+ source: "*";
+ script {
+ set_int(val_display_mode, 0);
+ change_display_mode();
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.mode.streaming";
+ source: "*";
+ script {
+ set_int(val_display_mode, 1);
+ change_display_mode();
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.mode.visible.off";
+ source: "*";
+ after: "set.visible.off";
+ }
+
+ program {
+ name: "set.visible.off";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.back.button.bg";
+ target: "control.volume.button";
+ target: "control.volume.button.bg";
+ target: "control.normal.rew.button";
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.mode.normal";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.back.button.bg";
+ target: "control.volume.button";
+ target: "control.volume.button.bg";
+ target: "control.normal.rew.button";
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.mode.streaming";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+
+ target: "control.play.button";
+ target: "control.back.button";
+ target: "control.back.button.bg";
+ target: "control.volume.button";
+ target: "control.volume.button.bg";
+ }
+
+ program {
+ signal: "signal.control.back.button.down";
+ source: "control.back.button";
+ script: { set_state(PART:"control.back.button.bg", "pressed", 0.0); }
+ }
+
+ program {
+ signal: "signal.control.back.button.up";
+ source: "control.back.button";
+ script: { set_state(PART:"control.back.button.bg", "default", 0.0); }
+ }
+
+ program {
+ name: "control.volume.button.bg.press";
+ source: "control.volume.button";
+ signal: "signal.control.volume.button.down";
+ script: {
+ set_state(PART:"control.volume.button.bg", "pressed", 0.0);
+ set_volume_check();
+ }
+ }
+
+ program {
+ name: "control.volume.button.bg.up";
+ source: "control.volume.button";
+ signal: "signal.control.volume.button.up";
+ script: {
+ set_state(PART:"control.volume.button.bg", "default", 0.0);
+ set_volume_check();
+ }
+ }
+
+ program {
+ name: "control.normal.rew.button.press";
+ source: "control.normal.rew.button";
+ signal: "signal.control.normal.rew.button.down";
+ script: {
+ check_rew_press();
+ }
+ }
+
+ program {
+ name: "control.normal.ff.button.press";
+ source: "control.normal.ff.button";
+ signal: "signal.control.normal.ff.button.down";
+ script: {
+ check_ff_press();
+ }
+ }
+
+ program {
+ name: "control.normal.rew.button.up";
+ source: "control.normal.rew.button";
+ signal: "signal.control.normal.rew.button.up";
+ script: {
+ change_rew_mode();
+ }
+ }
+
+ program {
+ name: "control.normal.ff.button.up";
+ source: "control.normal.ff.button";
+ signal: "signal.control.normal.ff.button.up";
+ script: {
+ change_ff_mode();
+ }
+ }
+
+
+ /* --> mute/unmute check prog*/
+ program {
+ signal: "signal.control.volume.button.mute";
+ source: "*";
+ script {
+ set_int(val_volume_check, 1);
+ set_volume_check();
+ }
+ }
+
+ program {
+ signal: "signal.control.volume.button.unmute";
+ source: "*";
+ script {
+ set_int(val_volume_check, 0);
+ set_volume_check();
+ }
+ }
+
+ program {
+ name: "set.volume.unmute";
+ action: STATE_SET "default" 0.0;
+ target: "control.volume.button";
+ }
+ program {
+ name: "set.volume.mute";
+ action: STATE_SET "mute" 0.0;
+ target: "control.volume.button";
+ }
+ /* --> mute/unmute check prog*/
+
+ /* --> play status part */
+ program {
+ name: "press.resume.button";
+ action: STATE_SET "press_resume" 0.0;
+ target: "control.play.button";
+ }
+ program {
+ name: "press.pause.button";
+ action: STATE_SET "press_pause" 0.0;
+ target: "control.play.button";
+ }
+
+ program {
+ name: "control.play.button.down";
+ source: "control.play.button";
+ signal: "signal.control.play.button.down";
+ script: {set_play_button_press(); }
+ }
+
+ program {
+ name: "control.play.button.up";
+ source: "control.play.button";
+ signal: "signal.control.play.button.up";
+ script: { send_play_value(); }
+ }
+
+
+ program {
+ name: "set.ff.normal.mode";
+ action: STATE_SET "default" 0.0;
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.rew.normal.mode";
+ action: STATE_SET "default" 0.0;
+ target: "control.normal.rew.button";
+ }
+
+ program {
+ name: "set.ff.extend.mode";
+ action: STATE_SET "extend" 0.0;
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.rew.extend.mode";
+ action: STATE_SET "extend" 0.0;
+ target: "control.normal.rew.button";
+ }
+
+ program {
+ name: "set.ff.normal.press";
+ action: STATE_SET "pressed" 0.0;
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.rew.normal.press";
+ action: STATE_SET "pressed" 0.0;
+ target: "control.normal.rew.button";
+ }
+
+ program {
+ name: "set.ff.extend.press";
+ action: STATE_SET "pressed.extend" 0.0;
+ target: "control.normal.ff.button";
+ }
+
+ program {
+ name: "set.rew.extend.press";
+ action: STATE_SET "pressed.extend" 0.0;
+ target: "control.normal.rew.button";
+ }
+
+ program {
+ signal: "signal.control.play.resume";
+ source: "*";
+ script {
+ set_int(val_play_status, 1);
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.play.pause";
+ source: "*";
+ script {
+ set_int(val_play_status, 0);
+ set_play_status();
+ }
+ }
+
+ program {
+ signal: "signal.control.ff.normal";
+ source: "*";
+ script {
+ set_int(val_ff_mode, 0);
+ change_ff_mode();
+ }
+ }
+
+ program {
+ signal: "signal.control.ff.extend";
+ source: "*";
+ script {
+ set_int(val_ff_mode, 1);
+ change_ff_mode();
+ }
+ }
+
+ program {
+ signal: "signal.control.rew.normal";
+ source: "*";
+ script {
+ set_int(val_rew_mode, 0);
+ change_rew_mode();
+ }
+ }
+
+ program {
+ signal: "signal.control.rew.extend";
+ source: "*";
+ script {
+ set_int(val_rew_mode, 1);
+ change_rew_mode();
+ }
+ }
+
+ program {
+ name: "set.play.default";
+ source: "control.play.button";
+ action: STATE_SET "default" 0.0;
+ target: "control.play.button";
+ }
+ program {
+ name: "set.play.pause";
+ source: "control.play.button";
+ action: STATE_SET "pause" 0.0;
+ target: "control.play.button";
+ }
+
+ program {
+ name: "send.play.pause";
+ action: SIGNAL_EMIT "signal.control.play.pause.press" "control.play.button";
+ }
+
+ program {
+ name: "send.play.resume";
+ action: SIGNAL_EMIT "signal.control.play.resume.press" "control.play.button";
+ }
+ /* <-- play status part */
+
+ /* -->common control prog */
+ CONTROL_BUTTON_PROG("control.play.button");
+ CONTROL_BUTTON_PROG("control.back.button");
+ CONTROL_BUTTON_PROG("control.volume.button");
+ /* <-- common control prog */
+
+ /* -->normal mode prog */
+ CONTROL_BUTTON_PROG("control.normal.ff.button");
+ CONTROL_BUTTON_PROG("control.normal.rew.button");
+
+ /* <-- normal mode prog */
+ } /*programs */
+ } /* group */
+} /* collections */
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "detail";
+
+ parts {
+ part {
+ name: "detail.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 255;
+ }
+ }
+ part {
+ name: "detail.list";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+/* program macro */
+
+#define CONTROL_BUTTON_PROG(_item_name_) \
+program { \
+ name: _item_name_".pressed"; \
+ source: _item_name_; \
+ signal: "mouse,down,1"; \
+ action: STATE_SET "pressed" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".down.signal"; \
+} \
+program { \
+ name: _item_name_".clicked"; \
+ source: _item_name_; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".up.signal"; \
+} \
+program { \
+ name: "send."_item_name_".down.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \
+} \
+program { \
+ name: "send."_item_name_".up.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \
+} /* CONTROL_BUTTON_PROG */
+
+collections {
+ group {
+ name: "hidden_panel";
+
+ script {
+ public val_quality_select = 1; /* 0: normal, 1: high */
+ public set_quality_check() {
+ if(get_int(val_quality_select ) == 0) {
+ run_program(PROGRAM:"set.streaming.quality.normal");
+ }
+ if(get_int(val_quality_select ) == 1) {
+ run_program(PROGRAM:"set.streaming.quality.high");
+ }
+ if(get_int(val_quality_select ) == 2) {
+ run_program(PROGRAM:"set.streaming.quality.hide");
+ }
+ }
+ } /* scrpit */
+
+ parts {
+ part {
+ name: "hidden.button.panel.soundpath";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 72 72;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 0.0 0.0;}
+ color: 255 255 255 255;
+ image { normal: "T01_icon_soundPath.png"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image { normal: "T01_icon_soundPath_press.png"; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "control.streaming.hq.button.bg";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 72 72;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ image { normal: "T01_controller_btn_press.png"; border: 4 4 0 0;}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "normal" 0.0;
+ visible: 1;
+ min: 72 72;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ image { normal: "T01_controller_btn.png"; border: 4 4 0 0;}
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+
+ part {
+ name: "control.streaming.hq.txt";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ visible: 1;
+ min: 72 72;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ text {
+ font: FONT_NANE;
+ size: 26;
+ text: "HQ";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "normal" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "control.streaming.hq.button";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 48 48;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0;}
+ rel2 { relative: 1.0 0.0;}
+ color: 255 255 255 0;
+ }
+ description {
+ state: "normal" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ name: "hidden.button.panel.soundpath.pressed";
+ source: "hidden.button.panel.soundpath";
+ signal: "mouse,down,1";
+ action: STATE_SET "pressed" 0.0;
+ target: "hidden.button.panel.soundpath";
+ after: "send.hidden.button.panel.soundpath.down.signal";
+ }
+
+ program {
+ name: "send.hidden.button.panel.soundpath.down.signal";
+ action: SIGNAL_EMIT "signal.hidden.button.panel.soundpath.down" "hidden.button.panel.soundpath";
+ }
+
+ program {
+ name: "hidden.button.panel.soundpath.clicked";
+ source: "hidden.button.panel.soundpath";
+ signal: "mouse,up,1";
+ action: STATE_SET "default" 0.0;
+ target: "hidden.button.panel.soundpath";
+ after: "send.hidden.button.panel.soundpath.up.signal";
+ }
+
+ program {
+ name: "send.hidden.button.panel.soundpath.up.signal";
+ action: SIGNAL_EMIT "signal.hidden.button.panel.soundpath.up" "hidden.button.panel.soundpath";
+ }
+
+ program {
+ signal: "signal.hidden.button.panel.soundpath.show";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "hidden.button.panel.soundpath";
+ }
+
+ program {
+ signal: "signal.hidden.button.panel.soundpath.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "hidden.button.panel.soundpath";
+ }
+
+ program {
+ signal: "signal.control.streaming.quality.high";
+ source: "*";
+ script {
+ set_int(val_quality_select, 1);
+ set_quality_check();
+ }
+ }
+
+ program {
+ signal: "signal.control.streaming.quality.normal";
+ source: "*";
+ script {
+ set_int(val_quality_select, 0);
+ set_quality_check();
+ }
+ }
+
+ program {
+ signal: "signal.control.streaming.quality.hide";
+ source: "*";
+ script {
+ set_int(val_quality_select, 2);
+ set_quality_check();
+ }
+ }
+
+ program {
+ name: "set.streaming.quality.high";
+ action: STATE_SET "default" 0.0;
+ target: "control.streaming.hq.button.bg";
+ target: "control.streaming.hq.txt";
+ target: "control.streaming.hq.button";
+ }
+
+ program {
+ name: "set.streaming.quality.normal";
+ action: STATE_SET "normal" 0.0;
+ target: "control.streaming.hq.button.bg";
+ target: "control.streaming.hq.txt";
+ target: "control.streaming.hq.button";
+ }
+
+ program {
+ name: "set.streaming.quality.hide";
+ action: STATE_SET "hide" 0.0;
+ target: "control.streaming.hq.button.bg";
+ target: "control.streaming.hq.txt";
+ target: "control.streaming.hq.button";
+ }
+
+ CONTROL_BUTTON_PROG("control.streaming.hq.button");
+ } /* programs */
+ } /* group */
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+images {
+ image: "gallery_video_player_bg.png" COMP;
+ image: "gallery_video_popup_mute.png" COMP;
+ image: "gallery_video_control_pause.png" COMP;
+ image: "gallery_video_control_play.png" COMP;
+ image: "gallery_video_control_next.png" COMP;
+ image: "gallery_video_control_prev.png" COMP;
+ image: "gallery_video_control_rew.png" COMP;
+ image: "gallery_video_control_ff.png" COMP;
+ image: "gallery_video_icon_volume.png" COMP;
+ image: "gallery_video_icon_mute.png" COMP;
+ image: "gallery_video_icon_btn.png" COMP;
+ image: "gallery_video_icon_btn_press.png" COMP;
+ image: "gallery_video_control_frame_back.png" COMP;
+ image: "gallery_video_control_frame_forword.png" COMP;
+ image: "gallery_video_add_btn.png" COMP;
+ image: "gallery_video_add_btn_press.png" COMP;
+ image: "gallery_video_delete_btn.png" COMP;
+ image: "gallery_video_delete_btn_press.png" COMP;
+ image: "T01_sound_path.png" COMP;
+ image: "video_sound_path_dim.png" COMP;
+ image: "T01_player_progress_point.png" COMP;
+ image: "T01_player_progress_bar.png" COMP;
+ image: "T01_player_progress_bg.png" COMP;
+ image: "gallery_loading_ani_01.png" COMP;
+ image: "gallery_loading_ani_02.png" COMP;
+ image: "gallery_loading_ani_03.png" COMP;
+ image: "gallery_loading_ani_04.png" COMP;
+ image: "gallery_loading_ani_05.png" COMP;
+ image: "gallery_loading_ani_06.png" COMP;
+ image: "gallery_loading_ani_07.png" COMP;
+ image: "gallery_loading_ani_08.png" COMP;
+ image: "gallery_loading_ani_09.png" COMP;
+ image: "gallery_loading_ani_10.png" COMP;
+ image: "gallery_loading_ani_11.png" COMP;
+ image: "gallery_loading_ani_12.png" COMP;
+ image: "gallery_loading_ani_13.png" COMP;
+ image: "gallery_loading_ani_14.png" COMP;
+ image: "gallery_loading_ani_15.png" COMP;
+ image: "gallery_loading_ani_16.png" COMP;
+ image: "gallery_loading_ani_17.png" COMP;
+ image: "gallery_loading_ani_18.png" COMP;
+ image: "gallery_loading_ani_19.png" COMP;
+ image: "gallery_loading_ani_20.png" COMP;
+ image: "gallery_loading_ani_21.png" COMP;
+ image: "gallery_loading_ani_22.png" COMP;
+ image: "gallery_loading_ani_23.png" COMP;
+ image: "gallery_loading_ani_24.png" COMP;
+ image: "gallery_loading_ani_25.png" COMP;
+ image: "gallery_loading_ani_26.png" COMP;
+ image: "gallery_loading_ani_27.png" COMP;
+ image: "gallery_loading_ani_28.png" COMP;
+ image: "gallery_loading_ani_29.png" COMP;
+ image: "gallery_loading_ani_30.png" COMP;
+ image: "navibar_item_separator_shadow.png" COMP;
+ image: "T01_control_top_arrow.png" COMP;
+ image: "T01_control_top_bg.png" COMP;
+ image: "T01_Option_header_bt_press.png" COMP;
+ image: "T01_Option_header_bt.png" COMP;
+ image: "T01_toolbar_bg.png" COMP;
+ image: "T01_toolbar_press.png" COMP;
+ image: "T01_icon_reduce.png" COMP;
+ image: "T01_icon_expand.png" COMP;
+ image: "T01_icon_soundPath.png" COMP;
+ image: "T01_icon_soundPath_press.png" COMP;
+ image: "T01_controller_btn.png" COMP;
+ image: "T01_controller_btn_press.png" COMP;
+ image: "00_winset_control_top_arrow.png" COMP;
+ image: "naviframe_optionheader.png" COMP;
+ image: "naviframe_optionheader_arrow.png" COMP;
+ image: "T01_btn_prev.png" COMP;
+ image: "00_button_01_normal.png" COMP;
+ image: "00_button_01_normal_press.png" COMP;
+ image: "00_button_01_normal_dim.png" COMP;
+ image: "T01_control_icon_fullscreen.png" COMP;
+ image: "T01_control_icon_detail.png" COMP;
+ image: "T01_controlbar_icon_cancel.png" COMP;
+ image: "T01_control_icon_reduce.png" COMP;
+ image: "T01_Nocontents_multimedia.png" COMP;
+ image: "T01_back.png" COMP;
+}
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define GRAY_RECT_COLOR 128 128 128 128
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "main";
+
+ parts {
+ part {
+ name: "main.background";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 255 255 0;
+ }
+ }
+ part {
+ name: "main.screen.touch";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.065; }
+ rel2 { relative: 1.0 0.78; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "main.mute.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 399 399;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.4;}
+ rel2 { relative: 0.5 0.4;}
+ image { normal: "gallery_video_player_bg.png"; border: 7 7 0 0; }
+ color: GRAY_RECT_COLOR;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "main.mute.image";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 144 144;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.4;}
+ rel2 { relative: 0.5 0.4;}
+ image { normal: "gallery_video_popup_mute.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "main.nocontents.bg";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 399 399;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.4;}
+ rel2 { relative: 0.5 0.4;}
+ image { normal: "gallery_video_player_bg.png"; border: 7 7 0 0; }
+ color: GRAY_RECT_COLOR;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "main.nocontents.image";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 144 144;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.4;}
+ rel2 { relative: 0.5 0.4;}
+ image { normal: "T01_Nocontents_multimedia.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "main.option.button.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 96;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ color: 37 37 37 64;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "main.option.button";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 96;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "main.hidden.button";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 112;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0277 0.0; to_y: "main.panel";}
+ rel2 { relative: 0.9723 0.0; to_y: "main.panel";}
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "main.panel";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 266;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+
+
+
+ part { name: "main.animation";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 288 195;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.5 0.4;}
+ rel2 { relative: 0.5 0.4;}
+ color: 255 0 0 255;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ } /* parts */
+
+ programs {
+ program {
+ name: "signal.main.screen.touch";
+ source: "main.screen.touch";
+ signal: "mouse,up,1";
+ action: SIGNAL_EMIT "signal.main.screen.touch.press" "main.screen.touch.toggle";
+ }
+
+ program {
+ signal: "signal.main.mute.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "main.mute.image";
+ target: "main.mute.bg";
+ }
+
+ program {
+ signal: "signal.main.mute.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "main.mute.image";
+ target: "main.mute.bg";
+ }
+
+ program {
+ signal: "signal.main.nocontents.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "main.nocontents.image";
+ target: "main.nocontents.bg";
+ }
+
+ program {
+ signal: "signal.main.nocontents.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "main.nocontents.image";
+ target: "main.nocontents.bg";
+ }
+
+ program {
+ signal: "signal.main.animation.show";
+ source: "*";
+ action: STATE_SET "show" 0.0;
+ target: "main.animation";
+ }
+ program {
+ signal: "signal.main.animation.hide";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "main.animation";
+ }
+ program {
+ signal: "signal.main.option.button.bg.hide";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "main.option.button.bg";
+ }
+ } /* programs */
+ } /* group */
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _img_def_ , _img_press_ ) \
+part { \
+ name: _name_; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ visible: 0; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; } \
+ rel2 { relative: _rel_x2_ _rel_y2_; } \
+ image { normal: _img_def_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ visible: 1; \
+ min: _w_ _h_; \
+ fixed: 1 1; \
+ align: _align_x_ _align_y_; \
+ rel1 { relative: _rel_x1_ _rel_y1_; } \
+ rel2 { relative: _rel_x2_ _rel_y2_; } \
+ image { normal: _img_press_; border: 4 4 0 0;} \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+} /* CONTROL_BUTTON_PRESS_PART */
+
+
+#define CONTROL_BUTTON_PROG(_item_name_) \
+program { \
+ name: _item_name_".pressed"; \
+ source: _item_name_; \
+ signal: "mouse,down,1"; \
+ action: STATE_SET "pressed" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".down.signal"; \
+} \
+program { \
+ name: _item_name_".clicked"; \
+ source: _item_name_; \
+ signal: "mouse,up,1"; \
+ action: STATE_SET "default" 0.0; \
+ target: _item_name_; \
+ after: "send."_item_name_".up.signal"; \
+} \
+program { \
+ name: "send."_item_name_".down.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \
+} \
+program { \
+ name: "send."_item_name_".up.signal"; \
+ action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \
+} /* CONTROL_BUTTON_PROG */
+
+
+collections {
+ group {
+ name: "option";
+
+ script {
+ public val_screensize_check = 0; /* 0: reduce, 1: full */
+
+ public change_screensize() {
+ if(get_int(val_screensize_check) == 0) {
+ set_int(val_screensize_check, 1);
+ set_state(PART:"option.screensize", "reduce", 0.0);
+ run_program(PROGRAM:"send.screensize.expand");
+ } else {
+ set_int(val_screensize_check, 0);
+ set_state(PART:"option.screensize", "default", 0.0);
+ run_program(PROGRAM:"send.screensize.normal");
+ }
+ }
+
+ }
+
+ parts {
+ part {
+ name: "option.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 255 255 255 0;
+ }
+ }
+
+ CONTROL_BUTTON_PRESS_PART("option.screensize.button.bg", 74 ,74, 0.0, 0.0, 0.05, 0.05, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+ part {
+ name: "option.screensize";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.05 0.114; }
+ rel2 { relative: 0.05 0.114; }
+ image { normal: "T01_control_icon_fullscreen.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "reduce" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image { normal: "T01_control_icon_reduce.png"; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ CONTROL_BUTTON_PRESS_PART("option.detail.button.bg", 74 ,74, 1.0, 0.0, 0.95, 0.95, 0.114, 0.114, "T01_controller_btn.png" , "T01_controller_btn_press.png");
+ part {
+ name: "option.detail";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 74 74;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ rel1 { relative: 0.95 0.114; }
+ rel2 { relative: 0.95 0.114; }
+ image { normal: "T01_control_icon_detail.png"; }
+ color: 255 255 255 255;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+ programs {
+ CONTROL_BUTTON_PROG("option.screensize");
+ CONTROL_BUTTON_PROG("option.detail");
+
+ program {
+ signal: "signal.option.screensize.down";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "option.screensize.button.bg";
+ }
+
+ program {
+ signal: "signal.option.screensize.up";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "option.screensize.button.bg";
+ after: "option.screensize.change";
+ }
+
+ program {
+ name: "option.screensize.change";
+ script: { change_screensize(); }
+ }
+
+ program {
+ name: "send.screensize.normal";
+ action: SIGNAL_EMIT "signal.option.screensize.normal" "option.screensize";
+ }
+
+ program {
+ name: "send.screensize.expand";
+ action: SIGNAL_EMIT "signal.option.screensize.expand" "option.screensize";
+ }
+
+ program {
+ signal: "signal.option.detail.down";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "option.detail.button.bg";
+ }
+
+ program {
+ signal: "signal.option.detail.up";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "option.detail.button.bg";
+ }
+
+ program {
+ signal: "signal.option.mode.streaming";
+ source: "*";
+ action: STATE_SET "hide" 0.0;
+ target: "option.detail";
+ target: "option.detail.button.bg";
+ }
+ } //programs
+ } //parts
+ } //group
+} //collections
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+#define LINE_RECT_COLOR 73 73 73 255
+
+collections {
+ group {
+ name: "panel";
+
+ parts {
+ part {
+ name: "panel.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "panel.progress";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 129;
+ fixed: 0 1;
+ align: 0.5 0.0;
+ color: 255 0 0 255;
+ rel1 { relative: 0.05 0.0;}
+ rel2 { relative: 0.95 0.0;}
+ }
+ }
+ part {
+ name: "panel.line";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 0 3;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.05 0.0; to_y: "panel.control";}
+ rel2 { relative: 0.95 0.0; to_y: "panel.control";}
+ color: LINE_RECT_COLOR;
+ }
+ }
+ part {
+ name: "panel.control";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 136;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.03 1.0;}
+ rel2 { relative: 0.97 1.0;}
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "image_res.edc"
+#include "vp_font.edc"
+
+collections {
+ group {
+ name: "progress";
+ parts {
+ part {
+ name: "progress.rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "progress.bg";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 16;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.4174;}
+ rel2 { relative: 1.0 0.4174;}
+ color: 255 255 255 255;
+ image { normal: "T01_player_progress_bg.png"; }
+ }
+ }
+ part {
+ name: "progress.buffer.bar";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 16;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_x: progress.playing ; to_y: progress.bg; }
+ rel2 { relative: 1.0 1.0; to_x: progress.buffering; to_y: progress.bg; }
+ color: 128 128 128 255;
+ }
+ }
+
+ part {
+ name: "progress.middle";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 16;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: progress.bg; }
+ rel2 { relative: 0.5 1.0; to_x: progress.circle; to_y: progress.bg; }
+ color: 255 255 255 255;
+ image { normal: "T01_player_progress_bar.png";}
+ }
+ }
+ part { name: "progress.buffering";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ min: 18 16;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.5; to: progress.bg; }
+ rel2 { relative: 1.0 1.0; to: progress.bg; }
+ color: 255 255 255 0;
+ }
+ dragable {
+ confine: "progress.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part { name: "progress.confine.rect";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0.0 0.0; to: progress.bg; }
+ rel2 { relative: 1.0 1.0; to: progress.bg; }
+ color: 255 255 255 0;
+ }
+ }
+
+ part {
+ name: "progress.circle";
+ type: IMAGE;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 18 16;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1 { relative: 0.5 0.0; to_x: progress.playing; to_y: progress.bg; }
+ rel2 { relative: 0.5 1.0; to_x: progress.playing; to_y: progress.bg; }
+ color: 255 255 255 255;
+ image { normal: "T01_player_progress_point.png";}
+ }
+ }
+
+ part { name: "progress.playing";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ visible: 1;
+ state: "default" 0.0;
+ color: 255 255 255 0;
+ min: 18 16;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to_y: progress.rect; }
+ rel2 { relative: 0.0 0.0; to_y: progress.rect; }
+ }
+ dragable {
+ confine: "progress.confine.rect";
+ x: 1 1 1;
+ }
+ }
+
+ part { name: "progress.txt.played";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 180 65;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 0.7985; }
+ rel2 { relative: 1.0 0.7985; }
+ color: FONT_START_COLOR;
+ text { font: FONT_NANE;
+ size: 25;
+ text: "00:00:00";
+ align: 0.0 1.0;
+ }
+ }
+ }
+
+ part { name: "progress.txt.total";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 180 65;
+ fixed: 1 1;
+ align: 1.0 1.0;
+ rel1 { relative: 0.0 0.7985; }
+ rel2 { relative: 1.0 0.7985; }
+ color: FONT_END_COLOR;
+ text { font: FONT_NANE;
+ size: 25;
+ text: "--:--:--";
+ align: 1.0 1.0;
+ }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "vp_font.edc"
+#define SUBTITLE_W 400
+#define SUBTITLE_H 100
+
+
+
+collections {
+ group {
+ name: "subtitle";
+
+ parts {
+ part {
+ name: "subtitle.txt";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: SUBTITLE_W SUBTITLE_H;
+ color: FONT_COLOR;
+ color3: 0 0 0 255;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.5; offset: 0 0; }
+ rel2 { relative: 1.0 0.7; offset: 0 0; }
+ text {
+ text_class: "list_line1";
+ font: FONT_NANE;
+ size: TITLE_FONT_SIZE;
+ text: "";
+ align: 0.5 0.5;
+ }
+ }
+ }
+ } /* parts */
+ } /* group */
+} /* collections */
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC 146 124 98 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255
+
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4
+#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC 24
+
+#define BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC 106 40
+#define BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC 36 32
+
+#define NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255
+#define NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255
+
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 5 5
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 108 108 108 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 108 108 108 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 108 115 118 255
+
+///////////////////////////////////////////////////////////////////////////////////////
+ group { name: "elm/button/base/video/style1";
+ alias: "elm/button/base/video/text_only/style1";
+ alias: "elm/button/base/video/center";
+ alias: "elm/button/base/video/icon_and_text/center";
+ alias: "elm/button/base/video/nocontents/search_button";
+ alias: "elm/button/base/video/naviframe/title/default";
+ images {
+ image: "T01_title_btn.png" COMP;
+ image: "T01_title_btn_press.png" COMP;
+ }
+ script {
+ public button_state = BUTTON_STATE_ENABLED;
+ }
+ parts {
+ part { name: "button_image";
+ scale: 1;
+ description { state: "default" 0.0;
+ image {
+ normal: "T01_title_btn.png";
+ border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+ border_scale: 1;
+ }
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal: "T01_title_btn_press.png";
+ }
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal: "T01_title_btn.png";
+ }
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal: "T01_title_btn_press.png";
+ }
+ }
+ }
+ part { name: "padding_left_top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel2 {
+ relative: 0.0 0.0;
+ }
+ min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+ }
+ }
+ part { name: "padding_right_bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1.0 1.0;
+ rel1 {
+ relative: 1.0 1.0;
+ }
+ min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part { name: "icon_rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ description { state: "visible" 0.0;
+ visible: 0;
+ min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "padding_after_icon";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2 {
+ to: "icon_rect";
+ }
+ fixed: 1 0;
+ min: 0 0;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2 {
+ to: "icon_rect";
+ }
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.text";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ }
+ description { state: "visible" 0.0;
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "padding_before_text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "padding_before_text";
+ to_y: "padding_right_bottom";
+ }
+ }
+ description { state: "icononly" 0.0;
+ min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+ align: 0.5 0.5;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "padding_after_icon";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "padding_right_bottom";
+ }
+ color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ }
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ }
+ description { state: "disabled_visible" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+ visible: 1;
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+ }
+ }
+ part { name: "over2";
+ type: RECT;
+ repeat_events: 1;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "clipper";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ after: "text_clicked";
+ }
+ program { name: "text_clicked";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "clicked", 0.0);
+ }
+ }
+ program { name: "button_unpress";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ }
+ program { name: "button_mouseout_clicked";
+ signal: "mouse,up,1";
+ source: "over3";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (strcmp(st, "icononly"))
+ {
+ emit("elm,action,default,text,set", "");
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ if (get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"button_image", "default", 0.0);
+ }
+ after: button_unpress;
+ }
+ program { name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "text_show";
+ signal: "elm,state,text,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "icononly"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"icon_rect", "visible", 0.0);
+ set_state(PART:"padding_after_icon", "visible", 0.0);
+ set_state(PART:"bg", "visible", 0.0);
+ }
+ if (get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"elm.text", "visible", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ }
+ }
+ program { name: "text_hide";
+ signal: "elm,state,text,hidden";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"icon_rect", "icononly", 0.0);
+ set_state(PART:"padding_after_icon", "icononly", 0.0);
+ set_state(PART:"bg", "icononly", 0.0);
+ }
+ set_state(PART:"elm.text", "default", 0.0);
+ }
+ }
+ program { name: "icon_show";
+ signal: "elm,state,icon,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"icon_rect", "visible", 0.0);
+ set_state(PART:"padding_after_icon", "visible", 0.0);
+ set_state(PART:"bg", "visible", 0.0);
+ }
+ else
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"icon_rect", "icononly", 0.0);
+ set_state(PART:"padding_after_icon", "icononly", 0.0);
+ set_state(PART:"bg", "icononly", 0.0);
+ }
+ }
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,icon,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ target: "padding_after_icon";
+ target: "icon_rect";
+ target: "bg";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ after: "disable_text";
+ }
+ program { name: "disable_text";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled", 0.0);
+ set_int(button_state, BUTTON_STATE_DISABLED);
+ }
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ after: "enable_text";
+ }
+ program { name: "enable_text";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "disabled_visible"))
+ set_state(PART:"elm.text", "visible", 0.0);
+ else
+ set_state(PART:"elm.text", "default", 0.0);
+ set_int(button_state, BUTTON_STATE_ENABLED);
+ }
+ }
+ program { name: "focused";
+ //signal: "elm,action,focus";
+ //source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "button_image";
+ target: "elm.text";
+ }
+ program { name: "unfocused";
+ //signal: "elm,action,unfocus";
+ //source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ after: "unfocus_text";
+ }
+ program { name: "unfocus_text";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.text";
+ }
+ }
+ }
+
+///////////////////////////////////////////////////////////////////////////////////////
+ group { name: "elm/button/base/video/naviframe/back_btn/default";
+ alias: "elm/button/base/video/naviframe/prev_btn/default";
+ alias: "elm/button/base/video/naviframe/end_btn/default";
+ //TODO: Remove this alias later
+ alias: "elm/button/base/video/navigationbar_prev_btn/default";
+ alias: "elm/button/base/video/navigationbar_backbutton/default";
+ alias: "elm/button/base/video/navigationbar_end_btn/default";
+ images {
+ image: "T01_btn_prev.png" COMP;
+
+ }
+ parts {
+ part { name: "button_image";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC;
+ color: 0 0 0 0;
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {name: "padding_right";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1 0;
+ min: 1 0;
+ rel1 { relative: 1 0.2; }
+ rel2 { relative: 1 0.8; }
+ fixed: 1 0;
+ color: NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC;
+ }
+ }
+ part {name: "padding_before_right";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1 0;
+ min: 1 0;
+ rel1 { relative: 0 0; to: "padding_right"; }
+ rel2 { relative: 0 1; to: "padding_right"; }
+ fixed: 1 0;
+ color: NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC;
+ }
+ }
+ part { name: "button_center_part";
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC;
+ max: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC;
+ align: 0.5 0.5;
+ rel2 { relative: 0 1; to_x: "padding_before_right"; }
+ image {
+ normal: "T01_btn_prev.png";
+ }
+ }
+ description {
+ state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "T01_btn_prev.png";
+ }
+ }
+ part { name: "over1";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over2";
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over1";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ target: "button_center_part";
+ }
+ program { name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program { name: "button_unclick_anim";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "button_center_part";
+ }
+ program { name: "button_unclick2";
+ signal: "mouse,clicked,1";
+ source: "over1";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disabler";
+ target: "button_image";
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disabler";
+ target: "button_image";
+ }
+ }
+ }
+
+///////////////////////////////////////////////////////////////////////////////////////
+ group { name: "elm/button/base/naviframe_control/multiline";
+ alias: "elm/button/base/video/navigationbar_control/multiline";
+ script {
+ public button_state = BUTTON_STATE_ENABLED;
+ }
+ images.image: "T01_title_btn.png" COMP;
+ images.image: "T01_title_btn_press.png" COMP;
+ styles{
+ style { name: "btn_multiline_navigationbar_controlbar_style";
+ base: "font=SLP:style=Medium font_size="BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ }
+ }
+ parts {
+ part { name: "button_image";
+ type: IMAGE;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC;
+ rel1.offset: 0 0;
+ rel2.offset: -1 -1;
+ image.normal: "T01_title_btn.png";
+ image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC;
+ color: 255 255 255 255;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "T01_title_btn.png";
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "T01_title_btn_press.png";
+ }
+ }
+ part {
+ name: "padding_left_top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ }
+ min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part {
+ name: "padding_right_bottom";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1.0 1.0;
+ rel1.relative: 1.0 1.0;
+ rel2.relative: 1.0 1.0;
+ min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part {
+ name: "icon_rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.swallow.content";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.swallow.content";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ }
+ part {
+ name: "padding_icon_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "icon_rect";
+ }
+ fixed: 1 0;
+ min: 0 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "icon_rect";
+ }
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ }
+ description { state: "visible" 0.0;
+ fixed: 1 0;
+ visible: 1;
+ min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+ max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ }
+ description { state: "icononly" 0.0;
+ visible: 1;
+ min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+ max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "padding_right_bottom";
+ }
+ align: 0.5 0.5;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "padding_icon_text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "padding_right_bottom";
+ }
+ align: 0.5 0.5;
+ color: 255 255 255 255;
+ text {
+ style: "btn_multiline_navigationbar_controlbar_style";
+ min: 0 0;
+ max: 0 1;
+ }
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 80 0;
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 0 0;
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: 0 0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "over2";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "clipper";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description { state: "disabled" 0.0;
+ color: 255 255 255 127;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ after: "text_clicked";
+ }
+ program { name: "text_clicked";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "clicked", 0.0);
+ }
+ }
+ program { name: "button_unpress";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ }
+ program { name: "button_mouseout_clicked";
+ signal: "mouse,up,1";
+ source: "over3";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (strcmp(st, "icononly"))
+ {
+ emit("elm,action,default,text,set", "");
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ if(get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"button_image", "default", 0.0);
+ }
+ after: button_unpress;
+ }
+ program { name: "button_unclick3";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "text_show";
+ signal: "elm,state,text,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "icononly"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"padding_icon_text", "visible", 0.0);
+ }
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ }
+ program { name: "text_hide";
+ signal: "elm,state,text,hidden";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"padding_icon_text", "icononly", 0.0);
+ }
+ set_state(PART:"elm.text", "default", 0.0);
+ }
+ }
+ program { name: "icon_show";
+ signal: "elm,state,icon,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"padding_icon_text", "visible", 0.0);
+ }
+ else
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"padding_icon_text", "icononly", 0.0);
+ }
+ }
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,icon,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ target: "padding_icon_text";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "clipper";
+ target: "disabler";
+ after: "disable_text";
+ }
+ program { name: "disable_text";
+ script {
+ set_int(button_state, BUTTON_STATE_DISABLED);
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "clipper";
+ target: "disabler";
+ after: "enable_text";
+ }
+ program { name: "enable_text";
+ script {
+ set_int(button_state, BUTTON_STATE_ENABLED);
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ }
+ program { name: "focused";
+ action: STATE_SET "focused" 0.0;
+ target: "button_image";
+ target: "elm.text";
+ }
+ program { name: "unfocused";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ after: "unfocus_text";
+ }
+ program { name: "unfocus_text";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.text";
+ }
+ }
+ }
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#define CONTROLBAR_LARGE_H 78
+#define CONTROLBAR_LARGE_LANDSCAPE_H 62
+#define CONTROLBAR_SMALL_H 65
+#define CONTROLBAR_SMALL_LANDSCAPE_H 50
+#define CONTROLBAR_W 78
+
+#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 22 22 22 255
+#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 63 63 63 255
+
+
+ group{
+ name: "elm/controlbar/base/video/default";
+ parts{
+ part{
+ name: "bg_rect";
+ type: RECT;
+ scale: 1;
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "bg_image";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "large" 0.0;
+ min: 0 CONTROLBAR_LARGE_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {relative: 0.0 1.0; offset: 0 -1;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "small" 0.0;
+ min: 0 CONTROLBAR_SMALL_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {relative: 0.0 1.0; offset: 0 -1;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "left" 0.0;
+ min: CONTROLBAR_W 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 0.0 1.0; offset: 0 -1;}
+ }
+ description{
+ state: "right" 0.0;
+ min: CONTROLBAR_W 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 {relative: 1.0 0.0; offset: -1 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ }
+ part{
+ name: "elm.swallow.items";
+ type: SWALLOW;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; to: "bg_image";}
+ rel2 {relative: 1.0 1.0; to: "bg_image";}
+ }
+ }
+ }
+ programs{
+ program{
+ name: "default";
+ signal: "elm,state,default";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "large";
+ signal: "elm,state,large";
+ source: "elm";
+ action: STATE_SET "large" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "small";
+ signal: "elm,state,small";
+ source: "elm";
+ action: STATE_SET "small" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "left";
+ signal: "elm,state,left";
+ source: "elm";
+ action: STATE_SET "left" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "right";
+ signal: "elm,state,right";
+ source: "elm";
+ action: STATE_SET "right" 0.0;
+ target: "bg_image";
+ }
+ }
+ }
+
+ group{
+ name: "elm/controlbar/background/video/default";
+ images{
+ image: "T01_toolbar_bg.png" COMP;
+ }
+ parts{
+ part{
+ name: "bg_image";
+ type: IMAGE;
+ scale: 1;
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ image.normal: "T01_toolbar_bg.png";
+ color: 255 255 255 255;
+ }
+ }
+ programs {
+ program {
+ name: "tabbar_bg";
+ signal: "elm,state,tabbar";
+ source: "elm";
+ action: STATE_SET "tabbar" 0.0;
+ target: "bg_image";
+ }
+ }
+ }
+ }
+
+ group{
+ name: "elm/controlbar/view/video/default";
+ parts{
+ part{
+ name: "bg_rect";
+ type: RECT;
+ mouse_events:1;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "elm.swallow.view";
+ type: SWALLOW;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; to: "bg_rect";}
+ rel2 {relative: 1.0 1.0; to: "bg_rect";}
+ }
+ }
+ }
+ }
+
+ group{
+ name: "elm/controlbar/item_bg/video/default";
+ images{
+ image: "T01_toolbar_press.png" COMP;
+ }
+ parts{
+ part{
+ name: "bg_rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_H;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "bg_img";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "toolbar_pressed" 0.0;
+ inherit: "default" 0.0;
+ rel1 {relative: 0.0 0.07; offset: 3 0;}
+ rel2 {relative: 1.0 0.93; offset: -3 0;}
+ image.normal: "T01_toolbar_press.png";
+ image.border: 2 2 2 2;
+ visible: 1;
+ }
+ }
+ part{
+ name: "left_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 0.0; offset: 0 5;}
+ rel2 {relative: 0.0 1.0; offset: 1 -3;}
+ color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "right_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 1.0 0.0; offset: -1 5;}
+ rel2 {relative: 1.0 1.0; offset: 0 -3;}
+ color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "top_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 0.0; offset: 5 0;}
+ rel2 {relative: 1.0 0.0; offset: -5 1;}
+ color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "bottom_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 1.0; offset: 5 -1;}
+ rel2 {relative: 1.0 1.0; offset: -5 0;}
+ color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "item";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ rel1 {to: "bg_rect";}
+ rel2 {to: "bg_rect";}
+ }
+ }
+ }
+ programs {
+ program {
+ name: "toolbar_pressed";
+ signal: "elm,state,toolbar_pressed";
+ source: "elm";
+ action: STATE_SET "toolbar_pressed" 0.0;
+ target: "bg_img";
+ }
+ program {
+ name: "unselected";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_img";
+ }
+ program {
+ name: "unpressed";
+ signal: "elm,state,unpressed";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_img";
+ }
+ program {
+ name: "left_line_show";
+ signal: "elm,state,left_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "left_line";
+ }
+ program {
+ name: "left_line_hide";
+ signal: "elm,state,left_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "left_line";
+ }
+ program {
+ name: "right_line_show";
+ signal: "elm,state,right_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "right_line";
+ }
+ program {
+ name: "right_line_hide";
+ signal: "elm,state,right_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "right_line";
+ }
+ program {
+ name: "top_line_show";
+ signal: "elm,state,top_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "top_line";
+ }
+ program {
+ name: "top_line_hide";
+ signal: "elm,state,top_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "top_line";
+ }
+ program {
+ name: "bottom_line_show";
+ signal: "elm,state,bottom_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "bottom_line";
+ }
+ program {
+ name: "bottom_line_hide";
+ signal: "elm,state,bottom_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bottom_line";
+ }
+ }
+ }
+
+
+ group{
+ name: "elm/controlbar/base/video/landscape/default";
+
+ parts{
+ part{
+ name: "bg_rect";
+ type: RECT;
+ scale: 1;
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "bg_image";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "large" 0.0;
+ min: 0 CONTROLBAR_LARGE_LANDSCAPE_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {relative: 0.0 1.0; offset: 0 -1;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "small" 0.0;
+ min: 0 CONTROLBAR_SMALL_LANDSCAPE_H;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 {relative: 0.0 1.0; offset: 0 -1;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "left" 0.0;
+ min: CONTROLBAR_W 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 0.0 1.0; offset: 0 -1;}
+ }
+ description{
+ state: "right" 0.0;
+ min: CONTROLBAR_W 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 {relative: 1.0 0.0; offset: -1 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ }
+ part{
+ name: "elm.swallow.items";
+ type: SWALLOW;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; to: "bg_image";}
+ rel2 {relative: 1.0 1.0; to: "bg_image";}
+ }
+ }
+ }
+ programs{
+ program{
+ name: "default";
+ signal: "elm,state,default";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "large";
+ signal: "elm,state,large";
+ source: "elm";
+ action: STATE_SET "large" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "small";
+ signal: "elm,state,small";
+ source: "elm";
+ action: STATE_SET "small" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "left";
+ signal: "elm,state,left";
+ source: "elm";
+ action: STATE_SET "left" 0.0;
+ target: "bg_image";
+ }
+ program{
+ name: "right";
+ signal: "elm,state,right";
+ source: "elm";
+ action: STATE_SET "right" 0.0;
+ target: "bg_image";
+ }
+ }
+ }
+
+ group{
+ name: "elm/controlbar/background/video/landscape/default";
+
+ images{
+ image: "T01_toolbar_bg.png" COMP;
+ }
+
+ parts{
+ part{
+ name: "bg_image";
+ type: IMAGE;
+ scale: 1;
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ image.normal: "T01_toolbar_bg.png";
+ color: 255 255 255 255;
+ }
+ }
+ programs {
+ program {
+ name: "tabbar_bg";
+ signal: "elm,state,tabbar";
+ source: "elm";
+ action: STATE_SET "tabbar" 0.0;
+ target: "bg_image";
+ }
+ }
+ }
+ }
+
+ group{
+ name: "elm/controlbar/view/video/landscape/default";
+
+ parts{
+ part{
+ name: "bg_rect";
+ type: RECT;
+ mouse_events:1;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "elm.swallow.view";
+ type: SWALLOW;
+ description{
+ state: "default" 0.0;
+ rel1 {relative: 0.0 0.0; to: "bg_rect";}
+ rel2 {relative: 1.0 1.0; to: "bg_rect";}
+ }
+ }
+ }
+ }
+
+ group{
+ name: "elm/controlbar/item_bg/video/landscape/default";
+ images{
+ image: "T01_toolbar_press.png" COMP;
+ }
+
+ parts{
+ part{
+ name: "bg_rect";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_LANDSCAPE_H;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "bg_img";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 0.0; offset: 0 0;}
+ rel2 {relative: 1.0 1.0; offset: -1 -1;}
+ }
+ description{
+ state: "toolbar_pressed" 0.0;
+ inherit: "default" 0.0;
+ rel1 {relative: 0.0 0.07; offset: 3 0;}
+ rel2 {relative: 1.0 0.93; offset: -3 0;}
+ image.normal: "T01_toolbar_press.png";
+ image.border: 2 2 2 2;
+ visible: 1;
+ }
+ }
+ part{
+ name: "left_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 0.0; offset: 0 5;}
+ rel2 {relative: 0.0 1.0; offset: 1 -3;}
+ color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "right_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 1.0 0.0; offset: -1 5;}
+ rel2 {relative: 1.0 1.0; offset: 0 -3;}
+ color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "top_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 0.0; offset: 5 0;}
+ rel2 {relative: 1.0 0.0; offset: -5 1;}
+ color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "bottom_line";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description{
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {relative: 0.0 1.0; offset: 5 -1;}
+ rel2 {relative: 1.0 1.0; offset: -5 0;}
+ color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC;
+ }
+ description{
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part{
+ name: "item";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ rel1 {to: "bg_rect";}
+ rel2 {to: "bg_rect";}
+ }
+ }
+ }
+ programs {
+ program {
+ name: "toolbar_pressed";
+ signal: "elm,state,toolbar_pressed";
+ source: "elm";
+ action: STATE_SET "toolbar_pressed" 0.0;
+ target: "bg_img";
+ }
+ program {
+ name: "unselected";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_img";
+ }
+ program {
+ name: "unpressed";
+ signal: "elm,state,unpressed";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_img";
+ }
+ program {
+ name: "left_line_show";
+ signal: "elm,state,left_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "left_line";
+ }
+ program {
+ name: "left_line_hide";
+ signal: "elm,state,left_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "left_line";
+ }
+ program {
+ name: "right_line_show";
+ signal: "elm,state,right_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "right_line";
+ }
+ program {
+ name: "right_line_hide";
+ signal: "elm,state,right_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "right_line";
+ }
+ program {
+ name: "top_line_show";
+ signal: "elm,state,top_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "top_line";
+ }
+ program {
+ name: "top_line_hide";
+ signal: "elm,state,top_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "top_line";
+ }
+ program {
+ name: "bottom_line_show";
+ signal: "elm,state,bottom_line_show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "bottom_line";
+ }
+ program {
+ name: "bottom_line_hide";
+ signal: "elm,state,bottom_line_hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bottom_line";
+ }
+ }
+ }
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include "image_res.edc"
+
+collections {
+ #include "vp-button.edc"
+ #include "vp-controlbar.edc"
+ #include "vp-naviframe.edc"
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define NAVIFRAME_TITLE_H_INC 100
+#define NAVIFRAME_SEGMENT_TITLE_H_INC 136
+#define NAVIFRAME_OH_OPENED_H_INC 106
+#define NAVIFRAME_OH_CONTENT_H_INC 74
+#define NAVIFRAME_OH_PADDING_INC 16
+#define NAVIFRAME_OH_ARROW_SIZE_INC 19 12
+#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196
+#define NAVIFRAME_PREV_BTN_W_INC 124
+#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80
+#define NAVIFRAME_TITLE_SEGMENT_H_INC 74
+#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 28
+#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 36
+#define NAVIFRAME_ICON_SIZE_INC 32 32
+#define NAVIFRAME_ICON_PADDING_INC 16 0
+#define NAVIFRAME_CONTROLBAR_PADDING_INC 5
+#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 31 31 31 255
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 235 236 237 255 //#define NAVIFRAME_TITLE_TEXT_COLOR_INC 255 255 255 255
+#define NAVIFRAME_TITLE_BG_COLOR_INC 92 92 92 255 //#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 255
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+#define CONTROLBAR_WIDTH_INC 122
+
+#define NAVIFRAME_TEXT_PADDING_INC 144
+#define NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 278
+#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.3
+
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+
+ group { name:"elm/naviframe/base/video/default";
+ parts {
+ part { name: "base";
+ description { state: "default" 0.0;
+ }
+ }
+ }
+ }
+ group { name:"elm/naviframe/item/video/basic/default";
+ alias:"elm/naviframe/item/video/1line/default";
+ images {
+ image: "naviframe_optionheader.png" COMP;
+ image: "naviframe_optionheader_arrow.png" COMP;
+ }
+ script {
+ public oh_show = 0; //optionheader show/hide
+ public oh_close = 0; //optionheader close/open
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "title_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_TITLE_H_INC;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 0;
+ align: 0.5 0;
+ fixed: 0 1;
+ rel1.to_x: "elm.swallow.content";
+ rel1.to_y: "title_clip";
+ rel1.relative: 0 1;
+ rel2.to_x: "elm.swallow.content";
+ rel2.to_y: "title_clip";
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 1 NAVIFRAME_OH_OPENED_H_INC;
+ visible: 1;
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { to: "optionheader_clip"; }
+ rel2 { to: "optionheader_clip"; }
+ image { normal: "naviframe_optionheader.png";
+ border: 0 0 4 0;
+ }
+ }
+ }
+ part { name: "optionheader_top_padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+ rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.optionheader";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+ rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+ rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "optionheader_bottom_padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "content_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1.to_y: "optionheader_bg";
+ rel1.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_y: "optionheader_bg";
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ description { state: "left" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: -1.0 1.0;
+ rel2.relative: 0.0 0.0;
+ }
+ description { state: "right" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1.0 1.0;
+ rel2.relative: 2.0 0.0;
+ }
+ }
+ part { name: "title_base";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "title_clip"; }
+ rel2 { to: "title_clip"; }
+ color: NAVIFRAME_TITLE_BG_COLOR_INC;
+ }
+ }
+ part { name: "padding_before_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.left_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.right_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ }
+ }
+ part { name: "padding_before_more_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.more_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ fixed: 1 0;
+ min: NAVIFRAME_ICON_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "padding_center_text1";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "icon_visible" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+ }
+ }
+ part { name: "padding_center_text2";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 0;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXT;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ text { font: "SLP:style=Medium";
+ size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+ align: 0.5 0.5;
+ rel1.to: "padding_center_text1";
+ rel1.relative: 1 0;
+ rel2.to: "padding_center_text2";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ max: NAVIFRAME_ICON_SIZE_INC;
+ rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+ rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ align: 1.0 0.5;
+ }
+ }
+ part { name: "click_event_area";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ rel1 { to: "title_base"; }
+ rel2 { to: "title_base"; }
+ }
+ }
+ part { name: "elm.swallow.left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "padding_before_left_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_before_left_btn";
+ rel2.relative: 1 1;
+ }
+ }
+ part { name: "elm.swallow.right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_after_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_after_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.more_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_before_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_before_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "optionheader_arrow";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: NAVIFRAME_OH_ARROW_SIZE_INC;
+ max: NAVIFRAME_OH_ARROW_SIZE_INC;
+ fixed: 1 1;
+ align: 0.5 0;
+ rel1.to: "elm.swallow.more_btn";
+ rel1.relative: 0 1;
+ rel2.to: "elm.swallow.more_btn";
+ rel2.relative: 1 1;
+ image {
+ normal: "naviframe_optionheader_arrow.png";
+ }
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "content_new_pushed";
+ signal: "elm,state,new,pushed,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_pushed";
+ signal: "elm,state,cur,pushed,internal";
+ source: "";
+ action: STATE_SET "left" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "pushed_finished";
+ }
+ program { name: "content_prev_popped";
+ signal: "elm,state,prev,popped,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_popped";
+ signal: "elm,state,cur,popped,internal";
+ source: "";
+ action: STATE_SET "right" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "popped_finished";
+ }
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,pushed,internal", "");
+ }
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "right", 0.0);
+ emit("elm,state,new,pushed,internal", "");
+ }
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "left", 0.0);
+ emit("elm,state,prev,popped,internal", "");
+ }
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,popped,internal", "");
+ }
+ }
+ program { name: "visible";
+ signal: "elm,state,visible";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ }
+ program { name: "title_show";
+ signal: "elm,state,title,show";
+ source: "elm";
+ script {
+ set_state(PART:"title_clip", "default", 0.0);
+ if (get_int(oh_show) == 1) {
+ if (get_int(oh_close) == 1) {
+ emit("elm,state,optionheader,instant_close", "");
+ }else {
+ emit("elm,state,optionheader,instant_open", "");
+ }
+ }
+ else
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ }
+ }
+ program { name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_clip";
+ target: "optionheader_clip";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "more_btn_show";
+ signal: "elm,state,elm.swallow.more_btn,show";
+ source: "elm";
+ action: STATE_SET "more_button" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "more_btn_hide";
+ signal: "elm,state,elm.swallow.more_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "icon_show";
+ signal: "elm,state,elm.swallow.icon,show";
+ source: "elm";
+ action: STATE_SET "icon_visible" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,elm.swallow.icon,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "optionheader_show";
+ signal: "elm,state,elm.swallow.optionheader,show";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "show", 0.0);
+ set_state(PART:"optionheader_arrow", "show", 0.0);
+ set_int(oh_show, 1);
+ }
+ }
+ program { name: "optionheader_hide";
+ signal: "elm,state,elm.swallow.optionheader,hide";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ set_state(PART:"optionheader_arrow", "default", 0.0);
+ set_int(oh_show, 0);
+ }
+ }
+ program { name: "optionheader_open";
+ signal: "elm,state,optionheader,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_close";
+ signal: "elm,state,optionheader,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_instant_open";
+ signal: "elm,state,optionheader,instant_open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_instant_close";
+ signal: "elm,state,optionheader,instant_close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_close_set";
+ signal: "elm,state,optionheader,close_set";
+ source: "";
+ script {
+ set_int(oh_close, 1);
+ }
+ }
+ program { name: "optionheader_open_set";
+ signal: "elm,state,optionheader,open_set";
+ source: "";
+ script {
+ set_int(oh_close, 0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name:"elm/naviframe/item/video/basic2/default";
+ alias:"elm/naviframe/item/video/2line/default";
+ images {
+ image: "naviframe_optionheader.png" COMP;
+ image: "naviframe_optionheader_arrow.png" COMP;
+ }
+ script {
+ public oh_show = 0; //optionheader show/hide
+ public oh_close = 0; //optionheader close/open
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "title_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_TITLE_H_INC;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 0;
+ align: 0.5 0;
+ fixed: 0 1;
+ rel1.to_x: "elm.swallow.content";
+ rel1.to_y: "title_clip";
+ rel1.relative: 0 1;
+ rel2.to_x: "elm.swallow.content";
+ rel2.to_y: "title_clip";
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC;
+ visible: 1;
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { to: "optionheader_clip"; }
+ rel2 { to: "optionheader_clip"; }
+ image { normal: "naviframe_optionheader.png";
+ border: 0 0 4 0;
+ }
+ }
+ }
+ part { name: "optionheader_top_padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+ rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.optionheader";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+ rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+ rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "elm.swallow.optionheader.mid.padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.optionheader2";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "elm.swallow.optionheader.bottom.padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader2"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "content_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1.to_y: "optionheader_bg";
+ rel1.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_y: "optionheader_bg";
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ description { state: "left" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: -1.0 1.0;
+ rel2.relative: 0.0 0.0;
+ }
+ description { state: "right" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1.0 1.0;
+ rel2.relative: 2.0 0.0;
+ }
+ }
+ part { name: "title_base";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "title_clip"; }
+ rel2 { to: "title_clip"; }
+ color: NAVIFRAME_TITLE_BG_COLOR_INC;
+ }
+ }
+ part { name: "padding_before_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.left_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.right_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+ visible: 0;
+ }
+ description { state: "more_btn" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ }
+ }
+ part { name: "padding_before_more_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.more_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ fixed: 1 0;
+ min: NAVIFRAME_ICON_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "padding_center_text1";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "icon_visible" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+ }
+ }
+ part { name: "padding_center_text2";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 0;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXT;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ text { font: "SLP:style=Medium";
+ size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+ align: 0.5 0.5;
+ rel1.to: "padding_center_text1";
+ rel1.relative: 1 0;
+ rel2.to: "padding_center_text2";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ max: NAVIFRAME_ICON_SIZE_INC;
+ rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+ rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ align: 1.0 0.5;
+ }
+ }
+ part { name: "click_event_area";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ rel1 { to: "title_base"; }
+ rel2 { to: "title_base"; }
+ }
+ }
+ part { name: "elm.swallow.left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "padding_before_left_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_before_left_btn";
+ rel2.relative: 1 1;
+ }
+ }
+ part { name: "elm.swallow.right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_after_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_after_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.more_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_before_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_before_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "optionheader_arrow";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: NAVIFRAME_OH_ARROW_SIZE_INC;
+ max: NAVIFRAME_OH_ARROW_SIZE_INC;
+ fixed: 1 1;
+ align: 0.5 0;
+ rel1.to: "elm.swallow.more_btn";
+ rel1.relative: 0 1;
+ rel2.to: "elm.swallow.more_btn";
+ rel2.relative: 1 1;
+ image {
+ normal: "naviframe_optionheader_arrow.png";
+ }
+ color: 255 255 255 0 ;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "content_new_pushed";
+ signal: "elm,state,new,pushed,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_pushed";
+ signal: "elm,state,cur,pushed,internal";
+ source: "";
+ action: STATE_SET "left" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "pushed_finished";
+ }
+ program { name: "content_prev_popped";
+ signal: "elm,state,prev,popped,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_popped";
+ signal: "elm,state,cur,popped,internal";
+ source: "";
+ action: STATE_SET "right" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "popped_finished";
+ }
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,pushed,internal", "");
+ }
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "right", 0.0);
+ emit("elm,state,new,pushed,internal", "");
+ }
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "left", 0.0);
+ emit("elm,state,prev,popped,internal", "");
+ }
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,popped,internal", "");
+ }
+ }
+ program { name: "visible";
+ signal: "elm,state,visible";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ }
+ program { name: "title_show";
+ signal: "elm,state,title,show";
+ source: "elm";
+ script {
+ set_state(PART:"title_clip", "default", 0.0);
+ if (get_int(oh_show) == 1) {
+ if (get_int(oh_close) == 1) {
+ emit("elm,state,optionheader,instant_close", "");
+ }else {
+ emit("elm,state,optionheader,instant_open", "");
+ }
+ }
+ else
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ }
+ }
+ program { name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_clip";
+ target: "optionheader_clip";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "more_btn_show";
+ signal: "elm,state,elm.swallow.more_btn,show";
+ source: "elm";
+ action: STATE_SET "more_button" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "more_btn_hide";
+ signal: "elm,state,elm.swallow.more_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.more_btn";
+ target: "padding_before_right_btn";
+ }
+ program { name: "icon_show";
+ signal: "elm,state,elm.swallow.icon,show";
+ source: "elm";
+ action: STATE_SET "icon_visible" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,elm.swallow.icon,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "optionheader_show";
+ signal: "elm,state,elm.swallow.optionheader,show";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "show", 0.0);
+ set_state(PART:"optionheader_arrow", "show", 0.0);
+ set_int(oh_show, 1);
+ }
+ }
+ program { name: "optionheader_hide";
+ signal: "elm,state,elm.swallow.optionheader,hide";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ set_state(PART:"optionheader_arrow", "default", 0.0);
+ set_int(oh_show, 0);
+ }
+ }
+ program { name: "optionheader_open";
+ signal: "elm,state,optionheader,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_close";
+ signal: "elm,state,optionheader,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_instant_open";
+ signal: "elm,state,optionheader,instant_open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_instant_close";
+ signal: "elm,state,optionheader,instant_close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_close_set";
+ signal: "elm,state,optionheader,close_set";
+ source: "";
+ script {
+ set_int(oh_close, 1);
+ }
+ }
+ program { name: "optionheader_open_set";
+ signal: "elm,state,optionheader,open_set";
+ source: "";
+ script {
+ set_int(oh_close, 0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name: "elm/naviframe/item/video/segment/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "title_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "content_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1.to_y: "title_clip";
+ rel1.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_y: "title_clip";
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ description { state: "left" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: -1.0 1.0;
+ rel2.relative: 0.0 0.0;
+ }
+ description { state: "right" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1.0 1.0;
+ rel2.relative: 2.0 0.0;
+ }
+ }
+ part { name: "title_base";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "title_clip"; }
+ rel2 { to: "title_clip"; }
+ color: NAVIFRAME_TITLE_BG_COLOR_INC;
+ }
+ }
+ part { name: "padding_before_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.left_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.right_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ fixed: 1 0;
+ min: NAVIFRAME_ICON_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXT;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ text { font: "SLP:style=Medium";
+ size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+ max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+ fixed: 0 1;
+ color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+ align: 0.5 0;
+ rel1.to: "padding_before_left_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "click_event_area";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ rel1 { to: "title_base"; }
+ rel2 { to: "title_base"; }
+ }
+ }
+ part { name: "elm.swallow.left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 0 0;
+ rel1.relative: 1.0 1.0;
+ rel1.to_x: "padding_before_left_btn";
+ rel1.to_y: "elm.text.title";
+ rel2.relative: 1.0 1.0;
+ rel2.to_x: "padding_before_left_btn";
+ rel2.to_y: "elm.text.title";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ }
+ }
+ part { name: "elm.swallow.right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ align: 1 0;
+ fixed: 1 0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_x: "padding_after_right_btn";
+ rel1.to_y: "elm.text.title";
+ rel2.relative: 0.0 1.0;
+ rel2.to_x: "padding_after_right_btn";
+ rel2.to_y: "elm.text.title";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ }
+ }
+ part { name: "elm.swallow.segment2";
+ type: "SWALLOW";
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ fixed: 0 1;
+ align: 0.5 0;
+ rel1.to_y: "elm.text.title";
+ rel1.relative: 0.28 1;
+ rel2.to_y: "elm.text.title";
+ rel2.relative: 0.72 1;
+ }
+ }
+ part { name: "elm.swallow.segment3";
+ type: "SWALLOW";
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ fixed: 0 1;
+ align: 0.5 0;
+ rel1.to_y: "elm.text.title";
+ rel1.relative: 0.2 1;
+ rel2.to_y: "elm.text.title";
+ rel2.relative: 0.8 1;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "content_new_pushed";
+ signal: "elm,state,new,pushed,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_pushed";
+ signal: "elm,state,cur,pushed,internal";
+ source: "";
+ action: STATE_SET "left" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "pushed_finished";
+ }
+ program { name: "content_prev_popped";
+ signal: "elm,state,prev,popped,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_popped";
+ signal: "elm,state,cur,popped,internal";
+ source: "";
+ action: STATE_SET "right" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "popped_finished";
+ }
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,pushed,internal", "");
+ }
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "right", 0.0);
+ emit("elm,state,new,pushed,internal", "");
+ }
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "left", 0.0);
+ emit("elm,state,prev,popped,internal", "");
+ }
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,popped,internal", "");
+ }
+ }
+ program { name: "visible";
+ signal: "elm,state,visible";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ }
+ program { name: "title_show";
+ signal: "elm,state,title,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "title_clip";
+ }
+ program { name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_clip";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "left_btn_show";
+ signal: "elm,state,elm.swallow.left_btn,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "elm.swallow.left_btn";
+ }
+ program { name: "left_btn_hide";
+ signal: "elm,state,elm.swallow.left_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.left_btn";
+ }
+ program { name: "right_btn_show";
+ signal: "elm,state,elm.swallow.right_btn,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "elm.swallow.right_btn";
+ }
+ program { name: "right_btn_hide";
+ signal: "elm,state,elm.swallow.right_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.right_btn";
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name: "elm/naviframe/item/tabbar/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ description { state: "left" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: -1.0 0.0;
+ rel2.relative: 0.0 0.0;
+ }
+ description { state: "right" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1.0 0.0;
+ rel2.relative: 2.0 0.0;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "content_new_pushed";
+ signal: "elm,state,new,pushed,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_pushed";
+ signal: "elm,state,cur,pushed,internal";
+ source: "";
+ action: STATE_SET "left" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "pushed_finished";
+ }
+ program { name: "content_prev_popped";
+ signal: "elm,state,prev,popped,internal";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "show_finished";
+ }
+ program { name: "content_cur_popped";
+ signal: "elm,state,cur,popped,internal";
+ source: "";
+ action: STATE_SET "right" 0.0;
+ target: "elm.swallow.content";
+ transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+ after: "popped_finished";
+ }
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,pushed,internal", "");
+ }
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "right", 0.0);
+ emit("elm,state,new,pushed,internal", "");
+ }
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "left", 0.0);
+ emit("elm,state,prev,popped,internal", "");
+ }
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ script {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ emit("elm,state,cur,popped,internal", "");
+ }
+ }
+ program { name: "visible";
+ signal: "elm,state,visible";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name:"elm/naviframe/item/video/basic/instant/default";
+ alias:"elm/naviframe/item/video/1line/instant/default";
+ alias:"elm/naviframe/item/video/instant/default";
+ images {
+ image: "naviframe_optionheader.png" COMP;
+ image: "naviframe_optionheader_arrow.png" COMP;
+ }
+ script {
+ public oh_show = 0; //optionheader show/hide
+ public oh_close = 0; //optionheader close/open
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "title_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_TITLE_H_INC;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 0;
+ align: 0.5 0;
+ fixed: 0 1;
+ rel1.to_x: "elm.swallow.content";
+ rel1.to_y: "title_clip";
+ rel1.relative: 0 1;
+ rel2.to_x: "elm.swallow.content";
+ rel2.to_y: "title_clip";
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 1 NAVIFRAME_OH_OPENED_H_INC;
+ visible: 1;
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { to: "optionheader_clip"; }
+ rel2 { to: "optionheader_clip"; }
+ image { normal: "naviframe_optionheader.png";
+ border: 0 0 4 0;
+ }
+ }
+ }
+ part { name: "optionheader_top_padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+ rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.optionheader";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+ rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+ rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "optionheader_bottom_padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "content_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1.to_y: "optionheader_bg";
+ rel1.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_y: "optionheader_bg";
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ }
+ part { name: "title_base";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "title_clip"; }
+ rel2 { to: "title_clip"; }
+ color: NAVIFRAME_TITLE_BG_COLOR_INC;
+ }
+ }
+ part { name: "padding_before_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.left_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.right_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ }
+ }
+ part { name: "padding_before_more_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.more_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_center_text1";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "icon_visible" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+ }
+ }
+ part { name: "padding_center_text2";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ fixed: 1 0;
+ min: NAVIFRAME_ICON_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXT;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ text { font: "SLP:style=Medium";
+ size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+ align: 0.5 0.5;
+ rel1.to: "padding_center_text1";
+ rel1.relative: 1 0;
+ rel2.to: "padding_center_text2";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ max: NAVIFRAME_ICON_SIZE_INC;
+ rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+ rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ align: 1.0 0.5;
+ }
+ }
+ part { name: "click_event_area";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ rel1 { to: "title_base"; }
+ rel2 { to: "title_base"; }
+ }
+ }
+ part { name: "elm.swallow.left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "padding_before_left_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_before_left_btn";
+ rel2.relative: 1 1;
+ }
+ }
+ part { name: "elm.swallow.right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_after_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_after_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.more_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_before_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_before_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "optionheader_arrow";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: NAVIFRAME_OH_ARROW_SIZE_INC;
+ max: NAVIFRAME_OH_ARROW_SIZE_INC;
+ fixed: 1 1;
+ align: 0.5 0;
+ rel1.to: "elm.swallow.more_btn";
+ rel1.relative: 0 1;
+ rel2.to: "elm.swallow.more_btn";
+ rel2.relative: 1 1;
+ image {
+ normal: "naviframe_optionheader_arrow.png";
+ }
+ color: 255 255 255 0 ;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ after: "pushed_finished";
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ after: "popped_finished";
+ }
+ program { name: "title_show";
+ signal: "elm,state,title,show";
+ source: "elm";
+ script {
+ set_state(PART:"title_clip", "default", 0.0);
+ if (get_int(oh_show) == 1) {
+ if (get_int(oh_close) == 1) {
+ emit("elm,state,optionheader,instant_close", "");
+ }else {
+ emit("elm,state,optionheader,instant_open", "");
+ }
+ }
+ else
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ }
+ }
+ program { name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_clip";
+ target: "optionheader_clip";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "more_btn_show";
+ signal: "elm,state,elm.swallow.more_btn,show";
+ source: "elm";
+ action: STATE_SET "more_button" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "more_btn_hide";
+ signal: "elm,state,elm.swallow.more_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "icon_show";
+ signal: "elm,state,elm.swallow.icon,show";
+ source: "elm";
+ action: STATE_SET "icon_visible" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,elm.swallow.icon,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "optionheader_show";
+ signal: "elm,state,elm.swallow.optionheader,show";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "show", 0.0);
+ set_state(PART:"optionheader_arrow", "show", 0.0);
+ set_int(oh_show, 1);
+ }
+ }
+ program { name: "optionheader_hide";
+ signal: "elm,state,elm.swallow.optionheader,hide";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ set_state(PART:"optionheader_arrow", "default", 0.0);
+ set_int(oh_show, 0);
+ }
+ }
+ program { name: "optionheader_open";
+ signal: "elm,state,optionheader,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_close";
+ signal: "elm,state,optionheader,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_instant_open";
+ signal: "elm,state,optionheader,instant_open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_instant_close";
+ signal: "elm,state,optionheader,instant_close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_close_set";
+ signal: "elm,state,optionheader,close_set";
+ source: "";
+ script {
+ set_int(oh_close, 1);
+ }
+ }
+ program { name: "optionheader_open_set";
+ signal: "elm,state,optionheader,open_set";
+ source: "";
+ script {
+ set_int(oh_close, 0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name:"elm/naviframe/item/video/basic2/instant/default";
+ alias:"elm/naviframe/item/video/2line/instant/default";
+ alias:"elm/naviframe/item/video/instant2/default";
+ images {
+ image: "naviframe_optionheader.png" COMP;
+ image: "naviframe_optionheader_arrow.png" COMP;
+ }
+ script {
+ public oh_show = 0; //optionheader show/hide
+ public oh_close = 0; //optionheader close/open
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "title_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_TITLE_H_INC;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 0;
+ align: 0.5 0;
+ fixed: 0 1;
+ rel1.to_x: "elm.swallow.content";
+ rel1.to_y: "title_clip";
+ rel1.relative: 0 1;
+ rel2.to_x: "elm.swallow.content";
+ rel2.to_y: "title_clip";
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC;
+ visible: 1;
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "optionheader_bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 { to: "optionheader_clip"; }
+ rel2 { to: "optionheader_clip"; }
+ image { normal: "naviframe_optionheader.png";
+ border: 0 0 4 0;
+ }
+ }
+ }
+ part { name: "optionheader_top_padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+ rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.optionheader";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+ rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+ rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "elm.swallow.optionheader.mid.padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.optionheader2";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_CONTENT_H_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.optionheader.mid.padding";}
+ fixed: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "elm.swallow.optionheader.bottom.padding";
+ type: RECT;
+ scale: 1;
+ clip_to: "optionheader_clip";
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_OH_PADDING_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.swallow.optionheader2"; }
+ fixed: 0 1;
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "content_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1.to_y: "optionheader_bg";
+ rel1.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_y: "optionheader_bg";
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ }
+ part { name: "title_base";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "title_clip"; }
+ rel2 { to: "title_clip"; }
+ color: NAVIFRAME_TITLE_BG_COLOR_INC;
+ }
+ }
+ part { name: "padding_before_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.left_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.right_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ }
+ }
+ part { name: "padding_before_more_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.more_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.more_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ fixed: 1 0;
+ min: NAVIFRAME_ICON_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "padding_center_text1";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "icon_visible" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+ }
+ }
+ part { name: "padding_center_text2";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ description { state: "more_button" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 0;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXT;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ text { font: "SLP:style=Medium";
+ size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+ align: 0.5 0.5;
+ rel1.to: "padding_center_text1";
+ rel1.relative: 1 0;
+ rel2.to: "padding_center_text2";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ max: NAVIFRAME_ICON_SIZE_INC;
+ rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+ rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ align: 1.0 0.5;
+ }
+ }
+ part { name: "click_event_area";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ rel1 { to: "title_base"; }
+ rel2 { to: "title_base"; }
+ }
+ }
+ part { name: "elm.swallow.left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "padding_before_left_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_before_left_btn";
+ rel2.relative: 1 1;
+ }
+ }
+ part { name: "elm.swallow.right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_after_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_after_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.more_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1.to: "padding_before_right_btn";
+ rel1.relative: 0 0;
+ rel2.to: "padding_before_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "optionheader_arrow";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: NAVIFRAME_OH_ARROW_SIZE_INC;
+ max: NAVIFRAME_OH_ARROW_SIZE_INC;
+ fixed: 1 1;
+ align: 0.5 0;
+ rel1.to: "elm.swallow.more_btn";
+ rel1.relative: 0 1;
+ rel2.to: "elm.swallow.more_btn";
+ rel2.relative: 1 1;
+ image {
+ normal: "naviframe_optionheader_arrow.png";
+ }
+ color: 255 255 255 0 ;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ after: "pushed_finished";
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ after: "popped_finished";
+ }
+ program { name: "title_show";
+ signal: "elm,state,title,show";
+ source: "elm";
+ script {
+ set_state(PART:"title_clip", "default", 0.0);
+ if (get_int(oh_show) == 1) {
+ if (get_int(oh_close) == 1) {
+ emit("elm,state,optionheader,instant_close", "");
+ }else {
+ emit("elm,state,optionheader,instant_open", "");
+ }
+ }
+ else
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ }
+ }
+ program { name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_clip";
+ target: "optionheader_clip";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "more_btn_show";
+ signal: "elm,state,elm.swallow.more_btn,show";
+ source: "elm";
+ action: STATE_SET "more_button" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "more_btn_hide";
+ signal: "elm,state,elm.swallow.more_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text2";
+ target: "padding_before_right_btn";
+ }
+ program { name: "icon_show";
+ signal: "elm,state,elm.swallow.icon,show";
+ source: "elm";
+ action: STATE_SET "icon_visible" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,elm.swallow.icon,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "padding_center_text1";
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "optionheader_show";
+ signal: "elm,state,elm.swallow.optionheader,show";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "show", 0.0);
+ set_state(PART:"optionheader_arrow", "show", 0.0);
+ set_int(oh_show, 1);
+ }
+ }
+ program { name: "optionheader_hide";
+ signal: "elm,state,elm.swallow.optionheader,hide";
+ source: "elm";
+ script {
+ set_state(PART:"optionheader_clip", "default", 0.0);
+ set_state(PART:"optionheader_arrow", "default", 0.0);
+ set_int(oh_show, 0);
+ }
+ }
+ program { name: "optionheader_open";
+ signal: "elm,state,optionheader,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_close";
+ signal: "elm,state,optionheader,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ transition: LINEAR 0.2;
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_instant_open";
+ signal: "elm,state,optionheader,instant_open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_open_set";
+ }
+ program { name: "optionheader_instant_close";
+ signal: "elm,state,optionheader,instant_close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "optionheader_clip";
+ target: "optionheader_arrow";
+ after: "optionheader_close_set";
+ }
+ program { name: "optionheader_close_set";
+ signal: "elm,state,optionheader,close_set";
+ source: "";
+ script {
+ set_int(oh_close, 1);
+ }
+ }
+ program { name: "optionheader_open_set";
+ signal: "elm,state,optionheader,open_set";
+ source: "";
+ script {
+ set_int(oh_close, 0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name: "elm/naviframe/item/video/segment/instant/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "title_clip";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC;
+ align: 0.0 0.0;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ description { state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "content_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1.to_y: "title_clip";
+ rel1.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ clip_to: "content_clip";
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_y: "title_clip";
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ }
+ part { name: "title_base";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "title_clip"; }
+ rel2 { to: "title_clip"; }
+ color: NAVIFRAME_TITLE_BG_COLOR_INC;
+ }
+ }
+ part { name: "padding_before_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "title_base"; }
+ rel2 { relative: 0.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_left_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "elm.swallow.left_btn"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.left_btn"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_after_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "title_base"; }
+ rel2 { relative: 1.0 1.0; to: "title_base"; }
+ visible: 0;
+ }
+ }
+ part { name: "padding_before_right_btn";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.right_btn"; }
+ rel2 { relative: 0.0 1.0; to: "elm.swallow.right_btn"; }
+ visible: 0;
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_base"; }
+ fixed: 1 0;
+ min: NAVIFRAME_ICON_PADDING_INC;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text.title";
+ type: TEXT;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ text { font: "SLP:style=Medium";
+ size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ align: 0.5 0.5;
+ }
+ min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+ max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC;
+ fixed: 0 1;
+ color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+ align: 0.5 0;
+ rel1.to: "padding_before_left_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_right_btn";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "click_event_area";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ rel1 { to: "title_base"; }
+ rel2 { to: "title_base"; }
+ }
+ }
+ part { name: "elm.swallow.left_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ align: 0 0;
+ rel1.relative: 1.0 1.0;
+ rel1.to_x: "padding_before_left_btn";
+ rel1.to_y: "elm.text.title";
+ rel2.relative: 1.0 1.0;
+ rel2.to_x: "padding_before_left_btn";
+ rel2.to_y: "elm.text.title";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ }
+ }
+ part { name: "elm.swallow.right_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 0;
+ align: 1 0;
+ fixed: 1 0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_x: "padding_after_right_btn";
+ rel1.to_y: "elm.text.title";
+ rel2.relative: 0.0 1.0;
+ rel2.to_x: "padding_after_right_btn";
+ rel2.to_y: "elm.text.title";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+ fixed: 1 1;
+ }
+ }
+ part { name: "elm.swallow.segment2";
+ type: "SWALLOW";
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ fixed: 0 1;
+ align: 0.5 0;
+ rel1.to_y: "elm.text.title";
+ rel1.relative: 0.28 1;
+ rel2.to_y: "elm.text.title";
+ rel2.relative: 0.72 1;
+ }
+ }
+ part { name: "elm.swallow.segment3";
+ type: "SWALLOW";
+ scale: 1;
+ clip_to: "title_clip";
+ description { state: "default" 0.0;
+ min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC;
+ fixed: 0 1;
+ align: 0.5 0;
+ rel1.to_y: "elm.text.title";
+ rel1.relative: 0.2 1;
+ rel2.to_y: "elm.text.title";
+ rel2.relative: 0.8 1;
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ after: "pushed_finished";
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ after: "popped_finished";
+ }
+ program { name: "title_show";
+ signal: "elm,state,title,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "title_clip";
+ }
+ program { name: "title_hide";
+ signal: "elm,state,title,hide";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "title_clip";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "left_btn_show";
+ signal: "elm,state,elm.swallow.left_btn,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "elm.swallow.left_btn";
+ }
+ program { name: "left_btn_hide";
+ signal: "elm,state,elm.swallow.left_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.left_btn";
+ }
+ program { name: "right_btn_show";
+ signal: "elm,state,elm.swallow.right_btn,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ target: "elm.swallow.right_btn";
+ }
+ program { name: "right_btn_hide";
+ signal: "elm,state,elm.swallow.right_btn,hide";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.right_btn";
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
+ group { name: "elm/naviframe/item/tabbar/instant/default";
+ script {
+ public cbar_bg = 0; //Controlbar BG Show call count
+ }
+ parts {
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel2.relative: 1.0 0.0;
+ rel2.to_y: "controlbar_clip";
+ }
+ }
+ part { name: "controlbar_clip";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ max: 999999 0;
+ fixed: 0 1;
+ align: 0.5 1;
+ visible: 0;
+ rel1.to_x: "elm.swallow.content";
+ rel2.to_x: "elm.swallow.content";
+ }
+ description { state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+ max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+ visible: 1;
+ }
+ }
+ part { name: "controlbar_bg";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { to: "controlbar_clip"; }
+ rel2 { to: "controlbar_clip"; }
+ color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+ }
+ }
+ part { name: "elm.swallow.prev_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1.to: "controlbar_bg";
+ rel1.relative: 0 0;
+ rel2.to: "controlbar_bg";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "elm.swallow.controlbar";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ rel1.to: "elm.swallow.prev_btn";
+ rel1.relative: 1 0;
+ rel2.to: "padding_after_controlbar";
+ rel2.relative: 0 1;
+ }
+ }
+ part { name: "padding_after_controlbar";
+ type: RECT;
+ scale: 1;
+ clip_to: "controlbar_clip";
+ description { state: "default" 0.0;
+ min: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ max: NAVIFRAME_CONTROLBAR_PADDING_INC CONTROLBAR_SMALL_HEIGHT_INC;
+ align: 1 1;
+ rel1.to: "controlbar_bg";
+ rel2.to: "controlbar_bg";
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program { name: "cur_pushed";
+ signal: "elm,state,cur,pushed";
+ source: "elm";
+ after: "pushed_finished";
+ }
+ program { name: "new_pushed";
+ signal: "elm,state,new,pushed";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "prev_popped";
+ signal: "elm,state,prev,popped";
+ source: "elm";
+ after: "show_finished";
+ }
+ program { name: "cur_popped";
+ signal: "elm,state,cur,popped";
+ source: "elm";
+ after: "popped_finished";
+ }
+ program { name: "prev_btn_show";
+ signal: "elm,state,prev_btn,show";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "prev_btn_hide";
+ signal: "elm,state,prev_btn,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_show";
+ signal: "elm,state,elm.swallow.controlbar,show";
+ source: "elm";
+ action: STATE_SET "show" 0.0;
+ script {
+ emit("elm,state,controlbar_clip,show", "elm");
+ }
+ }
+ program { name: "controlbar_hide";
+ signal: "elm,state,elm.swallow.controlbar,hide";
+ source: "elm";
+ script {
+ emit("elm,state,controlbar_clip,hide", "elm");
+ }
+ }
+ program { name: "controlbar_clip_show";
+ signal: "elm,state,controlbar_clip,show";
+ source: "elm";
+ script {
+ set_state(PART:"controlbar_clip", "show", 0.0);
+ set_int(cbar_bg, get_int(cbar_bg) + 1);
+ }
+ }
+ program { name: "controlbar_clip_hide";
+ signal: "elm,state,controlbar_clip,hide";
+ source: "elm";
+ script {
+ set_int(cbar_bg, get_int(cbar_bg) - 1);
+ if (get_int(cbar_bg) <= 0)
+ set_state(PART:"controlbar_clip", "default", 0.0);
+ }
+ }
+ program { name: "controlbar_open";
+ signal: "elm,state,controlbar,open";
+ source: "";
+ action: STATE_SET "show" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_close";
+ signal: "elm,state,controlbar,close";
+ source: "";
+ action: STATE_SET "default" 0.0;
+ target: "controlbar_clip";
+ transition: LINEAR 0.2;
+ }
+ program { name: "controlbar_instant_open";
+ signal: "elm,state,controlbar,instant_open";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,show", "elm");
+ emit("elm,state,elm.swallow.controlbar,show", "elm");
+ }
+ }
+ program { name: "controlbar_instant_close";
+ signal: "elm,state,controlbar,instant_close";
+ source: "";
+ script {
+ emit("elm,state,prev_btn,hide", "elm");
+ emit("elm,state,elm.swallow.controlbar,hide", "elm");
+ }
+ }
+ program { name: "show_finished";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ }
+ program { name: "pushed_finished";
+ action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+ }
+ program { name: "popped_finished";
+ action: SIGNAL_EMIT "elm,action,popped,finished" "";
+ }
+ program {
+ name: "title_clicked";
+ signal: "mouse,clicked,1";
+ source: "click_event_area";
+ action: SIGNAL_EMIT "elm,action,title,clicked" "";
+ }
+ }
+ }
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#define FONT_NANE "SLP:style=Bold"
+#define FONT_NORMAL_NANE "SLP:style=Medium"
+#define FONT_COLOR 255 255 255 255
+
+
+#define FONT_START_COLOR 149 149 149 255
+#define FONT_END_COLOR 149 149 149 255
+
+#define TITLE_FONT_SIZE 28
--- /dev/null
+# 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})
--- /dev/null
+# 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
--- /dev/null
+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"
+
--- /dev/null
+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 "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "通話中はビデオ再生できません"
+
--- /dev/null
+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 "통화 중에는 동영상을 재생할 수 없습니다"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "Воспроизведение видео во время вызова невозможно"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "通话中无法播放视频"
+
--- /dev/null
+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 "通話期間無法播放影片"
+
--- /dev/null
+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 "無法在通話期間播放影片"
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <media-svc.h>
+#include <visual-svc.h>
+#include <media-svc-error.h>
+#include <media-svc-types.h>
+
+#include "mp-video-log.h"
+#include "mp-video-value-define.h"
+#include "mp-video-type-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+
+static Eina_List *VideoItemList = NULL;
+static Eina_List *pAllTagList = NULL;
+
+MediaSvcHandle *pMediaSvcHandle = NULL;
+
+/*
+ * Callback function
+ */
+static int MpUtilMediaSvcMitemIterateCb(Mitem * pItem, void *pUserData)
+{
+ VideoLogInfo("Cluster ID: %s, File path:%s", pItem->cluster_uuid, pItem->file_url);
+
+ if (pItem->type == MINFO_ITEM_VIDEO) {
+ Eina_List **pList = (Eina_List **)pUserData;
+ *pList = eina_list_append(*pList, pItem);
+ }
+
+ return 0;
+}
+
+static int MpUtilMediaSvcMtagIterateGetTagListCb(Mtag * pItem, void *pUserData)
+{
+ VideoLogInfo("");
+
+ Eina_List **pList = (Eina_List **)pUserData;
+ *pList = eina_list_append(*pList, pItem);
+
+ return 0;
+}
+
+/*
+ * Internal function
+ */
+bool MpUtilMediaSvcGetFileDirectoryName(char *szFilePath, char *szFileName,
+ char *szDirectoryName,
+ char *szDirectoryPath)
+{
+ VideoLogInfo("");
+
+ if (!szFilePath) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int nLoopCount = 0;
+
+ for (nLoopCount = strlen(szFilePath); nLoopCount >= 0; nLoopCount--) {
+ if (szFilePath[nLoopCount] != '\0')
+ nCount++;
+
+ if (szFilePath[nLoopCount] == '/') {
+ if (szFileName) {
+ memcpy(szFileName, &szFilePath[nLoopCount + 1], --nCount);
+ *(szFileName + nCount) = '\0';
+ VideoLogInfo("File name = %s\n", szFileName);
+ }
+
+ if (szDirectoryPath) {
+ memcpy(szDirectoryPath, &szFilePath[0], nLoopCount);
+ *(szDirectoryPath + nLoopCount + 1) = '\0';
+ VideoLogInfo("Directory path = %s", szDirectoryPath);
+ }
+
+ if (szDirectoryName) {
+ nCount = 0;
+ for (--nLoopCount; nLoopCount >= 0; nLoopCount--) {
+ nCount++;
+ if (szFilePath[nLoopCount] == '/') {
+ memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount);
+ *(szDirectoryName + nCount) = '\0';
+ VideoLogInfo("Directory Name = %s", szDirectoryName);
+
+ return TRUE;
+ }
+ }
+ }
+
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool MpUtilMediaSvcDestroyList(Eina_List *pList)
+{
+ if (!pList) {
+ VideoLogInfo("pList is empty already.");
+ return FALSE;
+ }
+
+ Mitem *pMitem = NULL;
+ EINA_LIST_FREE(pList, pMitem) {
+ if (pMitem) {
+ minfo_destroy_mtype_item(pMitem);
+ pMitem = NULL;
+ }
+ }
+
+ pList = NULL;
+
+ return TRUE;
+}
+
+/*
+ * External function
+ */
+
+void MpUtilMediaSvcInitSession(void)
+{
+ VideoLogInfo("");
+
+ int nRet = 0;
+
+ nRet = media_svc_connect(&pMediaSvcHandle);
+
+ if(nRet < 0)
+ {
+ VideoLogInfo("[ERR]");
+ }
+}
+
+void MpUtilMediaSvcFinishSession(void)
+{
+ VideoLogInfo("");
+
+ media_svc_disconnect(pMediaSvcHandle);
+}
+
+void MpUtilMediaSvcDestoryVideoList(void)
+{
+ VideoLogInfo("");
+
+ if (VideoItemList) {
+ MpUtilMediaSvcDestroyList(VideoItemList);
+ VideoItemList = NULL;
+ }
+}
+
+bool MpUtilMediaSvcDestroyItem(char *szFilePath)
+{
+ VideoLogInfo("");
+
+ if (!szFilePath) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if (!VideoItemList) {
+ VideoLogInfo("pList is empty already.");
+ return FALSE;
+ }
+
+ Mitem *pMitem = NULL;
+ Eina_List *pIterateList = NULL;
+ EINA_LIST_FOREACH(VideoItemList, pIterateList, pMitem) {
+ if (pMitem) {
+ if (!strcmp(pMitem->file_url, szFilePath)) {
+ VideoItemList = eina_list_remove(VideoItemList, pMitem);
+ }
+ }
+ }
+ return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListFromFolder(char *szFilePath, int nSortType)
+{
+ VideoLogInfo("");
+
+ if (!szFilePath) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if (VideoItemList) {
+ VideoLogInfo("Already exist video list.");
+ return FALSE;
+ }
+
+ VideoLogInfo("szFilePath : %s", szFilePath);
+
+ int nRet = 0;
+ char szFolderID[STR_UUID_LEN_MAX] = { 0, };
+ char szDirectoryPath[STR_LEN_MAX] = { 0, };
+ minfo_item_filter m_Filter = { 0, };
+
+ // Get directory path from filepath.
+ MpUtilMediaSvcGetFileDirectoryName(szFilePath, NULL, NULL, szDirectoryPath);
+ VideoLogInfo("Directory Path : %s", szDirectoryPath);
+
+ // Get folder ID by directory path.
+ nRet = minfo_get_cluster_id_by_url(pMediaSvcHandle, szDirectoryPath, szFolderID, STR_UUID_LEN_MAX);
+ VideoLogInfo("Folder ID : %s", szFolderID);
+
+ // Set sorting type.
+ switch (nSortType) {
+ case MP_MEDIA_SORT_BY_NONE:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NONE;
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME_DESC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_DESC;
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME_ASC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ break;
+
+ case MP_MEDIA_SORT_BY_DATE_DESC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+ break;
+
+ case MP_MEDIA_SORT_BY_DATE_ASC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ break;
+
+ default:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ }
+
+ // Set sorting type.
+ m_Filter.favorite = MINFO_MEDIA_FAV_ALL;
+ m_Filter.file_type = MINFO_ITEM_VIDEO;
+ m_Filter.start_pos = -1;
+ m_Filter.end_pos = -1;
+ m_Filter.with_meta = TRUE;
+
+ // Get Item List.
+ minfo_get_item_list(pMediaSvcHandle, szFolderID, m_Filter, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+ return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListFromAllFolderOfGallery(int nSortType)
+{
+ VideoLogInfo("");
+
+ if (VideoItemList) {
+ VideoLogInfo("Already exist video list.");
+ return FALSE;
+ }
+
+ minfo_item_filter m_Filter = { 0 };
+
+ /* Set sorting type. */
+ switch (nSortType) {
+ case MP_MEDIA_SORT_BY_NONE:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NONE;
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME_DESC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_DESC;
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME_ASC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ break;
+
+ case MP_MEDIA_SORT_BY_DATE_DESC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+ break;
+
+ case MP_MEDIA_SORT_BY_DATE_ASC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ break;
+
+ default:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ }
+
+ VideoLogInfo("Sorting : %d", nSortType);
+
+ /* Set sorting type. */
+ m_Filter.favorite = MINFO_MEDIA_FAV_ALL;
+ m_Filter.file_type = MINFO_ITEM_VIDEO;
+ m_Filter.start_pos = -1;
+ m_Filter.end_pos = -1;
+ m_Filter.with_meta = TRUE;
+
+ /* Get All Item. */
+ minfo_get_all_item_list(pMediaSvcHandle, MINFO_CLUSTER_TYPE_LOCAL_ALL, m_Filter, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+
+ return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListByTagName(char *szTagName)
+{
+ VideoLogInfo("");
+
+ if (!szTagName) {
+ VideoLogInfo("[ERR] No Exist tag name.");
+ return FALSE;
+ }
+
+ if (VideoItemList) {
+ VideoLogInfo("Already exist video list.");
+ return FALSE;
+ }
+
+ VideoLogInfo("szTagName : %s", szTagName);
+
+ int nRet = minfo_get_media_list_by_tagname(pMediaSvcHandle, szTagName, FALSE, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+ if (nRet < 0) {
+ VideoLogInfo("Failed to get a media items' list. error code->%d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpUtilMediaSvcGetVideoFileListFromFavorite(int nSortType)
+{
+ VideoLogInfo("");
+
+ if (VideoItemList) {
+ VideoLogInfo("Already exist video list.");
+ return FALSE;
+ }
+
+ minfo_item_filter m_Filter = { 0 };
+
+ /* Set sorting type. */
+ switch (nSortType) {
+ case MP_MEDIA_SORT_BY_NONE:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NONE;
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME_DESC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_DESC;
+ break;
+
+ case MP_MEDIA_SORT_BY_NAME_ASC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ break;
+
+ case MP_MEDIA_SORT_BY_DATE_DESC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+ break;
+
+ case MP_MEDIA_SORT_BY_DATE_ASC:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC;
+ break;
+
+ default:
+ m_Filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC;
+ }
+
+ m_Filter.favorite = MINFO_MEDIA_FAV_ONLY;
+ m_Filter.file_type = MINFO_ITEM_VIDEO;
+ m_Filter.start_pos = -1;
+ m_Filter.end_pos = -1;
+ m_Filter.with_meta = FALSE;
+
+ int nRet = minfo_get_item_list(pMediaSvcHandle, NULL, m_Filter, MpUtilMediaSvcMitemIterateCb, &VideoItemList);
+ if (nRet < 0) {
+ VideoLogInfo("Failed to get a media items' list. error code->%d", nRet);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void MpUtilMediaSvcMtagIterateDestroyTagList(void)
+{
+ VideoLogInfo("");
+
+ if (!pAllTagList) {
+ VideoLogInfo("pAllTagList is empty already.");
+ return;
+ }
+
+ Mtag *pMtag = NULL;
+ EINA_LIST_FREE(pAllTagList, pMtag) {
+ if (pMtag) {
+ if (pMtag->tag_name) {
+ free(pMtag->tag_name);
+ pMtag->tag_name = NULL;
+ }
+ free(pMtag);
+ pMtag = NULL;
+ }
+ }
+
+ pAllTagList = NULL;
+}
+
+int MpUtilMediaSvcMtagGetAllTagList(char *pTagList[])
+{
+ VideoLogInfo("");
+
+ int nErr = 0;
+ int nCount = 0;
+
+ if (pAllTagList) {
+ MpUtilMediaSvcMtagIterateDestroyTagList();
+ }
+
+ minfo_get_tag_list_by_media_id(pMediaSvcHandle, NULL, MpUtilMediaSvcMtagIterateGetTagListCb, &pAllTagList);
+
+ if (nErr == 0 && pAllTagList != NULL) {
+ Mtag *pMtag = NULL;
+ Eina_List *pTmpList = NULL;
+
+ EINA_LIST_FOREACH(pAllTagList, pTmpList, pMtag) {
+ if (pMtag && pMtag->tag_name) {
+ VideoLogInfo("%s of the tag has %d item(s).", pMtag->tag_name, pMtag->count);
+ pTagList[nCount++] = pMtag->tag_name;
+ }
+ }
+ }
+
+ VideoLogInfo("Size of User tag list is %d.", nCount);
+
+ return nCount;
+}
+
+bool MpUtilMediaSvcMtagAddItemToTag(const char *szTagName, char *szMediaUri)
+{
+ VideoLogInfo("");
+
+ if (!szTagName) {
+ VideoLogInfo("[ERR] No exist string pointer szTagName.");
+ return FALSE;
+ }
+
+ Mitem *m_Item = NULL;
+
+ if (szMediaUri) {
+ minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+ }
+
+ if (m_Item) {
+ minfo_add_tag(pMediaSvcHandle, m_Item->uuid, szTagName);
+ minfo_destroy_mtype_item(m_Item);
+ } else {
+ minfo_add_tag(pMediaSvcHandle, NULL, szTagName);
+ }
+
+ return TRUE;
+}
+
+bool MpUtilMediaSvcMtagGetItemToFavorite(char *szMediaUri)
+{
+ VideoLogInfo("");
+
+ if (!szMediaUri) {
+ VideoLogInfo("[ERR] No exist string pointer szMediaUri.");
+ return FALSE;
+ }
+
+ Mitem *m_Item = NULL;
+
+ minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+
+ if (m_Item) {
+ VideoLogInfo("Favorate value : %d", m_Item->rate);
+ if (m_Item->rate) {
+ minfo_destroy_mtype_item(m_Item);
+ return TRUE;
+ } else {
+ minfo_destroy_mtype_item(m_Item);
+ return FALSE;
+ }
+
+ } else {
+ VideoLogInfo("[ERR] m_Item is NULL.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpUtilMediaSvcMtagAddItemToFavorite(char *szMediaUri, bool bFavorite)
+{
+ VideoLogInfo("");
+
+ if (!szMediaUri) {
+ VideoLogInfo("[ERR] No exist string pointer szMediaUri.");
+ return FALSE;
+ }
+
+ Mitem *m_Item = NULL;
+
+ minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+
+ if (m_Item) {
+ int nRet = minfo_update_media_favorite(pMediaSvcHandle, m_Item->uuid, bFavorite);
+
+ if (nRet == 0) {
+ VideoLogInfo("success to add item to favourites folder.");
+ } else {
+ VideoLogInfo("fail - error code : %d ", nRet);
+ }
+
+ minfo_destroy_mtype_item(m_Item);
+ } else {
+ VideoLogInfo("[ERR] m_Item is NULL.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+char *MpUtilMediaSvcMitemGetThumbnailUrl(char *szMediaUri)
+{
+ VideoLogInfo("");
+
+ if (!szMediaUri) {
+ VideoLogInfo("[ERR] No exist string pointer szMediaUri.");
+ return FALSE;
+ }
+
+ Mitem *m_Item = NULL;
+ char *thumb_path = NULL;
+
+ minfo_get_item(pMediaSvcHandle, szMediaUri, &m_Item);
+
+ if (m_Item) {
+ /* prevent 2011/07/12 */
+ thumb_path = strdup(m_Item->thumb_url);
+ minfo_destroy_mtype_item(m_Item);
+ return thumb_path;
+ }
+
+ return NULL;
+}
+
+bool MpUtilMediaSvcGetPreNextVideoUrl(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri)
+{
+ VideoLogInfo("");
+
+ if (!szCurrMediaUri) {
+ VideoLogInfo("[ERR] No exist current file path.");
+ return FALSE;
+ }
+
+ if (!VideoItemList) {
+ VideoLogInfo("No exist VideoItemList.");
+ return FALSE;
+ }
+
+ int nCount = 0;
+ int nListSize = 0;
+ Mitem *m_Item = NULL;
+ Eina_List *pIterateList = NULL;
+
+ memset(szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+ memset(szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+
+ nListSize = eina_list_count(VideoItemList);
+
+ if (nListSize <= 1) {
+ VideoLogInfo("Video list size == 1.");
+ return FALSE;
+ }
+
+ EINA_LIST_FOREACH(VideoItemList, pIterateList, m_Item) {
+ if (m_Item == NULL)
+ continue;
+
+ VideoLogInfo("URL of the File item - %s (%d / %d)", m_Item->file_url, nCount, nListSize);
+
+ if (!strcmp(m_Item->file_url, szCurrMediaUri)) {
+ m_Item = NULL;
+ m_Item = (Mitem *) eina_list_nth(VideoItemList, nCount - 1);
+ if (m_Item) {
+ strncpy(szPreMediaUri, m_Item->file_url, (sizeof(char) * STR_LEN_MAX) - 1);
+ }
+
+ m_Item = NULL;
+ m_Item = (Mitem *) eina_list_nth(VideoItemList, nCount + 1);
+ if (m_Item) {
+ strncpy(szNextMediaUri, m_Item->file_url, (sizeof(char) * STR_LEN_MAX) - 1);
+ }
+
+ VideoLogInfo("PreMediaUri:%s", szPreMediaUri);
+ VideoLogInfo("NextMediaUri:%s", szNextMediaUri);
+
+ return TRUE;
+ }
+
+ ++nCount;
+ }
+
+ return FALSE;
+}
+
+void MpUtilMediaSvcGetVideoID(const char *szPath, char *szVideoID)
+{
+
+ VideoLogInfo("");
+
+ Mitem *item = NULL;
+ int ret = 0;
+
+ ret = minfo_get_item(pMediaSvcHandle, szPath, &item);
+ if (ret < 0) {
+ VideoLogInfo("minfo_get_item API error return:%s, %d", szPath, ret);
+ return;
+ }
+
+ if (item) {
+ memset((void*)szVideoID, 0, STR_LEN_MAX);
+ strncpy(szVideoID, item->uuid, STR_LEN_MAX-1);
+ minfo_destroy_mtype_item(item);
+ }
+}
+
+
+void MpUtilMediaSvcSaveLastPlayedTime(char* szMediaUri, unsigned int nLastPlayedTime)
+{
+ if (!szMediaUri) {
+ VideoLogInfo("No exist media uri.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ char szVid[STR_LEN_MAX] = {0};
+
+ MpUtilMediaSvcGetVideoID(szMediaUri, szVid);
+
+ if (strlen(szVid) > 0) {
+ minfo_update_video_meta_info_int(pMediaSvcHandle, szVid, MINFO_VIDEO_META_BOOKMARK_LAST_PLAYED, nLastPlayedTime);
+ } else {
+ VideoLogInfo("Invalid video ID.");
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <aul.h>
+#include <glib.h>
+#include <errno.h>
+#include <vconf.h>
+#include <pmapi.h>
+#include <utilX.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sensor.h>
+#include <appsvc.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <Ecore_Evas.h>
+#include <vconf-keys.h>
+#include <mm_session.h>
+#include <mm_sound.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-xml-parser.h"
+#include "mp-util-media-service.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-info-ctrl.h"
+
+#define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME "org.tizen.bluetooth"
+
+#define MP_UTIL_VIDEO_PATH "path"
+#define MP_UTIL_USER_AGENT_KEY "db/admin/uagent"
+#define MP_UTIL_COOKIE "cookie"
+
+#define MP_UTIL_MMC_PATH "/opt/storage/sdcard"
+
+#define MP_UTIL_FILE_PREFIX "file://"
+
+
+static Ecore_X_Window pMainXwindow = 0;
+static Ecore_X_Display *pX11DisplayHandle = NULL;
+static Evas_Object *pPopUpHandle = NULL;
+static Evas_Object *pPopupWindow = NULL;
+
+MpXMLItemInfo pXmlItem[XML_ITEM_NUM];
+int nXmlItemCount = 0;
+int nHttpQuality = 0;
+int nHttpCount = 0;
+int nRtspCount = 0;
+bool bXmlLoad = FALSE;
+
+/*
+ * Callback function
+ */
+
+static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+ VideoLogInfo("");
+
+ int nLowBatteryStatus = 0;
+
+ if (!pUserData) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!vconf_get_int
+ (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
+ if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ return;
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf");
+ }
+}
+
+static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData)
+{
+ VideoLogInfo("");
+
+ char szFilename[9] = { 0 };
+
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ char *keyname = vconf_keynode_get_name(pKeyNode);
+ if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) {
+ int nMMCState = vconf_keynode_get_int(pKeyNode);
+ if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) {
+ strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1);
+ VideoLogInfo("FILE NAME[%s]", szFilename);
+ if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ }
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf");
+ }
+}
+
+
+/*
+ * External function
+ */
+
+void MpUtilExitVideoPlayer(void)
+{
+ VideoLogInfo("");
+
+ elm_exit();
+}
+
+static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject,
+ void *pEvent)
+{
+ VideoLogInfo("");
+
+ MpUtilExitVideoPlayer();
+}
+
+void MpUtilResetForRelaunching(void)
+{
+ VideoLogInfo("");
+
+ pX11DisplayHandle = NULL;
+ pPopUpHandle = NULL;
+ pPopupWindow = NULL;
+
+ memset(pXmlItem, 0, sizeof(MpXMLItemInfo) * XML_ITEM_NUM);
+
+ nXmlItemCount = 0;
+ nHttpQuality = 0;
+ nHttpCount = 0;
+ nRtspCount = 0;
+ bXmlLoad = FALSE;
+}
+
+void *MpUtilCreateMainWindow(const char *pStrName)
+{
+ VideoLogInfo("");
+
+ if (!pStrName) {
+ VideoLogInfo("[ERR] No exist pStrName.");
+ return NULL;
+ }
+
+ if (pMainXwindow) {
+ evas_object_del((Evas_Object *)pMainXwindow);
+ pMainXwindow = 0;
+ }
+
+ int nWidth, nHeight;
+ Evas_Object *pEvasObject;
+
+ ecore_evas_app_comp_sync_set(0);
+ pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
+ if (pEvasObject) {
+ elm_win_title_set(pEvasObject, pStrName);
+ elm_win_borderless_set(pEvasObject, EINA_TRUE);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(),
+ &nWidth, &nHeight);
+
+ evas_object_resize(pEvasObject, nWidth, nHeight);
+
+ evas_object_smart_callback_add(pEvasObject, "delete,request",
+ MpUtilDestroyMainWindow, NULL);
+ }
+
+ pMainXwindow = elm_win_xwindow_get(pEvasObject);
+
+ ////////////////////////////
+ // TEMP
+
+ Evas_Object *pRect = NULL;
+ Evas *pMainWindowEvas = evas_object_evas_get(pEvasObject);
+
+ pRect = evas_object_rectangle_add(pMainWindowEvas);
+ evas_object_color_set(pRect, 0, 0, 0, 0);
+ evas_object_render_op_set(pRect, EVAS_RENDER_COPY);
+ evas_object_resize(pRect, nWidth, nHeight);
+ evas_object_show(pRect);
+
+ return (void *)pEvasObject;
+}
+
+void *MpUtilCreateWindow(const char *pStrName)
+{
+ VideoLogInfo("");
+
+ if (!pStrName) {
+ VideoLogInfo("[ERR] No exist pStrName.");
+ return NULL;
+ }
+
+ if (!pMainXwindow) {
+ VideoLogInfo("[ERR] No exist pMainXwindow.");
+ return NULL;
+ }
+
+ int nWidth = 0, nHeight = 0;
+ Evas_Object *pEvasObject = NULL;
+
+ pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC);
+ if (pEvasObject) {
+ elm_win_title_set(pEvasObject, pStrName);
+ elm_win_borderless_set(pEvasObject, EINA_TRUE);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &nWidth, &nHeight);
+ evas_object_resize(pEvasObject, nWidth, nHeight);
+ }
+
+ elm_win_alpha_set(pEvasObject, TRUE);
+ ecore_x_icccm_transient_for_set(elm_win_xwindow_get(pEvasObject), pMainXwindow);
+ utilx_set_window_effect_state(ecore_x_display_get(), elm_win_xwindow_get(pEvasObject), 0);
+ evas_object_show(pEvasObject);
+
+ return (void *)pEvasObject;
+}
+
+int MpUtilSetKeyGrab(const char *szKeyName, int nGrabMode)
+{
+ VideoLogInfo("");
+
+ if (!pX11DisplayHandle) {
+ pX11DisplayHandle = ecore_x_display_get();
+ }
+
+ if (!pMainXwindow) {
+ VideoLogInfo("Not exist pMainXwindow.");
+ }
+
+ utilx_grab_key(pX11DisplayHandle, pMainXwindow, szKeyName, nGrabMode);
+
+ return TRUE;
+}
+
+int MpUtilSetKeyUngrab(const char *szKeyName)
+{
+ VideoLogInfo("");
+ if (pMainXwindow && pX11DisplayHandle) {
+ utilx_ungrab_key(pX11DisplayHandle, pMainXwindow, szKeyName);
+ }
+
+ return TRUE;
+}
+
+bool MpUtilCheckRTSPType(char *szUriPath)
+{
+ if(szUriPath == NULL) {
+ VideoLogInfo("ERR:");
+ return FALSE;
+ }
+
+ if (strstr(szUriPath, "rtp"))
+ return TRUE;
+ else if (strstr(szUriPath, "rtsp"))
+ return TRUE;
+
+ return FALSE;
+}
+
+int MpUtilCheckPlayerType(char *szUriPath)
+{
+ if(szUriPath == NULL) {
+ VideoLogInfo("ERR:");
+ return FALSE;
+ }
+
+ VideoLogInfo(" URI : %s", szUriPath);
+
+ if (strstr(szUriPath, "rtp"))
+ return 1;
+ else if (strstr(szUriPath, "rtsp"))
+ return 1;
+ else if (strstr(szUriPath, "http"))
+ return 1;
+ else if (strstr(szUriPath, "https"))
+ return 1;
+
+ return 0;
+}
+
+bool MpUtilGetURIFromBundle(bundle * pBundleData, VideoAppData *pAppData)
+{
+ char *pStrVideoURI = NULL;
+
+ if (!pBundleData || !bundle_get_count(pBundleData)) {
+ VideoLogInfo
+ ("[ERR] No exist pBundleData pointer or bundle count value.");
+ return FALSE;
+ }
+
+ pStrVideoURI = (char *)bundle_get_val(pBundleData, MP_UTIL_VIDEO_PATH);
+ if (pStrVideoURI) {
+ strncpy(pAppData->szMediaUri, pStrVideoURI, STR_LEN_MAX - 1);
+ } else {
+ VideoLogInfo("[ERR] No exist video/streaming URI.");
+ return FALSE;
+ }
+
+ VideoLogInfo("Video/Streaming URI path pStrVideoURI : %s",
+ pStrVideoURI);
+ VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s",
+ pAppData->szMediaUri);
+
+ return TRUE;
+}
+
+bool MpUtilGetURIFromAUL(bundle * pBundleData, VideoAppData *pAppData)
+{
+ char *pStrVideoURI = NULL;
+
+ if (!pBundleData || !bundle_get_count(pBundleData)) {
+ VideoLogInfo
+ ("[ERR] No exist pBundleData pointer or bundle count value.");
+ return FALSE;
+ }
+
+
+ if(!strcmp(APPSVC_OPERATION_VIEW , appsvc_get_operation(pBundleData)))
+ {
+ pStrVideoURI = (char *)appsvc_get_uri(pBundleData);
+ if (pStrVideoURI) {
+ strncpy(pAppData->szMediaUri, pStrVideoURI, STR_LEN_MAX - 1);
+ } else {
+ VideoLogInfo("[ERR] No exist video/streaming URI.");
+ return FALSE;
+ }
+ }
+ else
+ {
+ VideoLogInfo("[ERR] No exist Operation.");
+ return FALSE;
+ }
+
+ VideoLogInfo("Video/Streaming URI path pStrVideoURI : %s",
+ pStrVideoURI);
+ VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s",
+ pAppData->szMediaUri);
+
+ return TRUE;
+}
+
+
+bool MpUtilGetCookieFromBundle(bundle * pBundleData, VideoAppData *pAppData)
+{
+ char *pStrVideoCookie = NULL;
+
+ if (!pBundleData || !bundle_get_count(pBundleData)) {
+ VideoLogInfo
+ ("[ERR] No exist pBundleData pointer or bundle count value.");
+ return FALSE;
+ }
+
+ pStrVideoCookie = (char *)bundle_get_val(pBundleData, MP_UTIL_COOKIE);
+ if (pStrVideoCookie) {
+ strncpy(pAppData->szCookie, pStrVideoCookie, STR_LEN_MAX - 1);
+ } else {
+ VideoLogInfo("[ERR] No exist video/streaming URI.");
+ return FALSE;
+ }
+
+ VideoLogInfo("Video/Streaming URI path Cookie : %s", pStrVideoCookie);
+
+ return TRUE;
+}
+
+bool MpUtilCheckLocalFileExist(char *uri)
+{
+ VideoLogInfo("");
+
+ if (uri == NULL) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if(strstr(uri,MP_UTIL_FILE_PREFIX))
+ {
+ if (!g_file_test(uri+strlen(MP_UTIL_FILE_PREFIX),
+ G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+ return FALSE;
+ }
+ return TRUE;
+ }
+ else
+ {
+ if (!g_file_test(uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+}
+
+bool MpUtilCheckVideoURI(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (pAppData == NULL) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if (strlen(pAppData->szMediaUri) > 0) {
+ if (MpUtilCheckPlayerType(pAppData->szMediaUri)) {
+ VideoLogInfo("=== SETTING STREAMING TYPE ===");
+ strncpy(pAppData->szVideoTitle, MP_STREAMING_PLAYER_STR,
+ STR_LEN_MAX - 1);
+ pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+ } else {
+ VideoLogInfo("=== SETTING VIDEO TYPE ===");
+ pAppData->nCurPlayerType = MP_VIDEO_PLAYER;
+ }
+ } else {
+ VideoLogInfo("[ERR] No exist video/streaming URI.");
+ return FALSE;
+ }
+
+ VideoLogInfo("pAppData->szMediaUri : %s", pAppData->szMediaUri);
+
+ return TRUE;
+}
+
+bool MpUtilCheckBatteryStatus(void)
+{
+ VideoLogInfo("");
+
+ int nLowBatteryStatus = 0;
+
+ if (!vconf_get_int
+ (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) {
+ if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+
+int MpUtilBatteryStatusNoti(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (!pAppData) {
+ VideoLogInfo("[ERR] No exist appdata.");
+ return FALSE;
+ }
+
+ if (vconf_notify_key_changed
+ (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, MpUtilBatteryStatusChangeCb,
+ pAppData)) {
+ VideoLogInfo("[ERR] Fail to set Battery notification.");
+ }
+
+ return TRUE;
+}
+
+int MpUtilBatteryStatusNotiIgnore(void)
+{
+ VideoLogInfo("");
+
+ if (vconf_ignore_key_changed
+ (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+ MpUtilBatteryStatusChangeCb) < 0) {
+ VideoLogInfo("[ERR] Fail to ignore battery status.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+int MpUtilMMCstatusNoti(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (!pAppData) {
+ VideoLogInfo("[ERR] No exist appdata.");
+ return FALSE;
+ }
+
+ if (vconf_notify_key_changed
+ (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb,
+ pAppData) < 0) {
+ VideoLogInfo("[ERR] Fail to set MMC notification.");
+ }
+
+ return TRUE;
+}
+
+
+
+int MpUtilMMCstatusNotiIgnore(void)
+{
+ VideoLogInfo("");
+
+ if (vconf_ignore_key_changed
+ (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) {
+ VideoLogInfo("[ERR] Fail to ignore MMC status.");
+ }
+
+ return TRUE;
+}
+
+void MpUtilLanguageInit(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (!pAppData) {
+ VideoLogInfo("[ERR] No exist appdata.");
+ return;
+ }
+
+ char *szPath = NULL;
+
+ szPath = vconf_get_str(VCONFKEY_LANGSET);
+ if (!szPath) {
+ VideoLogInfo("Language setting has no proper value (nil)");
+ return;
+ }
+
+ VideoLogInfo("Setting language is %s", szPath);
+
+ setenv("LANG", szPath, 1);
+ setenv("LC_ALL", szPath, 1);
+ setenv("LANGUAGE", szPath, 1);
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+}
+
+int MpUtilCheckStartPositionTime(void *pBundle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle data.");
+ return 0;
+ }
+
+ int nStartPositionTime = 0;
+ char *szStartPosTime = (char *)bundle_get_val(pBundle, szBundleKey);
+
+ if (!szStartPosTime) {
+ VideoLogInfo("No exist start position time.");
+ return 0;
+ }
+
+ nStartPositionTime = atoi(szStartPosTime);
+
+ VideoLogInfo("Start position time : %d", nStartPositionTime);
+
+ return nStartPositionTime;
+}
+
+bool MpUtilCheckLaunchingByMime(void *pBundle, char *szMediaUri)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("[ERR] No Exist bundle.");
+ return FALSE;
+ }
+
+ if (!szMediaUri) {
+ VideoLogInfo("[ERR] No Exist media uri.");
+ return FALSE;
+ }
+
+ char *szMimeContent =
+ (char *)bundle_get_val(pBundle, AUL_K_MIME_CONTENT);
+
+ if (!szMimeContent) {
+ VideoLogInfo("No exist mime type.");
+ return FALSE;
+ }
+
+ VideoLogInfo("Mime content : %s", szMimeContent);
+ strncpy(szMediaUri, szMimeContent, STR_LEN_MAX - 1);
+
+ return TRUE;
+}
+
+int MpUtilCheckLaunchingByOtherApp(void *pBundle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle data.");
+ return MP_LAUNCH_APP_DEFAULT;
+ }
+
+ char *szLaunchingByOtherApp =
+ (char *)bundle_get_val(pBundle, szBundleKey);
+ MpLaunchingAppType nTmpLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
+
+ if (!szLaunchingByOtherApp) {
+ VideoLogInfo("No exist Launching application.");
+ return nTmpLaunchingAppType;
+ }
+
+ if (!strcmp(szLaunchingByOtherApp, "gallery")) {
+ nTmpLaunchingAppType = MP_LAUNCH_APP_GALLERY;
+ } else if (!strcmp(szLaunchingByOtherApp, "image_viewer")) {
+ nTmpLaunchingAppType = MP_LAUNCH_APP_IMAGE_VIEWER;
+ } else if (!strcmp(szLaunchingByOtherApp, "email")) {
+ nTmpLaunchingAppType = MP_LAUNCH_APP_SIMPLE_VIEW;
+ } else if (!strcmp(szLaunchingByOtherApp, "message")) {
+ nTmpLaunchingAppType = MP_LAUNCH_APP_SIMPLE_VIEW;
+ } else if (!strcmp(szLaunchingByOtherApp, "light_play_view")) {
+ nTmpLaunchingAppType = MP_LAUNCH_APP_SIMPLE_VIEW;
+ } else {
+ nTmpLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
+ }
+
+ VideoLogInfo("Start position time : %d", nTmpLaunchingAppType);
+
+ return (int)nTmpLaunchingAppType;
+}
+
+int MpUtilCheckSortType(void *pBundle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle data.");
+ return (int)MP_MEDIA_SORT_BY_NONE;
+ }
+
+ char *szSortType = (char *)bundle_get_val(pBundle, szBundleKey);
+ MpMediaSortType nTmpSortType = MP_MEDIA_SORT_BY_NAME_DESC;
+
+ if (!szSortType) {
+ VideoLogInfo("No exist sort type information.");
+ return (int)nTmpSortType;
+ }
+
+ if (!strcmp(szSortType, "name_asc")) {
+ nTmpSortType = MP_MEDIA_SORT_BY_NAME_ASC;
+ } else if (!strcmp(szSortType, "name_desc")) {
+ nTmpSortType = MP_MEDIA_SORT_BY_NAME_DESC;
+ } else if (!strcmp(szSortType, "date_asc")) {
+ nTmpSortType = MP_MEDIA_SORT_BY_DATE_ASC;
+ } else if (!strcmp(szSortType, "date_desc")) {
+ nTmpSortType = MP_MEDIA_SORT_BY_DATE_DESC;
+ } else if (!strcmp(szSortType, "none")) {
+ nTmpSortType = MP_MEDIA_SORT_BY_NONE;
+ } else {
+ nTmpSortType = MP_MEDIA_SORT_BY_NAME_DESC;
+ }
+
+ return (int)nTmpSortType;
+}
+
+int MpUtilCheckListType(void *pBundle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle data.");
+ VideoLogInfo("Video list type : folder");
+ return (int)MP_VIDEO_LIST_TYPE_FOLDER;
+ }
+
+ if (!szBundleKey) {
+ VideoLogInfo("No exist bundle kay.");
+ VideoLogInfo("Video list type : folder");
+ return (int)MP_VIDEO_LIST_TYPE_FOLDER;
+ }
+
+ char *szVideoListType = (char *)bundle_get_val(pBundle, szBundleKey);
+ MpVideoListType nTmpVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+
+ if (!szVideoListType) {
+ VideoLogInfo("No exist video list type information.");
+ VideoLogInfo("Video list type : folder");
+ return (int)nTmpVideoListType;
+ }
+
+ if (!strcmp(szVideoListType, "folder")) {
+ nTmpVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+ VideoLogInfo("Video list type : folder");
+ } else if (!strcmp(szVideoListType, "all_folder_video")) {
+ nTmpVideoListType = MP_VIDEO_LIST_TYPE_ALL_FOLDER_GALLERY;
+ VideoLogInfo("Video list type : all_folder_video");
+ } else if (!strcmp(szVideoListType, "tag_video")) {
+ nTmpVideoListType = MP_VIDEO_LIST_TYPE_TAG_GALLERY;
+ VideoLogInfo("Video list type : tag_video");
+ } else if (!strcmp(szVideoListType, "favorite")) {
+ nTmpVideoListType = MP_VIDEO_LIST_TYPE_FAVORITE;
+ VideoLogInfo("Video list type : favorite");
+ } else {
+ nTmpVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+ VideoLogInfo("Video list type : folder");
+ }
+
+ return (int)nTmpVideoListType;
+}
+
+bool MpUtilGetTagNameOfGallery(void *pBundle, char *szBundleKey,
+ char *szTagName)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle.");
+ return FALSE;
+ }
+
+ if (!szBundleKey) {
+ VideoLogInfo("No exist bundle kay.");
+ return FALSE;
+ }
+
+ if (!szTagName) {
+ VideoLogInfo("No exist pAppData.");
+ return FALSE;
+ }
+
+ char *szVideoTagName = (char *)bundle_get_val(pBundle, szBundleKey);
+
+ if (!szVideoTagName) {
+ VideoLogInfo("No exist video tag name.");
+ return FALSE;
+ }
+
+ strncpy(szTagName, szVideoTagName, STR_LEN_MAX - 1);
+
+ VideoLogInfo("szTagName : %s", szTagName);
+
+ return TRUE;
+}
+
+int MpUtilCheckDlnaSortType(void *pBundle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle data.");
+ return (int)MP_MEDIA_SORT_BY_NONE;
+ }
+
+ char *szSortType = (char *)bundle_get_val(pBundle, szBundleKey);
+ if(szSortType == NULL) {
+ VideoLogInfo("No exist bundle value.");
+ return -1;
+ }
+ int nTmpSortType = atoi(szSortType);
+
+ return (int)nTmpSortType;
+}
+
+int MpUtilCheckDlnaMediaID(void *pBundle, char *szBundleKey)
+{
+ VideoLogInfo("");
+
+ if (!pBundle) {
+ VideoLogInfo("No exist bundle data.");
+ return -1;
+ }
+
+ char *szMediID = (char *)bundle_get_val(pBundle, szBundleKey);
+
+ if (szMediID == NULL) {
+ VideoLogInfo("No exist bundle value.");
+ return -1;
+ }
+
+ int media_id = atoi(szMediID);
+
+ return (int)media_id;
+}
+
+bool MpUtilIsXMLUrl(char *szMediaUri)
+{
+ VideoLogInfo("URI : %s", szMediaUri);
+
+ if (!g_str_has_suffix(szMediaUri, ".xml")) {
+ VideoLogInfo("No have xml uri.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void MpUtilInitXML()
+{
+ VideoLogInfo("");
+
+ mp_xml_init();
+}
+
+void MpUtilDestroyXML()
+{
+ VideoLogInfo("");
+
+ mp_xml_destroy();
+}
+
+char *MpUtilGetXMLQualityURL(void)
+{
+ VideoLogInfo("");
+
+ if (nHttpCount > 1 || nRtspCount > 1) {
+ nHttpQuality = (nHttpQuality + 1) % 2;
+ return strdup(pXmlItem[nHttpQuality].szURL);
+ }
+
+ return NULL;
+}
+
+bool MpUtilParsingXML(char *szMediaUri, VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+ char *pXmlData = NULL;
+ char *szTmpUri = NULL;
+ int nInsertCount = 0;
+ unsigned int nFileSize = 0;
+
+ if (!szMediaUri) {
+ VideoLogInfo("[ERR] No have Media uri.");
+ return FALSE;
+ }
+ MpUtilInitXML();
+
+ szTmpUri = (char *)strdup(pAppData->szMediaUri);
+
+ if (szTmpUri == NULL) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if (!g_str_has_suffix(szTmpUri, ".xml")) {
+ VideoLogInfo("No have xml uri.");
+ if (szTmpUri)
+ free(szTmpUri);
+ return TRUE;
+ }
+
+ memset(pXmlItem, 0, sizeof(MpXMLItemInfo) * XML_ITEM_NUM);
+
+ nFileSize = mp_read_xml_file(szTmpUri, &pXmlData);
+ if (nFileSize == 0 || pXmlData == NULL) {
+ VideoLogInfo("[ERR] Invalid XML File : %s", szTmpUri);
+ if (szTmpUri)
+ free(szTmpUri);
+
+ if (pXmlData)
+ free(pXmlData);
+
+ return FALSE;
+ }
+
+ nInsertCount = mp_get_xmlitem(pXmlData, nFileSize,
+ pXmlItem, &nHttpCount, &nRtspCount);
+ if (nInsertCount > 0) {
+ VideoLogInfo("Get xml item : %d", nInsertCount);
+ nXmlItemCount = nInsertCount;
+ }
+
+ if (nHttpCount > 1) {
+ nHttpQuality = 0;
+ memset((void *)pAppData->szMediaUri, 0,
+ sizeof(pAppData->szMediaUri));
+ strncpy(pAppData->szMediaUri, pXmlItem[nHttpQuality].szURL,
+ STR_LEN_MAX - 1);
+ nXmlItemCount = nHttpCount;
+ } else if (nRtspCount > 1) {
+ nHttpQuality = 0;
+ memset((void *)pAppData->szMediaUri, 0,
+ sizeof(pAppData->szMediaUri));
+ strncpy(pAppData->szMediaUri, pXmlItem[nHttpQuality].szURL,
+ STR_LEN_MAX - 1);
+ VideoLogInfo("URL : %s", pAppData->szMediaUri);
+ nXmlItemCount = nRtspCount;
+ } else {
+ char *szParsedUrl = NULL;
+ bool bResult =
+ mp_get_url_from_xml(pXmlData, nFileSize, &szParsedUrl,
+ _WIFI_MODE_);
+
+ if (bResult == FALSE || szParsedUrl == NULL) {
+ VideoLogInfo("[ERR] XML parsing failed!");
+ free(szTmpUri);
+ return FALSE;
+ }
+
+ memset((void *)pAppData->szMediaUri, 0, STR_LEN_MAX);
+ strncpy(pAppData->szMediaUri, szParsedUrl, STR_LEN_MAX - 1);
+
+ if (szParsedUrl) {
+ free(szParsedUrl);
+ }
+ }
+
+ pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+
+ strncpy(pAppData->szVideoTitle, mp_get_title_from_xml(szTmpUri),
+ STR_LEN_MAX - 1);
+
+ bXmlLoad = TRUE;
+
+ if (pXmlData) {
+ free(pXmlData);
+ }
+
+ if (szTmpUri) {
+ free(szTmpUri);
+ }
+
+ return TRUE;
+}
+
+int MpUtilGetXMLItemCount(void)
+{
+ VideoLogInfo("");
+
+ if (nHttpCount > 0)
+ return nHttpCount;
+
+ if (nRtspCount > 0)
+ return nRtspCount;
+
+ return 0;
+
+}
+
+bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle)
+{
+ VideoLogInfo("");
+
+ if (!szFilepath || !szTitle) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ char *szTitleName;
+ char *szExt;
+
+ szTitleName = strrchr(szFilepath, '/');
+
+ if (szTitleName)
+ szTitleName++;
+ else
+ szTitleName = szFilepath;
+
+ szExt = strrchr(szTitleName, '.');
+
+ if (szExt) {
+ int nTmpStringSize = szExt - szTitleName;
+ strncpy(szTitle, szTitleName, nTmpStringSize);
+ } else {
+ strncpy(szTitle, szTitleName, STR_LEN_MAX - 1);
+ }
+
+ return TRUE;
+}
+
+void MpUtilInitSession(void)
+{
+ VideoLogInfo("");
+
+ mm_session_init(MM_SESSION_TYPE_EXCLUSIVE);
+}
+
+void MpUtilFinishSession(void)
+{
+ VideoLogInfo("");
+
+ mm_session_finish();
+}
+
+void MpUtilVolumeTypeSet(void)
+{
+ VideoLogInfo("");
+
+ mm_sound_volume_primary_type_set(VOLUME_TYPE_MEDIA);
+}
+
+void MpUtilVolumeTypeUnset(void)
+{
+ VideoLogInfo("");
+
+ mm_sound_volume_primary_type_clear();
+}
+
+void MpUtilDeletePopupHandle(void)
+{
+ VideoLogInfo("");
+
+ if (pPopUpHandle) {
+ evas_object_del(pPopUpHandle);
+ pPopUpHandle = NULL;
+ } else {
+ VideoLogInfo("No exist popup.");
+ }
+
+ if (pPopupWindow) {
+ evas_object_del(pPopupWindow);
+ pPopupWindow = NULL;
+ } else {
+ VideoLogInfo("No exist popup window.");
+ }
+}
+
+bool MpUtilNotifyPopUp(VideoAppData *pAppData, char *szContents, void *PopupButtonCallbackFunc)
+{
+ VideoLogInfo("");
+
+ if (pAppData == NULL || szContents == NULL) {
+ VideoLogInfo("No have popup message or pAppData is null.");
+ return FALSE;
+ }
+
+ MpUtilDeletePopupHandle();
+ pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(pPopUpHandle, szContents);
+ elm_object_part_text_set(pPopUpHandle, "title,text", dgettext("sys_string", MP_COM_POP_ERROR));
+ elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+ if (PopupButtonCallbackFunc) {
+ evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,
+ void *PopupButtonCallbackFunc)
+{
+ VideoLogInfo("");
+
+ if (pAppData == NULL || szContents == NULL) {
+ VideoLogInfo("No have popup message or pAppData is null.");
+ return FALSE;
+ }
+
+ MpUtilDeletePopupHandle();
+ pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(pPopUpHandle, szContents);
+ elm_object_part_text_set(pPopUpHandle, "title,text", dgettext("sys_string", MP_COM_POP_ERROR));
+ elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+ if (PopupButtonCallbackFunc) {
+ evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+
+bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents,
+ void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc)
+{
+ VideoLogInfo("");
+
+ if (szTitle == NULL || szContents == NULL || pAppData == NULL) {
+ VideoLogInfo("No have popup message or pAppData is null.");
+ return FALSE;
+ }
+
+ Evas_Object *pButton = NULL;
+
+ MpUtilDeletePopupHandle();
+
+ pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(pPopUpHandle, szContents);
+ elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_SK_YES));
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if(PopupYesButtonCallbackFunc)
+ {
+ evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData);
+ }
+
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_SK_NO));
+ elm_object_part_content_set(pPopUpHandle, "button2", pButton);
+
+ if(PopupNoButtonCallbackFunc)
+ {
+ evas_object_smart_callback_add(pButton, "clicked", PopupNoButtonCallbackFunc, (void*)pAppData);
+ }
+
+ elm_popup_timeout_set(pPopUpHandle, 3.0);
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString)
+{
+ VideoLogInfo("");
+
+ Evas_Object *pLabel = NULL;
+
+ pLabel = elm_label_add(pBox);
+ elm_object_text_set(pLabel, szString);
+ elm_label_ellipsis_set(pLabel, EINA_TRUE);
+ elm_label_wrap_width_set(pLabel, 614 * elm_config_scale_get());
+ evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_min_set(pLabel, 614 * elm_config_scale_get(), 35 * elm_config_scale_get());
+ elm_box_pack_end(pBox, pLabel);
+ evas_object_show(pLabel);
+}
+
+bool MpUtilDetailPopup(VideoAppData *pAppData, char *szTitle, void *PopupButtonCallbackFunc)
+{
+ VideoLogInfo("");
+
+ if(szTitle == NULL || pAppData == NULL)
+ {
+ VideoLogInfo("No have popup message or pAppData is null.");
+ return FALSE;
+ }
+
+ char szTmpStr[STR_LEN_MAX] = {0};
+ char szTmpFileDate[STR_LEN_MAX] = {0};
+ char szTmpFileExtension[STR_LEN_MAX] = {0};
+ char szTmpFileSize[STR_LEN_MAX] = {0};
+
+ double nLongtitude = 0.0;
+ double nLatitude = 0.0;
+
+ Evas_Object *pBox = NULL;
+ Evas_Object *pButton = NULL;
+
+ MpUtilDeletePopupHandle();
+
+ pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ MpVideoInfoCtrlGetFileInfo(pAppData->szMediaUri, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX);
+ MpVideoInfoCtrlGetGPS(pAppData->szMediaUri, &nLongtitude, &nLatitude);
+
+ pBox = elm_box_add(pPopUpHandle);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s </align></font_size>", dgettext(MP_SYS_STRING, MP_COM_BODY_DETAILS_TITLE), pAppData->szVideoTitle);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", dgettext(MP_SYS_STRING, MP_COM_BODY_FORMAT), szTmpFileExtension);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", dgettext(MP_SYS_STRING, MP_COM_POP_DATE), szTmpFileDate);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %s</align></font_size>", dgettext(MP_SYS_STRING, MP_COM_BODY_SIZE), szTmpFileSize);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %d x %d</align></font_size>", dgettext(MP_SYS_STRING, MP_IDLE_BODY_RESOLUTION), pAppData->nVideoWidthResolution, pAppData->nVideoHeightResolution);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LATITUDE), nLatitude);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ snprintf(szTmpStr, STR_LEN_MAX, "<font_size=32><align=left> %s: %f</align></font_size>", _(MP_VPL_GPS_LONGITUTD), nLongtitude);
+ MpUtilSetLabelForDetail(pBox, szTmpStr);
+ memset(szTmpStr, 0, STR_LEN_MAX);
+
+ elm_object_content_set(pPopUpHandle, pBox);
+
+ elm_object_part_text_set(pPopUpHandle, "title,text", szTitle);
+ pButton = elm_button_add(pPopUpHandle);
+ elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_SK_BACK));
+ elm_object_part_content_set(pPopUpHandle, "button1", pButton);
+
+ if(PopupButtonCallbackFunc)
+ {
+ evas_object_smart_callback_add(pButton, "clicked", PopupButtonCallbackFunc, (void*)pAppData);
+ }
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+bool MpUtilProgressPopUp(VideoAppData *pAppData, char *szLabel)
+{
+ VideoLogInfo("");
+
+ if (pAppData == NULL || szLabel == NULL) {
+ VideoLogInfo("No have popup message or pAppData is null.");
+ return FALSE;
+ }
+
+ MpUtilDeletePopupHandle();
+ pPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+ evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *progressbar, *box, *label;
+
+ label = elm_label_add(pPopUpHandle);
+ elm_object_text_set(label, szLabel);
+ evas_object_show(label);
+
+ progressbar = elm_progressbar_add(pPopUpHandle);
+ elm_object_style_set(progressbar, "pending_list");
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+ evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+ evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+ evas_object_show(progressbar);
+
+ box = elm_box_add(pPopUpHandle);
+ elm_box_pack_end(box, label);
+ elm_box_pack_end(box, progressbar);
+ evas_object_show(box);
+ elm_object_content_set(pPopUpHandle, box);
+
+ evas_object_show(pPopUpHandle);
+
+ return TRUE;
+}
+
+void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool nX, bool nY, void *pUserData, char* szButtonStyle, void *func)
+{
+ VideoLogInfo("");
+
+ Evas_Object *pButton = NULL;
+ Evas_Object *pIcon = NULL;
+
+ pButton = elm_button_add(pParent);
+ pIcon = elm_icon_add(pParent);
+ elm_icon_file_set(pIcon, szIconPath, NULL);
+ evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ elm_icon_resizable_set(pIcon, nX, nY);
+
+ if(szButtonStyle) {
+ elm_object_style_set(pButton, szButtonStyle);
+ }
+
+ elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon);
+ evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData);
+ evas_object_show(pButton);
+
+ return (void *)pButton;
+}
+
+int MpUtilSendFileViaBluetooth(char *szFilepath)
+{
+ VideoLogInfo("");
+
+ if (!szFilepath) {
+ VideoLogInfo("[ERR] filepath == NULL.");
+ }
+
+ int nRet = 0;
+
+ bundle *pBundleHandle = NULL;
+
+ pBundleHandle = bundle_create();
+
+ bundle_add(pBundleHandle, "launch-type", "send");
+ bundle_add(pBundleHandle, "filecount", "1");
+ bundle_add(pBundleHandle, "files", szFilepath);
+
+ nRet = aul_launch_app(MP_LAUNCH_BLUETOOTH_PACKAGE_NAME, pBundleHandle);
+
+ bundle_free(pBundleHandle);
+
+ return nRet;
+}
+
+void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName)
+{
+ VideoLogInfo("");
+
+ Evas_Object *pEdj = NULL;
+ int nWidth = 0;
+ int nHeight = 0;
+
+ pEdj = edje_object_add(pEvas);
+ if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) {
+ VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName,
+ szGroupName);
+ return NULL;
+ }
+
+ edje_object_size_min_get(pEdj, &nWidth, &nHeight);
+ evas_object_resize(pEdj, nWidth, nHeight);
+
+ return (void *)pEdj;
+}
+
+bool MpUtilCheckCallStatus(void)
+{
+ VideoLogInfo("");
+
+ int nCallStatus = 0;
+
+ if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) {
+ if (nCallStatus != VCONFKEY_CALL_OFF) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+bool MpUtilIsConnectEarjack(void)
+{
+ VideoLogInfo("");
+
+ int nEarjack = 0;
+
+ if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) {
+ if (nEarjack) {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData)
+{
+ if (!pEarjackCb) {
+ VideoLogInfo("pEarjackCb is empty.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData);
+
+ return TRUE;
+}
+
+int *MpUtilGetMainWindowXID(void)
+{
+ VideoLogInfo("");
+
+ if (pMainXwindow) {
+ VideoLogInfo("pMainXwindow : %d", pMainXwindow);
+ return (int *)&pMainXwindow;
+ } else {
+ VideoLogInfo("No exist main window XID.");
+ }
+
+ return 0;
+}
+
+void MpUtilGetUserAgent(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ int nWifiMode = 0;
+
+ char *szUserAgent = NULL;
+ szUserAgent = vconf_get_str(VCONFKEY_ADMIN_UAGENT);
+ if (szUserAgent) {
+ memset(pAppData->szUserAgent, 0, STR_LEN_MAX);
+ strncpy(pAppData->szUserAgent, szUserAgent, STR_LEN_MAX - 1);
+ free(szUserAgent);
+ } else {
+ VideoLogInfo("!!!!! NO EXIST USER AGENT !!!!!");
+ }
+
+ if (!vconf_get_int(VCONFKEY_WIFI_STATE, &nWifiMode)) {
+ VideoLogInfo("User Agent : %s, Wi-Fi : %d", pAppData->szUserAgent, nWifiMode);
+ }
+
+}
+
+
+double MpUtilGetSysTime(void)
+{
+ struct timeval tv;
+
+ gettimeofday(&tv, NULL);
+ return (double)tv.tv_sec + (double)tv.tv_usec / 1E6;
+}
+
+void MpUtilLcdNormalPowerLockForResume(void)
+{
+ VideoLogInfo("");
+
+ pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
+}
+
+void MpUtilLcdNormalPowerUnlockForPause(void)
+{
+ VideoLogInfo("");
+
+ pm_unlock_state(LCD_NORMAL, PM_KEEP_TIMER);
+}
+
+void MpUtilLcdOffForPowerButton(void)
+{
+ VideoLogInfo("");
+
+ pm_unlock_state(LCD_NORMAL, PM_KEEP_TIMER);
+}
+
+void MpUtilMultimediaKeyGrab(void)
+{
+ VideoLogInfo("");
+
+ MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE);
+ MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE);
+ MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE);
+ MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE);
+ MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE);
+ MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE);
+ MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE);
+}
+
+void MpUtilMultimediaKeyUngrab(void)
+{
+ VideoLogInfo("");
+
+ MpUtilSetKeyUngrab(PAUSE_KEY);
+ MpUtilSetKeyUngrab(PLAY_KEY);
+ MpUtilSetKeyUngrab(STOP_KEY);
+ MpUtilSetKeyUngrab(NEXT_KEY);
+ MpUtilSetKeyUngrab(PREV_KEY);
+ MpUtilSetKeyUngrab(FORWARD_KEY);
+ MpUtilSetKeyUngrab(REWIND_KEY);
+}
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <appcore-efl.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-animation-ctrl.h"
+
+#define BUFFERING_TXT_MAX_LEN 16
+
+static Evas_Object *pAnimationEdj = NULL;
+static Ecore_Timer *pAnimationTimer = NULL;
+
+static int nIconIndex = 0;
+
+static Eina_Bool MpVideoAnimationCtrlTimerCb(void *data)
+{
+ char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, };
+
+ snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d",
+ SIGNAL_ANIMATION_IMAGE_LOADING, nIconIndex);
+
+ edje_object_signal_emit(pAnimationEdj, sig_format, "*");
+
+ nIconIndex += 1;
+ if (nIconIndex > ANIMATION_MAX_COUNT)
+ nIconIndex = 1;
+
+ return EINA_TRUE;
+}
+
+void *MpVideoAnimationCtrlInit(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (pUserData == NULL) {
+ VideoLogInfo("data is NULL");
+ return NULL;
+ }
+
+ Evas *pMainWindowEvas = (Evas *) pUserData;
+
+ pAnimationEdj = MpUtilLoadEdjFile(pMainWindowEvas,
+ VIDEO_PLAYER_ANIMATION_EDJ,
+ ANIMATION_EDJ_GROUP);
+
+ evas_object_hide(pAnimationEdj);
+
+ return (void *)pAnimationEdj;
+}
+
+void MpVideoAnimationCtrlDestroy(void)
+{
+ VideoLogInfo("");
+
+ if (pAnimationTimer) {
+ ecore_timer_del(pAnimationTimer);
+ pAnimationTimer = NULL;
+ }
+
+ if (pAnimationEdj) {
+ evas_object_hide(pAnimationEdj);
+ evas_object_del(pAnimationEdj);
+ pAnimationEdj = NULL;
+ }
+
+ nIconIndex = 0;
+}
+
+void MpVideoAnimationCtrlSetPercent(int nPercent)
+{
+ VideoLogInfo("");
+ if (nPercent >= 0) {
+ char szBuffering[BUFFERING_TXT_MAX_LEN] = { 0, };
+
+ snprintf(szBuffering, BUFFERING_TXT_MAX_LEN, "Loading %d%%...",
+ nPercent);
+ edje_object_part_text_set(pAnimationEdj, "loading.txt",
+ szBuffering);
+ } else {
+ edje_object_part_text_set(pAnimationEdj, "loading.txt",
+ "Loading...");
+ }
+}
+
+void MpVideoAnimationCtrlPlay(void)
+{
+ VideoLogInfo("");
+ if (pAnimationTimer == NULL) {
+ pAnimationTimer = ecore_timer_add(ANIMATION_TIMER_INTERVAL,
+ MpVideoAnimationCtrlTimerCb,
+ NULL);
+ }
+}
+
+void MpVideoAnimationCtrlStop(void)
+{
+ VideoLogInfo("");
+
+ if (pAnimationTimer) {
+ ecore_timer_del(pAnimationTimer);
+ pAnimationTimer = NULL;
+ }
+}
+
+void MpVideoAnimationCtrlShow(void)
+{
+ VideoLogInfo("");
+
+ if (pAnimationTimer == NULL) {
+ MpVideoAnimationCtrlPlay();
+ MpVideoAnimationCtrlSetPercent(-1);
+ evas_object_show(pAnimationEdj);
+ }
+}
+
+void MpVideoAnimationCtrlHide(void)
+{
+ VideoLogInfo("");
+
+ MpVideoAnimationCtrlStop();
+ evas_object_hide(pAnimationEdj);
+}
+
+bool MpVideoAnimationCtrlGetActiveState(void)
+{
+ VideoLogInfo("");
+ if (pAnimationTimer)
+ return true;
+ else
+ return false;
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <mm_error.h>
+#include <mm_message.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-app-ctrl.h"
+#include "mp-video-view-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-video-value-define.h"
+#include "mp-video-subtitle-ctrl.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-ctrl.h"
+
+#include "mp-video-ctrl-mgr.h"
+
+static int nBufferingRate = 0;
+static double nDurationTime = 0;
+static char szSubtitleString[STR_LEN_MAX] = {0};
+static int nErrorCode = 0;
+
+static Ecore_Pipe *pEcorePipeHandleForErrorMsg = NULL;
+static Ecore_Pipe *pEcorePipeHandleBOF = NULL;
+static Ecore_Pipe *pEcorePipeHandleEOF = NULL;
+static Ecore_Pipe *pEcorePipeHandleForBuffering = NULL;
+static Ecore_Pipe *pEcorePipeHandleForBluetooth = NULL;
+static Ecore_Pipe *pEcorePipeHandleForSubTitle = NULL;
+static Ecore_Pipe *pEcorePipeHandleForResumed = NULL;
+static Ecore_Pipe *pEcorePipeHandleForInterruped = NULL;
+
+static void MpVideoAppCtrlStart(VideoAppData *pAppData);
+static void MpVideoAppCtrlStop(VideoAppData *pAppData);
+static void MpVideoAppCtrlPause(VideoAppData *pAppData);
+static void MpVideoAppCtrlResume(VideoAppData *pAppData);
+static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData);
+static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData);
+static void MpVideoAppCtrlFFDown(VideoAppData *pAppData);
+static void MpVideoAppCtrlRewDown(VideoAppData *pAppData);
+static void MpVideoAppCtrlFFUp(VideoAppData *pAppData);
+static void MpVideoAppCtrlRewUp(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetMute(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetScreenType(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetScreenSize(VideoAppData *pAppData, int nScreenSize);
+static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData);
+static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData);
+static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData);
+static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData);
+static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData);
+static void MpVideoAppCtrlExit(VideoAppData *pAppData);
+static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData);
+static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData);
+static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData);
+static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData);
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData);
+static void MpVideoAppCtrlErrorMsg(VideoAppData *pAppData, unsigned int nErrorCode);
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData);
+
+
+/*
+ * Callback function
+ */
+static void MpVideoAppCtrlWarningPopupCb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpUtilDeletePopupHandle();
+}
+
+static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoViewHideSoundpath(pUserData);
+ MpVideoAppCtrlPause(pAppData);
+
+ return 0;
+}
+
+static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoAppCtrlSetMute(pAppData);
+ MpVideoAppCtrlBeginOfStream(pAppData);
+
+ return 0;
+}
+
+static int MpVideoAppCtrlEndOfPlayCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ MpVideoAppCtrlEndOfStream(pAppData);
+
+ return 0;
+}
+
+static int MpVideoAppCtrlBufferingCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData);
+
+ return 0;
+}
+
+static int MpVideoAppCtrlBluetoothCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ return 0;
+}
+
+static int MpVideoAppCtrlResumeByRewCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoAppCtrlResume(pAppData);
+
+ return 0;
+}
+
+static Eina_Bool MpVideoAppCtrlUpdateSubtitleCb(void* pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return EINA_FALSE;
+ }
+
+ VideoLogInfo("");
+
+ if (strlen(szSubtitleString) > 0 && nDurationTime > 0) {
+ MpVideoViewCtrlUpdateSubtitle(nDurationTime, szSubtitleString);
+ }
+
+ return EINA_FALSE;
+}
+
+static int MpVideoAppCtrlMmfErrormsgCb(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return 0;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoAppCtrlErrorMsg(pAppData, nErrorCode);
+
+ return 0;
+}
+
+static void MpVideoAppCtrlErrorMsg(VideoAppData *pAppData,
+ unsigned int nErrorCode)
+{
+ VideoLogInfo("[MMF ERROR] CtrlErrorMsg.");
+
+ switch (nErrorCode) {
+ case 1:
+ VideoLogInfo("Connection Fail.");
+ break;
+
+ case MM_ERROR_PLAYER_CODEC_NOT_FOUND:
+ VideoLogInfo("CODEC NOT FOUND");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_AUDIO_CODEC_NOT_FOUND:
+ VideoLogInfo("UNSUPPORTED_AUDIO_FORMAT");
+ MpUtilNotifyPopUp(pAppData,
+ _(MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT),
+ MpVideoAppCtrlWarningPopupCb);
+ break;
+
+ case MM_ERROR_PLAYER_VIDEO_CODEC_NOT_FOUND:
+ VideoLogInfo("UNSUPPORTED_VIDEO_FORMAT");
+ MpVideoViewCtrlShowNocontentImage();
+ MpUtilNotifyPopUp(pAppData,
+ _(MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT),
+ MpVideoAppCtrlWarningPopupCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_AUDIO:
+ VideoLogInfo("UNSUPPORTED_AUDIO_FORMAT");
+ MpUtilNotifyPopUp(pAppData,
+ _(MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT),
+ MpVideoAppCtrlWarningPopupCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_VIDEO:
+ VideoLogInfo("UNSUPPORTED_VIDEO_FORMAT");
+ MpVideoViewCtrlShowNocontentImage();
+ MpUtilNotifyPopUp(pAppData,
+ _(MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT),
+ MpVideoAppCtrlWarningPopupCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL:
+ VideoLogInfo("CONNECTION_FAILED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_INVALID_STREAM:
+ VideoLogInfo("MM_ERROR_PLAYER_INVALID_STREAM");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_FILE_NOT_FOUND:
+ VideoLogInfo("MM_ERROR_PLAYER_FILE_NOT_FOUND");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_POP_INVALID_STREAMING_DATA),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_DNS_FAIL:
+ VideoLogInfo("DNS_FAILED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED:
+ VideoLogInfo("DESCONNECTED_FROM_SERVER");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_BAD_SERVER:
+ VideoLogInfo("UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_INVALID_PROTOCOL:
+ VideoLogInfo("UNSUPPORTED_TRANSPORT_PROTOCOL");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_INVALID_URL:
+ VideoLogInfo("INVALID_URL");
+ MpUtilNotifyPopUp(pAppData,
+ _(MP_VPL_POP_INVALID_STREAMING_DATA),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_UNEXPECTED_MSG:
+ VideoLogInfo("UNEXPECTED_MESSAGE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_OUT_OF_MEMORIES:
+ VideoLogInfo("OUT_OF_MEMORIES");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_RTSP_TIMEOUT:
+ VideoLogInfo("NO_RESPONSE_FROM_SERVER");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_BAD_REQUEST:
+ VideoLogInfo("BAD_REQUEST");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_NOT_AUTHORIZED:
+ VideoLogInfo("NOT_AUTHORIZED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_PAYMENT_REQUIRED:
+ VideoLogInfo("PAYMENT_REQUIRED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_FORBIDDEN:
+ VideoLogInfo("FORBIDDEN");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_CONTENT_NOT_FOUND:
+ VideoLogInfo("CONTENT_NOT_FOUND");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_METHOD_NOT_ALLOWED:
+ VideoLogInfo("METHOD_NOT_ALLOWED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_NOT_ACCEPTABLE:
+ VideoLogInfo("NOT_ACCEPTABLE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_PROXY_AUTHENTICATION_REQUIRED:
+ VideoLogInfo("PROXY_AUTHENTICATION_REQUIRED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_SERVER_TIMEOUT:
+ VideoLogInfo("SERVER_TIMEOUT");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_GONE:
+ VideoLogInfo("GONE_MERROR");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_LENGTH_REQUIRED:
+ VideoLogInfo("LENGTH_REQUIRED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_PRECONDITION_FAILED:
+ VideoLogInfo("PRECONDITION_FAILED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_REQUEST_ENTITY_TOO_LARGE:
+ VideoLogInfo("REQUEST_ENTITY_TOO_LARGE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_REQUEST_URI_TOO_LARGE:
+ VideoLogInfo("REQUEST_URI_TOO_LARGE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_MEDIA_TYPE:
+ VideoLogInfo("UNSUPPORTED_MEDIA_TYPE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_PARAMETER_NOT_UNDERSTOOD:
+ VideoLogInfo("PARAMETER_NOT_UNDERSTOOD");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_CONFERENCE_NOT_FOUND:
+ VideoLogInfo("CONFERENCE_NOT_FOUND");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_NOT_ENOUGH_BANDWIDTH:
+ VideoLogInfo("NOT_ENOUGH_BANDWIDTH");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_NO_SESSION_ID:
+ VideoLogInfo("NO_SESSION_ID");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_METHOD_NOT_VALID_IN_THIS_STATE:
+ VideoLogInfo("METHOD_NOT_VALID_IN_THIS_STATE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_HEADER_FIELD_NOT_VALID_FOR_SOURCE:
+ VideoLogInfo("HEADER_FIELD_NOT_VALID_FOR_SOURCE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_INVALID_RANGE:
+ VideoLogInfo("INVALID_RANGE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_PARAMETER_IS_READONLY:
+ VideoLogInfo("PARAMETER_IS_READONLY");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_AGGREGATE_OP_NOT_ALLOWED:
+ VideoLogInfo("AGGREGATE_OP_NOT_ALLOWED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_ONLY_AGGREGATE_OP_ALLOWED:
+ VideoLogInfo("ONLY_AGGREGATE_OP_ALLOWED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_BAD_TRANSPORT:
+ VideoLogInfo("BAD_TRANSPORT");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_DESTINATION_UNREACHABLE:
+ VideoLogInfo("DESTINATION_UNREACHABLE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_INTERNAL_SERVER_ERROR:
+ VideoLogInfo("INTERNAL_SERVER_ERROR");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_NOT_IMPLEMENTED:
+ VideoLogInfo("NOT_IMPLEMENTED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_BAD_GATEWAY:
+ VideoLogInfo("BAD_GATEWAY");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_SERVICE_UNAVAILABLE:
+ VideoLogInfo("SERVICE_UNAVAILABLE");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_GATEWAY_TIME_OUT:
+ VideoLogInfo("GATEWAY_TIME_OUT");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_RTSP_VERSION_NOT_SUPPORTED:
+ VideoLogInfo("RTSP_VERSION_NOT_SUPPORTED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_OPTION_NOT_SUPPORTED:
+ VideoLogInfo("OPTION_NOT_SUPPORTED");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_CONNECTION_FAIL),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ case MM_ERROR_PLAYER_STREAMING_FAIL:
+ VideoLogInfo("INTERNAL_ERROR");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+ MpVideoAppCtrlExitCb);
+ break;
+ case MM_MESSAGE_DRM_NOT_AUTHORIZED :
+ VideoLogInfo("DRM_NOT_AUTHORIZED ERROR");
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO),
+ MpVideoAppCtrlExitCb);
+ break;
+
+ default:
+ break;
+ }
+
+ }
+
+static void MpVideoAppCtrlPlayerMsgCallback(int MessageType,
+ void *MessageParam, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfoWithTid("Callback func");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ MMMessageParamType *pParam = (MMMessageParamType *) MessageParam;
+
+ switch (MessageType) {
+ case MM_MESSAGE_UNKNOWN:
+ VideoLogInfo("MM_MESSAGE_UNKNOWN", MessageType);
+ if(pEcorePipeHandleForErrorMsg) {
+ if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+
+ break;
+
+ case MM_MESSAGE_ERROR:
+ VideoLogInfo("[ERR]MM_MESSAGE_ERROR : code-0x%x",
+ (int)pParam->code);
+ nErrorCode = (int)pParam->code;
+ if(pEcorePipeHandleForErrorMsg) {
+ if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_STATE_CHANGED:
+ VideoLogInfo("MM_MESSAGE_STATE_CHANGED");
+ break;
+
+ case MM_MESSAGE_BEGIN_OF_STREAM:
+ VideoLogInfo("MM_MESSAGE_BEGIN_OF_STREAM");
+ if(pEcorePipeHandleBOF) {
+ if(!ecore_pipe_write(pEcorePipeHandleBOF,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_END_OF_STREAM:
+ VideoLogInfo("END OF STREAM.");
+ if(pEcorePipeHandleEOF) {
+ if(!ecore_pipe_write(pEcorePipeHandleEOF,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_READY_TO_RESUME:
+ VideoLogInfo("MM_MESSAGE_READY_TO_RESUME");
+ break;
+
+ case MM_MESSAGE_CONNECTING:
+ VideoLogInfo("MM_MESSAGE_CONNECTING");
+ break;
+
+ case MM_MESSAGE_CONNECTED:
+ VideoLogInfo("MM_MESSAGE_CONNECTED");
+ break;
+
+ case MM_MESSAGE_CONNECTION_TIMEOUT:
+ VideoLogInfo("MM_MESSAGE_CONNECTION_TIMEOUT");
+ break;
+
+ case MM_MESSAGE_BUFFERING:
+ VideoLogInfo("MM_MESSAGE_BUFFERING - Buffering : %d%% ",
+ pParam->connection.buffering);
+ nBufferingRate = pParam->connection.buffering;
+
+ if (nBufferingRate < 10)
+ MpVideoAppCtrlShowLayout(pAppData);
+ if(pEcorePipeHandleForBuffering) {
+ if(!ecore_pipe_write(pEcorePipeHandleForBuffering,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_BLUETOOTH_ON:
+ VideoLogInfo("MM_MESSAGE_BLUETOOTH_ON");
+ break;
+
+ case MM_MESSAGE_BLUETOOTH_OFF:
+ VideoLogInfo("MM_MESSAGE_BLUETOOTH_OFF ");
+ if(pEcorePipeHandleForBluetooth) {
+ if(!ecore_pipe_write(pEcorePipeHandleForBluetooth,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_UPDATE_SUBTITLE:
+ VideoLogInfo("UPDATE_SUBTITLE ");
+
+ nDurationTime = 0;
+ memset(szSubtitleString, 0, sizeof(char) * STR_LEN_MAX);
+
+ if (pParam->subtitle.duration <= 0) {
+ VideoLogInfo("[ERR] MMF Error : code-0x%x", (int)pParam->code);
+ break;
+ } else {
+ nDurationTime = (double)pParam->subtitle.duration / 1000;
+ }
+
+ if (pParam->data == NULL) {
+ VideoLogInfo("[ERR] MMF Error : code-0x%x", (int)pParam->code);
+ break;
+ } else {
+ strncpy(szSubtitleString, pParam->data, STR_LEN_MAX - 1);
+ }
+
+ VideoLogInfo("Subtitle duration : %d sec", nDurationTime);
+ VideoLogInfo("Subtitle contents : %s", szSubtitleString);
+ if(pEcorePipeHandleForSubTitle) {
+ if(!ecore_pipe_write(pEcorePipeHandleForSubTitle,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_RESUMED_BY_REW:
+ VideoLogInfo("Change play state to play.");
+ if(pEcorePipeHandleForResumed) {
+ if(!ecore_pipe_write(pEcorePipeHandleForResumed,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+
+ case MM_MESSAGE_RTP_SENDER_REPORT:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_RTP_RECEIVER_REPORT:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_RTP_SESSION_STATUS:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_SENDER_STATE:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_RECEIVER_STATE:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_FILE_NOT_SUPPORTED:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_FILE_NOT_FOUND:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_DRM_NOT_AUTHORIZED:
+ VideoLogInfo("%08x", MessageType);
+ break;
+
+ case MM_MESSAGE_STATE_INTERRUPTED:
+ VideoLogDebug("%08x", MessageType);
+
+ switch ((int)pParam->code) {
+ case MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP:
+ VideoLogInfo("MM_ERROR_PLAYER_BT_CONNECTION");
+ break;
+
+ case MM_MSG_CODE_INTERRUPTED_BY_CALL_START:
+ VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_CALL_START");
+ break;
+
+ case MM_MSG_CODE_INTERRUPTED_BY_CALL_END:
+ VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_CALL_END");
+ break;
+
+ case MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG:
+ VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG");
+ break;
+
+ case MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT:
+ VideoLogInfo
+ ("MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT");
+ break;
+
+ case MM_MSG_CODE_INTERRUPTED_BY_ALARM_START:
+ VideoLogInfo
+ ("MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
+ break;
+
+ case MM_MSG_CODE_INTERRUPTED_BY_ALARM_END:
+ VideoLogInfo("MM_MSG_CODE_INTERRUPTED_BY_ALARM_END");
+ break;
+ }
+ if(pEcorePipeHandleForInterruped) {
+ if(!ecore_pipe_write(
+ pEcorePipeHandleForInterruped,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+ break;
+ case MM_MESSAGE_SEEK_COMPLETED:
+ {
+ VideoLogInfo("MM_MESSAGE_SEEK_COMPLETED");
+ if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+ VideoLogInfo("RTSP SEEK Start");
+ nBufferingRate = 100;
+ MpVideoAppCtrlShowLayout(pAppData);
+ if(pEcorePipeHandleForBuffering) {
+ if(!ecore_pipe_write(pEcorePipeHandleForBuffering,
+ (void *)pAppData, sizeof(pAppData))) {
+ VideoLogDebug("FAIL PIPE WRITE");
+ }
+ }
+
+ }
+
+ }
+ break;
+ default:
+ VideoLogInfo("No message %08x", MessageType);
+ break;
+ }
+}
+
+/*
+ * Internal function
+ */
+void MpVideoAppCtrlFuncInit(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (!pAppData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart =
+ (void *)MpVideoAppCtrlStart;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop =
+ (void *)MpVideoAppCtrlStop;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause =
+ (void *)MpVideoAppCtrlPause;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume =
+ (void *)MpVideoAppCtrlResume;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause =
+ (void *)MpVideoAppCtrlStopByAppPause;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume =
+ (void *)MpVideoAppCtrlStartByAppResume;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown =
+ (void *)MpVideoAppCtrlFFDown;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown =
+ (void *)MpVideoAppCtrlRewDown;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp =
+ (void *)MpVideoAppCtrlFFUp;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp =
+ (void *)MpVideoAppCtrlRewUp;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute =
+ (void *)MpVideoAppCtrlSetMute;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenType =
+ (void *)MpVideoAppCtrlSetScreenType;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize =
+ (void *)MpVideoAppCtrlSetScreenSize;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition =
+ (void *)MpVideoAppCtrlGetPosition;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition =
+ (void *)MpVideoAppCtrlSetPosition;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout =
+ (void *)MpVideoAppCtrlHideLayout;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout =
+ (void *)MpVideoAppCtrlShowLayout;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution =
+ (void *)MpVideoAppCtrlGetVideoResolution;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime =
+ (void *)MpVideoAppCtrlReqDurationTime;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream =
+ (void *)MpVideoAppCtrlBeginOfStream;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream =
+ (void *)MpVideoAppCtrlEndOfStream;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit =
+ (void *)MpVideoAppCtrlExit;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming =
+ (void *)MpVideoAppCtrlStartStreaming;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching =
+ (void *)MpVideoAppCtrlReLaunching;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia =
+ (void *)MpVideoAppCtrlPlayPreMedia;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia =
+ (void *)MpVideoAppCtrlPlayNextMedia;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition =
+ (void *)MpVideoAppCtrlGetBufferingPosition;
+}
+
+static void MpVideoAppCtrlPlayPreMedia(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (strlen(pAppData->szPreMediaUri) <= 0) {
+ VideoLogInfo("szPreMediaUri is NULL.");
+ return;
+ }
+
+ VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
+ VideoLogInfo("Previous media uri : %s", pAppData->szPreMediaUri);
+
+ strncpy(pAppData->szMediaUri, pAppData->szPreMediaUri,
+ sizeof(pAppData->szMediaUri) - 1);
+ MpVideoAppCtrlShowLayout(pAppData);
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri,
+ pAppData->szPreMediaUri,
+ pAppData->szNextMediaUri);
+ }
+
+ MpVideoAppCtrlReLaunching(pAppData);
+}
+
+static void MpVideoAppCtrlPlayNextMedia(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (strlen(pAppData->szNextMediaUri) <= 0) {
+ VideoLogInfo("szNextMediaUri is NULL.");
+ return;
+ }
+
+ VideoLogInfo("Current media uri : %s", pAppData->szMediaUri);
+ VideoLogInfo("Next media uri : %s", pAppData->szNextMediaUri);
+
+ strncpy(pAppData->szMediaUri, pAppData->szNextMediaUri,
+ sizeof(pAppData->szMediaUri) - 1);
+ MpVideoAppCtrlShowLayout(pAppData);
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri,
+ pAppData->szPreMediaUri,
+ pAppData->szNextMediaUri);
+ }
+
+ MpVideoAppCtrlReLaunching(pAppData);
+}
+
+static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ if (pAppData == NULL) {
+ VideoLogInfo("ERR");
+ return;
+ }
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ VideoLogInfo("Skip Normal Play mode");
+ return;
+ }
+ if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+ return;
+ }
+ pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition();
+}
+
+
+static void MpVideoAppCtrlStart(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ char szSubtitleUri[STR_LEN_MAX] = {0};
+
+ if (!MpVideoSubtitleCtrlGetSubtitleUri(szSubtitleUri)) {
+ memset(szSubtitleUri, 0, STR_LEN_MAX);
+ } else {
+ VideoLogInfo("szSubtitleUriPath : %s", szSubtitleUri);
+ }
+
+ if (!MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
+ MpVideoAppCtrlPlayerMsgCallback,
+ (void *)MpUtilGetMainWindowXID(),
+ szSubtitleUri,
+ (void *)pAppData)) {
+ MpUtilNotifyPopUp(pAppData,
+ "It is unable to play video contents.",
+ MpVideoAppCtrlExitCb);
+ }
+
+ if (pAppData->nSetPosition > 0) {
+ VideoLogInfo("Start position time : %dms",
+ pAppData->nSetPosition);
+ MpVideoAppCtrlSetPosition(pAppData);
+ }
+
+ MpVideoCtrlMgrMediaPlay((void *)pAppData);
+
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER ) {
+ if (MpVideoStreamingCtrlInit((void *)pAppData)) {
+ VideoLogInfo("Connect to network.");
+ MpVideoAppCtrlStartStreaming((void *)pAppData);
+ } else {
+ VideoLogInfo("No connect to network.");
+ MpUtilNotifyPopUp(pAppData,
+ "It is impossible to connect to network.",
+ MpVideoAppCtrlExitCb);
+ }
+ }
+}
+
+static void MpVideoAppCtrlStop(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
+
+ MpVideoCtrlMgrMediaStop((void *)pAppData);
+}
+
+static void MpVideoAppCtrlPause(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ VideoLogInfo("Allready Pause video player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
+
+ MpVideoCtrlMgrMediaPause(pAppData);
+ MpVideoViewCtrlPause(pAppData);
+ MpVideoAppCtrlShowLayout(pAppData);
+ MpUtilLcdNormalPowerUnlockForPause();
+}
+
+static void MpVideoAppCtrlResume(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME ||
+ pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
+ VideoLogInfo("Allready Resume video player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
+ MpUtilMultimediaKeyGrab();
+
+ MpVideoAppCtrlGetPosition(pAppData);
+ MpVideoCtrlMgrMediaResume(pAppData);
+ MpVideoViewCtrlResume(pAppData);
+ MpVideoAppCtrlShowLayout(pAppData);
+ MpUtilLcdNormalPowerLockForResume();
+}
+
+static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ if (!MpVideoCtrlMgrIsExistPlayerHandle()) {
+ VideoLogInfo("Not exist Player handle.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoAppCtrlGetPosition(pAppData);
+ pAppData->nSetPosition = pAppData->nCurPosition;
+ VideoLogInfo("Current position time : %d", pAppData->nSetPosition);
+ MpVideoViewCtrlPause(pAppData);
+ MpVideoAppCtrlStop(pAppData);
+ MpVideoCtrlMgrMediaDestroy(pAppData);
+ MpUtilLcdNormalPowerUnlockForPause();
+
+ MpUtilMultimediaKeyUngrab();
+
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData);
+ }
+
+}
+
+static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoAppCtrlStart(pAppData);
+ MpVideoViewCtrlResume(pAppData);
+ MpVideoAppCtrlShowLayout(pAppData);
+ MpUtilLcdNormalPowerLockForResume();
+
+ return;
+}
+
+static void MpVideoAppCtrlFFDown(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlRewDown(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlFFUp(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlRewUp(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlSetMute(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (pAppData->bIsMute) {
+ MpVideoCtrlMgrSetMute(TRUE);
+ } else {
+ MpVideoCtrlMgrSetMute(FALSE);
+ }
+}
+
+static void MpVideoAppCtrlSetScreenType(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+}
+
+static void MpVideoAppCtrlSetScreenSize(VideoAppData *pAppData, int nScreenSize)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ switch(nScreenSize)
+ {
+ case MP_DISPLAY_METHOD_LETTER_BOX: VideoLogInfo("LETTER_BOX"); break;
+ case MP_DISPLAY_METHOD_ORIGIN_SIZE: VideoLogInfo("ORIGIN_SIZE"); break;
+ case MP_DISPLAY_METHOD_FULL_SCREEN: VideoLogInfo("FULL_SCREEN"); break;
+ case MP_DISPLAY_METHOD_CROPPED_FULL: VideoLogInfo("CROPPED_FULL"); break;
+ case MP_DISPLAY_METHOD_CUSTOM_ROI: VideoLogInfo("CUSTOM_ROI"); break;
+ default: VideoLogInfo("Nothing."); return;
+ }
+
+ MpVideoCtrlMgrSetRatioVideoScreen((void*)pAppData, nScreenSize);
+}
+
+static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData)
+{
+ pAppData->nCurPosition = MpVideoCtrlMgrGetPosition();
+}
+
+static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoCtrlMgrSetPosition(pAppData->nSetPosition);
+
+ if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+ VideoLogInfo("RTSP SEEK Start");
+ nBufferingRate = 0;
+ MpVideoAppCtrlBufferingCb((void *)pAppData);
+
+ }
+}
+
+static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoViewHideLayout((void *)pAppData);
+}
+
+static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoViewShowLayout((void *)pAppData);
+}
+
+static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ pAppData->nVideoWidthResolution =
+ MpVideoCtrlMgrGetVideoWidthResolution();
+ pAppData->nVideoHeightResolution =
+ MpVideoCtrlMgrGetVideoHeightResolution();
+}
+
+static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+}
+
+static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+ MpUtilMultimediaKeyGrab();
+
+ MpVideoAppCtrlGetVideoResolution(pAppData);
+ pAppData->nDuration = MpVideoCtrlMgrGetDuration();
+ MpVideoViewCtrlInitAfterBeginOfStream((void *)pAppData);
+}
+
+static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (pAppData->nLaunchingAppType == MP_LAUNCH_APP_GALLERY ) {
+ if (pAppData->nCurPosition >= 0 ) {
+ MpUtilMediaSvcSaveLastPlayedTime(pAppData->szMediaUri, 0);
+ } else {
+ VideoLogInfo("Invalid Plaing time or duration time.");
+ }
+ }
+
+ if (strlen(pAppData->szNextMediaUri) > 0) {
+ MpVideoAppCtrlPlayNextMedia(pAppData);
+ }
+ else {
+ MpVideoAppCtrlExit(pAppData);
+ }
+}
+
+static void MpVideoAppCtrlExit(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+ if(pEcorePipeHandleForErrorMsg) {
+ ecore_pipe_del(pEcorePipeHandleForErrorMsg);
+ pEcorePipeHandleForErrorMsg = NULL;
+ }
+
+ if(pEcorePipeHandleBOF) {
+ ecore_pipe_del(pEcorePipeHandleBOF);
+ pEcorePipeHandleBOF = NULL;
+ }
+ if (pEcorePipeHandleEOF) {
+ ecore_pipe_del(pEcorePipeHandleEOF);
+ pEcorePipeHandleEOF = NULL;
+ }
+
+ if (pEcorePipeHandleForBuffering) {
+ ecore_pipe_del(pEcorePipeHandleForBuffering);
+ pEcorePipeHandleForBuffering = NULL;
+ }
+
+ if (pEcorePipeHandleForBluetooth) {
+ ecore_pipe_del(pEcorePipeHandleForBluetooth);
+ pEcorePipeHandleForBluetooth = NULL;
+ }
+
+ if (pEcorePipeHandleForSubTitle) {
+ ecore_pipe_del(pEcorePipeHandleForSubTitle);
+ pEcorePipeHandleForSubTitle = NULL;
+ }
+ if (pEcorePipeHandleForResumed) {
+ ecore_pipe_del(pEcorePipeHandleForResumed);
+ pEcorePipeHandleForResumed = NULL;
+ }
+ if (pEcorePipeHandleForInterruped) {
+ ecore_pipe_del(pEcorePipeHandleForInterruped);
+ pEcorePipeHandleForInterruped = NULL;
+ }
+
+ MpVideoAppCtrlStop(pAppData);
+ MpVideoCtrlMgrMediaDestroy(pAppData);
+
+ MpUtilDeletePopupHandle();
+
+ MpVideoViewCtrlDestroy((void *)pAppData);
+
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingCtrlDestroy((void *)pAppData);
+ }
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ elm_exit();
+}
+
+static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri,
+ MpVideoAppCtrlPlayerMsgCallback,
+ (void *)MpUtilGetMainWindowXID(),
+ NULL,
+ (void *)pAppData);
+
+ MpVideoCtrlMgrMediaPlay((void *)pAppData);
+
+ if (pAppData->nSetPosition > 0) {
+ VideoLogInfo("Start position time : %dms",
+ pAppData->nSetPosition);
+ MpVideoAppCtrlSetPosition(pAppData);
+ }
+}
+
+
+static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoAppCtrlStop(pAppData);
+ MpVideoCtrlMgrMediaDestroy(pAppData);
+
+ pAppData->nSetPosition = 0;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ memset(pAppData->szVideoTitle, 0, STR_LEN_MAX);
+ MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle);
+ MpVideoSubtitleCtrlInit(pAppData);
+ }
+
+ MpVideoViewCtrlChangeTitle(pAppData);
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoAppCtrlStart(pAppData);
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoAppCtrlStartStreaming(pAppData);
+ }
+
+ MpVideoAppCtrlSetMute(pAppData);
+}
+
+static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return;
+ }
+
+ VideoLogInfo("");
+ if(pEcorePipeHandleForErrorMsg) {
+ ecore_pipe_del(pEcorePipeHandleForErrorMsg);
+ pEcorePipeHandleForErrorMsg = NULL;
+ }
+ pEcorePipeHandleForErrorMsg = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlMmfErrormsgCb,
+ (void *)pAppData);
+
+ if(pEcorePipeHandleBOF) {
+ ecore_pipe_del(pEcorePipeHandleBOF);
+ pEcorePipeHandleBOF = NULL;
+ }
+ pEcorePipeHandleBOF = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb,
+ (void *)pAppData);
+
+ if(pEcorePipeHandleEOF) {
+ ecore_pipe_del(pEcorePipeHandleEOF);
+ pEcorePipeHandleEOF = NULL;
+ }
+ pEcorePipeHandleEOF = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb,
+ (void *)pAppData);
+
+ if (pEcorePipeHandleForBuffering) {
+ ecore_pipe_del(pEcorePipeHandleForBuffering);
+ pEcorePipeHandleForBuffering = NULL;
+ }
+ pEcorePipeHandleForBuffering = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb,
+ (void *)pAppData);
+
+ if (pEcorePipeHandleForBluetooth) {
+ ecore_pipe_del(pEcorePipeHandleForBluetooth);
+ pEcorePipeHandleForBluetooth = NULL;
+ }
+ pEcorePipeHandleForBluetooth = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlBluetoothCb,
+ (void *)pAppData);
+
+ if (pEcorePipeHandleForSubTitle) {
+ ecore_pipe_del(pEcorePipeHandleForSubTitle);
+ pEcorePipeHandleForSubTitle = NULL;
+ }
+ pEcorePipeHandleForSubTitle = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlUpdateSubtitleCb,
+ (void *)pAppData);
+
+ if (pEcorePipeHandleForResumed) {
+ ecore_pipe_del(pEcorePipeHandleForResumed);
+ pEcorePipeHandleForResumed = NULL;
+ }
+ pEcorePipeHandleForResumed = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb,
+ (void *)pAppData);
+
+ if (pEcorePipeHandleForInterruped) {
+ ecore_pipe_del(pEcorePipeHandleForInterruped);
+ pEcorePipeHandleForInterruped = NULL;
+ }
+ pEcorePipeHandleForInterruped = ecore_pipe_add(
+ (Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb,
+ (void *)pAppData);
+
+}
+
+
+
+/*
+ * External function
+ */
+bool MpVideoAppCtrlInit(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoAppCtrlFuncInit(pAppData);
+ MpVideoSubtitleCtrlInit(pAppData);
+ MpVideoViewCtrlInit(pAppData);
+
+ if (!MpUtilCheckCallStatus()) {
+ MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb);
+ return FALSE;
+ }
+
+ if (!MpUtilCheckBatteryStatus()) {
+ MpUtilNotifyPopUp(pAppData, dgettext("sys_string", MP_COM_BODY_LOW_BATTERY), MpVideoAppCtrlExitCb);
+ return FALSE;
+ }
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ if (!MpUtilCheckLocalFileExist(pAppData->szMediaUri)) {
+ MpUtilNotifyPopUp(pAppData, "File not Exist", MpVideoAppCtrlExitCb);
+ return FALSE;
+ }
+
+ memset(pAppData->szVideoTitle, 0, STR_LEN_MAX);
+ MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle);
+ MpVideoViewCtrlChangeTitle(pAppData);
+ }
+
+ MpVideoAppCtrlPipeInit(pAppData);
+
+ MpVideoAppCtrlStart(pAppData);
+
+ return TRUE;
+}
+
+bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData)
+{
+ if (!pAppData) {
+ VideoLogInfo("No exist appdata.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoAppCtrlStop(pAppData);
+ MpVideoCtrlMgrMediaDestroy(pAppData);
+ MpUtilDeletePopupHandle();
+ MpVideoViewCtrlDestroy((void *)pAppData);
+ MpUtilMediaSvcDestoryVideoList();
+ MpUtilMediaSvcFinishSession();
+ MpUtilMediaSvcMtagIterateDestroyTagList();
+ MpUtilMMCstatusNotiIgnore();
+ MpUtilBatteryStatusNotiIgnore();
+ MpVideoSubtitleCtrlDestroy();
+
+ nBufferingRate = 0;
+ nErrorCode = 0;
+
+ pAppData->bIsMute = FALSE;
+ pAppData->nDuration = 0;
+ pAppData->nSetPosition = 0;
+ pAppData->nCurPosition = 0;
+ pAppData->nSubtitleDuration = 0;
+ pAppData->nBufferingPosition = 0;
+ pAppData->nVideoWidthResolution = 0;
+ pAppData->nVideoHeightResolution = 0;
+
+ memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szTagNameForVideoList, 0, sizeof(char) * STR_LEN_MAX);
+
+ pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR;
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+ pAppData->nLaunchingAppType = MP_LAUNCH_APP_DEFAULT;
+ pAppData->nVideoSortType = MP_MEDIA_SORT_BY_NONE;
+ pAppData->nVideoListType = MP_VIDEO_LIST_TYPE_FOLDER;
+ pAppData->nCurPlayerType = MP_STREAMING_PLAYER;
+
+ memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX);
+ memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX);
+
+ MpUtilResetForRelaunching();
+
+ return TRUE;
+}
+
+bool MpVideoAppCtrlIsTopView(void* pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ return MpVideoViewCtrlIsTopView(pUserData);
+}
+
+bool MpVideoAppCtrlIsExistPlayerHandle(void)
+{
+ VideoLogInfo("");
+
+ return MpVideoCtrlMgrIsExistPlayerHandle();
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <stdio.h>
+#include <string.h>
+#include <mm_sound_private.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-ctrl-mgr.h"
+#include "mp-video-player-mgr.h"
+#include "mp-video-type-define.h"
+
+bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pMmfPlayerCallback,
+ void *pOverlayXid, char* szSubtitleUri, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+ VideoLogInfo("XID : %d", *(int *)pOverlayXid);
+
+ if (!MpPlayerMgrCreate(szMediaURI)) {
+ VideoLogInfo("[ERR] Fail to create player handle.");
+ return FALSE;
+ }
+
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+
+ MpUtilGetUserAgent(pAppData);
+
+ if (!MpPlayerMgrSetUseragentForStreaming(pAppData->szUserAgent)) {
+ VideoLogInfo("[ERR] Fail to set useragent.");
+ return FALSE;
+ }
+
+ if (!MpPlayerMgrSetProxAddressForStreaming
+ (pAppData->szProxyAddress)) {
+ VideoLogInfo("[ERR] Fail to set proxy address.");
+ return FALSE;
+ }
+
+ if (!MpPlayerMgrSetCookieForStreaming(pAppData->szCookie)) {
+ VideoLogInfo("[ERR] Fail to set Cookie.");
+ return FALSE;
+ }
+ }
+
+ if (szSubtitleUri && strlen((char*)szSubtitleUri) > 0) {
+ VideoLogInfo("Subtitle URI : %s", szSubtitleUri);
+
+ if (!MpPlayerMgrSetSubtitle(szSubtitleUri)) {
+ VideoLogInfo("Fail to set subtitle uri.");
+ }
+ } else {
+ VideoLogInfo("No exist subtitle uri.");
+ }
+
+ if (!MpPlayerMgrRealize()) {
+ VideoLogInfo("[ERR] Fail relization.");
+ return FALSE;
+ }
+
+ if (!MpPlayerMgrSetSoundPriority()) {
+ VideoLogInfo("[ERR] Fail to set sound priority.");
+ return FALSE;
+ }
+
+ if (!MpPlayerMgrSetOverlayXid(pOverlayXid)) {
+ VideoLogInfo("[ERR] Fail to set overlay window.");
+ return FALSE;
+ }
+
+ MpPlayerMgrSetMessageCallback(pMmfPlayerCallback, pAppData);
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+
+ return TRUE;
+}
+
+void MpVideoCtrlMgrMediaDestroy(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo(" Already destroy player handle.");
+ return;
+ }
+
+ if (!MpPlayerMgrUnrealize()) {
+ VideoLogInfo("[ERR] Fail to unrealize player handle.");
+ return;
+ }
+
+ if (!MpPlayerMgrDestroy()) {
+ VideoLogInfo("[ERR] Fail to destroy player handle.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR;
+}
+
+bool MpVideoCtrlMgrMediaPlay(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrPlay()) {
+ VideoLogInfo("[ERR] Fail to play multimedia player.");
+ return FALSE;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY;
+
+ return TRUE;
+}
+
+void MpVideoCtrlMgrMediaStop(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR] Player handle is destroyed.");
+ return;
+ }
+
+ if (!MpPlayerMgrStop()) {
+ VideoLogInfo("[ERR] Fail to stop multimedia player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP;
+}
+
+void MpVideoCtrlMgrMediaPause(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+ VideoLogInfo
+ ("It is not possible to pause when player state is stop.");
+ return;
+ }
+
+ if (!MpPlayerMgrPause()) {
+ VideoLogInfo("[ERR] Fail to pause multimedia player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE;
+}
+
+void MpVideoCtrlMgrMediaResume(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) {
+ VideoLogInfo
+ ("It is not possible to resume when player state is stop.");
+ return;
+ }
+
+ if (!MpPlayerMgrResume()) {
+ VideoLogInfo("[ERR] Fail to resume multimedia player.");
+ return;
+ }
+
+ pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME;
+}
+
+void MpVideoCtrlMgrSetOverlayXid(void *pXid)
+{
+ VideoLogInfo(" XID:%d", *((int *)pXid));
+
+ if (!MpPlayerMgrSetOverlayXid(pXid)) {
+ VideoLogInfo("[ERR] Fail to set overlay window.");
+ return;
+ }
+}
+
+void MpVideoCtrlMgrSetPosition(int nSetPosition)
+{
+ VideoLogInfo("");
+
+ VideoLogInfo("Set position - %d", nSetPosition);
+
+ if (nSetPosition > -1) {
+ MpPlayerMgrSetPosition(nSetPosition);
+ }
+}
+
+int MpVideoCtrlMgrGetPosition(void)
+{
+ return MpPlayerMgrGetPosition();
+}
+
+int MpVideoCtrlMgrGetDuration(void)
+{
+ VideoLogInfo("");
+
+ int nDuration = 0;
+
+ nDuration = MpPlayerMgrGetPdduration();
+
+ VideoLogInfo(" content duration : %d ms", nDuration);
+
+ return nDuration;
+}
+
+void MpVideoCtrlMgrSetROI(void *pUserData, int nOverlayX, int nOverlayY,
+ int nOverlayWidth, int nOverlayHeight)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoLogInfo(" ROI - X:%d, Y:%d, W:%d, H:%d,", nOverlayX, nOverlayY,
+ nOverlayWidth, nOverlayHeight);
+
+ if (!MpPlayerMgrSetRatioVideoScreenSize(DISPLAY_METHOD_CUSTOM_ROI)) {
+ VideoLogInfo("[ERR] Fail to set ROI screen.");
+ return;
+ }
+
+ if (!MpPlayerMgrSetDisplayArea
+ (nOverlayX, nOverlayY, nOverlayWidth, nOverlayHeight)) {
+ VideoLogInfo("[ERR] Fail to set overlay display area for ROI.");
+ return;
+ }
+}
+
+int MpVideoCtrlMgrGetVideoWidthResolution(void)
+{
+ VideoLogInfo("");
+
+ int nVideoWidthResolution = MpPlayerMgrGetVideoWidthResolution();
+
+ VideoLogInfo("Video width resolution : %d", nVideoWidthResolution);
+
+ return nVideoWidthResolution;
+}
+
+int MpVideoCtrlMgrGetVideoHeightResolution(void)
+{
+ VideoLogInfo("");
+
+ int nVideoHeightResolution = MpPlayerMgrGetVideoHeightResolution();
+
+ VideoLogInfo("Video height resolution : %d", nVideoHeightResolution);
+
+ return nVideoHeightResolution;
+}
+
+void MpVideoCtrlMgrSetRatioVideoScreen(void *pUserData, int nRatioScreenSize)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpPlayerMgrSetRatioVideoScreenSize(nRatioScreenSize);
+}
+
+void MpVideoCtrlMgrSetVerticalOverlayPos(int nOverlayY)
+{
+ VideoLogInfo("");
+
+ if (nOverlayY < 0) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("Overlay Y position : %d", nOverlayY);
+
+ if (!MpPlayerMgrSetVerticalOverlayPos(nOverlayY)) {
+ VideoLogInfo("[ERR]");
+ }
+}
+
+void MpVideoCtrlMgrSetMute(bool bMuteEnable)
+{
+ VideoLogInfo("");
+
+ MpPlayerMgrSetMute(bMuteEnable);
+}
+
+bool MpVideoCtrlMgrGetMuteState(void)
+{
+ VideoLogInfo("");
+
+ return MpPlayerMgrGetMute();
+}
+
+int MpVideoCtrlMgrGetBufferingPosition(void)
+{
+ return MpPlayerMgrGetBufferingPosition();
+}
+
+bool MpVideoCtrlMgrIsExistPlayerHandle(void)
+{
+ VideoLogInfo("");
+
+ return MpPlayerMgrIsActive();
+}
--- /dev/null
+
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <aul.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <appcore-efl.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-display-view.h"
+#include "mp-video-progressbar.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+#include "mp-video-subtitle-ctrl.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#define MUTE_POPUP_INTERVAL_TIME 3.0
+#define CTRL_PANEL_SHOW_TIME 5.0
+#define DOUBLE_CLICK_TIME 0.2
+#define MP_VIDEO_SUBTITLE_X_RATIO_LANDSCAPE 0.1
+#define MP_VIDEO_SUBTITLE_Y_RATIO_LANDSCAPE 0.15
+#define MP_VIDEO_SUBTITLE_W_RATIO_LANDSCAPE 0.8
+#define MP_VIDEO_SUBTITLE_H_RATIO_LANDSCAPE 0.2
+#define MP_VIDEO_SUBTITLE_Y_RATIO_LANDSCAPE_WITHOUT_UI 0.47
+#define MP_VIDEO_SUBTITLE_X_RATIO_PORTRAIT 0.1
+#define MP_VIDEO_SUBTITLE_Y_RATIO_PORTRAIT 0.5
+#define MP_VIDEO_SUBTITLE_W_RATIO_PORTRAIT 0.8
+#define MP_VIDEO_SUBTITLE_H_RATIO_PORTRAIT 0.2
+#define MP_VIDEO_SPEED_2X_SEEK_TIME 1000
+#define MP_VIDEO_SPEED_3X_SEEK_TIME 3000
+#define MP_VIDEO_SPEED_4X_SEEK_TIME 5000
+#define MP_VIDEO_SPEED_5X_SEEK_TIME 7000
+
+
+typedef enum
+{
+ MP_PLAYING_SPEED_NOTHING = 0,
+ MP_PLAYING_SPEED_FF,
+ MP_PLAYING_SPEED_REW,
+}MpVideoDisplayViewSpeedModeType;
+
+
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pDisplayViewNaviControlBar = NULL;
+static Evas_Object *pDisplayViewLayout = NULL;
+static Evas_Object *pDisplayViewPanelEdj = NULL;
+static Evas_Object *pDisplayViewCtrlEdj = NULL;
+static Evas_Object *pDisplayViewSubtitleEdj = NULL;
+static Evas_Object *pDisplayViewOptionEdj = NULL;
+static Evas_Object *pDisplaySoundpathButton = NULL;
+
+static Ecore_Timer *pVolLongPressTimer = NULL;
+static Ecore_Timer *pMutePopupShowTimer = NULL;
+static Ecore_Timer *pCtrlPanelHideTimer = NULL;
+static Ecore_Timer *pSpeedPressTimer = NULL;
+static Ecore_Timer *pSubtitleTimer = NULL;
+
+static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL;
+static Ecore_Event_Handler *pMouseEventHandler = NULL;
+
+static bool bIsVolumeLongPress = FALSE;
+static bool bIsVolumePopupShow = FALSE;
+static bool bSwitchDisplayViewUI = TRUE;
+static int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+static int nCountCalledSpeedPlaying = 0;
+
+static int nSpeedMode = MP_PLAYING_SPEED_NOTHING;
+
+
+
+
+/*
+ * When the video display view is hieded by others view(favorite/info/etc),
+ * passing click event of mouse up in video display view.
+ */
+static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+
+
+/*
+ * Callback function.
+ */
+
+static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpUtilDeletePopupHandle();
+}
+
+static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+ VideoLogInfo("Connect BT or earjack.");
+ MpVideoSoundpathShow(pUserData);
+ } else {
+ MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb);
+ }
+}
+
+static void MpVideoDisplayViewPressOptionScreenSizeCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_NORMAL)) {
+ VideoLogInfo("Screen size : Normal");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_LETTER_BOX);
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+ } else if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_EXPAND)) {
+ VideoLogInfo("Screen size : Expand");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_CROPPED_FULL);
+ nScreensizeStatus = MP_DISPLAY_METHOD_CROPPED_FULL;
+ } else {
+ VideoLogInfo("Screen size : Nothing");
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+ }
+}
+
+static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
+ VideoLogInfo("Press Pause button.");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME ||
+ pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ }
+ }
+}
+
+static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
+ VideoLogInfo("Press Resume/Play button.");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume
+ (pAppData);
+ }
+ }
+}
+
+static Eina_Bool MpVideoDisplayViewSpeedLongPressCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nSeekPos = 0;
+
+ ++nCountCalledSpeedPlaying;
+ switch (nCountCalledSpeedPlaying) {
+ case MP_PLAYING_SPEED_NORMAL: nSeekPos = 0; break;
+ case MP_PLAYING_SPEED_2X: nSeekPos = MP_VIDEO_SPEED_2X_SEEK_TIME; break;
+ case MP_PLAYING_SPEED_3X: nSeekPos = MP_VIDEO_SPEED_3X_SEEK_TIME; break;
+ case MP_PLAYING_SPEED_4X: nSeekPos = MP_VIDEO_SPEED_4X_SEEK_TIME; break;
+ case MP_PLAYING_SPEED_5X: nSeekPos = MP_VIDEO_SPEED_5X_SEEK_TIME; break;
+ }
+
+ if (nCountCalledSpeedPlaying > MP_PLAYING_SPEED_5X) {
+ nSeekPos = MP_VIDEO_SPEED_5X_SEEK_TIME;
+ }
+
+ VideoLogInfo("nSeekPos : %d", nSeekPos);
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+ if (nSpeedMode == MP_PLAYING_SPEED_FF) {
+ nSeekPos = pAppData->nCurPosition + nSeekPos;
+ } else if (nSpeedMode == MP_PLAYING_SPEED_REW) {
+ nSeekPos = pAppData->nCurPosition - nSeekPos;
+ }
+
+ VideoLogInfo("pAppData->nCurPosition : %d, nSeekPos : %d", pAppData->nCurPosition, nSeekPos);
+
+ if (0 >= nSeekPos || pAppData->nDuration <= nSeekPos) {
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ }
+ nCountCalledSpeedPlaying = 0;
+ return EINA_FALSE;
+ }
+
+ pAppData->nSetPosition = nSeekPos;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+
+ return EINA_TRUE;
+}
+
+static void MpVideoDisplayViewFFDownButtonCb(void *pUserData,
+ Evas_Object *pObject,
+ const char *szEmission,
+ const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) {
+ VideoLogInfo("Press FF down button.");
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ }
+
+ nCountCalledSpeedPlaying = 0;
+
+ nSpeedMode = MP_PLAYING_SPEED_FF;
+ pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
+ }
+}
+
+static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) {
+ if (nCountCalledSpeedPlaying == MP_PLAYING_SPEED_NORMAL) {
+ VideoLogInfo("Press FF up button.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
+ }
+ }
+
+ if(strlen(pAppData->szNextMediaUri) > 0) {
+ VideoLogInfo("Next File : %s", pAppData->szNextMediaUri);
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_EXTEND, "*");
+ }
+ else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_NORMAL, "*");
+ }
+ if(strlen(pAppData->szPreMediaUri) > 0) {
+ VideoLogInfo("Prev File : %s", pAppData->szPreMediaUri);
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_EXTEND, "*");
+ }
+ else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_NORMAL, "*");
+ }
+
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ }
+
+ nCountCalledSpeedPlaying = 0;
+}
+
+static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) {
+ VideoLogInfo("Press Rewind donw button.");
+
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ }
+
+ nCountCalledSpeedPlaying = 0;
+
+ nSpeedMode = MP_PLAYING_SPEED_REW;
+ pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressCb, (void *)pAppData);
+ }
+}
+
+static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) {
+ if (nCountCalledSpeedPlaying == MP_PLAYING_SPEED_NORMAL) {
+ VideoLogInfo("Press Rewind up button.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
+ }
+ }
+ if(strlen(pAppData->szNextMediaUri) > 0) {
+ VideoLogInfo("Next File : %s", pAppData->szNextMediaUri);
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_EXTEND, "*");
+ }
+ else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_NORMAL, "*");
+ }
+ if(strlen(pAppData->szPreMediaUri) > 0) {
+ VideoLogInfo("Prev File : %s", pAppData->szPreMediaUri);
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_EXTEND, "*");
+ }
+ else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_NORMAL, "*");
+ }
+
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ }
+
+ nCountCalledSpeedPlaying = 0;
+}
+
+static Eina_Bool MpVideoDisplayViewVolPopupCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ if (pMutePopupShowTimer) {
+ ecore_timer_del(pMutePopupShowTimer);
+ pMutePopupShowTimer = NULL;
+ }
+
+ bIsVolumePopupShow = FALSE;
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoDisplayViewVolLongPressCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pVolLongPressTimer) {
+ ecore_timer_del(pVolLongPressTimer);
+ pVolLongPressTimer = NULL;
+ }
+
+ bIsVolumeLongPress = TRUE;
+
+ if (pAppData->bIsMute == FALSE) {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_MUTE, "*");
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_MUTE_SHOW, "*");
+
+ pMutePopupShowTimer = ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, MpVideoDisplayViewVolPopupCb, (void *)pAppData);
+ bIsVolumePopupShow = TRUE;
+ pAppData->bIsMute = TRUE;
+ } else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_UNMUTE, "*");
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+ bIsVolumePopupShow = FALSE;
+ pAppData->bIsMute = FALSE;
+ }
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute(pAppData);
+
+ return EINA_FALSE;
+}
+
+static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb);
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nLaunchingAppType == MP_LAUNCH_APP_GALLERY ) {
+ if (pAppData->nCurPosition >= 0 ) {
+ MpUtilMediaSvcSaveLastPlayedTime(pAppData->szMediaUri, pAppData->nCurPosition);
+ } else {
+ VideoLogInfo("Invalid Plaing time or duration time.");
+ }
+ }
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+
+ MpVideoDisplayViewPop(pDisplayViewNaviControlBar, pUserData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
+}
+
+
+
+static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pVolLongPressTimer) {
+ ecore_timer_del(pVolLongPressTimer);
+ pVolLongPressTimer = NULL;
+ }
+
+ bIsVolumeLongPress = FALSE;
+ pVolLongPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL,
+ MpVideoDisplayViewVolLongPressCb,
+ (void *)pAppData);
+}
+
+static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData,
+ Evas_Object *pObject,
+ const char *szEmission,
+ const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pVolLongPressTimer) {
+ ecore_timer_del(pVolLongPressTimer);
+ pVolLongPressTimer = NULL;
+ }
+
+ if (bIsVolumeLongPress) {
+ return;
+ }
+
+ if (pAppData->bIsMute == TRUE) {
+ if (bIsVolumePopupShow) {
+ ecore_timer_del(pMutePopupShowTimer);
+ }
+
+ pMutePopupShowTimer =
+ ecore_timer_add(MUTE_POPUP_INTERVAL_TIME,
+ MpVideoDisplayViewVolPopupCb,
+ (void *)pAppData);
+
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout),
+ SIGNAL_MAIN_MUTE_SHOW, "*");
+
+ bIsVolumePopupShow = TRUE;
+ } else {
+ syspopup_launch("volume", NULL);
+ }
+}
+
+static void MpVideoDisplayViewMainScreenTouchCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
+ VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
+ return;
+ }
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (bSwitchDisplayViewUI) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+ }
+}
+
+static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No Exist pUserData.");
+ return EINA_FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoDisplayViewMouseUpCb(void *pUserData, int nType, void *pEvent)
+{
+ if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) {
+ VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No Exist pUserData.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (!pEvent) {
+ VideoLogInfo("[ERR] No exist pEvent.");
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!bSwitchDisplayViewUI) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+ } else {
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
+ }
+ }
+ return ECORE_CALLBACK_PASS_ON;
+}
+
+static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoSoundpathHide();
+ MpUtilDeletePopupHandle();
+
+ if (MpUtilIsConnectEarjack()) {
+ VideoLogInfo("Connect earjack.");
+ if (pDisplaySoundpathButton) {
+ elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_left_btn", pDisplaySoundpathButton);
+ } else {
+ pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
+ elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_left_btn", pDisplaySoundpathButton);
+ }
+ } else {
+ VideoLogInfo("Disconnect earjack.");
+
+ if (pDisplaySoundpathButton) {
+ evas_object_del(pDisplaySoundpathButton);
+ pDisplaySoundpathButton = NULL;
+ }
+
+ elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_left_btn");
+ }
+}
+
+static Eina_Bool MpVideoDisplayViewSubtitleDurationCb(void* pUserData)
+{
+ VideoLogInfo("");
+
+ edje_object_part_text_set(pDisplayViewSubtitleEdj, SUBTITLE_TEXT, "");
+
+ if(pSubtitleTimer)
+ {
+ ecore_timer_del(pSubtitleTimer);
+ pSubtitleTimer = NULL;
+ }
+
+ return EINA_FALSE;
+}
+
+/*
+ * Internal function
+ */
+
+void MpVideoDisplayViewInitKeyMouse(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pMouseEventHandler) {
+ ecore_event_handler_del(pMouseEventHandler);
+ pMouseEventHandler = NULL;
+ }
+
+ pMouseEventHandler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, MpVideoDisplayViewMouseUpCb, pAppData);
+}
+
+void MpVideoDisplayViewInitLayout(void *pUserData, int nLaunchingApp, void* pShowInfoViewCb)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pDisplayViewLayout = elm_layout_add(pNaviFrameHandle);
+ if (pDisplayViewLayout) {
+ Evas_Object *pTmpProgressbarEdj = NULL;
+ Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+ elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
+
+ pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
+ elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj);
+
+ pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
+ pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
+
+ edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj);
+
+ pTmpProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
+ if (pTmpProgressbarEdj) {
+ edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pTmpProgressbarEdj);
+ } else {
+ VideoLogInfo("Progressbar edj handle is null.");
+ }
+
+ elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj);
+
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*");
+
+ if(strlen(pAppData->szPreMediaUri) > 0) {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_EXTEND, "*");
+ VideoLogInfo("Prev File : %s", pAppData->szPreMediaUri);
+ }
+ else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_REW_MODE_NORMAL, "*");
+ }
+
+ if(strlen(pAppData->szNextMediaUri) > 0) {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_EXTEND, "*");
+ VideoLogInfo("Next File : %s", pAppData->szNextMediaUri);
+ }
+ else {
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_FF_MODE_NORMAL, "*");
+ }
+
+
+ if (nScreensizeStatus == MP_DISPLAY_METHOD_LETTER_BOX) {
+ VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+ } else if (nScreensizeStatus == MP_DISPLAY_METHOD_CROPPED_FULL) {
+ VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_CROPPED_FULL");
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_EXPAND, "*");
+ } else {
+ VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+ }
+
+ edje_object_signal_callback_add(pDisplayViewOptionEdj,
+ SIGNAL_OPTION_SCREEN_SIZE_NORMAL,
+ SIGNAL_OPTION_PART_SCREEN_SIZE,
+ (void *)MpVideoDisplayViewPressOptionScreenSizeCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewOptionEdj,
+ SIGNAL_OPTION_SCREEN_SIZE_EXPAND,
+ SIGNAL_OPTION_PART_SCREEN_SIZE,
+ (void *)MpVideoDisplayViewPressOptionScreenSizeCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewOptionEdj,
+ SIGNAL_OPTION_DETAIL_DOWN,
+ SIGNAL_OPTION_PART_DETAIL,
+ (void *)pShowInfoViewCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
+ SIGNAL_CONTROL_PART_PLAY_BUTTON,
+ (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_PLAY_RESUME_PRESS,
+ SIGNAL_CONTROL_PART_PLAY_BUTTON,
+ (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_FF_BUTTON,
+ (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP,
+ SIGNAL_CONTROL_PART_FF_BUTTON,
+ (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_REW_BUTTON,
+ (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP,
+ SIGNAL_CONTROL_PART_REW_BUTTON,
+ (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_BACK_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_BACK_BUTTON,
+ (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_VOL_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_VOL_BUTTON,
+ (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pDisplayViewCtrlEdj,
+ SIGNAL_CONTROL_VOL_BUTTON_UP,
+ SIGNAL_CONTROL_PART_VOL_BUTTON,
+ (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(_EDJ(pDisplayViewLayout),
+ SIGNAL_MAIN_SCREEN_TOUCH_PRESS,
+ SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE,
+ (void *)MpVideoDisplayViewMainScreenTouchCb, (void *)pAppData);
+
+ MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData);
+ }
+}
+
+void MpVideoDisplayViewInitSubTitle(void* pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+ VideoLogInfo("No exist subtitle.");
+ return;
+ }
+
+ VideoAppData* pAppData = (VideoAppData*)pUserData;
+
+ Evas* pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+ pDisplayViewSubtitleEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SUBTITLE_EDJ, SUBTITLE_EDJ_GROUP);
+
+ edje_object_part_text_set(pDisplayViewSubtitleEdj, SUBTITLE_TEXT, "");
+}
+
+void MpVideoDisplayViewInit(void *pUserData, int nLaunchingApp, void* pShowInfoViewCb)
+{
+ VideoLogInfo("");
+
+ if (!pNaviFrameHandle|| !pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ MpVideoDisplayViewInitKeyMouse(pUserData);
+ MpVideoDisplayViewInitLayout(pUserData, nLaunchingApp, pShowInfoViewCb);
+ MpVideoDisplayViewInitSubTitle(pUserData);
+}
+
+
+/*
+ * External function
+ */
+void MpVideoDisplayViewPush(void *pNaviFrame, void *pShowInfoViewCb, int nLaunchingApp, void *pUserData)
+{
+ if (!pNaviFrame || !pShowInfoViewCb || !pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ pNaviFrameHandle = pNaviFrame;
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoDisplayViewInit(pUserData, nLaunchingApp, pShowInfoViewCb);
+
+ pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, pAppData->szVideoTitle, NULL, NULL, pDisplayViewLayout, "video/1line");
+
+ if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+ pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb);
+ elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_left_btn", pDisplaySoundpathButton);
+ }
+
+ MpVideoDisplayViewShowControlPanel(pUserData);
+}
+
+void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ elm_win_lower(pAppData->pMainWindow);
+}
+
+void MpVideoDisplayViewDestroy(void *pUserData)
+{
+ VideoLogInfo("");
+
+ MpVideoDisplayViewHideControlPanel(pUserData);
+ MpVideoProgressbarDestroy();
+
+ pNaviFrameHandle = NULL;
+
+ if (pMouseEventHandler) {
+ ecore_event_handler_del(pMouseEventHandler);
+ pMouseEventHandler = NULL;
+ }
+
+ if (pDisplayViewPanelEdj) {
+ evas_object_del(pDisplayViewPanelEdj);
+ pDisplayViewPanelEdj = NULL;
+ }
+
+ if (pDisplayViewCtrlEdj) {
+ evas_object_del(pDisplayViewCtrlEdj);
+ pDisplayViewCtrlEdj = NULL;
+ }
+
+ if (pDisplayViewOptionEdj) {
+ evas_object_del(pDisplayViewOptionEdj);
+ pDisplayViewOptionEdj = NULL;
+ }
+
+ if (pVolLongPressTimer) {
+ ecore_timer_del(pVolLongPressTimer);
+ pVolLongPressTimer = NULL;
+ }
+
+ if (pMutePopupShowTimer) {
+ ecore_timer_del(pMutePopupShowTimer);
+ pMutePopupShowTimer = NULL;
+ }
+
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+
+ if (pDisplayViewNaviControlBar) {
+ evas_object_del(pDisplayViewNaviControlBar);
+ pDisplayViewNaviControlBar = NULL;
+ }
+
+ if (pDisplayViewLayout) {
+ evas_object_del(pDisplayViewLayout);
+ pDisplayViewLayout = NULL;
+ }
+
+ if (pSubtitleTimer) {
+ ecore_timer_del(pSubtitleTimer);
+ pSubtitleTimer = NULL;
+ }
+
+ if (pDisplayViewSubtitleEdj) {
+ evas_object_del(pDisplayViewSubtitleEdj);
+ pDisplayViewSubtitleEdj = NULL;
+ }
+
+ if (pDisplaySoundpathButton) {
+ evas_object_del(pDisplaySoundpathButton);
+ pDisplaySoundpathButton = NULL;
+ }
+
+ if (pSpeedPressTimer) {
+ ecore_timer_del(pSpeedPressTimer);
+ pSpeedPressTimer = NULL;
+ }
+
+
+ bIsVolumeLongPress = FALSE;
+ bIsVolumePopupShow = FALSE;
+
+ nCountCalledSpeedPlaying = 0;
+ nSpeedMode = MP_PLAYING_SPEED_NOTHING;
+
+ bSwitchDisplayViewUI = TRUE;
+ nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+}
+
+void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, nScreensizeStatus);
+
+ MpVideoProgressbarReset((void *)pAppData);
+
+ if (pAppData->nDuration > 1) {
+ char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
+
+ snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000));
+
+ MpVideoProgressbarUpdateDurationTime(szDurationTime);
+ }
+
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+void MpVideoDisplayViewUpdatePauseKey(void)
+{
+ VideoLogInfo("");
+
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
+}
+
+void MpVideoDisplayViewUpdateResumeKey(void)
+{
+ VideoLogInfo("");
+
+ edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+void MpVideoDisplayViewShowControlPanel(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!pDisplayViewPanelEdj) {
+ VideoLogInfo("No exist play control panel edc.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ bSwitchDisplayViewUI = TRUE;
+
+ evas_object_show(pDisplayViewPanelEdj);
+
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ } else {
+ pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData);
+ }
+
+ MpVideoDisplayViewActivate();
+}
+
+void MpVideoDisplayViewHideControlPanel(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!pDisplayViewPanelEdj) {
+ VideoLogInfo("No exist play control panel edc.");
+ return;
+ }
+
+ bSwitchDisplayViewUI = FALSE;
+
+ evas_object_hide(pDisplayViewPanelEdj);
+
+ if (pCtrlPanelHideTimer) {
+ ecore_timer_del(pCtrlPanelHideTimer);
+ pCtrlPanelHideTimer = NULL;
+ }
+}
+
+void MpVideoDisplayViewActivate(void)
+{
+ VideoLogInfo("");
+
+ nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE;
+}
+
+void MpVideoDisplayViewUnactivate(void)
+{
+ VideoLogInfo("");
+
+ nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE;
+}
+
+void MpVideoDisplayViewHideSoundpath(void)
+{
+ VideoLogInfo("");
+
+ MpVideoSoundpathHide();
+}
+
+void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle);
+
+ if (pNaviFrameItemForDisplayerView != NULL) {
+ VideoLogInfo("%s", pAppData->szVideoTitle);
+ elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle);
+ }
+}
+
+void MpVideoDisplayViewUpdateSubtitle(double nDuration, char* szSubtitleString)
+{
+ VideoLogInfo("");
+
+ if (!szSubtitleString) {
+ VideoLogInfo("No Exist szSubtitleString pointer.");
+ return;
+ }
+
+ if (nDuration <= 0) {
+ VideoLogInfo("No Exist Duration time.");
+ return;
+ }
+
+ VideoLogInfo("Subtitle Data: %s", szSubtitleString);
+ VideoLogInfo("Subtitle Duration : %f", nDuration);
+
+ edje_object_part_text_set(pDisplayViewSubtitleEdj, SUBTITLE_TEXT, szSubtitleString);
+
+ if (pSubtitleTimer) {
+ ecore_timer_del(pSubtitleTimer);
+ pSubtitleTimer = NULL;
+ }
+
+ pSubtitleTimer = ecore_timer_add(nDuration, MpVideoDisplayViewSubtitleDurationCb, NULL);
+}
+
+bool MpVideoDisplayViewIsTopView(void)
+{
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return FALSE;
+ }
+
+ pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents) {
+ if (pTmpContents == pDisplayViewLayout) {
+ VideoLogInfo("Video display view is staing in top view.");
+ return TRUE;
+ } else {
+ VideoLogInfo("Video display view is not staied in top view.");
+ return FALSE;
+ }
+ } else {
+ VideoLogInfo("[ERR] No exist naviframe top item.");
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+void MpVideoDisplayViewShowNocontentImage(void)
+{
+ VideoLogInfo("");
+
+ if (pDisplayViewLayout) {
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*");
+ }
+}
+
+void MpVideoDisplayViewHideNocontentImage(void)
+{
+ VideoLogInfo("");
+
+ if (pDisplayViewLayout) {
+ edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*");
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <aul.h>
+#include <vconf.h>
+#include <mmf/mm.h>
+#include <mm_file.h>
+#include <mmf/mm_file.h>
+#include <libexif/exif-data.h>
+
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include <unicode/udat.h>
+#include <unicode/ustring.h>
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udatpg.h>
+#include <unicode/utmscale.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-info-ctrl.h"
+
+enum VIDEO_PLAYER_FILE_SIZE_TYPE
+{
+ SIZE_BYTE = 0,
+ SIZE_KB,
+ SIZE_MB,
+ SIZE_GB
+};
+
+bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude)
+{
+ if (!szUriPath) {
+ VideoLogInfo("[ERR] No exist szUriPath.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ MMHandleType st_Tag = (MMHandleType) NULL;
+
+ int nRet = -1;
+ char *szTmp = NULL;
+ double nGpsValue = 0.0;
+
+ *nLatitude = 0.0;
+ *nLongtitude = 0.0;
+
+ nRet = mm_file_create_tag_attrs(&st_Tag, szUriPath);
+ if (!st_Tag) {
+ VideoLogInfo("[ERR] : %s", szUriPath);
+ return FALSE;
+ }
+
+ nRet = mm_file_get_attrs(st_Tag, &szTmp, MM_FILE_TAG_LATIDUE, &nGpsValue, NULL);
+ if (nRet == 0) {
+ VideoLogInfo("Latitude : %f", nGpsValue);
+ if (nGpsValue != 0.0) {
+ *nLatitude = nGpsValue;
+ }
+ } else if (szTmp) {
+ VideoLogInfo("[ERR] - %s", szTmp);
+ free(szTmp);
+ szTmp = NULL;
+ mm_file_destroy_tag_attrs(st_Tag);
+
+ return FALSE;
+ }
+
+ nGpsValue = 0.0;
+
+ nRet = mm_file_get_attrs(st_Tag, &szTmp, MM_FILE_TAG_LONGITUDE, &nGpsValue, NULL);
+ if (nRet == 0) {
+ VideoLogInfo("Longitude: %f", nGpsValue);
+ if (nGpsValue != 0.0) {
+ *nLongtitude = nGpsValue;
+ }
+ } else if (szTmp) {
+ VideoLogInfo("[ERR] - %s", szTmp);
+ free(szTmp);
+ szTmp = NULL;
+ mm_file_destroy_tag_attrs(st_Tag);
+
+ return FALSE;
+ }
+
+ mm_file_destroy_tag_attrs(st_Tag);
+
+ return TRUE;
+}
+
+bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution(pAppData);
+
+ if (pAppData->nVideoWidthResolution > 0 && pAppData->nVideoHeightResolution > 0) {
+ snprintf(szWidthResolution, STR_LEN_MAX, "%d", pAppData->nVideoWidthResolution);
+ snprintf(szHeightResolution, STR_LEN_MAX, "%d", pAppData->nVideoHeightResolution);
+ } else {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static char *MpVideoInfoCtrlConvertingString(const char *szLocale, const char *szCustomSkeleton, const char *szTimezone, UDate st_Date)
+{
+#define UG_ICU_ARR_LENGTH 256
+
+ // Copy a byte string encoded in the default codepage to a ustring.
+ // Copies at most n characters. The result will be null terminated if the length of src is less than n.
+ // Performs a host byte to UChar conversion.
+
+ UChar ucustomSkeleton[UG_ICU_ARR_LENGTH] = {0,};
+
+ if (u_uastrncpy(ucustomSkeleton, szCustomSkeleton, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogInfo("u_uastrncpy() error.");
+ return NULL;
+ }
+
+ UChar utimezone[UG_ICU_ARR_LENGTH] = {0,};
+
+ if (u_uastrncpy(utimezone, szTimezone, UG_ICU_ARR_LENGTH) == NULL) {
+ VideoLogInfo("u_uastrncpy() error.");
+ return NULL;
+ }
+
+ UErrorCode status = U_ZERO_ERROR;
+ UDateTimePatternGenerator *generator;
+ UDateFormat *formatter;
+
+ UChar bestPattern[UG_ICU_ARR_LENGTH] = {0,};
+ UChar formatted[UG_ICU_ARR_LENGTH] = {0,};
+ char formattedString[UG_ICU_ARR_LENGTH] = {0,};
+ int32_t bestPatternLength, formattedLength;
+
+ ucal_setDefaultTimeZone(utimezone , &status);
+
+ if (U_FAILURE(status)) {
+ VideoLogInfo("ucal_setDefaultTimeZone() is failed.");
+ return NULL;
+ }
+
+ uloc_setDefault(getenv("LC_TIME"), &status);
+
+ if (U_FAILURE(status)) {
+ VideoLogInfo("ucal_setDefaultTimeZone() is failed.");
+ return NULL;
+ }
+
+ generator = udatpg_open(szLocale, &status);
+ if (generator == NULL) {
+ return NULL;
+ }
+
+ bestPatternLength = udatpg_getBestPattern(generator, ucustomSkeleton, u_strlen(ucustomSkeleton), bestPattern, UG_ICU_ARR_LENGTH, &status);
+ if (bestPatternLength <= 0) {
+ return NULL;
+ }
+
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, szLocale, NULL, -1, bestPattern, -1, &status);
+ if (formatter == 0) {
+ return NULL;
+ }
+
+ formattedLength = udat_format(formatter, st_Date, formatted, UG_ICU_ARR_LENGTH, NULL, &status);
+ if (formattedLength <= 0) {
+ return NULL;
+ }
+
+ u_austrcpy(formattedString, formatted);
+ udatpg_close(generator);
+ udat_close(formatter);
+
+ if (strlen(formattedString) == 0) {
+ return NULL;
+ }
+
+ return strdup(formattedString);
+}
+
+static char* MpVideoInfoCtrlGetDateOfFile(time_t mtime)
+{
+#define UG_DATE_FORMAT_12 "yMMMdhms"
+#define UG_DATE_FORMAT_24 "yMMMdHms"
+
+ VideoLogInfo("");
+
+ char* szSkeleton = NULL;
+
+ enum appcore_time_format nTimeformat;
+
+ int nRet = appcore_get_timeformat(&nTimeformat);
+ if (nRet == -1) {
+ VideoLogInfo("Cannot get timeformat.");
+ nTimeformat = APPCORE_TIME_FORMAT_12;
+ }
+
+ if (nTimeformat == APPCORE_TIME_FORMAT_12) {
+ szSkeleton = UG_DATE_FORMAT_12;
+ } else if(nTimeformat == APPCORE_TIME_FORMAT_24) {
+ szSkeleton = UG_DATE_FORMAT_24;
+ } else {
+ VideoLogInfo("Invalid time format : %d", nTimeformat);
+ szSkeleton = UG_DATE_FORMAT_12; // Default value.
+ }
+
+ char *szLocale = vconf_get_str(VCONFKEY_REGIONFORMAT); // eg en_US.UTF-8
+ if (szLocale == NULL) {
+ VideoLogInfo("Cannot get region format.");
+ szLocale = "en_US.UTF-8"; // Default value.
+ }
+
+ char *szTimezone = NULL;
+ szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID); // eg Asia/Seoul
+ if (szTimezone == NULL) {
+ VideoLogInfo("Cannot get time zone.");
+ return strdup("N/A");
+ }
+
+ VideoLogInfo("Locale : %s TimeZone : %s TimeFormat : %s", szLocale, szSkeleton, szTimezone);
+
+ char* szDatestr = NULL;
+ szDatestr = MpVideoInfoCtrlConvertingString(szLocale, szSkeleton, szTimezone, (UDate)mtime * 1000);
+ if(!szDatestr) {
+ VideoLogInfo("Cannot get time string.");
+ return strdup("N/A");
+ }
+
+ VideoLogInfo("ICU Date : %s", szDatestr);
+
+ return szDatestr;
+}
+
+char* MpVideoInfoCtrlGetFileExtension(char *szPath)
+{
+ if (!szPath) {
+ VideoLogInfo("Cannot get file extension. path is NULL");
+ return strdup("Unknown");
+ }
+
+ char *szExt = NULL;
+ szExt = strrchr(szPath, '.');
+
+ if ((szExt != NULL) && ((szExt+1) != NULL)) {
+ return strdup(szExt + 1);
+ }
+
+ return strdup("Unknown");
+}
+
+char* MpVideoInfoCtrlGetFileSize(size_t size)
+{
+ VideoLogInfo("");
+
+#define FILE_SIZE_LEN_MAX 64
+#define BASIC_SIZE 1024 //used for file size check
+
+ int nCount = 0;
+
+ unsigned long int lsize = (unsigned long int)size;
+
+ char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1);
+ if (pTmp == NULL) {
+ return NULL;
+ }
+
+ while (size >= (BASIC_SIZE)) {
+ lsize = size;
+ size /= BASIC_SIZE;
+ nCount++;
+ }
+
+ float remain = ((float)lsize/BASIC_SIZE) - size;
+
+ if (nCount == SIZE_BYTE) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu B", size);
+ } else if (nCount == SIZE_KB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zu KB", size);
+ } else if (nCount == SIZE_MB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%.1f MB", size+remain);
+ } else if(nCount == SIZE_GB) {
+ snprintf(pTmp, FILE_SIZE_LEN_MAX,"%.1f GB", size+remain);
+ }
+
+ VideoLogInfo("Size = %lu, OrigSize=%zu", lsize, size);
+
+ return pTmp;
+}
+
+bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize)
+{
+ if (!szUriPath) {
+ VideoLogInfo("[ERR] No exist szUriPath.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ struct stat statbuf;
+
+ if (stat(szUriPath, &statbuf) == -1) {
+ return FALSE;
+ }
+
+ memset(szFileDate, 0, nFileDateSize);
+ memset(szFileExtension, 0, nFileExtensionSize);
+ memset(szFileSize, 0, nFilesizeSize);
+
+ char *szTmpDateOfFile = MpVideoInfoCtrlGetDateOfFile(statbuf.st_mtime);
+ char *szTmpFileExtension = MpVideoInfoCtrlGetFileExtension(szUriPath);
+ char *szTmpFileSize = MpVideoInfoCtrlGetFileSize(statbuf.st_size);
+
+ if (szTmpDateOfFile) {
+ VideoLogInfo("szTmpDateOfFile : %s", szTmpDateOfFile);
+ strncpy(szFileDate, szTmpDateOfFile, nFileDateSize);
+ free(szTmpDateOfFile);
+ }
+
+ if (szTmpFileExtension) {
+ VideoLogInfo("szTmpFileExtension : %s", szTmpFileExtension);
+ strncpy(szFileExtension, szTmpFileExtension, nFileExtensionSize);
+ free(szTmpFileExtension);
+ }
+
+ if (szTmpFileSize) {
+ VideoLogInfo("szTmpFileSize : %s", szTmpFileSize);
+ strncpy(szFileSize, szTmpFileSize, nFilesizeSize);
+ free(szTmpFileSize);
+ }
+
+ return TRUE;
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include <mm.h>
+#include <mm_error.h>
+#include <mm_sound.h>
+
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+#include "mp-video-log.h"
+#include "mp-video-player-mgr.h"
+
+#define MAX_PATH_LEN 2048
+
+static int nAntiShock = 0;
+static MMHandleType playerHandle = 0;
+
+bool MpPlayerMgrIsActive(void)
+{
+ return playerHandle ? true : false;
+}
+
+void MpPlayerMgrSetMessageCallback(MMMessageCallback Callback, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (mm_player_set_message_callback(playerHandle, Callback, pUserData) !=
+ MM_ERROR_NONE) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+}
+
+bool MpPlayerMgrSetAudioCallback(mm_player_audio_stream_callback CallBack,
+ void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (mm_player_set_audio_stream_callback
+ (playerHandle, CallBack, pUserData) != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrCreate(const char *szPath)
+{
+ VideoLogInfo("");
+
+ if (!szPath) {
+ VideoLogInfo("[ERR] Not correct Meida URI.");
+ return false;
+ }
+
+ int nPathLength = strlen(szPath);
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ VideoLogInfo(" Media path (%s)", szPath);
+
+ if (nPathLength > 0 && nPathLength < MAX_PATH_LEN) {
+ nErr = mm_player_create(&playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo
+ ("[ERR] Fail to create player handle. (MMF Error code : %x)",
+ nErr);
+ return false;
+ }
+
+ nErr =
+ mm_player_set_attribute(playerHandle, &pErrName,
+ "profile_uri", szPath,
+ strlen(szPath), NULL);
+
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ } else {
+ VideoLogInfo("[ERR] File path is too long.");
+ return false;
+ }
+
+ if (nAntiShock) {
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "sound_fadeup", 1, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+ nAntiShock = 0;
+ } else {
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "sound_fadeup", 0, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+ nAntiShock = 1;
+ }
+
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "sound_volume_type",
+ MM_SOUND_VOLUME_TYPE_MEDIA, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute ", nErr,
+ pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrDestroy(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_destroy(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ playerHandle = 0;
+
+ return true;
+}
+
+bool MpPlayerMgrRealize(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_realize(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrUnrealize(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_unrealize(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrPlay(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_start(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrStop(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_stop(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrResume(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+ int nErr = MM_ERROR_NONE;
+
+ if (nAntiShock) {
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "sound_fadeup", 1, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo
+ ("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ nAntiShock = 0;
+ } else {
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "sound_fadeup", 0, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo
+ ("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ nAntiShock = 0;
+ }
+
+ nErr = mm_player_resume(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrPause(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_pause(playerHandle);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+int MpPlayerMgrGetPosition(void)
+{
+ if (!MpPlayerMgrIsActive()) {
+ return 0;
+ }
+
+ int nPos = 0;
+ int nErr = 0;
+
+ nErr = mm_player_get_position(playerHandle, MM_PLAYER_POS_FORMAT_TIME,
+ &nPos);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+ return 0;
+ }
+
+ return nPos;
+}
+
+void MpPlayerMgrSetPosition(unsigned int nPos)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("Set position - %d", nPos);
+
+ int nErr = 0;
+
+ nErr = mm_player_set_position(playerHandle, MM_PLAYER_POS_FORMAT_TIME,
+ (int)nPos);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x ", nErr);
+ }
+}
+
+bool MpPlayerMgrGetVisible(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ int nVisible = 0;
+ char *pErrName = NULL;
+
+ nErr =
+ mm_player_get_attribute(playerHandle, &pErrName, "display_visible",
+ &nVisible, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute.",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return (bool) nVisible;
+}
+
+void MpPlayerMgrSetVisible(bool bEnabled)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (MpPlayerMgrGetVisible() == bEnabled) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ nErr =
+ mm_player_set_attribute(playerHandle, &pErrName, "display_visible",
+ (int)bEnabled, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ }
+}
+
+void MpPlayerMgrSetMute(bool bMuteEnable)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (mm_player_set_mute(playerHandle, (int)bMuteEnable) != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR]");
+ }
+}
+
+bool MpPlayerMgrGetMute(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ bool bIsMute = FALSE;
+
+ if (mm_player_get_mute(playerHandle, (int *)&bIsMute) != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ return bIsMute;
+}
+
+bool MpPlayerMgrSetBtHeadset(bool bEnable, char *szAddress)
+{
+ VideoLogInfo("");
+
+ VideoLogInfo("bt headset enable(%d)", bEnable);
+ VideoLogInfo("============================================");
+ VideoLogInfo("bluetooth headset enable(%d), addr(%s)", bEnable,
+ szAddress);
+ VideoLogInfo("============================================");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ MMBluetoothType BluetoothParam;
+ memset(&BluetoothParam, 0, sizeof(MMBluetoothType));
+
+ if (bEnable) {
+ BluetoothParam.mode = 1;
+
+ if (szAddress) {
+ strncpy(BluetoothParam.addr, szAddress,
+ BT_ADDR_LEN - 1);
+ } else {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ VideoLogInfo("address : %s", szAddress);
+ }
+
+ return true;
+}
+
+int MpPlayerMgrGetStreamingType(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+ int streaming_type = STREAMING_SERVICE_NONE;
+
+ nErr =
+ mm_player_get_attribute(playerHandle, &pErrName, "streaming_type",
+ &streaming_type, NULL);
+
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return (int)streaming_type;
+}
+
+void MpPlayerMgrSetProgressiveDownload(int nFileSize)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ nErr = mm_player_set_attribute(playerHandle, &pErrName, "pd_enable", 1,
+ "pd_full_content_size", nFileSize, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ }
+}
+
+void MpPlayerMgrSetDownloadComplete(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ nErr =
+ mm_player_set_attribute(playerHandle, &pErrName, "pd_down_complete",
+ 1, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ }
+}
+
+void MpPlayerMgrSetProgressTimerInterval(int nInterval)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ char *pErrName = NULL;
+ int nErr = MM_ERROR_NONE;
+
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "profile_progress_interval", nInterval,
+ NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ }
+}
+
+int MpPlayerMgrGetPdduration(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nDuration = -1;
+ char *pErrName = NULL;
+ int nErr = MM_ERROR_NONE;
+
+ nErr =
+ mm_player_get_attribute(playerHandle, &pErrName, "content_duration",
+ &nDuration, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return nDuration;
+}
+
+int MpPlayerMgrGetDuration(char *szFilePath)
+{
+ VideoLogInfo("%s", szFilePath);
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nDuration = -1;
+ char *pErrName = NULL;
+ int nErr = MM_ERROR_NONE;
+
+ nErr =
+ mm_player_get_attribute(playerHandle, &pErrName, "content_duration",
+ &nDuration, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return nDuration;
+}
+
+bool MpPlayerMgrSetRatioVideoScreenSize(MpPlayerMgrDisplayMethod ScreenSize)
+{
+ VideoLogInfo("Screen size : %d", ScreenSize);
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+ int nErr = MM_ERROR_NONE;
+
+ nErr =
+ mm_player_set_attribute(playerHandle, &pErrName, "display_method",
+ ScreenSize, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrSetOverlayXid(void *pOverlayXid)
+{
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (!pOverlayXid) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ VideoLogInfo("XID : %d", *((int *)pOverlayXid));
+
+ nErr =
+ mm_player_set_attribute(playerHandle, &pErrName, "display_overlay",
+ pOverlayXid, sizeof(int),
+ "display_rotation",
+ MM_DISPLAY_ROTATION_NONE, NULL);
+
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrSetSoundPriority(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+ int nErr = MM_ERROR_NONE;
+
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "sound_volume_type",
+ MM_SOUND_VOLUME_TYPE_MEDIA, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo
+ ("[ERR] Error code : 0x%x - Fail to set attribute ", nErr,
+ pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return true;
+}
+
+int MpPlayerMgrGetVideoWidthResolution(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+ int nWidth = 0;
+ int nErr = MM_ERROR_NONE;
+
+ nErr = mm_player_get_attribute(playerHandle, &pErrName,
+ "content_video_width", &nWidth, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return nWidth;
+}
+
+int MpPlayerMgrGetVideoHeightResolution(void)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+ int nHeight = 0;
+ int nErr = MM_ERROR_NONE;
+
+ nErr = mm_player_get_attribute(playerHandle, &pErrName,
+ "content_video_height", &nHeight, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to get attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return nHeight;
+}
+
+bool MpPlayerMgrSetSubtitleSilent(bool bSilent)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = mm_player_set_subtitle_silent(playerHandle, (int)bSilent);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - ", nErr);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrSetSubtitle(const char *szSubtitlePath)
+{
+ VideoLogInfo("%s", szSubtitlePath);
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (!szSubtitlePath) {
+ VideoLogInfo("[ERR] subtitle path is null.");
+ return false;
+ }
+
+ char *pErrName = NULL;
+
+ int nErr = 0;
+ nErr = mm_player_set_attribute(playerHandle, &pErrName, "subtitle_uri",
+ (const char *)szSubtitlePath,
+ strlen(szSubtitlePath), NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ } else {
+ VideoLogInfo("Success to set subtitle.");
+ }
+
+ return true;
+}
+
+int MpPlayerMgrSetBluetoothHeadset(char *szBlutoothAddress, int nMode)
+{
+ VideoLogInfo("");
+
+ return 1;
+}
+
+int MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+
+ int nErr = 0;
+ nErr = mm_player_set_attribute(playerHandle, &pErrName, "display_roi_x",
+ nX, "display_roi_y", nY,
+ "display_roi_width", nWidth,
+ "display_roi_height", nHeight, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return true;
+}
+
+int MpPlayerMgrSetVerticalOverlayPos(int nY)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ char *pErrName = NULL;
+
+ int nErr = 0;
+ nErr = mm_player_set_attribute(playerHandle, &pErrName, "display_roi_y",
+ nY, NULL);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] Error code : 0x%x - Fail to set attribute ",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrSetUseragentForStreaming(const char *szUserAgent)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (!szUserAgent) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ if (strlen(szUserAgent) > 0) {
+ VideoLogInfo("User agent (%s)", szUserAgent);
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "streaming_user_agent",
+ szUserAgent, strlen(szUserAgent),
+ NULL);
+
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute [%s]",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+ } else {
+ VideoLogInfo("No have useragnet value.");
+ return true;
+ }
+
+ return true;
+}
+
+bool MpPlayerMgrSetProxAddressForStreaming(const char *szProxyAddress)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (!szProxyAddress) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ if (strlen(szProxyAddress) > 0) {
+ VideoLogInfo("Proxy Setting (%s)", szProxyAddress);
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "streaming_proxy",
+ szProxyAddress,
+ strlen(szProxyAddress), NULL);
+
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute [%s]",
+ nErr, pErrName);
+ free(pErrName);
+ return false;
+ }
+ }
+ return true;
+}
+
+bool MpPlayerMgrSetCookieForStreaming(const char *szCookie)
+{
+ VideoLogInfo("");
+
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ if (!szCookie) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+ char *pErrName = NULL;
+
+ if (strlen(szCookie) > 0) {
+ VideoLogInfo("Cookie (%s)", szCookie);
+ nErr = mm_player_set_attribute(playerHandle, &pErrName,
+ "streaming_cookie", szCookie,
+ strlen(szCookie), NULL);
+
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] (%x):: Fail to set attribute [%s]",
+ nErr, pErrName);
+
+ if (pErrName)
+ free(pErrName);
+
+ return false;
+ }
+ } else {
+ VideoLogInfo("No have useragnet value.");
+ return true;
+ }
+
+ return true;
+}
+
+
+int MpPlayerMgrGetBufferingPosition(void)
+{
+ if (!MpPlayerMgrIsActive()) {
+ VideoLogInfo("[ERR]");
+ return false;
+ }
+
+ int nErr = MM_ERROR_NONE;
+
+ int startPos = 0, stopPos = 0;
+ nErr = mm_player_get_buffer_position(playerHandle,
+ MM_PLAYER_POS_FORMAT_PERCENT,
+ &startPos, &stopPos);
+ if (nErr != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR]");
+ return -1;
+ }
+
+ return stopPos;
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-value-define.h"
+#include "mp-video-progressbar.h"
+
+static Evas_Object *pProgressbarEdj = NULL;
+Ecore_Timer *pProgressbarTimer = NULL;
+
+static bool bIsEventSkip = FALSE;
+static bool bIsDrag = FALSE;
+static int nDragPosition = 0;
+
+#define PROGRESS_BAR_TERM 40
+
+/*
+ * Internal function
+ */
+static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist userdata.");
+ return EINA_TRUE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ double nPlayedRatio = 0.0;
+ char szPlayingTime[PLAY_TIME_LENGTH] = { 0 };
+
+ nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration);
+
+ snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
+ PLAY_TIME_ARGS(nDragPosition / 1000));
+
+ edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing",
+ nPlayedRatio, 0.0);
+
+ edje_object_part_text_set(pProgressbarEdj, "progress.txt.played",
+ szPlayingTime);
+
+ return EINA_TRUE;
+}
+
+static void MpVideoProgressbarUpdateBufferingValue(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist userdata.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ double buffering_ratio = 0.0;
+ pAppData->
+ VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition(pAppData);
+
+ buffering_ratio = ((double)pAppData->nBufferingPosition / (double)100);
+
+ edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering",
+ buffering_ratio, 0.0);
+}
+
+/*
+ * Callback function.
+ */
+static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
+{
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist userdata.");
+ return EINA_TRUE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nDuration < 1) {
+ VideoLogInfo("Try to update duration time.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData);
+ return EINA_TRUE;
+ }
+
+ if (bIsDrag || bIsEventSkip)
+ return EINA_TRUE;
+
+ double nPlayedRatio = 0.0;
+ char szPlayingTime[PLAY_TIME_LENGTH] = { 0 };
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+
+ nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration);
+ snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000));
+
+ edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0);
+ edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime);
+
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER )
+ MpVideoProgressbarUpdateBufferingValue(pUserData);
+
+ return EINA_TRUE;
+}
+
+static void MpVideoProgressbarDownCb(void *pUserData, Evas * e,
+ Evas_Object *obj, void *event_info)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!event_info) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (bIsEventSkip)
+ return;
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ Evas_Event_Mouse_Up *ev = event_info;
+ Evas_Object *progressbar = obj;
+ int w = 0, current = 0;
+ double ratio = 0.0;
+
+ bIsDrag = TRUE;
+
+ evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+ current = ev->canvas.x - PROGRESS_BAR_TERM;
+ if (current < 0)
+ current = 0;
+ else if (current > w)
+ current = w;
+
+ ratio = (double)current / w;
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
+ pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
+ }
+
+ nDragPosition = ratio * pAppData->nDuration;
+
+ MpVideoProgressbarUpdateValue(pUserData);
+
+}
+
+static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj,
+ void *event_info)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!event_info) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (bIsEventSkip)
+ return;
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ Evas_Event_Mouse_Up *ev = event_info;
+ Evas_Object *progressbar = obj;
+ int w = 0, current = 0;
+ double ratio = 0.0;
+
+ evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+ current = ev->canvas.x - PROGRESS_BAR_TERM;
+ if (current < 0)
+ current = 0;
+ else if (current > w)
+ current = w;
+
+ ratio = (double)current / w;
+
+ pAppData->nSetPosition = (int)pAppData->nDuration * ratio;
+
+ if (pAppData->nSetPosition > pAppData->nDuration)
+ pAppData->nSetPosition = pAppData->nDuration;
+
+ if (pAppData->nSetPosition < 0)
+ pAppData->nSetPosition = 0;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+
+ if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
+ pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+ pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
+ }
+
+ bIsDrag = FALSE;
+}
+
+static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
+ Evas_Object *obj, void *event_info)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!event_info) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (bIsEventSkip)
+ return;
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ Evas_Event_Mouse_Up *ev = event_info;
+ Evas_Object *progressbar = obj;
+ int w = 0, current = 0;
+ double ratio = 0.0;
+
+ evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
+ current = ev->canvas.x - PROGRESS_BAR_TERM;
+ if (current < 0)
+ current = 0;
+ else if (current > w)
+ current = w;
+
+ ratio = (double)current / w;
+ nDragPosition = ratio * pAppData->nDuration;
+
+ MpVideoProgressbarUpdateValue(pUserData);
+
+}
+
+/*
+ * External function
+ */
+void MpVideoProgressbarSetSkipEvent(bool bSkip)
+{
+ VideoLogInfo("");
+
+ bIsEventSkip = bSkip;
+}
+
+void *MpVideoProgressbarGetEdjHandle(void)
+{
+ VideoLogInfo("");
+
+ if (pProgressbarEdj) {
+ return (void *)pProgressbarEdj;
+ } else {
+ VideoLogInfo("Progressbar edj handle is null.");
+ return NULL;
+ }
+}
+
+void *MpVideoProgressbarInit(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+ pProgressbarEdj = (Evas_Object *)MpUtilLoadEdjFile(pMainWindowEvas,
+ VIDEO_PLAYER_PROGRESS_EDJ,
+ PROGRESS_EDJ_GROUP);
+
+ evas_object_event_callback_add(pProgressbarEdj,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ MpVideoProgressbarDownCb, pAppData);
+
+ evas_object_event_callback_add(pProgressbarEdj,
+ EVAS_CALLBACK_MOUSE_UP,
+ MpVideoProgressbarUpCb, pAppData);
+
+ evas_object_event_callback_add(pProgressbarEdj,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ MpVideoProgressbarMoveCb, pAppData);
+
+ MpVideoProgressbarUpdateDurationTime("--:--:--");
+
+ return (void *)pProgressbarEdj;
+}
+
+void MpVideoProgressbarDestroy(void)
+{
+ VideoLogInfo("");
+
+ if (pProgressbarEdj) {
+ evas_object_del(pProgressbarEdj);
+ pProgressbarEdj = NULL;
+ }
+
+ if (pProgressbarTimer) {
+ ecore_timer_del(pProgressbarTimer);
+ pProgressbarTimer = NULL;
+ }
+
+ bIsEventSkip = FALSE;
+ bIsDrag = FALSE;
+ nDragPosition = 0;
+}
+
+void MpVideoProgressbarCreateTimer(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pProgressbarTimer) {
+ ecore_timer_del(pProgressbarTimer);
+ pProgressbarTimer = NULL;
+ }
+
+ pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData);
+}
+
+void MpVideoProgressbarDeleteTimer(void)
+{
+ VideoLogInfo("");
+
+ if (pProgressbarTimer) {
+ ecore_timer_del(pProgressbarTimer);
+ pProgressbarTimer = NULL;
+ }
+}
+
+void MpVideoProgressbarUpdateDurationTime(char *szDurationTime)
+{
+ VideoLogInfo("");
+
+ if (!szDurationTime) {
+ VideoLogInfo("Fail to ser duration time");
+ return;
+ }
+
+ edje_object_part_text_set(pProgressbarEdj, "progress.txt.total",
+ szDurationTime);
+}
+
+void MpVideoProgressbarReset(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoProgressbarDeleteTimer();
+
+ pAppData->nCurPosition = 0;
+ edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing",
+ 0.0, 0.0);
+
+ MpVideoProgressbarCreateTimer(pUserData);
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <mm_sound.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#define MP_VIDEO_SOUND_PATH_NUM 10
+#define MP_VIDEO_SOUND_PATH_SPEAKER "Speaker"
+#define MP_VIDEO_SOUND_PATH_EARJACK "Headphones"
+
+static Evas_Object *pVideoSoundPathPopUpHandle = NULL;
+static Evas_Object *pGroupRadio = NULL;
+static Evas_Object *pGenList = NULL;
+
+static Elm_Genlist_Item_Class st_Itc;
+static char szSoundPathItems[MP_VIDEO_SOUND_PATH_NUM][STR_LEN_MAX];
+static bool bIsConnectBluetooth = FALSE;
+static bool bIsConnectEarjack = FALSE;
+
+void MpVideoSoundpathDeleteRadioButton(void)
+{
+ VideoLogInfo("");
+
+ if (pGroupRadio) {
+ evas_object_del(pGroupRadio);
+ pGroupRadio = NULL;
+ }
+}
+
+void MpVideoSoundpathDeletePopupHandle(void)
+{
+ VideoLogInfo("");
+
+ int nCount = 0;
+
+ for (nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++) {
+ memset(&szSoundPathItems[nCount][0], 0,
+ sizeof(char) * STR_LEN_MAX);
+ }
+
+ MpVideoSoundpathDeleteRadioButton();
+
+ memset(&st_Itc, 0, sizeof(Elm_Genlist_Item_Class));
+
+ if (pGenList) {
+ evas_object_del(pGenList);
+ pGenList = NULL;
+ }
+
+ if (pVideoSoundPathPopUpHandle) {
+ evas_object_del(pVideoSoundPathPopUpHandle);
+ pVideoSoundPathPopUpHandle = NULL;
+ }
+
+ }
+
+static char *MpVideoSoundpathGetLabelOfGenlistItemCb(const void *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ VideoLogInfo("");
+
+ int nIndex = (int)pUserData;
+
+ if (!strcmp(pPart, "elm.text")) {
+ VideoLogInfo("Index : %d", nIndex);
+ return strdup(&szSoundPathItems[nIndex][0]);
+ }
+
+ return NULL;
+}
+
+static Evas_Object *MpVideoSoundpathGetIconOfGenlistItemCb(const void
+ *pUserData,
+ Evas_Object *pObject,
+ const char *pPart)
+{
+ VideoLogInfo("");
+
+ int nIndex = (int)pUserData;
+ Evas_Object *pTmpRadio = NULL;
+
+ if (!strcmp(pPart, "elm.icon")) {
+ VideoLogInfo("Index : %d", nIndex);
+ pTmpRadio = elm_radio_add(pObject);
+ elm_radio_state_value_set(pTmpRadio, nIndex);
+ evas_object_show(pTmpRadio);
+ elm_radio_group_add(pTmpRadio, pGroupRadio);
+ }
+
+ return pTmpRadio;
+}
+
+static void MpVideoSoundpathSelectSoundPathItemCb(void *pUserData,
+ Evas_Object *pObject,
+ void *pEventInfo)
+{
+ if (pUserData == NULL) {
+ VideoLogInfo("[ERR]No have pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ int nIndex = 0;
+ Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo;
+
+ if (pItem) {
+ nIndex = (int)elm_object_item_data_get(pItem);
+ VideoLogInfo("Select sound path : %s", szSoundPathItems[nIndex]);
+
+ if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_SPEAKER)) {
+ int nRet = 0;
+
+ if (MpUtilIsConnectEarjack()) {
+ nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY);
+ } else {
+ nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP);
+ }
+
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+ } else if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_EARJACK)) {
+ int nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP);
+ if (nRet != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] mm_sound_route_set_system_policy(0x%x)", nRet);
+ } else {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+ }
+ } else {
+ int nRet = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT);
+ if (nRet != MM_ERROR_NONE) {
+ VideoLogInfo("[ERR] mm_sound_route_set_system_policy(0x%x)", nRet);
+ } else {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
+ }
+ }
+ }
+
+ MpVideoSoundpathDeletePopupHandle();
+}
+
+static void MpVideoSoundpathPopupCb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (pUserData == NULL) {
+ VideoLogInfo("[ERR]No have pUserData");
+ return;
+ }
+
+ MpVideoSoundpathDeletePopupHandle();
+}
+
+void MpVideoSoundpathCurrentState(Evas_Object *pParent)
+{
+ VideoLogInfo("");
+
+ int nBluetoothConnect = 0;
+ char *szBluetoothName = NULL;
+ bIsConnectEarjack = FALSE;
+ bIsConnectBluetooth = FALSE;
+
+ /* Speaker */
+ strncpy(&szSoundPathItems[MP_SOUND_PATH_SPEAKER][0], MP_VIDEO_SOUND_PATH_SPEAKER, STR_LEN_MAX - 1);
+
+ /* Check and Add earjack sound path. */
+ if (MpUtilIsConnectEarjack()) {
+ VideoLogInfo("Connect earjack.");
+ bIsConnectEarjack = TRUE;
+ strncpy(&szSoundPathItems[MP_SOUND_PATH_EARJACK][0], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1);
+ } else {
+ VideoLogInfo("No connect earjack.");
+ }
+
+ /* Add bluetooth stereo sound path. */
+ if (MM_ERROR_NONE != mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName)) {
+ VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+ } else {
+ if (nBluetoothConnect) {
+ VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName);
+ bIsConnectBluetooth = TRUE;
+ strncpy(&szSoundPathItems[MP_SOUND_PATH_BLUETOOTH][0], szBluetoothName, STR_LEN_MAX - 1);
+ } else {
+ VideoLogInfo("Unactivate Bluetooth stereo A2DP.");
+ }
+ }
+}
+
+void MpVideoSoundpathSetRadioButton(void)
+{
+ VideoLogInfo("");
+
+ int nBluetoothConnect = 0;
+ char *szBluetoothName = NULL;
+ system_audio_route_t nPolicy = 0;
+
+ mm_sound_route_get_system_policy(&nPolicy);
+
+ if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT) {
+ VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
+
+ if (MM_ERROR_NONE != mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName)) {
+ VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+ }
+
+ if (nBluetoothConnect) {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH);
+ } else if (MpUtilIsConnectEarjack()) {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+ } else {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+ }
+ } else if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP) {
+ VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
+
+ if (MpUtilIsConnectEarjack()) {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK);
+ } else {
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+ }
+ } else {
+ VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
+
+ elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER);
+ }
+}
+
+/*
+ * External function
+ */
+bool MpVideoSoundpathShow(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogInfo("No have popup message or pAppData is null.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoSoundpathIsConnectOtherSoundpath();
+
+ if (!bIsConnectBluetooth && !bIsConnectEarjack) {
+ VideoLogInfo("Soundpath is only speaker.");
+ return FALSE;
+ }
+
+ Evas_Object *pBox = NULL;
+ Evas_Object *pButton = NULL;
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoSoundpathDeletePopupHandle();
+
+ pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow);
+
+ MpVideoSoundpathCurrentState(pVideoSoundPathPopUpHandle);
+
+ elm_object_style_set(pVideoSoundPathPopUpHandle, "min_menustyle");
+ elm_object_part_text_set(pVideoSoundPathPopUpHandle, "title,text", MP_VIDEO_SOUND_PATH);
+ evas_object_size_hint_weight_set(pVideoSoundPathPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ pButton = elm_button_add(pVideoSoundPathPopUpHandle);
+ elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_BUTTON_CANCEL));
+ elm_object_part_content_set(pVideoSoundPathPopUpHandle, "button1", pButton);
+ evas_object_smart_callback_add(pButton, "clicked", MpVideoSoundpathPopupCb, (void*)pAppData);
+
+ /* Set item of Genlist. */
+ st_Itc.item_style = "1text.1icon.3";
+ st_Itc.func.text_get = (void *)MpVideoSoundpathGetLabelOfGenlistItemCb;
+ st_Itc.func.content_get = (void *)MpVideoSoundpathGetIconOfGenlistItemCb;
+ st_Itc.func.state_get = NULL;
+ st_Itc.func.del = NULL;
+
+ /* Create genlist handle */
+ pGenList = elm_genlist_add(pVideoSoundPathPopUpHandle);
+ evas_object_size_hint_weight_set(pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ pGroupRadio = elm_radio_add(pGenList);
+
+ if (bIsConnectBluetooth) {
+ elm_genlist_item_append(pGenList, &st_Itc, (void *)MP_SOUND_PATH_BLUETOOTH, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ MpVideoSoundpathSelectSoundPathItemCb,
+ pAppData);
+ }
+
+ if (bIsConnectEarjack) {
+ elm_genlist_item_append(pGenList, &st_Itc, (void *)MP_SOUND_PATH_EARJACK, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ MpVideoSoundpathSelectSoundPathItemCb,
+ pAppData);
+ }
+
+ elm_genlist_item_append(pGenList, &st_Itc, (void *)MP_SOUND_PATH_SPEAKER, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ MpVideoSoundpathSelectSoundPathItemCb,
+ pAppData);
+
+ MpVideoSoundpathSetRadioButton();
+
+ pBox = elm_box_add(pVideoSoundPathPopUpHandle);
+ if (bIsConnectBluetooth && bIsConnectEarjack) {
+ evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get());
+ } else if(bIsConnectBluetooth || bIsConnectEarjack) {
+ evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 225 * elm_config_scale_get());
+ } else {
+ evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 451 * elm_config_scale_get());
+ }
+ elm_box_pack_end(pBox, pGenList);
+ elm_object_content_set(pVideoSoundPathPopUpHandle, pBox);
+
+ evas_object_show(pGenList);
+ evas_object_show(pVideoSoundPathPopUpHandle);
+
+ return TRUE;
+}
+
+void MpVideoSoundpathHide(void)
+{
+ VideoLogInfo("");
+
+ MpVideoSoundpathDeletePopupHandle();
+}
+
+bool MpVideoSoundpathIsConnectOtherSoundpath(void)
+{
+ VideoLogInfo("");
+
+ int nBluetoothConnect = 0;
+ char *szBluetoothName = NULL;
+
+ bIsConnectEarjack = FALSE;
+ bIsConnectBluetooth = FALSE;
+
+ if (MpUtilIsConnectEarjack()) {
+ VideoLogInfo("Connect earjack.");
+ bIsConnectEarjack= TRUE;
+ return TRUE;
+ }
+
+ mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName);
+ if (nBluetoothConnect) {
+ VideoLogInfo("Connect bluetooth.");
+ bIsConnectBluetooth = TRUE;
+ return TRUE;
+ }
+
+ VideoLogInfo("Only spaker.");
+ return FALSE;
+}
+
+int MpVideoSoundpathGetCurrConnectedSoundpath(void)
+{
+ VideoLogInfo("");
+
+ int nBluetoothConnect = 0;
+ char *szBluetoothName = NULL;
+ system_audio_route_t nPolicy = 0;
+
+ mm_sound_route_get_system_policy(&nPolicy);
+
+ if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT) {
+ VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
+
+ if (MM_ERROR_NONE != mm_sound_route_get_a2dp_status(&nBluetoothConnect, &szBluetoothName)) {
+ VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path.");
+ }
+
+ if (nBluetoothConnect) {
+ return MP_SOUND_PATH_BLUETOOTH;
+ } else if (MpUtilIsConnectEarjack()) {
+ return MP_SOUND_PATH_EARJACK;
+ } else {
+ return MP_SOUND_PATH_SPEAKER;
+ }
+ } else if (nPolicy == SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP) {
+ VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
+
+ if (MpUtilIsConnectEarjack()) {
+ return MP_SOUND_PATH_EARJACK;
+ } else {
+ return MP_SOUND_PATH_SPEAKER;
+ }
+ } else {
+ VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
+
+ return MP_SOUND_PATH_SPEAKER;
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <string.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-ctrl.h"
+
+
+static char szNetworkProxy[STR_LEN_MAX] = {0};
+static char szNetworkIpAddress[STR_LEN_MAX] = {0};
+static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF;
+static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF;
+static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+
+static Eina_Bool bIsInitCallbackFunc = FALSE;
+
+
+/*
+ * Callback function.
+ */
+
+
+
+static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ char *szkeyname = NULL;
+
+ szkeyname = vconf_keynode_get_name(pKeyNode);
+ if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) {
+ switch(vconf_keynode_get_int(pKeyNode))
+ {
+ case MP_NETWORK_CLOSE:
+ VideoLogInfo("MP_NETWORK_CLOSE");
+ break;
+
+ case MP_NETWORK_ON:
+ VideoLogInfo("MP_NETWORK_ON");
+ break;
+
+ default:
+ VideoLogInfo("UNKNOWN NETWORK CONFIG");
+ break;
+ }
+ } else {
+ }
+}
+
+static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData)
+{
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+ char *szkeyname = NULL;
+
+ szkeyname = vconf_keynode_get_name(pKeyNode);
+ if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) {
+ switch(vconf_keynode_get_int(pKeyNode))
+ {
+ case VCONFKEY_NETWORK_OFF:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR:
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+ break;
+
+ case VCONFKEY_NETWORK_WIFI:
+ VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+ nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+ break;
+
+ default:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("UNKNOWN NETWORK STATE");
+ break;
+ }
+ }
+}
+
+static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ char *szkeyname = NULL;
+ char *szTmp = NULL;
+
+ memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+ szkeyname = vconf_keynode_get_name(pKeyNode);
+ if(szkeyname == NULL) {
+ VideoLogInfo("key name value is NULL");
+ return;
+ }
+
+ if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) {
+ szTmp = vconf_keynode_get_str(pKeyNode);
+
+ if(szTmp == NULL) {
+ VideoLogInfo("node string value is NULL");
+ return;
+ }
+
+ strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
+
+ VideoLogInfo("Network ip address : %s", szNetworkIpAddress);
+ }
+ else {
+ VideoLogInfo("Invalid ip address.");
+ }
+}
+
+static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ char *szkeyname = NULL;
+
+ szkeyname = vconf_keynode_get_name(pKeyNode);
+ if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) {
+ switch(vconf_keynode_get_int(pKeyNode))
+ {
+ case VCONFKEY_NETWORK_WIFI_OFF:
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+ nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+ VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI_CONNECTED:
+ nWifiState = MP_NETWORK_WIFI_CONNECTED;
+ VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ break;
+
+ default:
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
+ break;
+ }
+ } else {
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
+ }
+}
+
+static void MpVideoStreamingCtrlCellularStateCb(keynode_t *pKeyNode,void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData || !pKeyNode) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ char *szkeyname = NULL;
+
+ szkeyname = vconf_keynode_get_name(pKeyNode);
+ if (!strcmp(szkeyname, VCONFKEY_NETWORK_CELLULAR_STATE)) {
+ switch(vconf_keynode_get_int(pKeyNode))
+ {
+ case VCONFKEY_NETWORK_CELLULAR_ON:
+ nCellularState = MP_NETWORK_CELLULAR_ON;
+ VideoLogInfo("MP_NETWORK_CELLULAR_ON");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
+ nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
+ VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
+ nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
+ VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
+ nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
+ break;
+
+ default:
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
+ break;
+ }
+ } else {
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
+ }
+}
+
+
+/*
+ * Internal function.
+ */
+
+bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nRet = 0;
+
+ nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
+ MpVideoStreamingCtrlNetworkOnOffCb,
+ (void*)pAppData);
+
+ if (nRet < 0) {
+ VideoLogInfo("[ERR] Fail to set network on/off notification.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nRet = 0;
+
+ nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS,
+ MpVideoStreamingCtrlNetworkStatusCb,
+ (void*)pAppData);
+
+ if (nRet < 0) {
+ VideoLogInfo("[ERR] Fail to set network status notification.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nRet = 0;
+
+ nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP,
+ MpVideoStreamingCtrlChangeIpCb,
+ (void*)pAppData);
+
+ if (nRet < 0) {
+ VideoLogInfo("[ERR] Fail to set ip address changing notification.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nRet = 0;
+
+ nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE,
+ MpVideoStreamingCtrlWiFiStateCb,
+ (void*)pAppData);
+
+ if (nRet < 0) {
+ VideoLogInfo("[ERR] Fail to set wifi state notification.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ int nRet = 0;
+
+ nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE,
+ MpVideoStreamingCtrlCellularStateCb,
+ (void*)pAppData);
+
+ if (nRet < 0) {
+ VideoLogInfo("[ERR] Fail to set cellular notification.");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * External function.
+ */
+bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress)
+{
+ VideoLogInfo("");
+
+ char *szTmp = NULL;
+
+ szTmp = vconf_get_str(VCONFKEY_NETWORK_IP);
+ if (szTmp) {
+ memset(szNetworkIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szNetworkIpAddress, szTmp, STR_LEN_MAX - 1);
+
+ memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1);
+
+ VideoLogInfo("Current network ip address : %s", szNetworkIpAddress);
+
+ if(szTmp)
+ free(szTmp);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool MpVideoStreamingCtrlGetProxy(char* szRetProxy)
+{
+ VideoLogInfo("");
+
+ char *szTmp = NULL;
+
+ szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY);
+ if (szTmp) {
+ memset(szNetworkProxy, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szNetworkProxy, szTmp, STR_LEN_MAX - 1);
+
+ memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX);
+ strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1);
+
+ VideoLogInfo("Current network ip address : %s", szNetworkProxy);
+
+ if(szTmp)
+ free(szTmp);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool MpVideoStreamingCtrlIsNetworkOn(void)
+{
+ VideoLogInfo("");
+
+ int ntmpCheckNetworkON = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) {
+ switch(ntmpCheckNetworkON)
+ {
+ case MP_NETWORK_CLOSE:
+ VideoLogInfo("Network close.");
+ return FALSE;
+
+ case MP_NETWORK_ON:
+ VideoLogInfo("Network on.");
+ return TRUE;
+ }
+ } else {
+ VideoLogInfo("Network close.");
+ }
+
+ return FALSE;
+}
+
+int MpVideoStreamingCtrlGetNetworkStatus(void)
+{
+ VideoLogInfo("");
+
+ int ntmpGetNetworkStatus = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) {
+ switch(ntmpGetNetworkStatus)
+ {
+ case VCONFKEY_NETWORK_OFF:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR:
+ nNetworkStatus = MP_NETWORK_TYPE_CELLULAR;
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI:
+ nNetworkStatus = MP_NETWORK_TYPE_WIFI;
+ VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+ break;
+
+ default:
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF - default");
+ break;
+ }
+ } else {
+ nNetworkStatus = MP_NETWORK_TYPE_OFF;
+ VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value");
+ }
+
+ return nNetworkStatus;
+}
+
+int MpVideoStreamingCtrlGetWifiState()
+{
+ VideoLogInfo("");
+
+ int ntmpGetWifiState = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) {
+ switch(ntmpGetWifiState)
+ {
+ case VCONFKEY_NETWORK_WIFI_OFF:
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED:
+ nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED;
+ VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED");
+ break;
+
+ case VCONFKEY_NETWORK_WIFI_CONNECTED:
+ nWifiState = MP_NETWORK_WIFI_CONNECTED;
+ VideoLogInfo("MP_NETWORK_WIFI_CONNECTED");
+ break;
+
+ default:
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF - default");
+ break;
+ }
+ } else {
+ nWifiState = MP_NETWORK_WIFI_OFF;
+ VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value");
+ }
+
+ return nWifiState;
+
+}
+
+int MpVideoStreamingCtrlGetCellularState()
+{
+ VideoLogInfo("");
+
+ int ntmpGetCellularState = 0;
+
+ if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) {
+ switch(ntmpGetCellularState)
+ {
+ case VCONFKEY_NETWORK_CELLULAR_ON:
+ nCellularState = MP_NETWORK_CELLULAR_ON;
+ VideoLogInfo("MP_NETWORK_CELLULAR_ON");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF:
+ nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF;
+ VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF:
+ nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF;
+ VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE:
+ nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE");
+ break;
+
+ case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE :
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE");
+ break;
+
+ default:
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default");
+ break;
+ }
+ } else {
+ nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE;
+ VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value");
+ }
+
+ return nCellularState;
+}
+
+void MpVideoStreamingCtrlDestroy(void *pUserData)
+{
+ VideoLogInfo("");
+
+}
+
+
+
+bool MpVideoStreamingCtrlInit(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ char szTmp[STR_LEN_MAX] = {0};
+ bool bNetworkState = FALSE;
+
+ if(bIsInitCallbackFunc == EINA_FALSE) {
+ MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData);
+ MpVideoStreamingCtrlSetNotifyChangingIp(pUserData);
+ MpVideoStreamingCtrlSetNotifyWiFiState(pUserData);
+ MpVideoStreamingCtrlSetNotifyCellularState(pUserData);
+
+ bIsInitCallbackFunc = EINA_TRUE;
+ }
+
+ switch(MpVideoStreamingCtrlGetNetworkStatus())
+ {
+ case MP_NETWORK_TYPE_OFF:
+ VideoLogInfo("MP_NETWORK_TYPE_OFF");
+ bNetworkState = FALSE;
+ break;
+
+ case MP_NETWORK_TYPE_CELLULAR:
+ VideoLogInfo("MP_NETWORK_TYPE_CELLULAR");
+ if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON)
+ bNetworkState = TRUE;
+ break;
+
+ case MP_NETWORK_TYPE_WIFI:
+ VideoLogInfo("MP_NETWORK_TYPE_WIFI");
+ if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED)
+ bNetworkState = TRUE;
+ break;
+ }
+
+ if(bNetworkState) {
+ MpVideoStreamingCtrlGetIpAddress(szTmp);
+ VideoLogInfo("Current IP Address : %s", szTmp);
+
+ memset(szTmp, 0, STR_LEN_MAX);
+ MpVideoStreamingCtrlGetProxy(szTmp);
+ VideoLogInfo("Current Proxy Address : %s", szTmp);
+ VideoLogInfo("Current Proxy Address : %s", szTmp);
+
+ memset(pAppData->szProxyAddress, 0, STR_LEN_MAX);
+ strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1);
+ }
+
+ return bNetworkState;
+}
+
+
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+#include <aul.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <appcore-efl.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-type-define.h"
+#include "mp-video-value-define.h"
+#include "mp-video-string-define.h"
+#include "mp-video-progressbar.h"
+#include "mp-video-animation-ctrl.h"
+#include "mp-video-streaming-view.h"
+#include "mp-video-sound-path-ctrl.h"
+
+#define MUTE_POPUP_INTERVAL_TIME 3.0
+#define CTRL_PANEL_SHOW_TIME 5.0
+
+static Evas_Object *pNaviFrameHandle = NULL;
+static Evas_Object *pStreamingViewNaviControlBar = NULL;
+static Evas_Object *pBufferingAnimationHandle = NULL;
+
+static Evas_Object *pStreamingViewLayout = NULL;
+static Evas_Object *pStreamingViewPanelEdj = NULL;
+static Evas_Object *pStreamingViewCtrlEdj = NULL;
+static Evas_Object *pStreamingViewHiddenPanelEdj = NULL;
+static Evas_Object *pStreamingViewOptionEdj = NULL;
+
+static Ecore_Timer *pStreamingViewVolLongPressTimer = NULL;
+static Ecore_Timer *pStreamingViewMutePopupShowTimer = NULL;
+static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL;
+
+static Evas_Object *pStreamingSoundpathButton = NULL;
+static Elm_Object_Item *pNaviFrameItemStreamingView = NULL;
+
+static Ecore_Event_Handler *pMouseEventHandler = NULL;
+
+static bool bIsVolumeLongPressOfStreamingView = FALSE;
+static bool bIsVolumePopupShowOfStreamingView = FALSE;
+static bool bSwitchStreamingViewUI = TRUE;
+static bool bIsStreamingHightQuality = TRUE;
+static bool bIsChangeResolution = FALSE;
+static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+static int nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+
+/*
+ * Callback function.
+ */
+static void MpVideoStreamingViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpUtilDeletePopupHandle();
+}
+
+static void MpVideoStreamingViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+ VideoLogInfo("Connect BT or earjack.");
+ MpVideoSoundpathShow(pUserData);
+ } else {
+ MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoStreamingViewWarningPopupCb);
+ }
+}
+
+static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) {
+ VideoLogInfo("Press Pause button.");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ }
+ }
+}
+
+static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData,
+ Evas_Object *pObject,
+ const char *szEmission,
+ const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) {
+ VideoLogInfo("Press Resume/Play button.");
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+ }
+ }
+}
+
+static Eina_Bool MpVideoStreamingViewVolPopupCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ if (pStreamingViewMutePopupShowTimer) {
+ ecore_timer_del(pStreamingViewMutePopupShowTimer);
+ pStreamingViewMutePopupShowTimer = NULL;
+ }
+
+ bIsVolumePopupShowOfStreamingView = FALSE;
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoStreamingViewVolLongPressCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pStreamingViewVolLongPressTimer) {
+ ecore_timer_del(pStreamingViewVolLongPressTimer);
+ pStreamingViewVolLongPressTimer = NULL;
+ }
+
+ bIsVolumeLongPressOfStreamingView = TRUE;
+
+ if (pAppData->bIsMute == FALSE) {
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_MUTE, "*");
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_SHOW, "*");
+
+ pStreamingViewMutePopupShowTimer = ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, MpVideoStreamingViewVolPopupCb, (void *)pAppData);
+ bIsVolumePopupShowOfStreamingView = TRUE;
+ pAppData->bIsMute = TRUE;
+ } else {
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_VOL_BUTTON_UNMUTE, "*");
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+ bIsVolumePopupShowOfStreamingView = FALSE;
+ pAppData->bIsMute = FALSE;
+ }
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetMute(pAppData);
+
+ return EINA_FALSE;
+}
+
+static void MpVideoStreamingViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ edje_object_signal_callback_del(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb);
+
+ MpVideoStreamingViewPop(pNaviFrameHandle, pUserData);
+
+ edje_object_signal_callback_add(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb, pUserData);
+}
+
+static void MpVideoStreamingViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pStreamingViewVolLongPressTimer) {
+ ecore_timer_del(pStreamingViewVolLongPressTimer);
+ pStreamingViewVolLongPressTimer = NULL;
+ }
+
+ bIsVolumeLongPressOfStreamingView = FALSE;
+ pStreamingViewVolLongPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoStreamingViewVolLongPressCb, (void *)pAppData);
+}
+
+static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pStreamingViewVolLongPressTimer) {
+ ecore_timer_del(pStreamingViewVolLongPressTimer);
+ pStreamingViewVolLongPressTimer = NULL;
+ }
+
+ if (bIsVolumeLongPressOfStreamingView) {
+ return;
+ }
+
+ if (pAppData->bIsMute == TRUE) {
+ if (bIsVolumePopupShowOfStreamingView) {
+ ecore_timer_del(pStreamingViewMutePopupShowTimer);
+ }
+
+ pStreamingViewMutePopupShowTimer = ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, MpVideoStreamingViewVolPopupCb, (void *)pAppData);
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_MUTE_SHOW, "*");
+ bIsVolumePopupShowOfStreamingView = TRUE;
+ } else {
+ syspopup_launch("volume", NULL);
+ }
+}
+
+static void MpVideoStreamingViewHqButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+}
+
+static void MpVideoStreamingViewHqButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (bIsChangeResolution)
+ return;
+
+ char *szURL = NULL;
+ szURL = MpUtilGetXMLQualityURL();
+ if (szURL != NULL) {
+ VideoLogInfo("%s", szURL);
+ bIsChangeResolution = TRUE;
+ memset((void *)pAppData->szMediaUri, 0, STR_LEN_MAX);
+ strncpy(pAppData->szMediaUri, szURL, STR_LEN_MAX -1);
+
+ if (szURL)
+ free(szURL);
+
+ MpVideoProgressbarDeleteTimer();
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
+ pAppData->nSetPosition = pAppData->nCurPosition;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching(pAppData);
+
+ if (bIsStreamingHightQuality) {
+ bIsStreamingHightQuality = FALSE;
+ edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_NORMAL, "*");
+ } else {
+ bIsStreamingHightQuality = TRUE;
+ edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_HIGH, "*");
+ }
+ bIsChangeResolution = FALSE;
+ }
+}
+
+static void MpVideoStreamingViewMainScreenTouchCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (MpVideoStreamingViewGetBufferingState()) {
+ VideoLogInfo("skip for Buffering");
+ return;
+ }
+
+ if (bSwitchStreamingViewUI) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+ }
+}
+
+static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No Exist pUserData.");
+ return EINA_FALSE;
+ }
+
+ if (MpVideoStreamingViewGetBufferingState()) {
+ VideoLogInfo("skip for Buffering");
+ return EINA_TRUE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pStreamingViewCtrlPanelHideTimer) {
+ ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+ pStreamingViewCtrlPanelHideTimer = NULL;
+ }
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData);
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoStreamingViewMouseUpCb(void *pUserData, int nType,
+ void *pEvent)
+{
+ VideoLogInfo("");
+
+ if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) {
+ VideoLogInfo("");
+ return EINA_FALSE;
+ }
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No Exist pUserData.");
+ return EINA_FALSE;
+ }
+
+ if (!pEvent) {
+ VideoLogInfo("[ERR] No exist pEvent.");
+ return EINA_FALSE;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!bSwitchStreamingViewUI) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData);
+ } else {
+ if (pStreamingViewCtrlPanelHideTimer) {
+ ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+ pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
+ }
+ }
+
+ return EINA_FALSE;
+}
+
+static void MpVideoStreamingViewChangedEarjackCb(void *pNode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpVideoSoundpathHide();
+ MpUtilDeletePopupHandle();
+
+ if (MpUtilIsConnectEarjack()) {
+ VideoLogInfo("Connect earjack.");
+ if (pStreamingSoundpathButton) {
+ elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_left_btn", pStreamingSoundpathButton);
+ } else {
+ pStreamingSoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoStreamingViewSoundPathCb);
+ elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_left_btn", pStreamingSoundpathButton);
+ }
+ } else {
+ VideoLogInfo("Disconnect earjack.");
+ if (pStreamingSoundpathButton) {
+ evas_object_del(pStreamingSoundpathButton);
+ pStreamingSoundpathButton = NULL;
+ }
+
+ elm_object_item_part_content_unset(pNaviFrameItemStreamingView, "title_left_btn");
+ }
+
+}
+
+static void MpVideoStreamingViewPressOptionScreenSizeCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_NORMAL)) {
+ VideoLogInfo("Screen size : Normal");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_LETTER_BOX);
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+ } else if (!strcmp(szEmission, SIGNAL_OPTION_SCREEN_SIZE_EXPAND)) {
+ VideoLogInfo("Screen size : Expand");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetScreenSize(pAppData, MP_DISPLAY_METHOD_CROPPED_FULL);
+ nScreensizeStatus = MP_DISPLAY_METHOD_CROPPED_FULL;
+ } else {
+ VideoLogInfo("Screen size : Nothing");
+ nScreensizeStatus = MP_DISPLAY_METHOD_LETTER_BOX;
+ }
+}
+
+
+/*
+ * Internal function
+ */
+void MpVideoStreamingViewInitKeyMouse(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pMouseEventHandler) {
+ ecore_event_handler_del(pMouseEventHandler);
+ pMouseEventHandler = NULL;
+ }
+
+ pMouseEventHandler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, MpVideoStreamingViewMouseUpCb, pAppData);
+}
+
+void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData, void *pShowInfoViewCb)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pStreamingViewLayout = elm_layout_add(pParent);
+ if (pStreamingViewLayout) {
+ Evas_Object *pTmpProgressbarEdj = NULL;
+ Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow);
+
+ elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP);
+
+ pStreamingViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP);
+ elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pStreamingViewOptionEdj);
+ edje_object_signal_emit(pStreamingViewOptionEdj, SIGNAL_OPTION_MODE_STREAMING, "*");
+
+ pStreamingViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP);
+ pStreamingViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP);
+ pBufferingAnimationHandle = MpVideoAnimationCtrlInit(pMainWindowEvas);
+
+ edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_CONTROL, pStreamingViewCtrlEdj);
+ elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_ANIMATION, pBufferingAnimationHandle);
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+
+ MpVideoAnimationCtrlShow();
+
+ pTmpProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData);
+ MpVideoProgressbarSetSkipEvent(TRUE);
+ if (pTmpProgressbarEdj) {
+ edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pTmpProgressbarEdj);
+ } else {
+ VideoLogInfo("Progressbar edj handle is null.");
+ }
+
+ elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_CONTROL, pStreamingViewPanelEdj);
+
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_MODE_STREAMING, "*");
+
+ pStreamingViewHiddenPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_HIDDEN_PANEL_EDJ, HIDDEN_PANEL_EDJ_GROUP);
+ if (pStreamingViewHiddenPanelEdj) {
+ elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_HIDDEN_BUTTON, pStreamingViewHiddenPanelEdj);
+ edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_HIDE, "*");
+ edje_object_signal_emit(pStreamingViewHiddenPanelEdj,SIGNAL_CONTROL_STREAMING_QUALITY_HIDE,"*");
+ }
+
+
+ if (nScreensizeStatus == MP_DISPLAY_METHOD_LETTER_BOX) {
+ VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+ } else if (nScreensizeStatus == MP_DISPLAY_METHOD_CROPPED_FULL) {
+ VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_CROPPED_FULL");
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_EXPAND, "*");
+ } else {
+ VideoLogInfo("nScreensizeStatus : MP_DISPLAY_METHOD_LETTER_BOX");
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_SCREENSIZE_BUTTON_NORMAL, "*");
+ }
+
+ edje_object_signal_callback_add(pStreamingViewOptionEdj,
+ SIGNAL_OPTION_SCREEN_SIZE_NORMAL,
+ SIGNAL_OPTION_PART_SCREEN_SIZE,
+ (void *)MpVideoStreamingViewPressOptionScreenSizeCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewOptionEdj,
+ SIGNAL_OPTION_SCREEN_SIZE_EXPAND,
+ SIGNAL_OPTION_PART_SCREEN_SIZE,
+ (void *)MpVideoStreamingViewPressOptionScreenSizeCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewOptionEdj,
+ SIGNAL_OPTION_DETAIL_DOWN,
+ SIGNAL_OPTION_PART_DETAIL,
+ (void *)pShowInfoViewCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+ SIGNAL_CONTROL_PLAY_PAUSE_PRESS,
+ SIGNAL_CONTROL_PART_PLAY_BUTTON,
+ (void *)MpVideoStreamingViewPressPauseButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+ SIGNAL_CONTROL_PLAY_RESUME_PRESS,
+ SIGNAL_CONTROL_PART_PLAY_BUTTON,
+ (void *)MpVideoStreamingViewPressResumeButtonCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+ SIGNAL_CONTROL_BACK_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_BACK_BUTTON,
+ (void *)MpVideoStreamingViewBackButtonDownCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+ SIGNAL_CONTROL_VOL_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_VOL_BUTTON,
+ (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewCtrlEdj,
+ SIGNAL_CONTROL_VOL_BUTTON_UP,
+ SIGNAL_CONTROL_PART_VOL_BUTTON,
+ (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(_EDJ(pStreamingViewLayout),
+ SIGNAL_MAIN_SCREEN_TOUCH_PRESS,
+ SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE,
+ (void *)MpVideoStreamingViewMainScreenTouchCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewHiddenPanelEdj,
+ SIGNAL_CONTROL_HQ_BUTTON_DOWN,
+ SIGNAL_CONTROL_PART_HQ_BUTTON,
+ (void *)MpVideoStreamingViewHqButtonDownCb, (void *)pAppData);
+
+ edje_object_signal_callback_add(pStreamingViewHiddenPanelEdj,
+ SIGNAL_CONTROL_HQ_BUTTON_UP,
+ SIGNAL_CONTROL_PART_HQ_BUTTON,
+ (void *)MpVideoStreamingViewHqButtonUpCb, (void *)pAppData);
+
+ if (MpUtilGetXMLItemCount() > 1) {
+ edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_HIGH, "*");
+ }
+
+ MpUtilRegisteEarjackCbFunc((void *)MpVideoStreamingViewChangedEarjackCb, pUserData);
+ }
+}
+
+void MpVideoStreamingViewInit(void *pUserData, void *pShowInfoViewCb)
+{
+ VideoLogInfo("");
+
+ if (!pNaviFrameHandle|| !pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ MpVideoStreamingViewInitKeyMouse(pUserData);
+ MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData, pShowInfoViewCb);
+}
+
+
+
+/*
+ * External function
+ */
+void MpVideoStreamingViewPush(void *pNaviFrame, void *pShowInfoViewCb, void *pUserData)
+{
+ VideoLogInfo("");
+
+ pNaviFrameHandle = pNaviFrame;
+
+ MpVideoStreamingViewInit(pUserData, pShowInfoViewCb);
+
+ pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line");
+
+ if (MpVideoSoundpathIsConnectOtherSoundpath()) {
+ pStreamingSoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, pUserData, "video/naviframe/title/default", (void*)MpVideoStreamingViewSoundPathCb);
+ elm_object_item_part_content_set(pNaviFrameItemStreamingView, "title_left_btn", pStreamingSoundpathButton);
+ }
+
+ MpVideoStreamingViewShowControlPanel(pUserData);
+}
+
+void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+}
+
+void MpVideoStreamingViewDestroy(void *pUserData)
+{
+ VideoLogInfo("");
+
+ MpVideoStreamingViewHideControlPanel(pUserData);
+ MpVideoProgressbarDestroy();
+ MpVideoAnimationCtrlDestroy();
+
+ pNaviFrameHandle = NULL;
+ pBufferingAnimationHandle = NULL;
+
+ if (pMouseEventHandler) {
+ ecore_event_handler_del(pMouseEventHandler);
+ pMouseEventHandler = NULL;
+ }
+
+ if (pStreamingViewNaviControlBar) {
+ evas_object_del(pStreamingViewNaviControlBar);
+ pStreamingViewNaviControlBar = NULL;
+ }
+
+ if (pStreamingViewLayout) {
+ evas_object_del(pStreamingViewLayout);
+ pStreamingViewLayout = NULL;
+ }
+
+ if (pStreamingViewPanelEdj) {
+ evas_object_del(pStreamingViewPanelEdj);
+ pStreamingViewPanelEdj = NULL;
+ }
+
+ if (pStreamingViewCtrlEdj) {
+ evas_object_del(pStreamingViewCtrlEdj);
+ pStreamingViewCtrlEdj = NULL;
+ }
+
+ if (pStreamingViewVolLongPressTimer) {
+ ecore_timer_del(pStreamingViewVolLongPressTimer);
+ pStreamingViewVolLongPressTimer = NULL;
+ }
+
+ if (pStreamingViewMutePopupShowTimer) {
+ ecore_timer_del(pStreamingViewMutePopupShowTimer);
+ pStreamingViewMutePopupShowTimer = NULL;
+ }
+
+ if (pStreamingViewCtrlPanelHideTimer) {
+ ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+ pStreamingViewCtrlPanelHideTimer = NULL;
+ }
+
+ if (pStreamingViewHiddenPanelEdj) {
+ evas_object_del(pStreamingViewHiddenPanelEdj);
+ pStreamingViewHiddenPanelEdj = NULL;
+ }
+
+ bIsVolumeLongPressOfStreamingView = FALSE;
+ bIsVolumePopupShowOfStreamingView = FALSE;
+
+ bSwitchStreamingViewUI = TRUE;
+ nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+
+
+ bIsStreamingHightQuality = TRUE;
+ bIsChangeResolution = FALSE;
+}
+
+void MpVideoStreamingViewInitAfterBeginOfStream(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+ MpVideoProgressbarSetSkipEvent(FALSE);
+ MpVideoProgressbarReset((void *)pAppData);
+
+ if (pAppData->nDuration > 1) {
+ char szDurationTime[PLAY_TIME_LENGTH] = { 0 };
+ snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT,
+ PLAY_TIME_ARGS(pAppData->nDuration / 1000));
+ MpVideoProgressbarUpdateDurationTime(szDurationTime);
+ }
+
+ MpVideoAnimationCtrlHide();
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout),
+ SIGNAL_MAIN_ANIMATION_HIDE, "*");
+
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+void MpVideoStreamingViewUpdatePauseKey(void)
+{
+ VideoLogInfo("");
+
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*");
+}
+
+void MpVideoStreamingViewUpdateResumeKey(void)
+{
+ VideoLogInfo("");
+
+ edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*");
+}
+
+void MpVideoStreamingViewShowControlPanel(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!pStreamingViewPanelEdj) {
+ VideoLogInfo("No exist play control panel edc.");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ bSwitchStreamingViewUI = TRUE;
+
+ evas_object_show(pStreamingViewPanelEdj);
+
+ if (MpUtilGetXMLItemCount() < 2) {
+ edje_object_signal_emit(pStreamingViewHiddenPanelEdj, SIGNAL_CONTROL_STREAMING_QUALITY_HIDE, "*");
+ }
+
+ if (pStreamingViewCtrlPanelHideTimer) {
+ ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+ pStreamingViewCtrlPanelHideTimer = NULL;
+ }
+
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ } else {
+ pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData);
+ }
+
+ MpVideoStreamingViewActivate();
+}
+
+void MpVideoStreamingViewHideControlPanel(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ if (!pStreamingViewPanelEdj) {
+ VideoLogInfo("No exist play control panel edc.");
+ return;
+ }
+
+ bSwitchStreamingViewUI = FALSE;
+
+ evas_object_hide(pStreamingViewPanelEdj);
+
+ if (pStreamingViewCtrlPanelHideTimer) {
+ ecore_timer_del(pStreamingViewCtrlPanelHideTimer);
+ pStreamingViewCtrlPanelHideTimer = NULL;
+ }
+}
+
+void MpVideoStreamingViewActivate(void)
+{
+ VideoLogInfo("");
+
+ nStreamingViewState = MP_STREAMING_VIEW_STATE_ACTIVATE;
+}
+
+void MpVideoStreamingViewUnactivate(void)
+{
+ VideoLogInfo("");
+
+ nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE;
+}
+
+void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate)
+{
+ VideoLogInfo("nSetBufferingRate : %d", nSetBufferingRate);
+
+ if (nSetBufferingRate > 95) {
+ MpVideoAnimationCtrlHide();
+ MpVideoProgressbarSetSkipEvent(FALSE);
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*");
+ } else {
+ MpVideoProgressbarSetSkipEvent(TRUE);
+ MpVideoAnimationCtrlShow();
+ edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*");
+
+ if(nSetBufferingRate >= 0)
+ MpVideoAnimationCtrlSetPercent(nSetBufferingRate);
+ }
+}
+
+bool MpVideoStreamingViewGetBufferingState(void)
+{
+ VideoLogInfo("");
+
+ return MpVideoAnimationCtrlGetActiveState();
+}
+
+bool MpVideoStreamingViewIsTopView(void)
+{
+ VideoLogInfo("");
+
+ Evas_Object *pTmpContents = NULL;
+ Elm_Object_Item *pTmpItem = NULL;
+
+ if (!pNaviFrameHandle) {
+ VideoLogInfo("[ERR] No exist naviframe handle.");
+ return FALSE;
+ }
+
+ pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle);
+ pTmpContents = elm_object_item_content_get(pTmpItem);
+ if (pTmpContents) {
+ if (pTmpContents == pStreamingViewLayout) {
+ VideoLogInfo("Streaming display view is staing in top view.");
+ return TRUE;
+ } else {
+ VideoLogInfo("Streaming display view is not staied in top view.");
+ return FALSE;
+ }
+ } else {
+ VideoLogInfo("[ERR] No exist naviFrame top item.");
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <mm_sound.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <appcore-common.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-subtitle-ctrl.h"
+
+#define MP_VIDEO_SUBTITLE_MENU_NUM 2
+#define VCONFKEY_GALLERY_SUBTITLE_STATE "db/setting/gallery/subtitle_state" //boolean
+
+static int bSubtitleSettingState = FALSE;
+static bool bExistSubtitleFile = FALSE;
+static char szSubtitleFileUri[STR_LEN_MAX] = { 0 };
+
+static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][STR_LEN_MAX] = { ".srt", ".sub", ".smi" };
+
+
+/*
+ * Internal function
+ */
+bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath)
+{
+ if (!bSubtitleSettingState) {
+ VideoLogInfo("Subtitle .");
+ return FALSE;
+ }
+
+ if (!szMediaUriPath) {
+ VideoLogInfo("No Exist szMediaUri.");
+ return FALSE;
+ }
+
+ if (strlen(szMediaUriPath) < 1) {
+ VideoLogInfo("No Exist szMediaUri.");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ struct stat buf;
+ int nCount = 0;
+ int nStrLength = 0;
+
+ bExistSubtitleFile = FALSE;
+ memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+
+ for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++) {
+ nStrLength = strcspn(szMediaUriPath, ".");
+ strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength);
+ strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]);
+
+ if (!stat(szSubtitleFileUri, &buf)) {
+ VideoLogInfo("Success finding subtitle file. - %d", nCount);
+ bExistSubtitleFile = TRUE;
+ break;
+ } else {
+ memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+ }
+ }
+
+ if (!bExistSubtitleFile) {
+ VideoLogInfo("Fail finding subtitle file.");
+ }
+
+ return bExistSubtitleFile;
+}
+
+void MpVideoSubtitleCtrlClear(void)
+{
+ VideoLogInfo("");
+
+ bExistSubtitleFile = FALSE;
+ bSubtitleSettingState = FALSE;
+
+ memset(szSubtitleFileUri, 0, STR_LEN_MAX);
+}
+
+static void MpVideoSubtitleCtrlStateChangeCb(keynode_t *pKeyNode, void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("User data is NULL.");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+ if (!bSubtitleSettingState) {
+ VideoLogInfo("Subtitle OFF.");
+ } else {
+ VideoLogInfo("Subtitle ON.");
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf - subtitle.");
+ }
+}
+
+/*
+ * External function
+ */
+bool MpVideoSubtitleCtrlInit(void *pUserData)
+{
+ if (pUserData == NULL) {
+ VideoLogInfo("[ERR]No have pUserData");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpVideoSubtitleCtrlClear();
+
+ if (pAppData->nCurPlayerType != MP_VIDEO_PLAYER) {
+ VideoLogInfo("Current player type is not video player.");
+ return FALSE;
+ }
+
+ if (!vconf_get_bool(VCONFKEY_GALLERY_SUBTITLE_STATE, &bSubtitleSettingState)) {
+ if (!bSubtitleSettingState) {
+ VideoLogInfo("Subtitle OFF.");
+ } else {
+ VideoLogInfo("Subtitle ON.");
+ }
+ } else {
+ VideoLogInfo("Fail to get vconf - subtitle.");
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_GALLERY_SUBTITLE_STATE, MpVideoSubtitleCtrlStateChangeCb, pAppData)) {
+ VideoLogInfo("[ERR] Fail to resiste subtitle notification callback.");
+ }
+
+ return MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri);
+}
+
+void MpVideoSubtitleCtrlDestroy(void)
+{
+ VideoLogInfo("");
+
+ MpVideoSubtitleCtrlClear();
+}
+
+bool MpVideoSubtitleCtrlIsExistSubtitle(void)
+{
+ VideoLogInfo("");
+
+ return bExistSubtitleFile;
+}
+
+bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri)
+{
+ VideoLogInfo("");
+
+ if (!MpVideoSubtitleCtrlIsExistSubtitle()) {
+ return FALSE;
+ }
+
+ if (strlen(szSubtitleFileUri) < 1) {
+ VideoLogInfo("[ERR]No have szSubtitleFileUri");
+ return FALSE;
+ }
+
+ strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1);
+
+ return TRUE;
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#include <appcore-efl.h>
+#include <syspopup_caller.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "mp-video-view-ctrl.h"
+#include "mp-video-type-define.h"
+#include "mp-util-media-service.h"
+#include "mp-video-display-view.h"
+#include "mp-video-string-define.h"
+#include "mp-video-streaming-view.h"
+
+#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL 4.0
+#define DETAIL_POPUP_STR_LEN_MAX 20
+
+static Evas_Object *pMainLayout = NULL;
+static Evas_Object *pBackGround = NULL;
+static Evas_Object *pNaviFrame = NULL;
+
+static Ecore_Event_Handler *pHWKeyEventDownHandler = NULL;
+static Ecore_Event_Handler *pHWKeyEventUpHandler = NULL;
+
+static bool bIsKeyCancle = FALSE;
+
+/*
+ * Callback function.
+ */
+static void MpVideoViewCtrlInfoVideoPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoLogInfo("");
+
+ MpUtilDeletePopupHandle();
+}
+
+static void MpVideoViewCtrlInfoCb(void *pUserData, Evas_Object *pObject,
+ void *pEventInfo)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpUtilDetailPopup(pAppData, dgettext(MP_SYS_STRING, MP_COM_BODY_DETAILS), MpVideoViewCtrlInfoVideoPopupCb);
+ }
+}
+
+static Eina_Bool MpVideoViewCtrlHardkeyUpCb(void *pUserData, int nType,
+ void *pEvent)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ VideoLogInfo("Key down : %s", pKeyEvent->keyname);
+
+ if (bIsKeyCancle) {
+ VideoLogInfo("KEY CANCLE.");
+ bIsKeyCancle = FALSE;
+ return EINA_FALSE;
+ }
+
+ if (!strcmp(pKeyEvent->keyname, END_KEY)) {
+ VideoLogInfo("End key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ } else if (!strcmp(pKeyEvent->keyname, HOME_KEY)) {
+ VideoLogInfo("Home key up");
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ VideoLogInfo("Push Home key at Streaming player Player.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData);
+ } else if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ VideoLogInfo("Push Home key at video player.");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData);
+ }
+ MpUtilDeletePopupHandle();
+ } else if (!strcmp(pKeyEvent->keyname, POWER_KEY)) {
+ VideoLogInfo("Power key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ } else if (!strcmp(pKeyEvent->keyname, PAUSE_KEY)) {
+ VideoLogInfo("Pause key up");
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ } else if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, PLAY_KEY)) {
+ VideoLogInfo("Play key up");
+ if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ } else if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+ }
+ } else if (!strcmp(pKeyEvent->keyname, STOP_KEY)) {
+ VideoLogInfo("Stop key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ } else if (!strcmp(pKeyEvent->keyname, NEXT_KEY)) {
+ VideoLogInfo("Next key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayNextMedia(pAppData);
+ } else if (!strcmp(pKeyEvent->keyname, PREV_KEY)) {
+ VideoLogInfo("Prev key up");
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPlayPreMedia(pAppData);
+ } else if (!strcmp(pKeyEvent->keyname, FORWARD_KEY)) {
+ VideoLogInfo("Forward key up");
+ } else if (!strcmp(pKeyEvent->keyname, REWIND_KEY)) {
+ VideoLogInfo("Rewind key up");
+ } else {
+ }
+
+ return EINA_FALSE;
+}
+
+static Eina_Bool MpVideoViewCtrlHardkeyDownCb(void *pUserData, int nType, void *pEvent)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return EINA_FALSE;
+ }
+
+ Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent;
+
+ VideoLogInfo("Key down : %s", pKeyEvent->keyname);
+
+ if (!strcmp(pKeyEvent->keyname, END_KEY)) {
+ VideoLogInfo("Back(End) key");
+ } else if (!strcmp(pKeyEvent->keyname, HOME_KEY)) {
+ VideoLogInfo("Home key");
+ } else if (!strcmp(pKeyEvent->keyname, POWER_KEY)) {
+ VideoLogInfo("Power key Down");
+ MpUtilLcdOffForPowerButton();
+ } else if (!strcmp(pKeyEvent->keyname, PAUSE_KEY)) {
+ VideoLogInfo("Pause key down");
+ } else if (!strcmp(pKeyEvent->keyname, PLAY_KEY)) {
+ VideoLogInfo("Play key down");
+ } else if (!strcmp(pKeyEvent->keyname, STOP_KEY)) {
+ VideoLogInfo("Stop key down");
+ } else if (!strcmp(pKeyEvent->keyname, NEXT_KEY)) {
+ VideoLogInfo("Next key down");
+ } else if (!strcmp(pKeyEvent->keyname, PREV_KEY)) {
+ VideoLogInfo("Prev key down");
+ } else if (!strcmp(pKeyEvent->keyname, FORWARD_KEY)) {
+ VideoLogInfo("Forward key down");
+ } else if (!strcmp(pKeyEvent->keyname, REWIND_KEY)) {
+ VideoLogInfo("Rewind key down");
+ } else if (!strcmp(pKeyEvent->keyname, KEY_CANCLE)) {
+ bIsKeyCancle = TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+/*
+ * Internal function.
+ */
+Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow)
+{
+ Evas_Object *pBg = elm_bg_add(pWindow);
+ evas_object_size_hint_weight_set(pBg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(pWindow, pBg);
+ evas_object_show(pBg);
+
+ return pBg;
+}
+
+static Evas_Object *MpVideoViewCtrlCreateMainLayout(Evas_Object *pParent, VideoPlayerType nPlayerType)
+{
+ VideoLogInfo("");
+
+ if (!pParent) {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ if (pMainLayout) {
+ evas_object_del(pMainLayout);
+ pMainLayout = NULL;
+ }
+
+ pMainLayout = elm_layout_add(pParent);
+ pBackGround = MpVideoViewCtrlCreateBg(pParent);
+
+ elm_layout_theme_set(pMainLayout, "layout", "application", "default");
+
+ evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_win_resize_object_add(pParent, pMainLayout);
+
+ elm_object_style_set(pBackGround, "transparent");
+
+ evas_object_show(pMainLayout);
+
+ return pMainLayout;
+}
+
+static Evas_Object *MpVideoViewCtrlCreateNaviFrame(Evas_Object *pParent, MpLaunchingAppType nLaunchingApp)
+{
+ VideoLogInfo("");
+
+ if (!pParent) {
+ VideoLogInfo("[ERR]");
+ return NULL;
+ }
+
+ if (pNaviFrame) {
+ evas_object_del(pNaviFrame);
+ pNaviFrame = NULL;
+ }
+
+ pNaviFrame = elm_naviframe_add(pParent);
+
+ elm_object_part_content_set(pParent, "elm.swallow.content", pNaviFrame);
+
+ elm_naviframe_prev_btn_auto_pushed_set(pNaviFrame, EINA_FALSE);
+
+ evas_object_show(pNaviFrame);
+
+ return pNaviFrame;
+}
+
+void MpVideoViewCtrlDestroyControlBar(VideoPlayerType nCurPlayerType)
+{
+ VideoLogInfo("");
+}
+
+void MpVideoViewCtrlInitVideoViews(VideoAppData *pAppData, MpLaunchingAppType nLaunchingApp, int nVideoViewSortType)
+{
+ VideoLogInfo("");
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+
+ switch (nLaunchingApp) {
+ case MP_LAUNCH_APP_DEFAULT:
+ case MP_LAUNCH_APP_IMAGE_VIEWER:
+ case MP_LAUNCH_APP_SIMPLE_VIEW:
+ break;
+
+ case MP_LAUNCH_APP_GALLERY:
+ if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_FOLDER) {
+ MpUtilMediaSvcGetVideoFileListFromFolder(pAppData->szMediaUri, nVideoViewSortType);
+ } else if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_ALL_FOLDER_GALLERY) {
+ MpUtilMediaSvcGetVideoFileListFromAllFolderOfGallery(nVideoViewSortType);
+ } else if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_TAG_GALLERY) {
+ MpUtilMediaSvcGetVideoFileListByTagName(pAppData->szTagNameForVideoList);
+ } else if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_FAVORITE) {
+ MpUtilMediaSvcGetVideoFileListFromFavorite(nVideoViewSortType);
+ } else {
+ break;
+ }
+
+ MpUtilMediaSvcGetPreNextVideoUrl(pAppData->szMediaUri, pAppData->szPreMediaUri, pAppData->szNextMediaUri);
+ break;
+
+ case MP_LAUNCH_APP_MAX:
+ default:
+ break;
+ }
+
+ MpVideoDisplayViewPush((void *)pNaviFrame, (void *)MpVideoViewCtrlInfoCb, nLaunchingApp, (void *)pAppData);
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewPush((void *)pNaviFrame, (void *)MpVideoViewCtrlInfoCb, (void *)pAppData);
+ }
+}
+
+void MpVideoViewCtrlShowNaviFrame(void)
+{
+ VideoLogInfo("");
+
+ if (pNaviFrame) {
+ evas_object_show(pNaviFrame);
+ }
+}
+
+void MpVideoViewCtrlHideNaviFrame(void)
+{
+ VideoLogInfo("");
+
+ if (pNaviFrame) {
+ evas_object_hide(pNaviFrame);
+ }
+}
+
+/*
+ * External function.
+ */
+bool MpVideoViewCtrlInit(VideoAppData *pAppData)
+{
+ VideoLogInfo("");
+
+ if (!pAppData) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ if (pHWKeyEventDownHandler) {
+ ecore_event_handler_del(pHWKeyEventDownHandler);
+ pHWKeyEventDownHandler = NULL;
+ }
+
+ if (pHWKeyEventUpHandler) {
+ ecore_event_handler_del(pHWKeyEventUpHandler);
+ pHWKeyEventUpHandler = NULL;
+ }
+
+ pHWKeyEventDownHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpVideoViewCtrlHardkeyDownCb, (void *)pAppData);
+ pHWKeyEventUpHandler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (void *)MpVideoViewCtrlHardkeyUpCb, (void *)pAppData);
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+ evas_object_color_set(pAppData->pMainWindow, 0, 0, 0, 0);
+ //elm_win_alpha_set(pAppData->pMainWindow, EINA_TRUE);
+ //elm_win_transparent_set(pAppData->pMainWindow, EINA_TRUE);
+ evas_object_move(pAppData->pMainWindow, 0, 0);
+
+ MpVideoViewCtrlCreateMainLayout(pAppData->pMainWindow, pAppData->nCurPlayerType);
+ MpVideoViewCtrlCreateNaviFrame(pMainLayout, pAppData->nLaunchingAppType);
+
+ MpVideoViewCtrlInitVideoViews(pAppData, pAppData->nLaunchingAppType, pAppData->nVideoSortType);
+
+ return TRUE;
+}
+
+void MpVideoViewCtrlDestroy(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ appcore_unset_rotation_cb();
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewDestroy(pUserData);
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewDestroy(pUserData);
+ }
+
+ if (pHWKeyEventDownHandler) {
+ ecore_event_handler_del(pHWKeyEventDownHandler);
+ pHWKeyEventDownHandler = NULL;
+ }
+
+ if (pHWKeyEventUpHandler) {
+ ecore_event_handler_del(pHWKeyEventUpHandler);
+ pHWKeyEventUpHandler = NULL;
+ }
+
+ if (pMainLayout) {
+ evas_object_del(pMainLayout);
+ pMainLayout = NULL;
+ }
+
+ if (pNaviFrame) {
+ evas_object_del(pNaviFrame);
+ pNaviFrame = NULL;
+ }
+
+ if (pBackGround) {
+ evas_object_del(pBackGround);
+ pBackGround = NULL;
+ }
+
+ bIsKeyCancle = FALSE;
+}
+
+void MpVideoViewCtrlInitAfterBeginOfStream(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewInitAfterBeginOfStream(pUserData);
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewInitAfterBeginOfStream(pUserData);
+ }
+}
+
+void MpVideoViewCtrlPause(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewUpdatePauseKey();
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewUpdatePauseKey();
+ }
+}
+
+void MpVideoViewCtrlResume(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewUpdateResumeKey();
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewUpdateResumeKey();
+ }
+}
+
+void MpVideoViewShowLayout(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+ MpVideoViewCtrlShowNaviFrame();
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewActivate();
+ MpVideoDisplayViewShowControlPanel(pUserData);
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewShowControlPanel(pUserData);
+ }
+}
+
+void MpVideoViewHideLayout(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_HIDE);
+ MpVideoViewCtrlHideNaviFrame();
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewHideControlPanel(pUserData);
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpVideoStreamingViewHideControlPanel(pUserData);
+ }
+}
+
+void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate,
+ void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ if(MpUtilCheckRTSPType(pAppData->szMediaUri)) {
+ if(nSetBufferingRate == 0) {
+ MpVideoStreamingViewSetBufferingRate(-1);
+ }
+ else {
+ MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+ }
+ }
+ else {
+ if (nSetBufferingRate >= 0) {
+ MpVideoStreamingViewSetBufferingRate(nSetBufferingRate);
+ }
+ }
+ }
+}
+
+void MpVideoViewHideSoundpath(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewHideSoundpath();
+ }
+}
+
+void MpVideoViewCtrlChangeTitle(void *pUserData)
+{
+ VideoLogInfo("");
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ MpVideoDisplayViewChangeNaviFrameTitle(pUserData);
+ }
+}
+
+void MpVideoViewCtrlUpdateSubtitle(double nDuration,
+ char* szSubtitleString)
+{
+ VideoLogInfo("");
+
+ if (!szSubtitleString) {
+ VideoLogInfo("No Exist szSubtitleString pointer.");
+ return;
+ }
+
+ if (nDuration <= 0 ) {
+ VideoLogInfo("Duration time 0.");
+ return;
+ }
+
+ MpVideoDisplayViewUpdateSubtitle(nDuration, szSubtitleString);
+}
+
+bool MpVideoViewCtrlIsTopView(void *pUserData)
+{
+ if (!pUserData) {
+ VideoLogInfo("[ERR]");
+ return FALSE;
+ }
+
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ bool bIstopView = FALSE;
+
+ if (pAppData->nCurPlayerType == MP_VIDEO_PLAYER) {
+ VideoLogInfo("VIDEO PLAYER");
+ if (!MpVideoDisplayViewIsTopView()) {
+ VideoLogInfo("");
+ return FALSE;
+ }
+
+ return TRUE;
+ } else if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ VideoLogInfo("STREAMING PLAYER");
+ bIstopView = MpVideoStreamingViewIsTopView();
+ }
+
+ return bIstopView;
+}
+
+void MpVideoViewCtrlShowNocontentImage(void)
+{
+ VideoLogInfo("");
+
+ MpVideoDisplayViewShowNocontentImage();
+}
+
+void MpVideoViewCtrlHideNocontentImage(void)
+{
+ VideoLogInfo("");
+
+ MpVideoDisplayViewHideNocontentImage();
+}
+
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+#include <glib.h>
+#include <string.h>
+#include <libxml/parser.h>
+
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-xml-parser.h"
+
+#define MAX_YT_FORMAT 10
+
+/*
+ *
+ * 1 : rtsp | video/3gpp | H.263 / AMR audio |
+ * 176 * 144
+ * 2 : http | video/3gpp | MPEG4 / MPEG4 AAC / 22050 |
+ * 176 * 144
+ * 3 : http | video/mp4| H.264 / AVC / MPEG4 AAC / 44100 |
+ * 480 * 270 / 480 * 360
+ * 5 : http | application/x-shockwave-flash
+ * 6 : rtsp | video/3gpp | MPEG4 / AAC audio |
+ * 176 * 144
+ * 9 : http | video/3gpp | MPEG4 / MPEG4 AAC |
+ * 320 * 240
+ * 10 : rtsp | video/3gpp
+*/
+
+static bool bInitXML = false;
+static bool _parse_url_with_format(const char *content, int length, int format,
+ char **streamer_url);
+
+void mp_xml_init()
+{
+ if (!bInitXML) {
+ xmlInitParser();
+ bInitXML = true;
+ }
+
+}
+
+void mp_xml_destroy()
+{
+ if (bInitXML)
+ xmlCleanupParser();
+}
+
+unsigned int mp_read_xml_file(const char *file_name, char **data)
+{
+ unsigned int file_size = 0;
+ FILE *fp = fopen(file_name, "r");
+ if (!fp) {
+ VideoLogInfo("file open failed!");
+ return 0;
+ }
+
+ fseek(fp, 0, SEEK_END); /* move to end */
+ file_size = ftell(fp);
+ VideoLogInfo("file_size of xml = %d", file_size);
+ fseek(fp, 0, SEEK_SET); /* move to start */
+
+ *data = (char *)malloc(file_size);
+ if (*data == NULL) {
+ VideoLogInfo("memory allocation failed!");
+ fclose(fp);
+ return 0;
+ }
+
+ fread(*data, file_size, 1, fp);
+ fclose(fp);
+
+ return file_size;
+}
+
+/* 3: http | video/mp4 | H.264 / AVC / MPEG4 AAC / 44100 |
+480 * 270 / 480 * 360 */
+
+/* 9: http | video/3gpp | MPEG4 / MPEG4 AAC |
+320 * 240 */
+
+/* 2: http | video/3gpp | MPEG4 / MPEG4 AAC / 22050 |
+176 * 144 */
+
+/* 10: rtsp | video/3gpp */
+
+/* 6: rtsp | video/3gpp | MPEG4 / AAC audio |
+176 * 144 */
+
+/* 1: rtsp | video/3gpp | H.263 / AMR audio |
+176 * 144 */
+
+int mp_get_xmlitem(const char *content, int length, MpXMLItemInfo * item,
+ int *nHttpCount, int *nRtspCount)
+{
+ int xml_order_of_format[MAX_YT_FORMAT] = { 3,
+ 9,
+ 2,
+ 10,
+ 6,
+ 1,
+ 0,
+ };
+
+ int index = 0;
+ char *url = NULL;
+ bool result = false;
+ int insert_item = 0;
+ int http_cnt = 0;
+ int rtsp_cnt = 0;
+ int item_cnt = 0;
+ while (xml_order_of_format[index] != 0) {
+ result =
+ _parse_url_with_format(content, length,
+ xml_order_of_format[index], &url);
+ if (result == false)
+ return -1;
+
+ if (url != NULL) {
+ memcpy(item[item_cnt].szURL, url, strlen(url) + 1);
+ item[item_cnt].id = xml_order_of_format[index];
+ if (xml_order_of_format[index] != 10 &&
+ xml_order_of_format[index] != 6 &&
+ xml_order_of_format[index] != 1) {
+ item[item_cnt].streaming_type =
+ MP_HTTP_STREAMING;
+ http_cnt++;
+ } else {
+ item[item_cnt].streaming_type =
+ MP_RTSP_STREAMING;
+ rtsp_cnt++;
+ }
+
+ printf("[%d] : %s\n", item[item_cnt].id,
+ item[item_cnt].szURL);
+ if (url) {
+ free(url);
+ url = NULL;
+ }
+ insert_item++;
+ item_cnt++;
+ }
+ index++;
+ }
+ *nHttpCount = http_cnt;
+ *nRtspCount = rtsp_cnt;
+ return insert_item;
+}
+
+bool mp_get_url_from_xml(const char *content, int length, char **streamer_url,
+ int mode)
+{
+ bool result = false;
+ int index = 1;
+
+ /* disable http for field test. must remove comment later.
+ (request from yoserb.yi) */
+ int wifi_order_of_format[MAX_YT_FORMAT] = {
+ 3,
+ 9,
+ 2,
+ 10,
+ 6,
+ 1,
+ 0,
+ };
+
+ int order_of_format[MAX_YT_FORMAT] = {
+ 9,
+ 10,
+ 2,
+ 6,
+ 1,
+ 0,
+ };
+
+ if (mode == _WIFI_MODE_) {
+ index = 0;
+ while (wifi_order_of_format[index] != 0) {
+ result = _parse_url_with_format(content, length,
+ wifi_order_of_format
+ [index], streamer_url);
+ if (result == false)
+ return false;
+
+ if (*streamer_url != NULL) {
+ VideoLogInfo
+ ("success to parse url (yt_format = %d)",
+ wifi_order_of_format[index]);
+ return true;
+ } else {
+ VideoLogInfo("no url for yt_format %d",
+ wifi_order_of_format[index]);
+ index++;
+ }
+ }
+
+ } else {
+ if (mode == _3G_MODE_)
+ index = 0;
+
+ VideoLogInfo("mode: 0x%x, index: %d", mode, index);
+ while (order_of_format[index] != 0) {
+ result = _parse_url_with_format(content, length,
+ order_of_format[index],
+ streamer_url);
+ if (result == false)
+ return false;
+
+ if (*streamer_url != NULL) {
+ VideoLogInfo
+ ("success to parse url (yt_format = %d)",
+ order_of_format[index]);
+ return true;
+ } else {
+ VideoLogInfo("no url for yt_format %d",
+ order_of_format[index]);
+ index++;
+ }
+ }
+ }
+ VideoLogInfo("can't find url to play!");
+ return false;
+}
+
+bool _parse_url_with_format(const char *content, int length, int format,
+ char **streamer_url)
+{
+ char video_url[1024] = "\0";
+ xmlDocPtr doc = NULL;
+ xmlNode *current = NULL;
+
+ doc = xmlReadMemory(content, length, NULL, NULL, 0);
+ if (doc == NULL) {
+ VideoLogInfo("Failed to parse document\n");
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ return false;
+ }
+
+ xmlChar *url, *yt_format;
+ current = xmlDocGetRootElement(doc);
+ current = current->xmlChildrenNode;
+ while (current != NULL) {
+ if ((!xmlStrcmp(current->name, (const xmlChar *)"group"))) {
+ xmlNodePtr current_group = current->xmlChildrenNode;
+ while (current_group != NULL) {
+ if (!xmlStrcmp(current_group->name,
+ (const xmlChar *)"content")) {
+ yt_format = xmlGetProp(current_group,
+ (const xmlChar *)
+ "format");
+ if (yt_format != NULL && format ==
+ atoi((char *)yt_format)) {
+ url =
+ xmlGetProp(current_group,
+ (const xmlChar *)
+ "url");
+ strncpy(video_url,
+ (const char *)url,
+ sizeof(video_url) - 1);
+ xmlFree(url);
+ xmlFree(yt_format);
+ break;
+ }
+ xmlFree(yt_format);
+ }
+ current_group = current_group->next;
+ }
+ break;
+ }
+ current = current->next;
+ }
+
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ if (strlen(video_url)) {
+ *streamer_url = (char *)calloc(1, strlen(video_url) + 1);
+ memcpy(*streamer_url, video_url, strlen(video_url) + 1);
+ }
+
+ return true;
+}
+
+char *mp_get_title_from_xml(const char *path)
+{
+ char *content = NULL;
+ unsigned int length = 0;
+
+ if (!path)
+ return NULL;
+
+ if (!g_str_has_suffix(path, ".xml"))
+ return NULL;
+
+ length = mp_read_xml_file(path, &content);
+ if (length == 0 || content == NULL) {
+ free(content);
+ return NULL;
+ }
+
+ char title[1024] = "\0";
+ xmlDocPtr doc = NULL;
+ xmlNode *current = NULL;
+
+ doc = xmlReadMemory(content, length, NULL, NULL, 0);
+ if (doc == NULL) {
+ VideoLogInfo("Failed to parse document\n");
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ return NULL;
+ }
+
+ xmlChar *xml_title = NULL;
+ current = xmlDocGetRootElement(doc);
+ current = current->xmlChildrenNode;
+ while (current != NULL) {
+ if ((!xmlStrcmp(current->name, (const xmlChar *)"group"))) {
+ xmlNodePtr current_group = current->xmlChildrenNode;
+ while (current_group != NULL) {
+ if (!xmlStrcmp
+ (current_group->name,
+ (const xmlChar *)"title")) {
+ xml_title =
+ xmlNodeGetContent(current_group);
+ if (xml_title) {
+ strncpy(title,
+ (const char *)xml_title,
+ sizeof(title) - 1);
+ VideoLogInfo("xml_title=%x ",
+ xml_title);
+ xmlFree(xml_title);
+ }
+ break;
+ }
+ current_group = current_group->next;
+ }
+ break;
+ }
+ current = current->next;
+ }
+
+ xmlFreeDoc(doc);
+ xmlMemoryDump();
+
+ free(content);
+
+ if (strlen(title))
+ return strdup(title);
+ else
+ return NULL;
+
+}
--- /dev/null
+/*
+ * Copyright 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * This file is part of org.tizen.video-player
+ * Written by JongDong Lee <jongdong.lee@samsung.com>, ChangSun Lee <cs78.lee@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability
+ * of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as
+ * a result of using, modifying or distributing this software or its derivatives.
+ *
+ */
+
+
+
+
+#include <appcore-efl.h>
+
+#include <glib.h>
+#include <pmapi.h>
+
+#include "mp-util.h"
+#include "mp-video-log.h"
+#include "video-player.h"
+#include "mp-video-app-ctrl.h"
+#include "mp-util-media-service.h"
+#include "mp-video-string-define.h"
+
+static bool bIsForeground = FALSE;
+
+static int app_init(void *pUserData);
+static int app_exit(void *pUserData);
+static int app_reset(bundle *pBundle, void *pUserData);
+static int app_pause(void *pUserData);
+static int app_resume(void *pUserData);
+
+static int app_init(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return 0;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ appcore_set_i18n(PACKAGE, LOCALEDIR);
+ elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME);
+
+ MpUtilInitSession();
+ MpUtilVolumeTypeSet();
+
+ MpUtilLanguageInit(pAppData);
+ return 0;
+}
+
+static int app_reset(bundle *pBundle, void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (bIsForeground) {
+ VideoLogInfo("Defence overlap launching.");
+ return 0;
+ } else {
+ bIsForeground = TRUE;
+ }
+
+ if (!pBundle) {
+ VideoLogInfo("[ERR] No exist pBundle.");
+ return 0;
+ }
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return 0;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (strlen(pAppData->szMediaUri) > 0) {
+ MpVideoAppCtrlResetForRelaunching(pAppData);
+ }
+
+ if (pAppData->pMainWindow == NULL) {
+ VideoLogInfo("Create main window.");
+ pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE);
+ }
+
+ MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED);
+ MpUtilMediaSvcInitSession();
+
+ if (bundle_get_count(pBundle) < 1) {
+ VideoLogInfo("UI gadget bundle value should > 0");
+ return 0;
+ }
+
+ if (MpUtilCheckLaunchingByMime(pBundle, pAppData->szMediaUri)) {
+ VideoLogInfo("=== SETTING VIDEO TYPE ===");
+ VideoLogInfo("Launching by mime. Path : %s",
+ pAppData->szMediaUri);
+ pAppData->nCurPlayerType = MP_VIDEO_PLAYER;
+ } else {
+ if(!MpUtilGetURIFromBundle(pBundle, pAppData))
+ {
+ if(!MpUtilGetURIFromAUL(pBundle, pAppData))
+ {
+ VideoLogInfo("[ERR] Fail to get URI path from AUL.");
+ return 0;
+ }
+ }
+
+ if (MpUtilIsXMLUrl(pAppData->szMediaUri)) {
+ if (!MpUtilParsingXML(pAppData->szMediaUri, pAppData)) {
+ VideoLogInfo("[ERR] Fail to get streaming URI path from XML.");
+ return 0;
+ }
+ } else {
+ if (!MpUtilCheckVideoURI(pAppData)) {
+ VideoLogInfo("[ERR] Fail to get video/streaming URI path.");
+ return 0;
+ }
+ if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER) {
+ MpUtilGetCookieFromBundle(pBundle, pAppData);
+ }
+ }
+ }
+
+ if (!MpUtilMMCstatusNoti(pAppData)) {
+ VideoLogInfo("[ERR] Fail to set MMC notification.");
+ return 0;
+ }
+
+ if (!MpUtilBatteryStatusNoti(pAppData)) {
+ VideoLogInfo("[ERR] Fail to set Battery notification.");
+ return 0;
+ }
+
+ pAppData->nLaunchingAppType = (MpLaunchingAppType) MpUtilCheckLaunchingByOtherApp(pBundle, MP_VIDEO_LAUNCHING_BY_APP_KEY);
+ pAppData->nVideoSortType = (MpMediaSortType) MpUtilCheckSortType(pBundle, MP_VIDEO_SORT_TYPE_KEY);
+ pAppData->nVideoListType = (MpVideoListType) MpUtilCheckListType(pBundle, MP_VIDEO_LIST_TYPE_KEY);
+ pAppData->nSetPosition = MpUtilCheckStartPositionTime(pBundle, MP_VIDEO_START_POS_TIME_KEY);
+
+ if (pAppData->nVideoListType == MP_VIDEO_LIST_TYPE_TAG_GALLERY) {
+ MpUtilGetTagNameOfGallery(pBundle, MP_VIDEO_TAG_NAME_KEY, pAppData->szTagNameForVideoList);
+ VideoLogInfo("Gallery tag name : %s", pAppData->szTagNameForVideoList);
+ }
+
+ MpUtilVolumeTypeSet();
+ pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
+
+ MpVideoAppCtrlInit(pAppData);
+
+ evas_object_show(pAppData->pMainWindow);
+ elm_win_activate(pAppData->pMainWindow);
+
+ return 0;
+}
+
+static int app_exit(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (!pUserData) {
+ VideoLogInfo("[ERR] No exist pUserData.");
+ return 0;
+ }
+
+ pm_unlock_state(LCD_NORMAL, GOTO_STATE_NOW);
+
+ MpUtilSetKeyUngrab(HOME_KEY);
+ MpUtilMultimediaKeyUngrab();
+ MpUtilMMCstatusNotiIgnore();
+ MpUtilBatteryStatusNotiIgnore();
+ MpUtilVolumeTypeUnset();
+ MpUtilFinishSession();
+ MpUtilDeletePopupHandle();
+ MpUtilMediaSvcMtagIterateDestroyTagList();
+ MpUtilMediaSvcDestoryVideoList();
+ MpUtilMediaSvcFinishSession();
+ MpUtilDestroyXML();
+
+ bIsForeground = FALSE;
+
+ return 0;
+}
+
+static int app_pause(void *pUserData)
+{
+ VideoLogInfo("");
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ if (!MpVideoAppCtrlIsTopView(pUserData)) {
+ VideoLogInfo("Overlay is not staied in top.");
+ } else {
+ if (MpVideoAppCtrlIsExistPlayerHandle()) {
+ pAppData->nPrePlayerState = pAppData->nCurPlayerState;
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
+ }
+ }
+
+ MpUtilVolumeTypeUnset();
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ bIsForeground = FALSE;
+
+ return 0;
+}
+
+static int app_resume(void *pUserData)
+{
+ VideoLogInfo("");
+
+ if (bIsForeground) {
+ VideoLogInfo("Defence overlap launching.");
+ return 0;
+ }
+
+ if (!MpVideoAppCtrlIsTopView(pUserData)) {
+ VideoLogInfo("Overlay is not staied in top.");
+ return 0;
+ }
+
+ VideoAppData *pAppData = (VideoAppData *)pUserData;
+
+ MpUtilVolumeTypeSet();
+
+ elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW);
+
+ if (MpVideoAppCtrlIsExistPlayerHandle()) {
+ if (pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME || pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY) {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
+ }
+ } else {
+ pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData);
+ }
+
+ bIsForeground = TRUE;
+
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ struct timeval TimeVal;
+ gettimeofday(&TimeVal, NULL);
+
+ VideoLogInfo("======================================================");
+ VideoLogInfo(" Measuring exec() launching time - %ld:%ldus",
+ TimeVal.tv_sec, TimeVal.tv_usec);
+ VideoLogInfo("======================================================");
+
+ VideoAppData pAppData;
+ memset(&pAppData, 0, sizeof(VideoAppData));
+
+ struct appcore_ops ops = {
+ .create = app_init,
+ .terminate = app_exit,
+ .pause = app_pause,
+ .resume = app_resume,
+ .reset = app_reset,
+ .data = (void *)&pAppData,
+ };
+
+ if (appcore_efl_main(PACKAGE, &argc, &argv, &ops) == -1)
+ return -1;
+
+ return 0;
+}