From: HyungKyu Song Date: Fri, 15 Feb 2013 15:01:22 +0000 (+0900) Subject: Tizen 2.0 Release X-Git-Tag: accepted/2.0/20130417.211321^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c9ff00e63ae998df18471ab15a735ab989296d51;hp=80a15829135065e16ce5b129c715d10d14b829ba;p=profile%2Fivi%2Forg.tizen.video-player.git Tizen 2.0 Release --- diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..3e43a9d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,218 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(video-player C CXX) + +SET(PKG_NAME org.tizen.video-player) + +EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION) + +SET(SRCS +src/video-player.c +src/mp-util.c +src/mp-video-app-ctrl.c +src/mp-video-view-mgr.c +src/mp-video-display-view.c +src/mp-external-ug.c +src/mp-video-progressbar.c +src/mp-util-media-service.c +src/mp-video-streaming-view.c +src/mp-video-ctrl-mgr.c +src/mp-video-player-mgr.c +src/mp-video-animation-ctrl.c +src/mp-video-streaming-ctrl.c +src/mp-video-service-ctrl.c +src/mp-video-volume-ctrl.c +src/mp-video-sound-path-ctrl.c +) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR}/include +) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + elementary + drm-client + utilX + dlog + vconf + syspopup-caller + ecore-imf + ecore-x + ecore-input + ecore-evas + eina + evas + ecore + ecore-file + edje + icu-i18n + icu-io + icu-le + icu-lx + icu-uc + efreet-mime + capi-appfw-application + capi-media-player + capi-media-sound-manager + capi-media-image-util + pmapi + capi-media-metadata-extractor + capi-content-media-content + capi-content-mime-type + ui-gadget-1 +) + + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE} -fPIC") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie") +SET(CMAKE_C_FLAGS_RELEASE "-O2 -fpie") + + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"") +ADD_DEFINITIONS("-D_LARGEFILE64_SOURCE") +ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=\"\"64") + + +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(THUMBDIR "/opt/usr/media/.video_thumb") +SET(LOCALEDIR "${RESDIR}/locale") +SET(ICONDIR "${RESDIR}/icons/default/small") +SET(EDJDIR "${RESDIR}/edje") +SET(SLP_LD_PATH_FLAGS -L${CMAKE_CURRENT_SOURCE_DIR}/src/ext) + +ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") +ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"") +ADD_DEFINITIONS("-DTHUMBDIR=\"${THUMBDIR}\"") +ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") +ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") +ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") +ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64") +ADD_DEFINITIONS("-DUSE_SWITCH") + + +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") +SET(CMAKE_LDFLAGS "-Wl,-zdefs" ) + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${gles_pkg_LDFLAGS} -ldl) + +ADD_CUSTOM_TARGET(main.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/main.edc +${CMAKE_BINARY_DIR}/res/edc/main.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/main.edc) + +ADD_CUSTOM_TARGET(vp_font.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc +${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp_font.edc) + +ADD_CUSTOM_TARGET(image_res.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/image_res.edc +${CMAKE_BINARY_DIR}/res/edc/image_res.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/image_res.edc) + +ADD_CUSTOM_TARGET(panel.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/panel.edc +${CMAKE_BINARY_DIR}/res/edc/panel.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/panel.edc) + +ADD_CUSTOM_TARGET(progress.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/progress.edc +${CMAKE_BINARY_DIR}/res/edc/progress.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/progress.edc) + +ADD_CUSTOM_TARGET(control.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/control.edc +${CMAKE_BINARY_DIR}/res/edc/control.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/control.edc) + +ADD_CUSTOM_TARGET(animation.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/animation.edc +${CMAKE_BINARY_DIR}/res/edc/animation.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/animation.edc) + +ADD_CUSTOM_TARGET(subtitle.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc +${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/subtitle.edc) + +ADD_CUSTOM_TARGET(vp-custom-winset-style.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc +${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp-custom-winset-style.edc) + +ADD_CUSTOM_TARGET(option_button.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/option_button.edc +${CMAKE_BINARY_DIR}/res/edc/option_button.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/option_button.edc) + +ADD_CUSTOM_TARGET(popup_progressbar.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/popup_progressbar.edc +${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/popup_progressbar.edc) + +ADD_CUSTOM_TARGET(vp-speedbox-popup.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp-speedbox-popup.edc +${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp-speedbox-popup.edc) + +ADD_CUSTOM_TARGET(vp-volume-popup.edj COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/res/images +${CMAKE_SOURCE_DIR}/res/edc/vp-volume-popup.edc +${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DEPENDS +${CMAKE_SOURCE_DIR}/res/edc/vp-volume-popup.edc) + +ADD_DEPENDENCIES(${PROJECT_NAME} main.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp_font.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} image_res.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} panel.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} progress.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} control.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} animation.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} subtitle.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp-custom-winset-style.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} option_button.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} popup_progressbar.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp-speedbox-popup.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} vp-volume-popup.edj) + +###################################### +# install desktop file & icon, edje # +###################################### + +INSTALL(DIRECTORY DESTINATION ${THUMBDIR}) +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/main.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp_font.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/image_res.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/panel.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/progress.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/control.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/animation.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/subtitle.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-custom-winset-style.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/option_button.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/popup_progressbar.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-speedbox-popup.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edc/vp-volume-popup.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.video-player.xml DESTINATION /usr/share/packages) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/res/images/org.tizen.video-player.png DESTINATION /usr/share/icons/default/small/) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/icon/ DESTINATION ${RESDIR}/images/icon) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res/images/toolbar/ DESTINATION ${RESDIR}/images/toolbar) + +INSTALL(FILES LICENSE.Flora DESTINATION /usr/share/license RENAME ${PKG_NAME}) + +ADD_SUBDIRECTORY(res/po) diff --git a/LICENSE.Flora b/LICENSE.Flora new file mode 100755 index 0000000..4425b3b --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,205 @@ +Flora License + +Version 1.0, May, 2012 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Compatibility Definition Document +and passes the Compatibility Test Suite as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. + +You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text +from the Work, provided that such additional attribution notices +cannot be construed as modifying the License. You may add Your own +copyright statement to Your modifications and may provide additional or +different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works +as a whole, provided Your use, reproduction, and distribution of +the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://floralicense.org/license/ + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100755 index 0000000..fca93f4 --- /dev/null +++ b/NOTICE @@ -0,0 +1,3 @@ +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1. +Please, see the LICENSE.Flora file for Flora License, Version 1 terms and conditions. \ No newline at end of file diff --git a/include/mp-drm-ctrl.h b/include/mp-drm-ctrl.h new file mode 100644 index 0000000..ea22cf6 --- /dev/null +++ b/include/mp-drm-ctrl.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_DRM_CTRL_H_ +#define _MP_DRM_CTRL_H_ + +#define DRM_STR_LEN_MAX 2048 + +typedef enum +{ + MP_VIDEO_DRM_ERROR_NONE = 0, + MP_VIDEO_DRM_ERROR_INTERNAL, + MP_VIDEO_DRM_ERROR_TIME_BASED, + MP_VIDEO_DRM_ERROR_INTERVAL, + MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE, + MP_VIDEO_DRM_ERROR_ACCUMULATED, + MP_VIDEO_DRM_ERROR_COUNT, + MP_VIDEO_DRM_ERROR_COUNT_SMALL, + MP_VIDEO_DRM_ERROR_TIME_COUNT_BASED, + MP_VIDEO_DRM_ERROR_TIME_INDIVIDULAL, + MP_VIDEO_DRM_ERROR_TIME_SYSTEM, + MP_VIDEO_DRM_ERROR_MAX, +}MpVideoDrmErrorType; + + + +typedef struct +{ + int nErrorCode; + int nData; +}MpVideoDrmInfo; + + +typedef enum +{ + VIDEO_DRM_CONSUMPTION_STATE_DISABLE = 0, + VIDEO_DRM_CONSUMPTION_STATE_ENABLE, +}MpVideoDrmConsumptionStateType; + + +void MpVideoDrmInit(void); +bool MpVideoDrmGetForwardLookState(void); +void MpVideoDrmSetConsumptionState(int nState); +int MpVideoDrmGetConsumption(void); +void MpVideoDrmStartConsumption(char *szPath); +void MpVideoDrmPauseConsumption(void); +void MpVideoDrmResumeConsumption(void); +void MpVideoDrmStopConsumption(void); +bool MpVideoDrmIsDrmFile(char* szPath); //bool MpVideoDrmFileRight(char* szPath); +bool MpVideoDrmHasValidRo(char* szPath); +bool MpVideoDrmCheckForward(char* szPath); +MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char* szVideoTitle, char* szPath); +bool MpVideoDrmCheckExpiration(char* szPath); + +/* DivX DRM functions */ +void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize); + +#endif //_MP_DRM_CTRL_H_ diff --git a/include/mp-external-ug.h b/include/mp-external-ug.h new file mode 100755 index 0000000..de71541 --- /dev/null +++ b/include/mp-external-ug.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_EXTERNAL_UG_ +#define _MP_EXTERNAL_UG_ + + +#include + + +typedef enum +{ + MP_EXTERNAL_UG_NONE = -1, + MP_EXTERNAL_UG_MESSAGE = 0, + MP_EXTERNAL_UG_EMAIL, + MP_EXTERNAL_UG_MYFILE_DETAIL, + MP_EXTERNAL_UG_YOUTUBE, + MP_EXTERNAL_UG_BLUETOOTH, + MP_EXTERNAL_UG_FTM, + MP_EXTERNAL_UG_FACEBOOK, + MP_EXTERNAL_UG_MAX, +}MpExternalUGType; + + +bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void* pUserData); +void MpExternalUgUnload(void); +void MpExternalUgDestroyAll(void); +int MpExternalUgGetCurUgState(void); +void MpExternalUgSetUgState(MpExternalUGType nExternalUGType); +bool MpExternalUgShow(void *pUserData, void *pParent); +void MpExternalUgHide(); + +#endif // _MP_EXTERNAL_UG_ diff --git a/include/mp-util-media-service.h b/include/mp-util-media-service.h new file mode 100644 index 0000000..7aaff60 --- /dev/null +++ b/include/mp-util-media-service.h @@ -0,0 +1,123 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#ifndef _MP_UTIL_DATABASE_ +#define _MP_UTIL_DATABASE_ + +#include "video-player.h" +#include + +typedef enum +{ + MP_MEDIA_VIDEO_FILE_TYPE = 0, + MP_MEDIA_CAMERA_FILE_TYPE, + MP_MEDIA_ALL_FILE_TYPE, + MP_MEDIA_FILE_TYPE_MAX, +}MpMediaSvcVideoFileType; + +typedef enum +{ + MP_MEDIA_SORT_BY_NONE = 0, + MP_MEDIA_SORT_BY_NAME_ASC, + MP_MEDIA_SORT_BY_NAME_DESC, + MP_MEDIA_SORT_BY_DATE_MOST_RECENT, + MP_MEDIA_SORT_BY_OLDEST, + MP_MEDIA_SORT_BY_MAX, +}MpMediaSvcSortType; + +typedef enum +{ + MP_MEDIA_LIST_TYPE_FOLDER = 0, + MP_MEDIA_LIST_TYPE_ALL_FOLDER_GALLERY, + MP_MEDIA_LIST_TYPE_TAG_GALLERY, + MP_MEDIA_LIST_TYPE_FAVORITE, + MP_MEDIA_LIST_TYPE_ALLSHARE, + MP_MEDIA_LIST_TYPE_MAX, +}MpMediaSvcListType; + + +void MpUtilMediaSvcInitSession(void); +void MpUtilMediaSvcFinishSession(void); + +//////////////////////////////////////////////////////// +// Manage video item list + +// For gallery list +bool MpUtilMediaSvcExtractVideoListFromFolder(char* szFolderPath, int nSortType); // For myfiles. +bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType); // For 'All' folder of gallery. +bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType); // For only video type files of video list view. +bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType); // For only recorded type files of video list view. +bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName); // For tag folder of gallery. +bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType); // For favorite naming of gallery. +bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword); // For only video type files of video search view*/ + + +void MpUtilMediaSvcDestoryVideoList(void); +bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath); +bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex); +bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex); + + +bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID); +char* MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri); +unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath); +unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath); +int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath); +void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime); + +bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char* szCurrMediaUri, char* szPreMediaUri, char* szNextMediaUri,bool bLoop); + +// For video list +char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex); +char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex); +char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex); +int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex); +time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex); +char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex); +double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex); +double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex); + +int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void); +int MpUtilMediaSvcGetNumberOfVideoItemByType(void); +int MpUtilMediaSvcGetTotalVideoTypeFiles(void); +void MpUtilMediaSvcPrintListInfo(void); +int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath); + +// For folder list +bool MpUtilMediaSvcExtractVideoFolderList(int nSortType); +bool MpUtilMediaSvcDestoryVideoFolderList(void); +int MpUtilMediaSvcGetVideoFolderListSize(void); +char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex); +char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex); + +//////////////////////////////////////////////////////// +// Manage bookmark + +bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list); +void MpUtilMediaSvcBookmarkListClear(GList *list); +int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path); +int MpUtilMediaSvcBookmarkDelete(char *vid, int position); +int MpUtilMediaSvcBookmarkDeleteAll(char *vid); +char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle); +int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle); + +#endif // _MP_UTIL_DATABASE_ \ No newline at end of file diff --git a/include/mp-util.h b/include/mp-util.h new file mode 100755 index 0000000..81f0cd6 --- /dev/null +++ b/include/mp-util.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_UTIL_ +#define _MP_UTIL_ + + +#include "video-player.h" + + +typedef enum +{ + NORMAL_POPUP_RETURN_TYPE_UNKNOW = 0, + NORMAL_POPUP_RETURN_TYPE_YES, + NORMAL_POPUP_RETURN_TYPE_NO, + NORMAL_POPUP_RETURN_TYPE_ERR, +}NormalPopUpRetType; + + +void MpUtilResetForRelaunching(void); +void MpUtilSetAlphaOfMainWindow(bool bSetAlpha); +void* MpUtilCreateMainWindow(const char *pStrName); + +int MpUtilSetKeyGrab(const char* szKeyName, int nGrabMode); +int MpUtilSetKeyUngrab(const char* szKeyName); +bool MpUtilCheckRTSPType(char *szUriPath); +int MpUtilCheckUriType(char *szUriPath); +bool MpUtilCheckLocalFileExist(char *uri); +bool MpUtilCheckBatteryStatus(void); +int MpUtilBatteryStatusNoti(VideoAppData* pAppData); +int MpUtilBatteryStatusNotiIgnore(void); +int MpUtilMMCstatusNoti(VideoAppData* pAppData); +int MpUtilMMCstatusNotiIgnore(void); +int MpUtilCheckDlnaSortType(void* pSvcHandle, char* szBundleKey); +int MpUtilCheckDlnaMediaID(void* pSvcHandle, char* szBundleKey); +int MpUtilGetRotationStateFromAppcore(void); +int MpUtilGetRotationState(void); +void MpUtilSetRotationState(int nCurRotation); +bool MpUtilGetTitleFromFilepath(char* szFilepath, char* szTitle, int nLengthTitle); +void MpUtilInitSession(void); +void MpUtilFinishSession(void); +void MpUtilDeletePopupHandle(void); +bool MpUtilNotifyPopUp(VideoAppData* pAppData, char* szContents, void* PopupButtonCallbackFunc); +bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents,void *PopupButtonCallbackFunc); +bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc); +bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData); +bool MpUtilProgressPopUp(VideoAppData* pAppData, char* szLabel); +void MpUtilStatusBarNotiPopupShow(const char *szStr); +void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func); +void* MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func); +void* MpUtilLoadEdjFile(Evas* pEvas, char* szEdjName, char* szGroupName); +bool MpUtilIsCallOff(void); +bool MpUtilIsCameraOff(void); +bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData); +bool MpUtilIsConnectEarjack(void); +bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData); +bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl); +bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize); +bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl); +bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize); +unsigned int MpUtilGetMainWindowXID(void); +void MpUtilRotateWindow(int nRotateMode, void* pWindowHandle); +void MpUtilGetUserAgent(VideoAppData* pAppData); +double MpUtilGetSysTime(void); +void MpUtilLcdNormalPowerLockForResume(void); +void MpUtilLcdNormalPowerUnlockForPause(void); +void MpUtilLcdOffForPowerButton(void); +bool MpUtilTurnOverSensorInit(void *pUserData); +bool MpUtilTurnOverSensorDestroy(void); +void MpUtilMultimediaKeyGrab(void); +void MpUtilMultimediaKeyUngrab(void); +void MpUtilMultimediaVolumeKeyGrab(void); +void MpUtilMultimediaVolumeKeyUngrab(void); + +char* MpUtilGetFileSize(unsigned int size); +void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour); +bool MpUtilAddToHome(const char *file_path); +void MpUtilLayoutVisibleOff(void *pWindowHandle); + +#endif // _MP_UTIL_ diff --git a/include/mp-video-animation-ctrl.h b/include/mp-video-animation-ctrl.h new file mode 100755 index 0000000..3fc3c88 --- /dev/null +++ b/include/mp-video-animation-ctrl.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_LOADING_ANIMATION_CTRL_ +#define _VIDEO_LOADING_ANIMATION_CTRL_ + + +void* MpVideoAnimationCtrlInit(void* pUserData); +void MpVideoAnimationCtrlDestroy(void); +void MpVideoAnimationCtrlSetPercent(int nPercent); +void MpVideoAnimationCtrlPlay(void); +void MpVideoAnimationCtrlStop(void); +void MpVideoAnimationCtrlShow(void); +void MpVideoAnimationCtrlHide(void); +bool MpVideoAnimationCtrlGetActiveState(void); + + +#endif /* _VIDEO_LOADING_ANIMATION_CTRL_ */ + diff --git a/include/mp-video-app-ctrl.h b/include/mp-video-app-ctrl.h new file mode 100644 index 0000000..19155ec --- /dev/null +++ b/include/mp-video-app-ctrl.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_APP_CTRL_ +#define _VIDEO_APP_CTRL_ + + +#include "video-player.h" + + +bool MpVideoAppCtrlInit(VideoAppData* pAppData); +bool MpVideoAppCtrlResetForRelaunching(VideoAppData* pAppData); +bool MpVideoAppCtrlIsTopView(void* pUserData); +bool MpVideoAppCtrlIsExistPlayerHandle(void); +void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState); +void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData); +bool MpVideoAppCtrlGetFloatingStatus(void); +bool MpVideoAppCtrlIsCheckCallStatus(void); +void MpVideoAppCtrlInitCheckCallStatus(void); + +#endif /* _VIDEO_APP_CTRL_ */ diff --git a/include/mp-video-ctrl-mgr.h b/include/mp-video-ctrl-mgr.h new file mode 100644 index 0000000..bc9cc29 --- /dev/null +++ b/include/mp-video-ctrl-mgr.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_CTRL_MGR_H_ +#define _MP_VIDEO_CTRL_MGR_H_ + + +bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData); +bool MpVideoCtrlMgrMediaRealize(void); +bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData); +void MpVideoCtrlMgrMediaDestroy(void* pUserData); +bool MpVideoCtrlMgrMediaPlay(void* pUserData); +void MpVideoCtrlMgrMediaStop(void* pUserData); +void MpVideoCtrlMgrMediaPause(void* pUserData); +void MpVideoCtrlMgrMediaResume(void* pUserData); +void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData); +void MpVideoCtrlMgrSetOverlayXid(void* pXid); +void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData); +void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition); +int MpVideoCtrlMgrGetPosition(void); +int MpVideoCtrlMgrGetDuration(void); +void MpVideoCtrlMgrResetPlaySpeed(void* pUserData); +void MpVideoCtrlMgrSetPlaySpeedUp(void* pUserData); +void MpVideoCtrlMgrSetPlaySpeedDown(void* pUserData); +int MpVideoCtrlMgrGetVideoWidthResolution(void); +int MpVideoCtrlMgrGetVideoHeightResolution(void); +void MpVideoCtrlMgrSetRatioVideoScreen(void* pUserData, int nRatioScreenSize); +void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue); +void MpVideoCtrlMgrSetMute(bool bMuteEnable); +bool MpVideoCtrlMgrGetMuteState(void); +int MpVideoCtrlMgrGetBufferingPosition(void); +bool MpVideoCtrlMgrIsExistPlayerHandle(void); +bool MpVideoCtrlMgrIsOnlyAudio(void); +bool MpVideoCtrlMgrSetScaling(bool bScale); +int MpVideoCtrlMgrGetErrorType(int nErrorVal); +void MpVideoCtrlMgrSetMute(bool bState); +int MpVideoCtrlMgrGetClosedCaptionCount(void); + + +#endif diff --git a/include/mp-video-display-view.h b/include/mp-video-display-view.h new file mode 100644 index 0000000..52f075e --- /dev/null +++ b/include/mp-video-display-view.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#ifndef _VIDEO_DISPLAY_VIEW_ +#define _VIDEO_DISPLAY_VIEW_ + + +typedef enum +{ + MP_DISPLAY_VIEW_STATE_ACTIVATE = 0, + MP_DISPLAY_VIEW_STATE_UNACTIVATE, + MP_DISPLAY_VIEW_STATE_MAX, +}VideoDisplayViewState; + +typedef void (*ChangeDisplayViewCbFunc)(int nChangePlayerView, void* pUserData); + +void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb); +void MpVideoDisplayViewPop(void *pNaviFrame, void* pUserData); +void MpVideoDisplayViewDestroy(void *pUserData); + +void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData); +void MpVideoDisplayViewUpdatePauseKey(void); +void MpVideoDisplayViewUpdateResumeKey(void); +void MpVideoDisplayViewShowControlPanel(void *pUserData); +void MpVideoDisplayViewHideControlPanel(void *pUserData); +void MpVideoDisplayViewActivate(void); +void MpVideoDisplayViewUnactivate(void); +void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData); +bool MpVideoDisplayViewIsTopView(void); +void MpVideoDisplayViewShowNocontentImage(void *pUserData); +void MpVideoDisplayViewHideNocontentImage(void); +void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData); +void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData); +void MpVideoDisplayViewResetProgressBar(void *pUserData); +bool MpVideoDisplayViewIsPauseByUser(void); +void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser); +void MpVideoDisplayViewUpdateProgressBar(void *pUserData); + +#endif diff --git a/include/mp-video-info-ctrl.h b/include/mp-video-info-ctrl.h new file mode 100755 index 0000000..2cb63d5 --- /dev/null +++ b/include/mp-video-info-ctrl.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _VIDEO_INFO_CTRL_ +#define _VIDEO_INFO_CTRL_ + +bool MpVideoInfoCtrlGetGPS(char *szUriPath, double *nLongtitude, double *nLatitude); +bool MpVideoInfoCtrlGetResolution(char *szWidthResolution, char *szHeightResolution, void *pUserData); +bool MpVideoInfoCtrlGetFileInfo(char *szUriPath, char *szFileDate, int nFileDateSize, char *szFileExtension, int nFileExtensionSize, char *szFileSize, int nFilesizeSize); +#endif diff --git a/include/mp-video-info-view.h b/include/mp-video-info-view.h new file mode 100755 index 0000000..7a433e8 --- /dev/null +++ b/include/mp-video-info-view.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_INFO_VIEW_ +#define _VIDEO_INFO_VIEW_ + + +void MpVideoInfoViewPush(void* pNaviFrame, void* pUserData); +void MpVideoInfoViewPop(void* pNaviFrame, void* pUserData); +void MpVideoInfoViewDestroy(void); + + +#endif diff --git a/include/mp-video-log.h b/include/mp-video-log.h new file mode 100644 index 0000000..b253481 --- /dev/null +++ b/include/mp-video-log.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_LOG_H_ +#define _VIDEO_LOG_H_ + +#include +#include +#include + + +#ifdef LOG_TAG +#undef LOG_TAG +#endif + + +#define LOG_TAG "video-player" + +//#define video_info(fmt,arg...) LOGD( "[%s : %d] " fmt "\n", __FUNCTION__,__LINE__, ##arg) +//#define video_info(fmt,arg...) LOGI( "[%s : %d] " fmt , __FUNCTION__,__LINE__, ##arg) +//#define video_info(fmt,arg...) LOGI(fmt , ##arg) +//#define video_info(fmt,arg...) printf(fmt , ##arg) +//#define video_info(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) + +//#define video_info(fmt,arg...) LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg) +//#define video_debug(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_warning(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_error(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg) + +#define VideoLogInfoWithTid(fmt,arg...) LOGI( "[VP][TID:%d][%s][%d]" fmt "\n", syscall(__NR_gettid), __FUNCTION__, __LINE__, ##arg) +#define VideoLogInfo(fmt,arg...) LOGI( "[VP][%s][%d]" fmt "\n", __FUNCTION__,__LINE__, ##arg) +#define VideoLogDebug(fmt,arg...) LOGD( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +#define VideoLogWarning(fmt,arg...) LOGD( "[%s %s: %d]\033[0;33m [WARN] " fmt "\033[0m\n", __FILE__, __FUNCTION__, __LINE__, ##arg) +#define VideoLogError( fmt,arg...) LOGD( "[%s %s: %d]\033[0;31m [ERR] " fmt "\033[0m\n", __FILE__, __FUNCTION__, __LINE__, ##arg) + + +//#define video_info(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_debug(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_warning(fmt,arg...) printf( "[%s %s : %d] " fmt "\n",__FILE__, __FUNCTION__,__LINE__, ##arg) +//#define video_error( fmt,arg...) printf( "[%s %s : %d] " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##arg) + + +#endif /*_MPVIDEO_LOG_H_*/ diff --git a/include/mp-video-player-mgr.h b/include/mp-video-player-mgr.h new file mode 100644 index 0000000..427a000 --- /dev/null +++ b/include/mp-video-player-mgr.h @@ -0,0 +1,125 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_PLAYER_MGR_H_ +#define _MP_VIDEO_PLAYER_MGR_H_ + + +#include +#include +#include +#include + + +typedef enum +{ + DISPLAY_METHOD_LETTER_BOX = 0, + DISPLAY_METHOD_ORIGIN_SIZE, + DISPLAY_METHOD_FULL_SCREEN, + DISPLAY_METHOD_CROPPED_FULL, + DISPLAY_METHOD_CUSTOM_ROI, +}MpPlayerMgrDisplayMethod; + + +typedef enum +{ + VIDEO_SCREEN_UNKNOWN = 0, + VIDEO_SCREEN_PORTRAIT, + VIDEO_SCREEN_LANDSCAPE, + VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN, + VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN, +}MpVideoRotation; + + +typedef enum +{ + SOUND_EFFECT_NORMAL = 0, + SOUND_EFFECT_VOICE, + SOUND_EFFECT_MOVIE, + SOUND_EFFECT_51CH, + SOUND_EFFECT_MAX, +}MpSoundEffectType; + + +typedef enum +{ + FILE_STREAM_TYPE_NOTHING = 0, + FILE_STREAM_TYPE_VIDEO_AUDIO, + FILE_STREAM_TYPE_AUDIO, + FILE_STREAM_TYPE_VIDEO, + FILE_STREAM_TYPE_MAX, +}MpFileStreamType; + +bool MpPlayerMgrIsActive(void); +bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData); + +bool MpPlayerMgrCreate (const char* szPath); +bool MpPlayerMgrDestroy (void); + +bool MpPlayerMgrRealize (void); +bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData); + +bool MpPlayerMgrUnrealize(void); + +bool MpPlayerMgrPlay (void); +bool MpPlayerMgrStop (void); +bool MpPlayerMgrResume (void); +bool MpPlayerMgrPause (void); + +int MpPlayerMgrGetPosition(void); +void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData); +void MpPlayerMgrSetSubtitlePosition(unsigned int nPos); + +void MpPlayerMgrSetMute(bool bMuteEnable); +bool MpPlayerMgrGetMute(void); + +bool MpPlayerMgrSetSurroundFilters(int nSurround); + + +int MpPlayerMgrGetDuration(void); +bool MpPlayerMgrSetOverlayXid(void* pOverlayXid); +bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID); + +bool MpPlayerMgrSetSoundPriority(void); +int MpPlayerMgrSetPlaySpeed(float nSpeedValue); +int MpPlayerMgrGetVideoWidthResolution(void); +int MpPlayerMgrGetVideoHeightResolution(void); +bool MpPlayerMgrSetSubtitle(char* szSubtitlePath); + +int MpPlayerMgrSetDisplayArea(int nX, int nY, int nWidth, int nHeight); +bool MpPlayerMgrSetRotate(MpVideoRotation nRotation); +bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode); + +bool MpPlayerMgrSetUseragentForStreaming(const char* szUserAgent); +bool MpPlayerMgrSetProxyAddressForStreaming(const char* szProxyAddress); +bool MpPlayerMgrSetCookieForStreaming(const char* szCookie); + +bool MpPlayerMgrStartCapture(); +bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData); + +int MpPlayerMgrGetBufferingPosition(void); +bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData); +int MpPlayerMgrGetFileStreamType(void); +bool MpPlayerMgrSetScaling(bool bScale); +void MpPlayerMgrSetVolume(float volume); +float MpPlayerMgrGetVolume(void); + +player_state_e MpPlayerMgrGetPlayerState(void); + +int MpPlayerMgrGetClosedCaptionCount(void); + +#endif diff --git a/include/mp-video-progressbar.h b/include/mp-video-progressbar.h new file mode 100755 index 0000000..d861dba --- /dev/null +++ b/include/mp-video-progressbar.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_PROGRESS_BAR_CTRL_ +#define _VIDEO_PROGRESS_BAR_CTRL_ + + +void* MpVideoProgressbarGetEdjHandle(void); +void* MpVideoProgressbarInit(void* pUserData); +void MpVideoProgressbarDestroy(void); +void MpVideoProgressbarCreateTimer(void* pUserData); +void MpVideoProgressbarDeleteTimer(void); +void MpVideoProgressbarUpdateDurationTime(char* szDurationTime); +void MpVideoProgressbarBeginOfStream(void *pUserData); +void MpVideoProgressbarReset(void* pUserData); +void MpVideoProgressbarSetSkipEvent(bool bSkip); + +#endif /* _VIDEO_PROGRESS_BAR_CTRL_ */ diff --git a/include/mp-video-service-ctrl.h b/include/mp-video-service-ctrl.h new file mode 100644 index 0000000..470111e --- /dev/null +++ b/include/mp-video-service-ctrl.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_SERVICE_CTRL_ +#define _VIDEO_SERVICE_CTRL_ + + +typedef enum +{ + MP_ERROR_PLAYER_TYPE = 0, + MP_NONE_VIEW_TYPE, + MP_VIDEO_PLAYER, + MP_VIDEO_PLAYER_SIMPLE, + MP_VIDEO_PLAYER_EMAIL, + MP_VIDEO_PLAYER_MMS, + MP_VIDEO_PLAYER_GALLERY, + MP_STREAMING_PLAYER, + MP_MAX_PLAYER_TYPE, +}MpPlayerViewType; + + +void MpVideoServiceCtrlReset(void); +int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri); + + +int MpVideoServiceCtrlGetLatestTime(void); +int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void); +int MpVideoServiceCtrlGetPlayerType(void); +void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType); +int MpVideoServiceCtrlGetPrevPlayerType(void); +void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType); +char* MpVideoServiceCtrlGetCookieForStreaming(void); + +#endif //_VIDEO_SERVICE_CTRL_ diff --git a/include/mp-video-sound-path-ctrl.h b/include/mp-video-sound-path-ctrl.h new file mode 100755 index 0000000..4ae216e --- /dev/null +++ b/include/mp-video-sound-path-ctrl.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_SOUND_PATH_ +#define _MP_VIDEO_SOUND_PATH_ + + +bool MpVideoSoundpathShow(void* pUserData); +void MpVideoSoundpathHide(void); + +bool MpVideoSoundpathIsConnectOtherSoundpath(void); + +#endif // _MP_VIDEO_SOUND_PATH_ \ No newline at end of file diff --git a/include/mp-video-streaming-ctrl.h b/include/mp-video-streaming-ctrl.h new file mode 100755 index 0000000..be59475 --- /dev/null +++ b/include/mp-video-streaming-ctrl.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _STREAMING_PLAYER_H_ +#define _STREAMING_PLAYER_H_ + + +#ifdef USE_DNET +int MpVideoStreamingCtrlConnection(void* pUserData); +int MpVideoStreamingCtrlDisconnection(void* pUserData); +int MpVideoStreamingCtrlIsConnected(void); +#else +bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress); +bool MpVideoStreamingCtrlGetProxy(char* szRetProxy); +bool MpVideoStreamingCtrlIsNetworkOn(void); +int MpVideoStreamingCtrlGetNetworkStatus(void); +int MpVideoStreamingCtrlGetWifiState(); +int MpVideoStreamingCtrlGetCellularState(); +bool MpVideoStreamingCtrlInit(void *pUserData); +void MpVideoStreamingCtrlDestroy(void *pUserData); + +#endif + + +#endif /* _STREAMING_PLAYER_H_ */ diff --git a/include/mp-video-streaming-view.h b/include/mp-video-streaming-view.h new file mode 100644 index 0000000..3f93ece --- /dev/null +++ b/include/mp-video-streaming-view.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_STREAMING_VIEW_ +#define _VIDEO_STREAMING_VIEW_ + + +typedef enum +{ + MP_STREAMING_VIEW_STATE_ACTIVATE = 0, + MP_STREAMING_VIEW_STATE_UNACTIVATE, + MP_STREAMING_VIEW_STATE_MAX, +}VideoStreamingViewState; + +typedef void (*ChangeStreamingViewCbFunc)(int nChangePlayerView, void* pUserData); + +void MpVideoStreamingViewPush(void* pNaviFrame, int nPlayerType, void* pUserData, ChangeStreamingViewCbFunc pChangeViewCb); +void MpVideoStreamingViewPop(void* pNaviFrame, void* pUserData); +void MpVideoStreamingViewDestroy(void* pUserData); + +void MpVideoStreamingViewInitAfterBeginOfStream(void* pUserData); +void MpVideoStreamingViewUpdatePauseKey(void); +void MpVideoStreamingViewUpdateResumeKey(void); +void MpVideoStreamingViewShowControlPanel(void* pUserData); +void MpVideoStreamingViewHideControlPanel(void* pUserData); +void MpVideoStreamingViewActivate(void); +void MpVideoStreamingViewUnactivate(void); +void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide); +void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate); +bool MpVideoStreamingViewGetBufferingState(void); +bool MpVideoStreamingViewIsTopView(void); +void MpVideoStreamingViewShowNocontentImage(void *pUserData); +void MpVideoStreamingViewHideNocontentImage(void); +void MpVideoStreamingViewPortrate(void); +void MpVideoStreamingViewLandscape(void); +void MpVideoStreamingViewUpdateProgressBar(void *pUserData); + +#endif diff --git a/include/mp-video-string-define.h b/include/mp-video-string-define.h new file mode 100644 index 0000000..1c5febf --- /dev/null +++ b/include/mp-video-string-define.h @@ -0,0 +1,166 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_STRING_DEFINE_ +#define _VIDEO_STRING_DEFINE_ + +#include + +#define MP_SYS_STRING "sys_string" +#define MP_STREAMING_PLAYER_STR "Streaming player" +#define MP_VPL_SOUND_ALIVE "Sound Alive" +#define MP_VPL_ADD_TO_HOME _("IDS_AT_BUTTON_ADD_TO_HOME") +#define MP_VIDEO_SOUND_PATH "Sound Path" + + + + +/* SMTP Repeat mode string */ +#define MP_VPL_REPEAT_OFF "Stop after current " +#define MP_VPL_REPEAT_ALL_OFF "Stop after playing all " +#define MP_VPL_REPEAT_ONE "Repeat the current " +#define MP_VPL_REPEAT_ALL "Repeat all " + + +#define MP_SHARE_MESSAGE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_MESSAGE")) +#define MP_SHARE_EMAIL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_EMAIL")) +#define MP_SHARE_BLUETOOTH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_BLUETOOTH")) +#define MP_SHARE_FTM (dgettext(MP_SYS_STRING, "IDS_COM_BODY_WI_FI")) +#define MP_SHARE_FACEBOOK (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FACEBOOK")) +#define MP_SHARE_YOUTUBE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_YOU_TUBE")) +#define MP_SHARE_ALLSHARE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_ALLSHARE")) + + +// SMTP video player string +#define MP_VPL_UNABLE_TO_PLAY_VIDEO "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +#define MP_VPL_HEADER_SHARE_VIDEO_ABB "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +#define MP_VPL_OPT_SET_AS "IDS_VPL_OPT_SET_AS" +#define MP_VPL_POP_INVALID_STREAMING_DATA "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +#define MP_VPL_POP_UNSUPPORTED_AUDIO_FORMAT "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +#define MP_VPL_POP_UNSUPPORTED_VIDEO_FORMAT "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +#define MP_VPL_POP_UNSUPPORTED_FILE_TYPE "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +#define MP_VPL_SOUND_ALIVE_NORMAL "IDS_VPL_OPT_NORMAL" +#define MP_VPL_SOUND_ALIVE_VOICE "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +#define MP_VPL_SOUND_ALIVE_MOVIE "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +#define MP_VPL_SOUND_ALIVE_51CH "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +#define MP_VPL_51CH_ONLY_EARPHONE "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +#define MP_VPL_GPS_LATITUDE "IDS_VPL_BODY_LATITUDE" +#define MP_VPL_GPS_LONGITUTD "IDS_VPL_BODY_LONGITUDE" +#define MP_VPL_TRIM "IDS_VPL_SK3_TRIM" +#define MP_VPL_SUBTITLES "IDS_VPL_OPT_SUBTITLES" +#define MP_VPL_AUDIO_TRACK _("IDS_VPL_OPT_AUDIO_TRACK") +#define MP_VPL_VIDEO_AUTO_OFF _("IDS_VPL_HEADER_VIDEO_AUTO_OFF_ABB") +#define MP_VPL_BODY_NORMAL _("IDS_VPL_BODY_NORMAL") +#define MP_VPL_BODY_WARM _("IDS_VPL_BODY_WARM") +#define MP_VPL_BODY_COLD _("IDS_VPL_BODY_COLD_M_COLOURTONE") +#define MP_VPL_BODY_COLOR_TONE _("IDS_VPL_BODY_COLOUR_TONE") +#define MP_VPL_OUTDOOR_VISIBILITY _("IDS_VPL_OPT_OUTDOOR_VISIBILITY") +#define MP_VPL_BODY_AFTER_PD_HOURS _("IDS_VPL_BODY_AFTER_PD_HOURS") +#define MP_VPL_BODY_AFTER_PD_MINUTES _("IDS_VPL_BODY_AFTER_PD_MINUTES") +#define MP_VPL_OPT_AFTER_1_HOUR_30_MIN _("IDS_VPL_OPT_AFTER_1_HOUR_30_MIN") +#define MP_VPL_BODY_AFTER_1_HOUR _("IDS_VPL_BODY_AFTER_1_HOUR") + + +/* SMTP Subtitle option string */ +#define MP_VPL_SUBTITLE_SIZE_LARGE _("IDS_VPL_BODY_LARGE") +#define MP_VPL_SUBTITLE_SIZE_MEDIUM _("IDS_VPL_BODY_MEDIUM") +#define MP_VPL_SUBTITLE_SIZE_SMALL _("IDS_VPL_BODY_SMALL") +#define MP_VPL_SUBTITLE_SHOW _("IDS_VPL_BODY_SUBTITLES_ON") +#define MP_VPL_SUBTITLE_HIDE _("IDS_VPL_BODY_SUBTITLES_OFF") +#define MP_VPL_SUBTITLE_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE")) +#define MP_VPL_SUBTITLE_LANGUAGE (dgettext(MP_SYS_STRING, "IDS_COM_SK_LANGUAGE")) +#define MP_VPL_SUBTITLE_SYNC (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SYNCHRONIZE")) + + +// SMTP others module string +#define MP_BT_POP_FILEBROWSINGFAIL "IDS_BT_POP_FILEBROWSINGFAIL" +#define MP_BLUETOOTH_HEADSET_DISCONNECTED "IDS_DVBH_POP_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +#define MP_WGT_POP_ALLOW_TO_DELETE_FILE_Q "IDS_WGT_POP_ALLOW_TO_DELETE_FILE_Q" +#define MP_EBOOK_BODY_LOADING_ING "IDS_EBOOK_BODY_LOADING_ING" +#define MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" + +// SORT +#define MP_VPL_SORT_BY_TITLE _("IDS_VPL_OPT_SORT_BY") +#define MP_VPL_OPT_NAME_HA_TO_Z _("IDS_VPL_OPT_NAME_HA_TO_Z") +#define MP_VPL_OPT_NAME_HZ_TO_A _("IDS_VPL_OPT_NAME_HZ_TO_A") +#define MP_VPL_OPT_DATE_HMOST_RECENT _("IDS_VPL_OPT_DATE_HMOST_RECENT") +#define MP_VPL_OPT_DATE_HOLDEST _("IDS_VPL_OPT_DATE_HOLDEST") + + +// Default system string +#define MP_COM_POP_ERROR (dgettext(MP_SYS_STRING, "IDS_COM_POP_ERROR")) +#define MP_COM_BODY_LOW_BATTERY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_LOW_BATTERY")) +#define MP_COM_BODY_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DELETE")) +#define MP_COM_BODY_DELETE_Q (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETE_Q")) +#define MP_COM_BODY_SELECT_ALL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SELECT_ALL")) +#define MP_COM_POP_SELECTED (dgettext(MP_SYS_STRING, "IDS_COM_POP_SELECTED")) +#define MP_COM_POP_DELETED (dgettext(MP_SYS_STRING, "IDS_COM_POP_DELETED")) +#define MP_COM_SK_BACK (dgettext(MP_SYS_STRING, "IDS_COM_SK_BACK")) + +#define MP_COM_SK_YES (dgettext(MP_SYS_STRING, "IDS_COM_SK_YES")) +#define MP_COM_SK_NO (dgettext(MP_SYS_STRING, "IDS_COM_SK_NO")) +#define MP_COM_BUTTON_CANCEL (dgettext(MP_SYS_STRING, "IDS_IDLE_BUTTON_CANCEL")) +#define MP_COM_BUTTON_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_BUTTON_SHARE")) +#define MP_COM_BODY_SIZE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SIZE")) +#define MP_COM_BODY_DETAILS_TITLE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS_TITLE")) +#define MP_COM_BODY_FORMAT (dgettext(MP_SYS_STRING, "IDS_COM_BODY_FORMAT")) +#define MP_COM_POP_DATE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DATE" )) +#define MP_COM_BODY_SOUNDS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS")) +#define MP_IDLE_BODY_RESOLUTION (dgettext(MP_SYS_STRING, "IDS_IDLE_BODY_RESOLUTION")) +#define MP_COM_BODY_DETAILS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DETAILS")) +#define MP_VIDEO_POPUP_SHARE (dgettext(MP_SYS_STRING, "IDS_COM_SK4_SHARE")) +#define MP_COM_SEARCH (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SEARCH")) +#define MP_COM_CLOSE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_CLOSE")) + +#define MP_COM_SOUND_ALIVE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SOUNDS")) +#define MP_COM_SETTINGS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_SETTINGS")) +#define MP_COM_POP_FILE_NOT_FOUND (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_FOUND")) +#define MP_COM_POP_INVALID_URL (dgettext(MP_SYS_STRING, "IDS_COM_POP_INVALID_URL")) +#define MP_COM_POP_CONNECTION_FAILED (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_FAILED")) +#define MP_COM_POP_FILE_NOT_EXIST (dgettext(MP_SYS_STRING, "IDS_COM_POP_FILE_NOT_EXIST")) +#define MP_COM_POP_NO_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_NO_VIDEOS")) +#define MP_COM_VIDEOS (dgettext(MP_SYS_STRING, "IDS_COM_BODY_VIDEOS")) +#define MP_COM_FOLDER (dgettext(MP_SYS_STRING, "IDS_COM_POP_FOLDER")) +#define MP_COM_CANCEL (dgettext(MP_SYS_STRING, "IDS_COM_SK_CANCEL")) +#define MP_COM_DELETE (dgettext(MP_SYS_STRING, "IDS_COM_OPT_DELETE")) +#define MP_COM_CONNECTION_FAIL (dgettext(MP_SYS_STRING, "IDS_COM_POP_CONNECTION_ERROR")) +#define MP_COM_REPEAT_MODE (dgettext(MP_SYS_STRING, "IDS_COM_BODY_REPEAT")) +#define MP_COM_OPT_ADDED (dgettext(MP_SYS_STRING, "IDS_COM_OPT_ADDED")) +#define MP_COM_BODY_GENERAL (dgettext(MP_SYS_STRING, "IDS_COM_BODY_GENERAL")) +#define MP_COM_BODY_DISPLAY (dgettext(MP_SYS_STRING, "IDS_COM_BODY_DISPLAY")) +#define MP_COM_BODY_OFF (dgettext(MP_SYS_STRING, "IDS_COM_BODY_OFF")) +#define MP_COM_RECORDED _("IDS_VPL_BODY_RECORDED") + +#define MP_VIDEO_CHAPTER_VIEW _("IDS_VPL_HEADER_CHAPTER_PREVIEW_ABB") + +#define MP_VPL_SORT_BY "Sort by" +#define MP_VPL_BOOKMARK_LIST_FULL _("IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS") + +/* DRM POPUP */ +#define MP_VPL_DRM_INTERVAL_BASED_DAYS _("You can use %s for %d days. Would you like to open it now?") +#define MP_VPL_DRM_TIME_BASED_GET _("%s is about to be locked. Do you want to get more licenses?") +#define MP_VPL_DRM_COUNT_BASED_OPEN_ONE _("You have one more use of %s. Do you want to open it now?") +#define MP_VPL_DRM_COUNT_BASED_OPEN_MANY _("You have %d more uses of %s. Do you want to open it now?") +#define MP_VPL_DRM_COUNT_BASED_ONE_MORE_GET _("You have one more use of %s. Do you want to get more licenses?") +#define MP_VPL_DRM_COUNT_BASED_NO_MORE_GET _("You have no more use of %s. Do you want to get more licenses?") +#define MP_VPL_DRM_UNLOCK _("%s is currently locked. Do you want to unlock it now?") + +/*DV*/ +#define DV_BTN_LABEL_SEARCH (dgettext("sys_string", "IDS_COM_SK_SEARCH")) +#define DV_BTN_LABEL_CANCEL (dgettext("sys_string", "IDS_COM_SK_CANCEL")) + +#endif //_VIDEO_STRING_DEFINE_ diff --git a/include/mp-video-subtitle-ctrl.h b/include/mp-video-subtitle-ctrl.h new file mode 100755 index 0000000..ac749a4 --- /dev/null +++ b/include/mp-video-subtitle-ctrl.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#ifndef _MP_VIDEO_SUBTITLE_CTRL_ +#define _MP_VIDEO_SUBTITLE_CTRL_ + +bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath); +void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent); +void MpVideoSubtitleCtrlDestroy(void); +void MpVideoSubtitleCtrlUpdate(char *szTxt); + +bool MpVideoSubtitleCtrlIsExistSubtitle(void); +bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUriPath); +void MpVideoSubtitleCtrlSetLayoutShow(bool bShow); +void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode); +int MpVideoSubtitleCtrlGetSizeMode(); +void MpVideoSubtitleCtrlSetShowStatus(bool bShow); +bool MpVideoSubtitleCtrlGetShowStatus(); + +void MpVideoSubtitleCtrlSetRotate(int nRotateStatus); +void MpVideoSubtitleCtrlSetLockScreen(bool bShow); + +#endif // _MP_VIDEO_SUBTITLE_CTRL_ + diff --git a/include/mp-video-type-define.h b/include/mp-video-type-define.h new file mode 100644 index 0000000..fe0ba94 --- /dev/null +++ b/include/mp-video-type-define.h @@ -0,0 +1,169 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_TYPE_DEFINE_ +#define _VIDEO_TYPE_DEFINE_ + + +typedef enum +{ + VIDEO_ROTATE_UNKNOWN = 0, + VIDEO_ROTATE_PORTRAIT_NORMAL, + VIDEO_ROTATE_PORTRAIT_REVERSE, + VIDEO_ROTATE_LANDSCAPE_NORMAL, + VIDEO_ROTATE_LANDSCAPE_REVERSE, +}MpVideoRotateType; + +typedef enum +{ + MP_HTTP_STREAMING = 0, + MP_RTSP_STREAMING, +}MpProtocolType; + +typedef enum +{ + MP_DISPLAY_METHOD_LETTER_BOX = 0, +}MpDisplayMethod; + +typedef enum +{ + MP_SOUND_PATH_SPEAKER = 0, + MP_SOUND_PATH_EARJACK, + MP_SOUND_PATH_BLUETOOTH, + MP_SOUND_PATH_MAX, +}MpSoundPathType; + +typedef enum +{ + MP_PLAYER_ERROR_NONE = 0, // Successful + MP_PLAYER_ERROR_OUT_OF_MEMORY, // Out of memory + MP_PLAYER_ERROR_INVALID_PARAMETER, // Invalid parameter + MP_PLAYER_ERROR_NO_SUCH_FILE, // No such file or directory + MP_PLAYER_ERROR_INVALID_OPERATION, // Invalid operation + MP_PLAYER_ERROR_SEEK_FAILED, // Seek operation failure + MP_PLAYER_ERROR_INVALID_STATE, // Invalid state + MP_PLAYER_ERROR_NOT_SUPPORTED_FILE, // Not supported file format + MP_PLAYER_ERROR_INVALID_URI, // Invalid URI + MP_PLAYER_ERROR_SOUND_POLICY, // Sound policy error + MP_PLAYER_ERROR_CONNECTION_FAILED, // Streaming connection failed + MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED, // Video capture failure + MP_PLAYER_ERROR_UNKNOWN_ERROR, // unknown error. +}MpPlayerErrorType; + +typedef enum +{ + MP_PLAYER_INTERRUPTED_COMPLETED = 0, // Interrupt completed + MP_PLAYER_INTERRUPTED_BY_OTHER_APP, // Interrupted by another application + MP_PLAYER_INTERRUPTED_BY_CALL, // Interrupted by incoming call + MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG, // Interrupted by unplugging headphone + MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT, // Interrupted by resource conflict + MP_PLAYER_INTERRUPTED_BY_ALARM, // Interrupted by alarm +}MpPlayerInterrupteType; + + +typedef enum +{ + MP_PLAYER_STATE_WAIT_FOR_RESUME = -3, + MP_PLAYER_STATE_WAIT_FOR_PLAY = -2, + MP_PLAYER_STATE_WAIT_FOR_RESPONSE = -1, + MP_PLAYER_STATE_CLEAR = 0, + MP_PLAYER_STATE_PLAY, + MP_PLAYER_STATE_PAUSE, + MP_PLAYER_STATE_RESUME, + MP_PLAYER_STATE_STOP, + MP_PLAYER_STATE_PAUSE_BEFORE_PLAY, + MP_PLAYER_STATE_MAX +}MpPlayerState; + + +typedef enum +{ + MP_PLAYING_SPEED_NORMAL = 1, + MP_PLAYING_SPEED_2X = 2, + MP_PLAYING_SPEED_3X = 3, + MP_PLAYING_SPEED_4X = 4, + MP_PLAYING_SPEED_5X = 5, + MP_PLAYING_SPEED_MAX = MP_PLAYING_SPEED_5X, +}MpVideoPlayingSpeedType; + + +typedef enum +{ + MP_SUBTITLE_TYPE_SUB = 0, + MP_SUBTITLE_TYPE_SRT, + MP_SUBTITLE_TYPE_SMI, + MP_SUBTITLE_TYPE_MAX, +}MpSubTitleType; + + +typedef enum +{ + MP_NETWORK_CLOSE = 0, + MP_NETWORK_ON, + MP_NETWORK_MAX, +}MpNetworkConfig; + + +typedef enum +{ + MP_NETWORK_TYPE_OFF = 0, + MP_NETWORK_TYPE_CELLULAR, + MP_NETWORK_TYPE_WIFI, + MP_NETWORK_TYPE_MAX, +}MpNetworkType; + + +typedef enum +{ + MP_NETWORK_WIFI_OFF = 0, + MP_NETWORK_WIFI_NOT_CONNECTED, + MP_NETWORK_WIFI_CONNECTED, + MP_NETWORK_WIFI_MAX, +}MpNetworkWifiState; + + +typedef enum +{ + MP_NETWORK_CELLULAR_ON = 0, + MP_NETWORK_CELLULAR_3G_OPTION_OFF, + MP_NETWORK_CELLULAR_ROAMING_OFF, + MP_NETWORK_CELLULAR_FLIGHT_MODE, + MP_NETWORK_CELLULAR_NO_SERVICE, + MP_NETWORK_CELLULAR_MAX, +}MpNetworkCellularState; + +typedef enum +{ + MP_FILE_STREAM_TYPE_NOTHING = 0, + MP_FILE_STREAM_TYPE_VIDEO_AUDIO, + MP_FILE_STREAM_TYPE_AUDIO, + MP_FILE_STREAM_TYPE_VIDEO, + MP_FILE_STREAM_TYPE_MAX, +}MpVideoFileStreamType; + +typedef enum +{ + MP_OPTION_TYPE_LOCAL = 0, + MP_OPTION_TYPE_MYFILE, + MP_OPTION_TYPE_EMAIL, + MP_OPTION_TYPE_WEB, + MP_OPTION_TYPE_MESSAGE, + MP_OPTION_TYPE_ALLSHARE, + MP_OPTION_TYPE_MAX, +}MpOptionMenuType; + +#endif //_VIDEO_TYPE_DEFINE_ diff --git a/include/mp-video-value-define.h b/include/mp-video-value-define.h new file mode 100755 index 0000000..f25b10b --- /dev/null +++ b/include/mp-video-value-define.h @@ -0,0 +1,505 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_VALUE_DEFINE_ +#define _VIDEO_VALUE_DEFINE_ + +#include + + +//PLAY_TIME_FORMAT +#define PLAY_TIME_FORMAT "02u:%02u:%02u" + + +//PLAY_TIME_ARGS +#define PLAY_TIME_ARGS(t) \ + (t) / (60 * 60), \ + ((t) / 60) % 60, \ + (t) % 60 + +#define PLAY_TIME_LENGTH 9 + + +#define _EDJ(x) elm_layout_edje_get(x) + + +#ifdef PREFIX +#undef PREFIX +#endif + +#ifdef LOCALEDIR +#undef LOCALEDIR +#endif + +#define PREFIX "/usr/apps/org.tizen.video-player" +#define EDJ_PATH "/usr/apps/org.tizen.video-player/res/edje" +#define LOCALEDIR "/usr/apps/org.tizen.video-player/res/locale" + + +#define VIDEO_CHAPTER_VIEW_DATA_DIR "/opt/usr/media/.video_thumb" + + +#define VIDEO_HEAD_ICON_ALLSHARE PREFIX"/res/images/icon/T01-2_icon_title_allshare.png" +#define VIDEO_HEAD_ICON_SOUNDPATH PREFIX"/res/images/icon/T01-2_icon_title_soundpath.png" +#define VIDEO_LIST_VIEW_ICON_FOLDER PREFIX"/res/images/icon/06_myfiles_list_folder.png" + +#define VIDEO_PLAYER_MORE_ICON_TRIM PREFIX"/res/images/icon/T01-2_icon_popup_trim.png" +#define VIDEO_PLAYER_MORE_ICON_SOUND_ALIVE PREFIX"/res/images/icon/T01-2_icon_popup_sound_allive.png" +#define VIDEO_PLAYER_MORE_ICON_SUBTITLE PREFIX"/res/images/icon/T01-2_icon_popup_subtitle.png" +#define VIDEO_PLAYER_MORE_ICON_REPEAT PREFIX"/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png" +#define VIDEO_PLAYER_MORE_ICON_AUDIO_TRACK PREFIX"/res/images/icon/T01-2_icon_popup_sound_audio_track.png" +#define VIDEO_PLAYER_MORE_ICON_SETTING PREFIX"/res/images/icon/T01-2_icon_popup_sound_settings.png" +#define VIDEO_PLAYER_MORE_ICON_ADD_TO_HOME PREFIX"/res/images/icon/T01_controlbar_icon_add_to_home.png" + + +#define VIDEO_PLAYER_TOOLBAR_ICON_VIDEOS PREFIX"/res/images/toolbar/T01-2_controlbar_icon_video.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_RECORDED PREFIX"/res/images/toolbar/T01-2_controlbar_icon_recorded.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_FOLDER PREFIX"/res/images/toolbar/T01-2_controlbar_icon_folder.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_ASF PREFIX"/res/images/toolbar/T01-2_controlbar_icon_near_device.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_BACK PREFIX"/res/images/toolbar/T01-2_btn_toolbar_back.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_VOLUME PREFIX"/res/images/toolbar/T01-2_btn_toolbar_volum.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_CANCEL PREFIX"/res/images/toolbar/T01-2_icon_toolbar_cancel.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_DELETE PREFIX"/res/images/toolbar/T01-2_icon_toolbar_delete.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_DONE PREFIX"/res/images/toolbar/T01-2_icon_toolbar_done.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_SETTING PREFIX"/res/images/toolbar/T01-2_icon_toolbar_setting.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_SORT PREFIX"/res/images/toolbar/T01-2_icon_toolbar_sort_by.png" +#define VIDEO_PLAYER_TOOLBAR_ICON_SEARCH PREFIX"/res/images/toolbar/T02_controlbar_icon_search.png" + + +#define VIDEO_PLAYER_MAIN_EDJ EDJ_PATH"/main.edj" +#define VIDEO_PLAYER_BOOKMARK_EDJ EDJ_PATH"/bookmark.edj" +#define VIDEO_PLAYER_BOOKMARK_ITEM_EDJ EDJ_PATH"/bookmark_item.edj" +#define VIDEO_PLAYER_CONTROL_EDJ EDJ_PATH"/control.edj" +#define VIDEO_PLAYER_PANEL_EDJ EDJ_PATH"/panel.edj" +#define VIDEO_PLAYER_PROGRESS_EDJ EDJ_PATH"/progress.edj" +#define VIDEO_PLAYER_TRIM_EDJ EDJ_PATH"/trim.edj" +#define VIDEO_PLAYER_TRIM_ITEM_EDJ EDJ_PATH"/trim_item.edj" +#define VIDEO_PLAYER_PROGRESS_TRIM_EDJ EDJ_PATH"/progress_trim.edj" +#define VIDEO_PLAYER_ADD_TAG EDJ_PATH"/add_tag.edj" +#define VIDEO_PLAYER_ANIMATION_EDJ EDJ_PATH"/animation.edj" +#define VIDEO_PLAYER_DETAIL_EDJ EDJ_PATH"/detail.edj" +#define VIDEO_PLAYER_SUBTITLE_EDJ EDJ_PATH"/subtitle.edj" +#define VIDEO_PLAYER_SUBTITLE_SYNC_EDJ EDJ_PATH"/subtitle_sync.edj" +#define VIDEO_PLAYER_LISTVIEW_EDJ EDJ_PATH"/listview.edj" +#define VIDEO_PLAYER_MULTI_WIN_EDJ EDJ_PATH"/multi_win.edj" +#define VIDEO_PLAYER_SETTING_EDJ EDJ_PATH"/setting.edj" +#define VIDEO_PLAYER_LANDSCAPE_THUMB_EDJ EDJ_PATH"/landscape_thumbnail.edj" +#define VIDEO_PLAYER_CHAPTER_VIEW_EDJ EDJ_PATH"/vp-chapter-view.edj" +#define VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ EDJ_PATH"/vp-speedbox-popup.edj" +#define VIDEO_PLAYER_VOLUME_POPUP_EDJ EDJ_PATH"/vp-volume-popup.edj" + + + +#define VIDEO_CUSTOM_THEME EDJ_PATH"/vp-custom-winset-style.edj" +#define VIDEO_PLAYER_OPTION_BUTTON_EDJ EDJ_PATH"/option_button.edj" +#define VIDEO_PLAYER_POPUP_PROGRESSBAR_EDJ EDJ_PATH"/popup_progressbar.edj" + +#define VIDEO_PLAYER_SEARCH_VIEW_LAYOUT_EDJ EDJ_PATH"/search-view-layout.edj" + + +#define MAIN_EDJ_GROUP "main" +#define CONTROL_EDJ_GROUP "control" +#define PROGRESS_EDJ_GROUP "progress" +#define BOOKMARK_EDJ_GROUP "bookmark" +#define BOOKMARK_ITEM_EDJ_GROUP "bookmark.item" +#define BOOKMARK_REMOVE_EDJ_GROUP "bookmark.end" +#define TRIM_EDJ_GROUP "trim.control" +#define TRIM_ITEM_EDJ_GROUP "trim.item" +#define CHAPTER_VIEW_EDJ_GROUP "chapter" +#define SPEEDBOX_EDJ_GROUP "speedbox" +#define VOLUME_EDJ_GROUP "volume" + +#define PANEL_EDJ_GROUP "panel" +#define FAVORITE_EDJ_GROUP "favorite" +#define ANIMATION_EDJ_GROUP "animation" +#define DETAIL_EDJ_GROUP "detail" +#define SUBTITLE_EDJ_GROUP "subtitle" +#define SUBTITLE_SYNC_EDJ_GROUP "subtitle.sync" +#define PANEL_BUTTON_EDJ_GROUP "panel.button" +#define OPTION_EDJ_GROUP "option" +#define LISTVIEW_EDJ_GROUP "listview" +#define MULTIWIN_EDJ_GROUP "mw" +#define SETTING_EDJ_GROUP "setting" +#define LANDSCAPE_THUMB_EDJ_GROUP "landscape.thumb" + +#define SEARCH_VIEW_LAYOUT_GROUP "video-player.search-view.layout" + +#define SWALLOW_MAIN_CONTROL "main.panel" +#define SWALLOW_MAIN_BOOKMARK "main.bookmark" +#define SWALLOW_MAIN_ANIMATION "main.animation" +#define SWALLOW_MAIN_PANEL_BUTTON "main.panel.button" +#define SWALLOW_MAIN_OPTION_BUTTON "main.option.button" +#define SWALLOW_SETTING_LISTVIEW "setting.list" + + +#define SWALLOW_BOOKMARK_GRID "bookmark.swallow" + +#define SWALLOW_PANEL_CONTROL "panel.control" +#define SWALLOW_PANEL_PROGRESS_BAR "panel.progress" + +#define SWALLOW_DETAIL_LIST "detail.list" + +#define SWALLOW_TRIM_THUMBNAIL "trim.control.thumb" + +#define PART_BUTTON_ICON "icon" + + +#define MAIN_SPEED_TEXT "main.speedbox.txt" +#define SUBTITLE_TEXT "subtitle.txt" + + +#define SIGNAL_CONTROL_PART_PLAY_BUTTON "control.play.button" +#define SIGNAL_CONTROL_PART_BACK_BUTTON "control.back.button" +#define SIGNAL_CONTROL_PART_VOL_BUTTON "control.volume.button" +#define SIGNAL_CONTROL_PART_MUTE_BUTTON "control.volume.mute.button" + +#define SIGNAL_CONTROL_PART_SOUNDPATH_BUTTON "control.soundpath.button" +#define SIGNAL_CONTROL_PART_SCREENSIZE_BUTTON "control.screensize.button" +#define SIGNAL_CONTROL_PART_FF_BUTTON "control.normal.ff.button" +#define SIGNAL_CONTROL_PART_REW_BUTTON "control.normal.rew.button" +#define SIGNAL_CONTROL_PART_TRIM_FF_BUTTON "control.trim.ff.button" +#define SIGNAL_CONTROL_PART_TRIM_REW_BUTTON "control.trim.rew.button" + +#define PART_CONTROL_TRIM_DONE_BUTTON "control.trim.done.button" +#define PART_CONTROL_TRIM_CANCEL_BUTTON "control.trim.cancel.button" +#define PART_CONTROL_SPEED_BOX_REW "control.normal.rew.speed.swallow" +#define PART_CONTROL_SPEED_BOX_FF "control.normal.ff.speed.swallow" + +#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH "hidden.button.panel.soundpath" +#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE "hidden.button.panel.allshare" + +#define PART_PANEL_BUTTON_SA "panel.button.sa" +#define PART_PANEL_BUTTON_REPEAT "panel.button.repeat" + +#define PART_BOOKMARK_ADD "bookmark.add" +#define PART_BOOKMARK_DEL "bookmark.end.btn" + +#define SIGNAL_VOLUME_PORTRAIT_MODE "signal.volume.potrait.mode" +#define SIGNAL_VOLUME_LANDSCAPE_MODE "signal.volume.landscape.mode" + +#define SIGNAL_SPEEDBOX_SET_MODE_1 "signal.speedbox.set.mode.1" +#define SIGNAL_SPEEDBOX_SET_MODE_2 "signal.speedbox.set.mode.2" +#define SIGNAL_SPEEDBOX_SET_MODE_3 "signal.speedbox.set.mode.3" + +#define SIGNAL_SPEEDBOX_SHOW "signal.speedbox.visible.on" +#define SIGNAL_SPEEDBOX_HIDE "signal.speedbox.visible.off" + +#define SIGNAL_CONTROL_MODE_NORMAL "signal.control.mode.normal" +#define SIGNAL_CONTROL_MODE_BOOKMARK "signal.control.mode.bookmark" +#define SIGNAL_CONTROL_MODE_TRIM "signal.control.mode.trim" +#define SIGNAL_CONTROL_MODE_STREAMING "signal.control.mode.streaming" +#define SIGNAL_CONTROL_MODE_DLNA "signal.control.mode.dlna" +#define SIGNAL_CONTROL_MODE_VISIBLE_OFF "signal.control.mode.visible.off" +#define SIGNAL_CONTROL_BACK_BUTTON_DOWN "signal.control.back.button.up" + +#define SIGNAL_CONTROL_VOL_BUTTON_DOWN "signal.control.volume.button.down" +#define SIGNAL_CONTROL_VOL_BUTTON_UP "signal.control.volume.button.up" + +#define SIGNAL_CONTROL_MUTE_BUTTON_DOWN "signal.control.volume.mute.button.down" +#define SIGNAL_CONTROL_MUTE_BUTTON_UP "signal.control.volume.mute.button.up" + +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_DOWN "signal.control.soundpath.button.down" +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UP "signal.control.soundpath.button.up" +#define SIGNAL_CONTROL_SCREENSIZE_NORMAL "signal.control.screensize.normal" +#define SIGNAL_CONTROL_SCREENSIZE_EXPAND "signal.control.screensize.expand" +#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN "signal.control.normal.ff.button.down" +#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP "signal.control.normal.ff.button.up" +#define SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED "signal.control.normal.ff.button.clicked" +#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN "signal.control.normal.rew.button.down" +#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP "signal.control.normal.rew.button.up" +#define SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED "signal.control.normal.rew.button.clicked" +#define SIGNAL_CONTROL_NORMAL_FF_STEP "signal.control.normal.ff.button.step" +#define SIGNAL_CONTROL_NORMAL_REW_STEP "signal.control.normal.rew.button.step" +#define SIGNAL_CONTROL_NORMAL_FF_LANDSCAPE_STEP "signal.control.normal.ff.button.landscape.step" +#define SIGNAL_CONTROL_NORMAL_REW_LANDSCAPE_STEP "signal.control.normal.rew.button.landscape.step" +#define SIGNAL_CONTROL_TRIM_FF_STEP "signal.control.trim.ff.button.step" +#define SIGNAL_CONTROL_TRIM_REW_STEP "signal.control.trim.rew.button.step" + +#define SIGNAL_PANEL_BUTTON_SA_DOWN "signal.panel.button.sa.down" +#define SIGNAL_PANEL_BUTTON_SA_UP "signal.panel.button.sa.up" +#define SIGNAL_PANEL_BUTTON_REPEAT_DOWN "signal.panel.button.repeat.down" +#define SIGNAL_PANEL_BUTTON_REPEAT_UP "signal.panel.button.repeat.up" + +#define SIGNAL_BOOKMARK_ADD_DOWN "signal.bookmark.add.down" +#define SIGNAL_BOOKMARK_ADD_UP "signal.bookmark.add.up" + +#define SIGNAL_BOOKMARK_EXPAND "signal.bookmark.expand" +#define SIGNAL_BOOKMARK_NORMAL "signal.bookmark.normal" +#define SIGNAL_BOOKMARK_DEL_DOWN "signal.bookmark.end.btn.down" + +#define SIGNAL_CONTROL_TRIM_DONE_BUTTON_DOWN "signal.control.trim.done.button.down" +#define SIGNAL_CONTROL_TRIM_CANCEL_BUTTON_DOWN "signal.control.trim.cancel.button.down" + +#define SIGNAL_CONTROL_TRIM_FF_BUTTON_DOWN "signal.control.trim.ff.button.down" +#define SIGNAL_CONTROL_TRIM_FF_BUTTON_UP "signal.control.trim.ff.button.up" +#define SIGNAL_CONTROL_TRIM_REW_BUTTON_DOWN "signal.control.trim.rew.button.down" +#define SIGNAL_CONTROL_TRIM_REW_BUTTON_UP "signal.control.trim.rew.button.up" + +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_ACTIVE "signal.control.soundpath.button.active" +#define SIGNAL_CONTROL_SOUNDPATH_BUTTON_UNACTIVE "signal.control.soundpath.button.unactive" + +#define PART_OPTION_SCREEN_SIZE "option.screensize" +#define PART_OPTION_SHARE "option.share" +#define PART_OPTION_BOOKMARK "option.bookmark" +#define PART_OPTION_MULTIWIN "option.multiwin" +#define PART_OPTION_MORE "option.more" +#define PART_OPTION_SOUND_ALIVE "option.sa" +#define PART_OPTION_TRIM "option.trim" +#define PART_OPTION_REPEAT "option.repeat" +#define PART_OPTION_CONNECT_INFO "option.connectinfo" + +#define SIGNAL_OPTION_SCREEN_SIZE_DOWN "signal.option.screensize.down" +#define SIGNAL_OPTION_SHARE_DOWN "signal.option.share.down" +#define SIGNAL_OPTION_BOOKMARK_DOWN "signal.option.bookmark.down" +#define SIGNAL_OPTION_MULTIWIN_UP "signal.option.multiwin.up" +#define SIGNAL_OPTION_MORE_DOWN "signal.option.more.down" +#define SIGNAL_OPTION_SOUND_ALIVE_DOWN "signal.option.sa.down" +#define SIGNAL_OPTION_TRIM_DOWN "signal.option.trim.down" +#define SIGNAL_OPTION_REPEAT_DOWN "signal.option.repeat.down" +#define SIGNAL_OPTION_CONNECT_INFO_DOWN "signal.option.connectinfo.down" + +#define SIGNAL_LAYOUT_PIXMAP_BG_SHOW "signal.layout.pixmap.bg.show" +#define SIGNAL_LAYOUT_PIXMAP_BG_HIDE "signal.layout.pixmap.bg.hide" + +#define SIGNAL_LAYOUT_INDICATOR_SHOW "signal.layout.indicator.show" +#define SIGNAL_LAYOUT_INDICATOR_HIDE "signal.layout.indicator.hide" + +#define PART_MW_CLOSE "mw.close" +#define PART_MW_PANEL_HIDE "mw.panel.hide" +#define PART_MW_PANEL_SHOW "mw.panel.show" +#define PART_MW_FULL_SIZE "mw.full.size" +#define PART_MW_REW "mw.control.rew" +#define PART_MW_PLAY "mw.control.play" +#define PART_MW_PAUSE "mw.control.pause" +#define PART_MW_FF "mw.control.ff" +#define PART_MW_RESIZE "mw.resize" + +#define SIGNAL_CONTORL_SHOW_FINISH "signal.control.show.finish" +#define SIGNAL_CONTORL_HIDE_FINISH "signal.control.hide.finish" + +#define SIGNAL_NAVIFRAME_TITLE_SHOW "elm,state,title,show" +#define SIGNAL_NAVIFRAME_TITLE_HIDE "elm,state,title,hide" + +#define SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW "signal.main.control.portrait.show" +#define SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW "signal.main.control.landscape.show" + +#define SIGNAL_MAIN_CONTROL_NORMAL_HIDE "signal.main.control.hide" +#define SIGNAL_MAIN_CONTROL_LANDSCAPE_BOOKMAKR_HIDE "signal.main.control.hide.with.bookmark" + +#define SIGNAL_MW_CLOSE_CLICKED "signal.mw.close.clicked" +#define SIGNAL_MW_PANEL_HIDE_CLICKED "signal.mw.panel.hide.clicked" +#define SIGNAL_MW_PANEL_SHOW_CLICKED "signal.mw.panel.show.clicked" +#define SIGNAL_MW_FULL_SIZE_CLICKED "signal.mw.full.size.clicked" +#define SIGNAL_MW_REW_CLICKED "signal.mw.control.rew.clicked" +#define SIGNAL_MW_PLAY_CLICKED "signal.mw.control.play.clicked" +#define SIGNAL_MW_PAUSE_CLICKED "signal.mw.control.pause.clicked" +#define SIGNAL_MW_FF_CLICKED "signal.mw.control.ff.clicked" +#define SIGNAL_MW_RESIZE_DOWN "signal.mw.resize.down" + +#define SIGNAL_MW_HIDE_CONTROL "signal.mw.hide.control" +#define SIGNAL_MW_SHOW_CONTROL "signal.mw.show.control" + +#define SIGNAL_MW_SET_PAUSE_STATUS "signal.mw.set.pause.status" +#define SIGNAL_MW_SET_PLAY_STATUS "signal.mw.set.play.status" + +#define SIGNAL_MW_PIXMAP_SHOW "signal.mw.image.show" +#define SIGNAL_MW_PIXMAP_HIDE "signal.mw.image.hide" + +#define SIGNAL_MW_PIXMAP_ALPHA_SET "signal.mw.image.alpha.set" +#define SIGNAL_MW_PIXMAP_ALPHA_UNSET "signal.mw.image.alpha.unset" + +#define SIGNAL_OPTION_SELECT_BG_CLEAR "signal.option.select.bg.clear" + +#define SIGNAL_OPTION_SCREEN_SIZE_NORMAL "signal.option.screensize.normal" +#define SIGNAL_OPTION_SCREEN_SIZE_FULL "signal.option.screensize.full" +#define SIGNAL_OPTION_SCREEN_SIZE_ORIGIN "signal.option.screensize.origin" + +#define SIGNAL_OPTION_REPEAT_ON "signal.option.repeat.on" +#define SIGNAL_OPTION_REPEAT_OFF "signal.option.repeat.off" + +#define SIGNAL_OPTION_MODE_LOCAL "signal.option.mode.local" +#define SIGNAL_OPTION_MODE_MYFILE "signal.option.mode.myfile" +#define SIGNAL_OPTION_MODE_EMAIL "signal.option.mode.email" +#define SIGNAL_OPTION_MODE_WEB "signal.option.mode.web" +#define SIGNAL_OPTION_MODE_MESSAGE "signal.option.mode.message" +#define SIGNAL_OPTION_MODE_ALLSHARE "signal.option.mode.allshare" + +#define SIGNAL_PANEL_BUTTON_REPEAT_OFF "signal.panel.button.repeat.off" +#define SIGNAL_PANEL_BUTTON_REPEAT_ONE "signal.panel.button.repeat.one" +#define SIGNAL_PANEL_BUTTON_REPEAT_ALL "signal.panel.button.repeat.all" + +#define SIGNAL_NAVIFRAME_PORTRATE_MODE "signal.naviframe.portrate.mode" +#define SIGNAL_NAVIFRAME_LANDSCAPE_MODE "signal.naviframe.landscape.mode" + +#define SIGNAL_MAIN_PORTRATE_MODE "signal.main.portrate.mode" +#define SIGNAL_MAIN_LANDSCAPE_MODE "signal.main.landscape.mode" +#define SIGNAL_MAIN_TRIM_MODE "signal.main.trim.mode" + +#define SIGNAL_MAIN_LANDSCAPE_BOOKMAKR_SHOW "signal.main.landscape.bookmark.show" +#define SIGNAL_MAIN_LANDSCAPE_BOOKMAKR_HIDE "signal.main.landscape.bookmark.hide" + +#define SIGNAL_PANEL_PORTRATE_MODE "signal.panel.portrate.mode" +#define SIGNAL_PANEL_LANDSCAPE_MODE "signal.panel.landscape.mode" +#define SIGNAL_PANEL_TRIM_MODE "signal.panel.trim.mode" + +#define SIGNAL_PROGRESS_PORTRATE_MODE "signal.progress.portrate.mode" +#define SIGNAL_PROGRESS_LANDSCAPE_MODE "signal.progress.landscape.mode" + +#define SIGNAL_PROGRESS_POINTER_SHOW "signal.progress.pointer.show" +#define SIGNAL_PROGRESS_POINTER_HIDE "signal.progress.pointer.hide" + +#define SIGNAL_PROGRESS_ADJUSTMENT_SHOW "signal.progress.adjustment.show" +#define SIGNAL_PROGRESS_ADJUSTMENT_HIDE "signal.progress.adjustment.hide" + +#define SIGNAL_CONTROL_PORTRATE_MODE "signal.control.portrate.mode" +#define SIGNAL_CONTROL_LANDSCAPE_MODE "signal.control.landscape.mode" + +#define SIGNAL_CONTROL_STREAMING_PORTRATE_MODE "signal.control.streaming.portrate.mode" +#define SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE "signal.control.streaming.landscape.mode" + +#define SIGNAL_CONTROL_SET_MUTE "signal.control.volume.set.mute" +#define SIGNAL_CONTROL_UNSET_MUTE "signal.control.volume.unset.mute" + + +// Callback signals. +#define SIGNAL_CONTROL_PLAY_BUTTON_DOWN "signal.control.play.button.down" +#define SIGNAL_CONTROL_PLAY_BUTTON_UP "signal.control.play.button.up" +#define SIGNAL_CONTROL_PLAY_PAUSE_PRESS "signal.control.play.pause.press" +#define SIGNAL_CONTROL_PLAY_RESUME_PRESS "signal.control.play.resume.press" + +// Emit signals. +#define SIGNAL_CONTROL_PLAY_RESUME "signal.control.play.resume" +#define SIGNAL_CONTROL_PLAY_PAUSE "signal.control.play.pause" + +#define SIGNAL_MAIN_MUTE_SHOW "signal.main.mute.show" +#define SIGNAL_MAIN_MUTE_HIDE "signal.main.mute.hide" + +#define SIGNAL_MAIN_NOCONTENTS_SHOW "signal.main.nocontents.show" +#define SIGNAL_MAIN_NOCONTENTS_HIDE "signal.main.nocontents.hide" + +#define SIGNAL_MAIN_SPEEDBOX_SHOW "signal.main.speedbox.show" +#define SIGNAL_MAIN_SPEEDBOX_HIDE "signal.main.speedbox.hide" + +#define SIGNAL_MAIN_SCREEN_TOUCH_TOGGLE "main.screen.touch.toggle" +#define SIGNAL_MAIN_ANIMATION_SHOW "signal.main.animation.show" +#define SIGNAL_MAIN_ANIMATION_HIDE "signal.main.animation.hide" + +#define SIGNAL_ANIMATION_IMAGE_LOADING "signal.loading.image.step" + +#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_SHOW "signal.hidden.button.panel.soundpath.show" +#define SIGNAL_HIDDEN_BUTTON_PANEL_SOUNDPATH_HIDE "signal.hidden.button.panel.soundpath.hide" +#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE_SHOW "signal.hidden.button.panel.allshare.show" +#define SIGNAL_HIDDEN_BUTTON_PANEL_ALLSHARE_HIDE "signal.hidden.button.panel.allshare.hide" + +#define SIGNAL_SUBTITLE_PORTRATE_MODE "signal.subtitle.portrate.mode" +#define SIGNAL_SUBTITLE_LANDSCAPE_MODE "signal.subtitle.landscape.mode" + +#define SIGNAL_SUBTITLE_TXT_SHOW "signal.subtitle.txt.show" +#define SIGNAL_SUBTITLE_TXT_HIDE "signal.subtitle.txt.hide" + +#define SIGNAL_SUBTITLE_LAYOUT_SHOW "signal.subtitle.layout.show" +#define SIGNAL_SUBTITLE_LAYOUT_HIDE "signal.subtitle.layout.hide" + +#define SIGNAL_SUBTITLE_SIZE_SMALL "signal.subtitle.size.small" +#define SIGNAL_SUBTITLE_SIZE_MEDIUM "signal.subtitle.size.medium" +#define SIGNAL_SUBTITLE_SIZE_LARGE "signal.subtitle.size.large" + +#define SIGNAL_SUBTITLE_SYNC_SHOW "signal.subtitle.sync.show" +#define SIGNAL_SUBTITLE_SYNC_HIDE "signal.subtitle.sync.hide" + + +#define PART_SUBTITLE_SYNC_SLOW_BUTTON "subtitle.sync.slow.button" +#define PART_SUBTITLE_SYNC_FAST_BUTTON "subtitle.sync.fast.button" +#define PART_SUBTITLE_SYNC_TXT "subtitle.sync.txt" + +#define SIGNAL_SUBTITLE_SYNC_SLOW_DOWN "signal.subtitle.sync.slow.button.down" +#define SIGNAL_SUBTITLE_SYNC_FAST_DOWN "signal.subtitle.sync.fast.button.down" + + +#define SIGNAL_LOCKSCREEN_SHOW "signal.lockscreen.show" +#define SIGNAL_LOCKSCREEN_HIDE "signal.lockscreen.hide" + + +#define SIGNAL_LISTVIEW_PORTRAIT_PREVIEW_SHOW "signal.listview.preview.show" +#define SIGNAL_LISTVIEW_PORTRAIT_PREVIEW_HIDE "signal.listview.preview.hide" + +#define SIGNAL_LISTVIEW_SELECTION_INFO_SHOW "signal.listview.selection.info.show" +#define SIGNAL_LISTVIEW_SELECTION_INFO_HIDE "signal.listview.selection.info.hide" + +#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_SHOW "signal.landscape.thumb.preview.show" +#define SIGNAL_LANDSCAPE_THUMB_PREVIEW_HIDE "signal.landscape.thumb.preview.hide" + + + +#define TAG_FAVOURITES "Favourites" +#define PACKAGE "video-player" +#define PAUSE_KEY "XF86AudioPause" +#define PLAY_KEY "XF86AudioPlay" +#define STOP_KEY "XF86AudioStop" +#define NEXT_KEY "XF86AudioNext" +#define PREV_KEY "XF86AudioPrev" +#define FORWARD_KEY "XF86AudioForward" +#define REWIND_KEY "XF86AudioRewind" +#define END_KEY KEY_END +#define HOME_KEY KEY_SELECT +#define KEY_CANCLE KEY_CANCEL +#define POWER_KEY "XF86PowerOff" + +#define VOLUME_DOWN_KEY KEY_VOLUMEDOWN +#define VOLUME_UP_KEY KEY_VOLUMEUP + +#define VOLUME_MUTE 0 +#define KEY_GRAB_SHARED SHARED_GRAB +#define KEY_GRAB_EXCLUSIVE EXCLUSIVE_GRAB +#define KEY_GRAB_TOP_POSITION TOP_POSITION_GRAB +#define KEY_GRAB_OR_EXCLUSIVE OR_EXCLUSIVE_GRAB +#define STR_LEN_MAX 4096 * 3 +#define SVC_LEN_MAX 2048 + +#define _WIFI_MODE_ 1 +#define _3G_MODE_ 2 +#define USE_STREAMING_ANI 1 +#define LONG_PRESS_INTERVAL 1.0 +#define DOUBLE_CLICK_TIME 0.2 + +#define SCREEN_TOUCH_TOGGLE_AREA_Y_START 0.065 +#define SCREEN_TOUCH_TOGGLE_AREA_Y_END 0.78 + +#define TAG_LIST_SIZE 256 + +#define ANIMATION_TIMER_INTERVAL 0.05 +#define ANIMATION_MAX_COUNT 30 + +#define BOOSTER_STEP_DISTANCE 99 +#define TRIM_DETAIL_STEP_DISTANCE 30 + +#define SIGNAL_TEXT_MAX_LEN 64 +#define CAPTION_TEXT_MAX_LEN 16 +#define STR_UUID_LEN_MAX 37 + +#define DEFAULT_SCALE_WIDTH 720 +#define DEFAULT_SCALE_HEIGHT 1280 + +#define DEFAULT_MW_WIDTH 496 +#define DEFAULT_MW_HEIGHT 286 + +#define VIDEO_ICON_WIDTH 168 +#define VIDEO_ICON_HEIGHT 124 + + +#endif //_VIDEO_VALUE_DEFINE_ + diff --git a/include/mp-video-view-mgr.h b/include/mp-video-view-mgr.h new file mode 100644 index 0000000..dd2918a --- /dev/null +++ b/include/mp-video-view-mgr.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _VIDEO_VIEW_MGR_ +#define _VIDEO_VIEW_MGR_ + + + +bool MpVideoViewCtrlInit(VideoAppData* pAppData); +void MpVideoViewCtrlDestroy(void* pUserData); + + +void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData); +void MpVideoViewCtrlInitAfterBeginOfStream(void*); +void MpVideoViewCtrlPause(void* pUserData); +void MpVideoViewCtrlResume(void* pUserData); +void MpVideoViewShowLayout(void* pUserData); +void MpVideoViewHideLayout(void* pUserData); +void MpVideoViewCtrlShowFinish(void *pUserData); +void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff); +void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void* pUserData); +void MpVideoViewCtrlChangeTitle(void *pUserData); +bool MpVideoViewCtrlIsTopView(void *pUserData); +void MpVideoViewCtrlShowNocontentImage(void* pUserData); +void MpVideoViewCtrlHideNocontentImage(void* pUserData); +void MpVideoViewCtrlResetProgressBar(void *pUserData); +void MpVideoViewCtrlPopTopView(int nPlayerType, void *pUserData); +void MpVideoViewCtrlUpdateProgressbar(void *pUserData); +bool MpVideoViewCtrlIsPauseByUser(void *pUserData); +void MpVideoViewCtrlShowVolume(); +void MpVideoViewCtrlHideVolume(); + +#endif //_VIDEO_VIEW_MGR_ \ No newline at end of file diff --git a/include/mp-video-volume-ctrl.h b/include/mp-video-volume-ctrl.h new file mode 100644 index 0000000..e71b058 --- /dev/null +++ b/include/mp-video-volume-ctrl.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef _MP_VIDEO_VOLUME_CTRL_ +#define _MP_VIDEO_VOLUME_CTRL_ + + +void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData); +void MpVideoVolumeCtrlDestroy(void); +void MpVideoVolumeCtrlShow(); +void MpVideoVolumeCtrlHide(); +void MpVideoVolumeCtrlSetVolume(int nVol); +int MpVideoVolumeCtrlGetVolume(); +bool MpVideoVolumeCtrlGetShowStatus(); + +#endif // _MP_VIDEO_VOLUME_CTRL_ + diff --git a/include/video-player.h b/include/video-player.h new file mode 100644 index 0000000..daad009 --- /dev/null +++ b/include/video-player.h @@ -0,0 +1,121 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __VIDEO_PLAYER__ +#define __VIDEO_PLAYER__ + +#include +#include +#include +#include + + +#include "mp-video-value-define.h" +#include "mp-video-type-define.h" + +#define LVL0 (0) +#define LVL1 (1) +#define LVL2 (2) +#define LVL3 (3) +#define LVL4 (4) +#define LVL5 (5) +#define LVL6 (6) +#define LVL7 (7) + +typedef enum +{ + MP_UG_FAIL, + MP_UG_SUCCESS +} mp_ug_load_status; + +typedef struct _VideoAppData VideoAppData; + + +typedef struct +{ + void (*VideoAppCtrlStart) (VideoAppData* pAppData); + void (*VideoAppCtrlStop) (VideoAppData* pAppData); + void (*VideoAppCtrlPause) (VideoAppData* pAppData); + void (*VideoAppCtrlResume) (VideoAppData* pAppData); + void (*VideoAppCtrlStopByAppPause) (VideoAppData* pAppData); + void (*VideoAppCtrlStartByAppResume) (VideoAppData* pAppData); + void (*VideoAppCtrlFFDown) (VideoAppData* pAppData); + void (*VideoAppCtrlRewDown) (VideoAppData* pAppData); + void (*VideoAppCtrlFFUp) (VideoAppData* pAppData); + void (*VideoAppCtrlRewUp) (VideoAppData* pAppData); + void (*VideoAppCtrlSpeedReset) (VideoAppData* pAppData); + void (*VideoAppCtrlSpeedFF) (VideoAppData* pAppData); + void (*VideoAppCtrlSpeedRew) (VideoAppData* pAppData); + void (*VideoAppCtrlRotateScreen) (VideoAppData *pAppData, int nRotateState); + void (*VideoAppCtrlGetPosition) (VideoAppData* pAppData); + void (*VideoAppCtrlSetPosition) (VideoAppData* pAppData); + void (*VideoAppCtrlSetSubtitlePosition) (VideoAppData* pAppData); + void (*VideoAppCtrlHideLayout) (VideoAppData* pAppData); + void (*VideoAppCtrlShowLayout) (VideoAppData* pAppData); + void (*VideoAppCtrlHideFinish) (VideoAppData* pAppData); + void (*VideoAppCtrlShowFinish) (VideoAppData* pAppData); + void (*VideoAppCtrlGetVideoResolution) (VideoAppData* pAppData); + void (*VideoAppCtrlReqDurationTime) (VideoAppData* pAppData); + void (*VideoAppCtrlChangeResolution) (VideoAppData* pAppData); + void (*VideoAppCtrlBeginOfStream) (VideoAppData* pAppData); + void (*VideoAppCtrlEndOfStream) (VideoAppData* pAppData); + void (*VideoAppCtrlExit) (VideoAppData* pAppData); + void (*VideoAppCtrlStartStreaming) (VideoAppData* pAppData); + void (*VideoAppCtrlReLaunching) (VideoAppData* pAppData); + void (*VideoAppCtrlGetBufferingPosition)(VideoAppData* pAppData); + + + void (*VideoAppCtrlShowVolume) (VideoAppData *pAppData); + void (*VideoAppCtrlHideVolume) (VideoAppData *pAppData); +}VideoAppCtrlFunc; + + +struct _VideoAppData +{ + Evas_Object* pMainWindow; + + int nDuration; + int nSetPosition; + int nCurPosition; + int nSubtitleDuration; + int nBufferingPosition; + int nPlayingSpeed; + + int nVideoWidthResolution; + int nVideoHeightResolution; + + char *szSubtitle; + char *szVideoTitle; + char *szMediaUri; + char *szPreMediaUri; + char *szNextMediaUri; + + MpPlayerState nPrePlayerState; + MpPlayerState nCurPlayerState; + VideoAppCtrlFunc VideoAppCtrlCallbackFunc; + bool bSeekComplete; + int nSeekPosition; + MpPlayerState nSeekPlayerState; + + char *szProxyAddress; + char *szUserAgent; + char *szCookie; + + bool bStartSeek; +}; + +#endif //__VIDEO_PLAYER__ diff --git a/org.tizen.video-player.manifest b/org.tizen.video-player.manifest new file mode 100755 index 0000000..fbdf26d --- /dev/null +++ b/org.tizen.video-player.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/org.tizen.video-player.xml b/org.tizen.video-player.xml new file mode 100755 index 0000000..9ca4b03 --- /dev/null +++ b/org.tizen.video-player.xml @@ -0,0 +1,63 @@ + + + + JongDong Lee + Video player Application + + + org.tizen.video-player.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/org.tizen.video-player.spec b/packaging/org.tizen.video-player.spec new file mode 100755 index 0000000..58acbf4 --- /dev/null +++ b/packaging/org.tizen.video-player.spec @@ -0,0 +1,93 @@ +Name: org.tizen.video-player +Summary: Video & streaming player +Version: 0.5.140 +Release: 1 +Group: TO_BE/FILLED_IN +License: Flora +Source0: %{name}-%{version}.tar.gz +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(drm-client) +BuildRequires: pkgconfig(utilX) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(syspopup-caller) +BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(eina) +BuildRequires: pkgconfig(evas) +BuildRequires: pkgconfig(edje) +BuildRequires: pkgconfig(efreet) +BuildRequires: pkgconfig(pmapi) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-media-player) +BuildRequires: pkgconfig(capi-media-sound-manager) +BuildRequires: pkgconfig(capi-media-image-util) +BuildRequires: pkgconfig(capi-system-power) +BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(capi-content-media-content) +BuildRequires: pkgconfig(capi-content-mime-type) +BuildRequires: pkgconfig(capi-system-sensor) +BuildRequires: pkgconfig(ecore-evas) +BuildRequires: pkgconfig(ecore-x) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(devman) +BuildRequires: pkgconfig(ui-gadget-1) +BuildRequires: boost-devel +BuildRequires: boost-thread +BuildRequires: boost-system +BuildRequires: boost-filesystem + + +BuildRequires: cmake +BuildRequires: gettext-tools +BuildRequires: edje-tools +BuildRequires: prelink +BuildRequires: libicu-devel + +%description +Video & streaming player + +%prep +%setup -q + +%ifarch %{arm} +%define ARCH arm +%else +%define ARCH i586 +%endif + +%build +cmake . -DCMAKE_INSTALL_PREFIX=/usr/apps/org.tizen.video-player -DARCH=%{ARCH} +make %{?jobs:-j%jobs} + + +%install +rm -rf %{buildroot} +%make_install +execstack -c %{buildroot}/usr/apps/org.tizen.video-player/bin/video-player +mkdir -p %{buildroot}/usr/share/license + +%post +vconftool set -t bool db/private/org.tizen.video-player/backgroud_playing 0 -g 5000 +vconftool set -t int db/private/org.tizen.video-player/video_auto_off_type 0 -g 5000 +vconftool set -t bool db/private/org.tizen.video-player/auto_search_subtitle_file 1 -g 5000 +vconftool set -t bool db/private/org.tizen.video-player/show_subtitle 1 -g 5000 +vconftool set -t int db/private/org.tizen.video-player/subtitle_size 1 -g 5000 +vconftool set -t int db/private/org.tizen.video-player/display_color_tone_type 0 -g 5000 +vconftool set -t bool db/private/org.tizen.video-player/outdoor_visibility 0 -g 5000 +vconftool set -t string db/private/org.tizen.video-player/preview_url_videos "" -g 5000 +vconftool set -t string db/private/org.tizen.video-player/preview_url_records "" -g 5000 +vconftool set -t string db/private/org.tizen.video-player/show_indicator 1 -g 5000 +vconftool set -t string db/private/org.tizen.video-player/show_border 0 -g 5000 + +%files -n org.tizen.video-player +%manifest org.tizen.video-player.manifest +%dir /opt/usr/media/.video_thumb + +/usr/apps/org.tizen.video-player/bin/* +/usr/apps/org.tizen.video-player/res/locale/* +/usr/share/icons/default/small/* +/usr/apps/org.tizen.video-player/res/edje/* +/usr/apps/org.tizen.video-player/res/images/* +/usr/share/packages/org.tizen.video-player.xml + +/usr/share/license/%{name} diff --git a/res/edc/add_tag.edc b/res/edc/add_tag.edc new file mode 100755 index 0000000..c045ecb --- /dev/null +++ b/res/edc/add_tag.edc @@ -0,0 +1,346 @@ +collections { + group { + name: "favorite"; + parts { + part { + name: "background"; + type, RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; } + rel2 { relative: 1.0 1.0; offset: -1 -1; } + color, 0 0 0 255 ; + } + } + + part { + name: "selectall_bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 80; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to: "background"; } + rel2 { relative: 1.0 0.0; to: "background"; } + visible : 0; + color: 37 37 37 153; + visible : 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_check_leftpadding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 15 0; + fixed: 1 0; + align: 0.0 0.0; + + color: 0 0 0 255; + visible: 0; + rel1 { relative: 0.0 0.0; to: "selectall_bg"; } + rel2 { relative: 0.0 1.0; to: "selectall_bg"; } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + } + } + + part { + name: "selectall_check"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.5; + fixed: 1 1; + min: 44 44; + rel1 { relative: 1.0 0.0; to: "selectall_check_leftpadding"; } + rel2 { relative: 1.0 1.0; to: "selectall_check_leftpadding"; } + visible : 0; + + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_check_rightpadding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 15 0; + fixed: 1 0; + align: 0.0 0.0; + color: 0 0 0 0; + rel1 { relative: 1.0 0.0; to: "selectall_check"; } + rel2 { relative: 1.0 1.0; to: "selectall_check"; } + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "selectall_check_rightpadding"; } + rel2 { relative: 1.0 1.0; to: "selectall_bg"; } + color: 255 255 255 255; + text { + font: "SLP"; + size: 32; + text: "Select all"; + align: 0.0 0.5; + } + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "selectall_inner"; + type: RECT; + mouse_events: 0; + scale: 1; + + description { + state: "defalut" 0.0; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; to: "selectall_bg"; } + rel2 { relative: 1.0 1.0; to: "selectall_bg"; } + color: 90 90 90 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + } + } + + + // tab style container + part { + name: "elm.swallow.tabbar"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + } + } + + // tool style container. + part { + name: "elm.swallow.toolbar_bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 50; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; offset: 0 50;} + + } + } + + // tool style container. + part { + name: "elm.swallow.toolbar"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + //min: 0 76; + min: 0 86; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0;} + rel2 { relative: 1.0 1.0;} + + } + description { + state: "moveup" 0.0; + //min: 0 86; + min: 0 50; + fixed: 1 1; + //align: 0.5 1.0; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; offset: 5 0;} + rel2 { relative: 1.0 0.0; offset: -5 50;} + + } + description { + state: "moveup_progressbar" 0.0; + min: 0 62; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; offset: 0 62;} + + } + } + + // view container. This is used, when tool items is added. + part { + name: "elm.swallow.view"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";} + + } + description { + state: "edit_default" 0.0; + rel1 { relative: 0.0 1.0; to: "selectall_inner"; } + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";} + + } + description { + state: "moveup_toolbar" 0.0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "elm.swallow.toolbar_bg";} + rel2 { relative: 1.0 1.0; } + } + description { + state: "moveup_toolbar_progressbar" 0.0; + rel1 { relative: 0.0 1.0; to: "elm.swallow.toolbar";} + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "view_bg"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to: "elm.swallow.view";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "elm.swallow.view";} + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + }//GROUP + + programs { + program { + name: "swallow_view_default"; + signal: "elm,swallow_view,state,default"; + source: "elm"; + script { + set_state(PART:"elm.swallow.view", "default", 0.0); + set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position + } + } + program { + name: "swallow_view_edit_default"; + signal: "elm,swallow_view,state,edit_default"; + source: "elm"; + script { + set_state(PART:"elm.swallow.view", "edit_default", 0.0); + set_state(PART:"elm.swallow.toolbar", "default", 0.0);//restore toolbar position + } + } + program { + name: "swallow_view_moveup_toolbar"; + signal: "elm,swallow_view,state,moveup_toolbar"; + source: "elm"; + script { + set_state(PART:"elm.swallow.toolbar", "moveup", 0.0); //move toolbar up + set_state(PART:"elm.swallow.view", "moveup_toolbar", 0.0); + } + } + program { + name: "swallow_view_moveup_toolbar_progressbar"; + signal: "elm,swallow_view,state,moveup_toolbar_progressbar"; + source: "elm"; + script { + set_state(PART:"elm.swallow.toolbar", "moveup_progressbar", 0.0); //move toolbar+progressbar up + set_state(PART:"elm.swallow.view", "moveup_toolbar_progressbar", 0.0); + } + } + program { + name: "view_bg_default"; + signal: "elm,view,bg,state,default"; + source: "elm"; + script { + set_state(PART:"view_bg", "default", 0.0); + } + } + program { + name: "view_bg_disable"; + signal: "elm,view,bg,state,disabled"; + source: "elm"; + script { + set_state(PART:"view_bg", "disabled", 0.0); + } + } + program { + name: "selectall_show"; + signal: "selectall_show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "selectall_bg"; + target: "selectall_check_leftpadding"; + target: "selectall_check"; + target: "selectall_check_rightpadding"; + target: "selectall_text"; + target: "selectall_inner"; + } + program { + name: "selectall_hide"; + signal: "selectall_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "selectall_bg"; + target: "selectall_check_leftpadding"; + target: "selectall_check"; + target: "selectall_check_rightpadding"; + target: "selectall_text"; + target: "selectall_inner"; + } + }//PROGRAMS +} /* collections */ diff --git a/res/edc/animation.edc b/res/edc/animation.edc new file mode 100755 index 0000000..cb57b00 --- /dev/null +++ b/res/edc/animation.edc @@ -0,0 +1,299 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define CONTROL_BUTTON_STEP(_item_name_, _val_) \ +program { \ + signal: "signal."_item_name_".step."_val_; \ + source: "*"; \ + action: STATE_SET "step_"_val_ 0.0; \ + target: _item_name_; \ +} // CONTROL_BUTTON_STEP + + +collections { + group { + name: "animation"; + + parts { + part { + name: "loading.back"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 0 0 255; + } + } + + part { + name: "loading.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 288 54; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + color: FONT_COLOR; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 32; + text: ""; + align: 0.5 0.5; + } + } + } + + part { + name: "loading.image"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 138 138; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5;} + rel2 { relative: 0.5 0.5;} + image { normal: "gallery_loading_ani_01.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_01.png"; } + } + description { + state: "step_1" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_01.png"; } + } + description { + state: "step_2" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_02.png"; } + } + description { + state: "step_3" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_03.png"; } + } + description { + state: "step_4" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_04.png"; } + } + description { + state: "step_5" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_05.png"; } + } + description { + state: "step_6" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_06.png"; } + } + description { + state: "step_7" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_07.png"; } + } + description { + state: "step_8" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_08.png"; } + } + description { + state: "step_9" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_09.png"; } + } + description { + state: "step_10" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_10.png"; } + } + description { + state: "step_11" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_11.png"; } + } + description { + state: "step_12" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_12.png"; } + } + description { + state: "step_13" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_13.png"; } + } + description { + state: "step_14" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_14.png"; } + }description { + state: "step_15" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_15.png"; } + } + description { + state: "step_16" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_16.png"; } + } + description { + state: "step_17" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_17.png"; } + } + description { + state: "step_18" 0.0; + inherit: "show" 0.0; + image { normal: "gallery_loading_ani_18.png"; } + } + description { + state: "step_19" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_19.png"; } + } + description { + state: "step_20" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_20.png"; } + } + description { + state: "step_21" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_21.png"; } + } + description { + state: "step_22" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_22.png"; } + } + description { + state: "step_23" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_23.png"; } + } + description { + state: "step_24" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_24.png"; } + } + description { + state: "step_25" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_25.png"; } + } + description { + state: "step_26" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_26.png"; } + } + description { + state: "step_27" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_27.png"; } + } + description { + state: "step_28" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_28.png"; } + } + description { + state: "step_29" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_29.png"; } + } + description { + state: "step_30" 0.0; + inherit: "show" 0.0; + visible: 1; + image { normal: "gallery_loading_ani_30.png"; } + } + description { + state: "step_0" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + } // parts + + programs { + CONTROL_BUTTON_STEP( "loading.image", 0); + CONTROL_BUTTON_STEP( "loading.image", 1); + CONTROL_BUTTON_STEP( "loading.image", 2); + CONTROL_BUTTON_STEP( "loading.image", 3); + CONTROL_BUTTON_STEP( "loading.image", 4); + CONTROL_BUTTON_STEP( "loading.image", 5); + CONTROL_BUTTON_STEP( "loading.image", 6); + CONTROL_BUTTON_STEP( "loading.image", 7); + CONTROL_BUTTON_STEP( "loading.image", 8); + CONTROL_BUTTON_STEP( "loading.image", 9); + CONTROL_BUTTON_STEP( "loading.image", 10); + CONTROL_BUTTON_STEP( "loading.image", 11); + CONTROL_BUTTON_STEP( "loading.image", 12); + CONTROL_BUTTON_STEP( "loading.image", 13); + CONTROL_BUTTON_STEP( "loading.image", 14); + CONTROL_BUTTON_STEP( "loading.image", 15); + CONTROL_BUTTON_STEP( "loading.image", 16); + CONTROL_BUTTON_STEP( "loading.image", 17); + CONTROL_BUTTON_STEP( "loading.image", 18); + CONTROL_BUTTON_STEP( "loading.image", 19); + CONTROL_BUTTON_STEP( "loading.image", 20); + CONTROL_BUTTON_STEP( "loading.image", 21); + CONTROL_BUTTON_STEP( "loading.image", 22); + CONTROL_BUTTON_STEP( "loading.image", 23); + CONTROL_BUTTON_STEP( "loading.image", 24); + CONTROL_BUTTON_STEP( "loading.image", 25); + CONTROL_BUTTON_STEP( "loading.image", 26); + CONTROL_BUTTON_STEP( "loading.image", 27); + CONTROL_BUTTON_STEP( "loading.image", 28); + CONTROL_BUTTON_STEP( "loading.image", 29); + CONTROL_BUTTON_STEP( "loading.image", 30); + + } // programs + } // group +} // collections diff --git a/res/edc/control.edc b/res/edc/control.edc new file mode 100755 index 0000000..a70a5a4 --- /dev/null +++ b/res/edc/control.edc @@ -0,0 +1,1167 @@ + +#define BUTTON_PRESS_COLOR 56 149 205 255 +#define CONTROL_ICON_SIZE 136 114 + +#include "image_res.edc" +#include "vp_font.edc" + +// part macro + +#define CONTROL_BUTTON_PRESS_PART(_name_ , _w_ , _h_ , _align_x_ , _align_y_ , _rel_x1_ , _rel_x2_ , _rel_y1_, _rel_y2_ , _to_ , _img_def_ , _img_press_ ) \ +part { \ + name: _name_; \ + type: IMAGE; \ + scale: 1; \ + mouse_events: 1; \ + description { \ + state: "default" 0.0; \ + min: _w_ _h_; \ + fixed: 1 1; \ + align: _align_x_ _align_y_; \ + rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;} \ + rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;} \ + image { normal: _img_def_; border: 4 4 0 0;} \ + color: 255 255 255 255; \ + } \ + description { \ + state: "pressed" 0.0; \ + min: _w_ _h_; \ + fixed: 1 1; \ + align: _align_x_ _align_y_; \ + rel1 { relative: _rel_x1_ _rel_y1_; to : _to_;} \ + rel2 { relative: _rel_x2_ _rel_y2_; to : _to_;} \ + image { normal: _img_press_; border: 4 4 0 0;} \ + color: 255 255 255 255; \ + } \ + description { \ + state: "hide" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ +} // CONTROL_BUTTON_PRESS_PART + + + +// program macro + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + action: STATE_SET "pressed" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".released"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,clicked,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".clicked.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".clicked.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".clicked" _item_name_; \ +} // CONTROL_BUTTON_PROG + + +#define CONTROL_BUTTON_STEP(_item_name_, _val_) \ +program { \ + signal: "signal."_item_name_".step."_val_; \ + source: "*"; \ + action: STATE_SET "step_"_val_ 0.0; \ + target: _item_name_; \ +} // CONTROL_BUTTON_STEP + +#define CONTROL_BUTTON_STEP_LANDSCAPE(_item_name_, _val_) \ +program { \ + signal: "signal."_item_name_".landscape.step."_val_; \ + source: "*"; \ + action: STATE_SET "step_"_val_"_landscape" 0.0; \ + target: _item_name_; \ +} // CONTROL_BUTTON_STEP + +collections { + group { + name: "control"; + + script { + public val_volume_check = 0; /* 0: unmute, 1: mute */ + public val_play_status = 0; /* 0: pause , 1: resume */ + public val_display_mode = 0; /* 0: normal, 1: trim, 2: streaming, 3: DLNA*/ + public val_rotate_mode = 0; /* 0: portrate, 1: landscape */ + + public change_display_mode() { + + run_program(PROGRAM:"set.visible.off"); + + if(get_int(val_display_mode ) == 0) { /* normal mode */ + run_program(PROGRAM:"set.mode.normal"); + } + if(get_int(val_display_mode ) == 1) { /* trim mode */ + run_program(PROGRAM:"set.mode.trim"); + } + if(get_int(val_display_mode ) == 2) { /* streaming mode */ + run_program(PROGRAM:"set.mode.streaming"); + } + if(get_int(val_display_mode ) == 3) { /* dlna mode */ + run_program(PROGRAM:"set.mode.dlna"); + } + } /* change_display_mode */ + + + public set_volume_check() { + if(get_int(val_volume_check ) == 0) { + run_program(PROGRAM:"set.volume.unmute"); + } + else { + run_program(PROGRAM:"set.volume.mute"); + } + } /* set_volume_check */ + + public send_play_value() { + if(get_int(val_play_status ) == 0) { + run_program(PROGRAM:"send.play.resume"); + } + else { + run_program(PROGRAM:"send.play.pause"); + } + } /* send_play_value */ + + + public set_play_status() { + if(get_int(val_play_status ) == 0) { + run_program(PROGRAM:"set.play.default"); + } + else { + run_program(PROGRAM:"set.play.pause"); + } + } /* set_play_status */ + + + public set_play_button_press() { + if(get_int(val_play_status ) == 0) { + run_program(PROGRAM:"press.resume.button"); + } + else { + run_program(PROGRAM:"press.pause.button"); + } + } // set_play_button_press + } // script + + parts { + part { + name: "control.rect"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.5; + visible : 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 0 0 0; + } + } + + part { + name: "control.rect.1"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.2 1.0; } + color: 255 0 0 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 180 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.1406 1.0; } + + } + } + + part { + name: "control.rect.2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.2 0.0;} + rel2 { relative: 0.4 1.0;} + color: 0 255 0 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 271 0; + rel1 { relative: 0.18125 0.0;} + rel2 { relative: 0.39296 1.0;} + } + } + + part { + name: "control.rect.3"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.4 0.0; } + rel2 { relative: 0.6 1.0; } + color: 0 0 255 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 271 0; + rel1 { relative: 0.39453 0.0; } + rel2 { relative: 0.60625 1.0; } + } + } + + part { + name: "control.rect.4"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + min: 144 0; + fixed: 1 0; + visible : 1; + rel1 { relative: 0.6 0.0;} + rel2 { relative: 0.8 1.0;} + color: 255 255 0 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 271 0; + rel1 { relative: 0.60781 0.0; } + rel2 { relative: 0.81953 1.0; } + } + } + + part { + name: "control.rect.5"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible : 1; + min: 144 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 0.8 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 180 0; + rel1 { relative: 0.85937 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "control.rect.1.line"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 1 70; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 1.0 0.5; to: "control.rect.1"; } + rel2 { relative: 1.0 0.5; to: "control.rect.1"; } + color: 144 144 144 178; + } + } + + part { + name: "control.rect.2.line"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 1 70; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.5; to: "control.rect.5"; } + rel2 { relative: 0.0 0.5; to: "control.rect.5"; } + color: 144 144 144 178; + } + } + + part { + name: "control.volume.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.1"; } + rel2 { relative: 0.5 0.5; to: "control.rect.1"; } + image { normal: "white/panel/T01-2_btn_toolbar_volume.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + + } + + part { + name: "control.volume.mute.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.1"; } + rel2 { relative: 0.5 0.5; to: "control.rect.1"; } + image { normal: "white/panel/T02_volume_icon_Mute.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "control.back.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.5"; } + rel2 { relative: 0.5 0.5; to: "control.rect.5"; } + image { normal: "white/panel/T01-2_btn_toolbar_back.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "control.trim.done.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.1"; } + rel2 { relative: 0.5 0.5; to: "control.rect.1"; } + image { normal: "panel/T01-2_icon_toolbar_done.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + } + + part { + name: "control.trim.cancel.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.5"; } + rel2 { relative: 0.5 0.5; to: "control.rect.5"; } + image { normal: "panel/T01-2_icon_toolbar_cancel.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + } + + part { + name: "control.play.button"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.3"; } + rel2 { relative: 0.5 0.5; to: "control.rect.3"; } + image { normal: "white/control/T01-2_icon_toolbar_play.png"; } + color: 255 255 255 255; + } + description { + state: "pause" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_pause.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "press_resume" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_play.png"; } + color: BUTTON_PRESS_COLOR; + } + description { + state: "press_pause" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_pause.png"; } + color: BUTTON_PRESS_COLOR; + } + } + + + // normal mode control part + part { + name: "control.normal.rew.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.2";} + rel2 { relative: 0.5 0.5; to: "control.rect.2";} + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "step_4" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_previous.png"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "control.normal.ff.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: CONTROL_ICON_SIZE; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.4"; } + rel2 { relative: 0.5 0.5; to: "control.rect.4";} + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "step_4" 0.0; + inherit: "default" 0.0; + image { normal: "white/control/T01-2_icon_toolbar_next.png"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + visible: 1; + } + + } + part { + name: "control.normal.rew.speed.swallow"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 112 297; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.1; to: "control.rect.2";} + rel2 { relative: 0.5 0.1; to: "control.rect.2";} + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "control.normal.ff.speed.swallow"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 112 297; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.1; to: "control.rect.4";} + rel2 { relative: 0.5 0.1; to: "control.rect.4";} + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // <-- normal mode control part + + + + // --> trim mode control part + part { + name: "control.trim.rew.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.2"; } + rel2 { relative: 0.5 0.5; to: "control.rect.2"; } + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_reverse.png"; } + } + } + + part { + name: "control.trim.ff.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: "control.rect.4"; } + rel2 { relative: 0.5 0.5; to: "control.rect.4"; } + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + color: BUTTON_PRESS_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "step_1" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + } + description { + state: "step_2" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + } + description { + state: "step_3" 0.0; + inherit: "default" 0.0; + image { normal: "trim/T01-2_icon_toolbar_forward.png"; } + } + } // <-- trim mode control part + } // parts + + + programs { + program { + signal: "signal.control.mode.normal"; + source: "*"; + script { + set_int(val_display_mode, 0); + change_display_mode(); + set_play_status(); + } + } + + program { + signal: "signal.control.mode.trim"; + source: "*"; + script { + set_int(val_display_mode, 1); + change_display_mode(); + set_play_status(); + } + } + + program { + signal: "signal.control.mode.streaming"; + source: "*"; + script { + set_int(val_display_mode, 2); + change_display_mode(); + set_play_status(); + } + } + program { + signal: "signal.control.mode.dlna"; + source: "*"; + script { + set_int(val_display_mode, 3); + change_display_mode(); + set_play_status(); + } + } + + program { + signal: "signal.control.mode.visible.off"; + source: "*"; + after: "set.visible.off"; + } + + program { + name: "set.visible.off"; + source: "*"; + action: STATE_SET "hide" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + target: "control.volume.mute.button"; + target: "control.normal.rew.button"; + target: "control.normal.ff.button"; + target: "control.trim.rew.button"; + target: "control.trim.ff.button"; + target: "control.trim.done.button"; + target: "control.trim.cancel.button"; + } + + program { + name: "set.mode.normal"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + target: "control.normal.rew.button"; + target: "control.normal.ff.button"; + } + + program { + name: "set.mode.trim"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.trim.rew.button"; + target: "control.trim.ff.button"; + target: "control.trim.done.button"; + target: "control.trim.cancel.button"; + } + + program { + name: "set.mode.streaming"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + } + + program { + name: "set.mode.dlna"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "control.play.button"; + target: "control.back.button"; + target: "control.volume.button"; + target: "control.normal.rew.button"; + target: "control.normal.ff.button"; + + } + + program { + name: "control.normal.rew.button.press"; + source: "control.normal.rew.button"; + signal: "signal.control.normal.rew.button.down"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.rew.button", "pressed", 0.0); + } + else + { + set_state(PART:"control.normal.rew.button", "pressed_landscape", 0.0); + } + } + } + + program { + name: "control.normal.rew.button.up"; + source: "control.normal.rew.button"; + signal: "signal.control.normal.rew.button.up"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.rew.button", "portrate", 0.0); + } + else + { + set_state(PART:"control.normal.rew.button", "landscape", 0.0); + } + } + } + + program { + name: "control.normal.ff.button.press"; + source: "control.normal.ff.button"; + signal: "signal.control.normal.ff.button.down"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.ff.button", "pressed", 0.0); + } + else + { + set_state(PART:"control.normal.ff.button", "pressed_landscape", 0.0); + } + } + } + + program { + name: "control.normal.ff.button.up"; + source: "control.normal.ff.button"; + signal: "signal.control.normal.ff.button.up"; + script: + { + if(get_int(val_rotate_mode) == 0) + { + set_state(PART:"control.normal.ff.button", "portrate", 0.0); + } + else + { + set_state(PART:"control.normal.ff.button", "landscape", 0.0); + } + } + } + + + // --> mute/unmute check prog + program { + signal: "signal.control.volume.button.mute"; + source: "*"; + script { + set_int(val_volume_check, 1); + set_volume_check(); + } + } + + program { + signal: "signal.control.volume.button.unmute"; + source: "*"; + script { + set_int(val_volume_check, 0); + set_volume_check(); + } + } + + program { + name: "set.volume.unmute"; + action: STATE_SET "default" 0.0; + target: "control.volume.button"; + } + program { + name: "set.volume.mute"; + action: STATE_SET "mute" 0.0; + target: "control.volume.button"; + } + // --> mute/unmute check prog + + // --> play status part + program { + name: "press.resume.button"; + action: STATE_SET "press_resume" 0.0; + target: "control.play.button"; + } + program { + name: "press.pause.button"; + action: STATE_SET "press_pause" 0.0; + target: "control.play.button"; + } + + program { + name: "control.play.button.down"; + source: "control.play.button"; + signal: "signal.control.play.button.down"; + script: {set_play_button_press(); } + } + + program { + name: "control.play.button.up"; + source: "control.play.button"; + signal: "signal.control.play.button.up"; + script: { send_play_value(); } + } + + program { + signal: "signal.control.play.resume"; + source: "*"; + script { + set_int(val_play_status, 1); + set_play_status(); + } + } + + program { + signal: "signal.control.play.pause"; + source: "*"; + script { + set_int(val_play_status, 0); + set_play_status(); + } + } + + program { + name: "set.play.default"; + source: "control.play.button"; + action: STATE_SET "default" 0.0; + target: "control.play.button"; + } + program { + name: "set.play.pause"; + source: "control.play.button"; + action: STATE_SET "pause" 0.0; + target: "control.play.button"; + } + + program { + name: "send.play.pause"; + action: SIGNAL_EMIT "signal.control.play.pause.press" "control.play.button"; + } + + program { + name: "send.play.resume"; + action: SIGNAL_EMIT "signal.control.play.resume.press" "control.play.button"; + } + + program { + signal: "signal.control.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + set_state(PART:"control.normal.rew.button", "portrate", 0.0); + set_state(PART:"control.normal.ff.button", "portrate", 0.0); + set_state(PART:"control.rect.1", "default", 0.0); + set_state(PART:"control.rect.2", "default", 0.0); + set_state(PART:"control.rect.3", "default", 0.0); + set_state(PART:"control.rect.4", "default", 0.0); + set_state(PART:"control.rect.5", "default", 0.0); + } + } + + program { + signal: "signal.control.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + set_state(PART:"control.normal.rew.button", "landscape", 0.0); + set_state(PART:"control.normal.ff.button", "landscape", 0.0); + set_state(PART:"control.rect.1", "landscape", 0.0); + set_state(PART:"control.rect.2", "landscape", 0.0); + set_state(PART:"control.rect.3", "landscape", 0.0); + set_state(PART:"control.rect.4", "landscape", 0.0); + set_state(PART:"control.rect.5", "landscape", 0.0); + } + } + + program { + signal: "signal.control.streaming.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + + set_state(PART:"control.rect.1", "default", 0.0); + set_state(PART:"control.rect.2", "default", 0.0); + set_state(PART:"control.rect.3", "default", 0.0); + set_state(PART:"control.rect.4", "default", 0.0); + set_state(PART:"control.rect.5", "default", 0.0); + } + } + + program { + signal: "signal.control.streaming.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + set_state(PART:"control.rect.1", "landscape", 0.0); + set_state(PART:"control.rect.2", "landscape", 0.0); + set_state(PART:"control.rect.3", "landscape", 0.0); + set_state(PART:"control.rect.4", "landscape", 0.0); + set_state(PART:"control.rect.5", "landscape", 0.0); + } + } + + program { + signal: "signal.control.volume.set.mute"; + source: "*"; + script { + set_state(PART:"control.volume.button", "hide", 0.0); + set_state(PART:"control.volume.mute.button", "default", 0.0); + } + } + + program { + signal: "signal.control.volume.unset.mute"; + source: "*"; + script { + set_state(PART:"control.volume.button", "default", 0.0); + set_state(PART:"control.volume.mute.button", "hide", 0.0); + } + } + + // <-- play status part + + // -->common control prog + CONTROL_BUTTON_PROG("control.play.button"); + CONTROL_BUTTON_PROG("control.back.button"); + CONTROL_BUTTON_PROG("control.volume.button"); + CONTROL_BUTTON_PROG("control.volume.mute.button"); + // <-- common control prog + + // -->normal mode prog + CONTROL_BUTTON_PROG("control.normal.ff.button"); + CONTROL_BUTTON_PROG("control.normal.rew.button"); + + CONTROL_BUTTON_STEP("control.normal.ff.button", 1); + CONTROL_BUTTON_STEP("control.normal.ff.button", 2); + CONTROL_BUTTON_STEP("control.normal.ff.button", 3); + CONTROL_BUTTON_STEP("control.normal.ff.button", 4); + + CONTROL_BUTTON_STEP("control.normal.rew.button", 1); + CONTROL_BUTTON_STEP("control.normal.rew.button", 2); + CONTROL_BUTTON_STEP("control.normal.rew.button", 3); + CONTROL_BUTTON_STEP("control.normal.rew.button", 4); + + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 1); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 2); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 3); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.ff.button", 4); + + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 1); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 2); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 3); + CONTROL_BUTTON_STEP_LANDSCAPE("control.normal.rew.button", 4); + // <-- normal mode prog + + // --> trim mode prog + CONTROL_BUTTON_PROG("control.trim.ff.button"); + CONTROL_BUTTON_PROG("control.trim.rew.button"); + + CONTROL_BUTTON_STEP("control.trim.ff.button", 1); + CONTROL_BUTTON_STEP("control.trim.ff.button", 2); + CONTROL_BUTTON_STEP("control.trim.ff.button", 3); + + CONTROL_BUTTON_STEP("control.trim.rew.button", 1); + CONTROL_BUTTON_STEP("control.trim.rew.button", 2); + CONTROL_BUTTON_STEP("control.trim.rew.button", 3); + + CONTROL_BUTTON_PROG("control.trim.done.button"); + CONTROL_BUTTON_PROG("control.trim.cancel.button"); + // <-- trim mode prog + + } // programs + } // group +} // collections diff --git a/res/edc/custom/vp-naviframe-custom.edc b/res/edc/custom/vp-naviframe-custom.edc new file mode 100755 index 0000000..32c3df8 --- /dev/null +++ b/res/edc/custom/vp-naviframe-custom.edc @@ -0,0 +1,901 @@ +#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 200 +#define NAVIFRAME_TOOLBAR_BG_COLOR_INC 248 246 239 255 +#define NAVIFRAME_TITLE_TOP_PADDING_INC 0 32 +#define NAVIFRAME_TITLE_H_INC 111 +#define NAVIFRAME_TAB_TITLE_H_INC 165 +#define NAVIFRAME_TOOLBAR_HEIGHT_INC 0 +#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 68 68 +#define NAVIFRAME_PREV_FUNC_BTN_SIZE_INC 60 60 +#define NAVIFRAME_TITLE_TAB_H_INC 68 +#define NAVIFRAME_TITLE_TAB_LARGE_H_INC 111 +#define NAVIFRAME_TITLE_TAB_FONT_SIZE_INC 44 +#define NAVIFRAME_TITLE_TAB_TEXT_H_INC 87 +#define NAVIFRAME_TITLE_FONT_SIZE_INC 56 +#define NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC 44 +#define NAVIFRAME_ICON_SIZE_INC 38 38 +#define NAVIFRAME_PADDING_INC 16 0 +#define NAVIFRAME_PADDING2_INC 18 0 +#define NAVIFRAME_PADDING3_INC 8 0 +#define NAVIFRAME_BOTTOM_TEXT_PADDING_INC 0 11 +#define NAVIFRAME_BOTTOM_RIGHT_PADDING_INC 26 11 +#define NAVIFRAME_BOTTOM_PADDING_INC 0 10 +#define NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC 115 0 +#define NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 15 +#define NAVIFRAME_ICON_PADDING_INC 70 0 +#define NAVIFRAME_TITLE_TEXT_COLOR_INC 59 115 182 255 +#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 59 115 182 255 +#define NAVIFRAME_SUBTITLE_FONT_SIZE_INC 32 + +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 + +group { + name:"elm/naviframe/base/video/default"; + parts + { + part { + name: "base"; + description { + state: "default" 0.0; + } + } + } +} + +group { + name:"elm/naviframe/item/video/basic/default"; + alias:"elm/naviframe/item/video/1line/default"; + script { + public tbar_bg = 0; //Toolbar BG Show call count + public buttons_visible = 0; //when both buttons are visible + public toolbar_buttons_visible = 0; //when both toolbar buttons are visible + } + parts { + part { + name: "base"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { + state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { + name: "title_bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + visible: 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + } + } + part { + name: "title_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "top_padding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_TITLE_TOP_PADDING_INC; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 0.0; to: "title_bg"; } + visible: 0; + } + } + part { + name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING_INC; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { + state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_ICON_PADDING_INC; + } + } + + part { + name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "title_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "toolbar_bg"; + } + description { + state: "sip_visible" 0.0; + inherit: "default" 0.0; + rel2.relative: 1.0 1.0; + rel2.to: "base"; + } + } + part { + name: "content_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { + name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING2_INC; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { + name: "padding_bottom_text"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_BOTTOM_TEXT_PADDING_INC; + fixed: 0 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { + name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.0 0.5; + text_class: "slp"; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 1; + rel1 { relative: 1.0 1.0; to_x: "padding_center_text1"; to_y: "top_padding"; } + rel2 { relative: 0.0 0.0; to_x: "padding_center_text2"; to_y: "padding_bottom_text"; } + } + description { + state: "subtitle_is_set" 0.0; + inherit: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.0 0.2; + text_class: "slp"; + } + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_x: "padding_center_text1"; to_y: "top_padding"; } + } + } + part { + name: "elm.text.subtitle"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_SUBTITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + text_class: "slp"; + align: 0.0 1.0; + } + color: NAVIFRAME_SUBTITLE_TEXT_COLOR_INC; + align: 0.0 1.0; + fixed: 1 0; + rel1 { relative: 1.0 1.0; to_x: "padding_center_text1"; to_y: "elm.text.title"; } + rel2 { relative: 0.0 1.0; to_x: "padding_center_text2"; to_y: "elm.text.title"; } + } + } + + part { + name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "elm.text.title"; } + rel2 { relative: 0.0 1.0; to: "elm.text.title"; } + fixed: 1 0; + min: NAVIFRAME_PADDING_INC; + visible: 0; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { + name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_btns_padding"; } + rel2 { relative: 0.0 1.0; to: "title_btns_padding"; } + } + } + part { + name: "title_btns_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 1; + align: 1 0.5; + visible: 0; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_PADDING2_INC; + } + } + part { + name: "bottom_right_padding"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 1; + align: 1.0 1.0; + rel1 { relative: 1.0 1.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_BOTTOM_RIGHT_PADDING_INC; + } + } + part { + name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 1.0 1.0; to_x: "title_bg"; to_y: "top_padding"; } + rel2 { relative: 0.0 0.0; to: "bottom_right_padding"; } + } + } + part { + name: "toolbar_bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_TOOLBAR_BG_COLOR_INC; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: 0 NAVIFRAME_TOOLBAR_HEIGHT_INC; + max: 999999 NAVIFRAME_TOOLBAR_HEIGHT_INC; + visible: 1; + } + description { + state: "sip_visible" 0.0; + inherit: "default" 0.0; + align: 0.0 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + visible: 1; + } + } + part { + name: "more_btn_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "toolbar_bg"; } + rel2 { relative: 0.0 1.0; to: "toolbar_bg"; } + visible: 0; + } + } + part { + name: "toolbar_more_btn"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + max: NAVIFRAME_PREV_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "more_btn_bg"; + rel2.to: "more_btn_bg"; + } + } + part { + name: "prev_btn_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "toolbar_bg"; } + rel2.to: "toolbar_bg"; + visible: 0; + } + } + part { + name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + max: NAVIFRAME_PREV_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "prev_btn_bg"; + rel2.to: "prev_btn_bg"; + } + } + part { + name: "toolbar_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "more_btn_bg"; } + rel2 { relative: 0.0 1.0; to: "prev_btn_bg"; } + } + } + part { + name: "toolbar_button1"; + type: SWALLOW; + scale: 1; + clip_to: "toolbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "toolbar_clip"; + rel2.to: "toolbar_clip"; + } + description { + state: "buttons_set" 0.0; + inherit: "default" 0.0; + align: 1.0 0.5; + rel2 { relative: 0.0 1.0; to: "toolbar_button_padding"; } + } + } + + part { + name: "toolbar_button_padding"; + type: RECT; + scale : 1; + description { + state: "default" 0.0; + min: NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 0; + max: NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 9999; + fixed : 1 0; + visible: 0; + align: 0.5 0.5; + rel1.to: "toolbar_clip"; + rel2.to: "toolbar_clip"; + } + } + part { + name: "toolbar_button2"; + type: SWALLOW; + scale: 1; + clip_to: "toolbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "toolbar_clip"; + rel2.to: "toolbar_clip"; + } + description { + state: "buttons_set" 0.0; + inherit: "default" 0.0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "toolbar_button_padding"; } + } + } + } + programs { + program { + name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { + name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { + name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { + name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { + name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { + name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { + name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { + name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "title_bg"; + transition: LINEAR 0.4; + after: "show_finished"; + } + program { + name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + transition: LINEAR 0.4; + after: "hide_finished"; + } + program { + name: "subtitle_show"; + signal: "elm,state,subtitle,show"; + source: "elm"; + script { + set_state(PART:"elm.text.title", "subtitle_is_set", 0.0); + } + } + program { + name: "subtitle_hide"; + signal: "elm,state,subtitle,hide"; + source: "elm"; + script { + set_state(PART:"elm.text.title", "default", 0.0); + } + } + program { + name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + } + } + program { + name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + } + } + program { + name: "icon_show"; + signal: "elm,state,icon,show"; + source: "elm"; + action: STATE_SET "icon" 0.0; + target: "padding_center_text1"; + } + program { + name: "icon_hide"; + signal: "elm,state,icon,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "padding_center_text1"; + } + program { + name: "sip_show"; + signal: "elm,state,sip,shown"; + source: ""; + script { + if (get_int(tbar_bg) <= 0) + set_state(PART:"toolbar_bg", "default", 0.0); + else + { + set_state(PART:"toolbar_bg", "sip_visible", 0.0); + set_state(PART:"elm.swallow.content", "sip_visible", 0.0); + } + } + } + + program { + name: "sip_hide"; + signal: "elm,state,sip,hidden"; + source: ""; + script { + if (get_int(tbar_bg) <= 0) + set_state(PART:"toolbar_bg", "default", 0.0); + else + { + set_state(PART:"toolbar_bg", "visible", 0.0); + set_state(PART:"elm.swallow.content", "default", 0.0); + } + } + } + program { + name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(buttons_visible, get_int(buttons_visible) + 1); + set_state(PART:"bottom_right_padding", "visible", 0.0); + if (get_int(buttons_visible) >= 2) + set_state(PART:"title_btns_padding", "visible", 0.0); + } + } + program { + name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(buttons_visible, get_int(buttons_visible) - 1); + set_state(PART:"title_btns_padding", "default", 0.0); + if (get_int(buttons_visible) == 0) + set_state(PART:"bottom_right_padding", "default", 0.0); + } + } + program { + name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + script { + set_int(buttons_visible, get_int(buttons_visible) + 1); + set_state(PART:"bottom_right_padding", "visible", 0.0); + if (get_int(buttons_visible) >= 2) + set_state(PART:"title_btns_padding", "visible", 0.0); + } + } + program { + name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + script { + set_int(buttons_visible, get_int(buttons_visible) - 1); + set_state(PART:"title_btns_padding", "default", 0.0); + if (get_int(buttons_visible) == 0) + set_state(PART:"bottom_right_padding", "default", 0.0); + } + } + program { + name: "more_btn_show"; + signal: "elm,state,toolbar_more_btn,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + } + } + program { + name: "more_btn_hide"; + signal: "elm,state,toolbar_more_btn,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + } + } + program { + name: "toolbar_button1_show"; + signal: "elm,state,toolbar_button1,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) + 1); + if (get_int(toolbar_buttons_visible) >= 2) + { + set_state(PART:"toolbar_button1", "buttons_set", 0.0); + set_state(PART:"toolbar_button2", "buttons_set", 0.0); + } + } + } + program { + name: "toolbar_button1_hide"; + signal: "elm,state,toolbar_button1,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) - 1); + set_state(PART:"toolbar_button1", "default", 0.0); + set_state(PART:"toolbar_button2", "default", 0.0); + } + } + program { + name: "toolbar_button2_show"; + signal: "elm,state,toolbar_button2,show"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,show", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) + 1); + if (get_int(toolbar_buttons_visible) >= 2) + { + set_state(PART:"toolbar_button1", "buttons_set", 0.0); + set_state(PART:"toolbar_button2", "buttons_set", 0.0); + } + } + } + program { + name: "toolbar_button2_hide"; + signal: "elm,state,toolbar_button2,hide"; + source: "elm"; + script { + emit("elm,state,toolbar_bg,hide", "elm"); + set_int(toolbar_buttons_visible, get_int(toolbar_buttons_visible) - 1); + set_state(PART:"toolbar_button1", "default", 0.0); + set_state(PART:"toolbar_button2", "default", 0.0); + } + } + program { + name: "toolbar_bg_show"; + signal: "elm,state,toolbar_bg,show"; + source: "elm"; + script { + set_state(PART:"toolbar_bg", "visible", 0.0); + set_int(tbar_bg, get_int(tbar_bg) + 1); + } + } + program { + name: "toolbar_bg_hide"; + signal: "elm,state,toolbar_bg,hide"; + source: "elm"; + script { + set_int(tbar_bg, get_int(tbar_bg) - 1); + if (get_int(tbar_bg) <= 0) + set_state(PART:"toolbar_bg", "default", 0.0); + } + } + program { + name: "toolbar_open"; + signal: "elm,state,toolbar,open"; + source: ""; + action: STATE_SET "visible" 0.0; + target: "toolbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "toolbar_close"; + signal: "elm,state,toolbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "toolbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "toolbar_instant_open"; + signal: "elm,state,toolbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,toolbar_button1,show", "elm"); + } + } + program { + name: "toolbar_instant_close"; + signal: "elm,state,toolbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,toolbar_button1,hide", "elm"); + } + } + program { + name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { + name: "hide_finished"; + action: SIGNAL_EMIT "elm,action,hide,finished" ""; + } + + program { + name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { + name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + program { + name: "display_mode_compress"; + signal: "display,mode,compress"; + source: ""; + action: SIGNAL_EMIT "elm,state,toolbar,instant_close" ""; + } + program { + name: "display_mode_default"; + signal: "display,mode,default"; + source: ""; + action: SIGNAL_EMIT "elm,state,toolbar,instant_open" ""; + } + } +} + diff --git a/res/edc/detail.edc b/res/edc/detail.edc new file mode 100755 index 0000000..17b6c2b --- /dev/null +++ b/res/edc/detail.edc @@ -0,0 +1,34 @@ +#include "image_res.edc" +#include "vp_font.edc" + +collections { + group { + name: "detail"; + + parts { + part { + name: "detail.background"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + } + part { + name: "detail.list"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + } /* parts */ + } /* group */ +} /* collections */ \ No newline at end of file diff --git a/res/edc/hidden_button_panel.edc b/res/edc/hidden_button_panel.edc new file mode 100755 index 0000000..e0b9ce2 --- /dev/null +++ b/res/edc/hidden_button_panel.edc @@ -0,0 +1,187 @@ +#include "image_res.edc" +#include "vp_font.edc" +/* program macro */ + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + action: STATE_SET "pressed" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} /* CONTROL_BUTTON_PROG */ + +collections { + group { + name: "panel.button"; + script { + public val_repeat_mode = 0; /* 0: repeat_off, 1: repeat_one, 2: repeate_all */ + public change_repeat() { + if(get_int(val_repeat_mode) == 0) { + set_int(val_repeat_mode, 1); + run_program(PROGRAM:"send.panel.button.repeat.one"); + } + else if(get_int(val_repeat_mode) == 1) { + set_int(val_repeat_mode, 2); + run_program(PROGRAM:"send.panel.button.repeat.all"); + } + else { + set_int(val_repeat_mode, 0); + run_program(PROGRAM:"send.panel.button.repeat.off"); + } + } + } + + parts { + part { + name: "panel.button.sa"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 70 56; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.0 1.0;} + color: 255 255 255 255; + image { normal: "panel/T01-2_icon_controller_sa.png"; } + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + image { normal: "panel/T01-2_icon_controller_sa.png"; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "panel.button.repeat"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 70 56; + fixed: 1 1; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 255 255 255; + image { normal: "panel/T01-2_icon_controller_repeat.png"; } + } + description { + state: "repeat_one" 0.0; + inherit: "default" 0.0; + image { normal: "panel/T01-2_icon_controller_repeat_1.png"; } + } + description { + state: "repeat_all" 0.0; + inherit: "default" 0.0; + image { normal: "panel/T01-2_icon_controller_repeat_all.png"; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + } /* parts */ + + programs { + CONTROL_BUTTON_PROG("panel.button.sa"); + CONTROL_BUTTON_PROG("panel.button.repeat"); + + program { + signal: "signal.panel.button.streaming.mode"; + source: "*"; + action: STATE_SET "hide" 0.0; + target: "panel.button.repeat"; + } + + program { + signal: "signal.panel.button.repeat.down"; + source: "*"; + script: { + if(get_int(val_repeat_mode) == 0) { + set_state(PART:"panel.button.repeat", "default", 0.0); + } + else if(get_int(val_repeat_mode) == 1) { + set_state(PART:"panel.button.repeat", "repeat_one", 0.0); + } + else if(get_int(val_repeat_mode) == 2) { + set_state(PART:"panel.button.repeat", "repeat_all", 0.0); + } + } + } + + program { + signal: "signal.panel.button.repeat.up"; + source: "*"; + script: { + change_repeat(); + } + } + + program { + name: "send.panel.button.repeat.off"; + action: SIGNAL_EMIT "signal.panel.button.repeat.off" "panel.button.repeat"; + } + + program { + name: "send.panel.button.repeat.one"; + action: SIGNAL_EMIT "signal.panel.button.repeat.one" "panel.button.repeat"; + } + + program { + name: "send.panel.button.repeat.all"; + action: SIGNAL_EMIT "signal.panel.button.repeat.all" "panel.button.repeat"; + } + + program { + signal: "signal.panel.button.repeat.off"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "panel.button.repeat"; + } + program { + signal: "signal.panel.button.repeat.one"; + source: "*"; + action: STATE_SET "repeat_one" 0.0; + target: "panel.button.repeat"; + } + program { + signal: "signal.panel.button.repeat.all"; + source: "*"; + action: STATE_SET "repeat_all" 0.0; + target: "panel.button.repeat"; + } + + } /* programs */ + } /* group */ +} /* collections */ diff --git a/res/edc/image_res.edc b/res/edc/image_res.edc new file mode 100755 index 0000000..6613a6c --- /dev/null +++ b/res/edc/image_res.edc @@ -0,0 +1,137 @@ + +images { + image: "gallery_video_player_bg.png" COMP; + image: "gallery_loading_ani_01.png" COMP; + image: "gallery_loading_ani_02.png" COMP; + image: "gallery_loading_ani_03.png" COMP; + image: "gallery_loading_ani_04.png" COMP; + image: "gallery_loading_ani_05.png" COMP; + image: "gallery_loading_ani_06.png" COMP; + image: "gallery_loading_ani_07.png" COMP; + image: "gallery_loading_ani_08.png" COMP; + image: "gallery_loading_ani_09.png" COMP; + image: "gallery_loading_ani_10.png" COMP; + image: "gallery_loading_ani_11.png" COMP; + image: "gallery_loading_ani_12.png" COMP; + image: "gallery_loading_ani_13.png" COMP; + image: "gallery_loading_ani_14.png" COMP; + image: "gallery_loading_ani_15.png" COMP; + image: "gallery_loading_ani_16.png" COMP; + image: "gallery_loading_ani_17.png" COMP; + image: "gallery_loading_ani_18.png" COMP; + image: "gallery_loading_ani_19.png" COMP; + image: "gallery_loading_ani_20.png" COMP; + image: "gallery_loading_ani_21.png" COMP; + image: "gallery_loading_ani_22.png" COMP; + image: "gallery_loading_ani_23.png" COMP; + image: "gallery_loading_ani_24.png" COMP; + image: "gallery_loading_ani_25.png" COMP; + image: "gallery_loading_ani_26.png" COMP; + image: "gallery_loading_ani_27.png" COMP; + image: "gallery_loading_ani_28.png" COMP; + image: "gallery_loading_ani_29.png" COMP; + image: "gallery_loading_ani_30.png" COMP; + image: "T01_toolbar_bg.png" COMP; + image: "T01_toolbar_press.png" COMP; + image: "00_winset_control_top_arrow.png" COMP; + image: "T01_Nocontents_multimedia.png" COMP; + image: "T01-2_hold_icon_lock.png" COMP; + + image: "subtitle/T01-2_sync_slowly.png" COMP; + image: "subtitle/T01-2_sync_btn_bg.png" COMP; + image: "subtitle/T01-2_sync_faster.png" COMP; + image: "subtitle/T01-2_sync_list_press.png" COMP; + + image: "option/T01-2_icon_function_bg.png" COMP; + image: "option/T01-2_icon_function_bookmark.png" COMP; + image: "option/T01-2_icon_function_screenmode.png" COMP; + image: "option/T01-2_icon_function_screenmode02.png" COMP; + image: "option/T01-2_icon_function_screenmode03.png" COMP; + image: "option/T01-2_icon_function_select_bg.png" COMP; + image: "option/T01-2_icon_function_share.png" COMP; + image: "option/T01-2_icon_controller_multiwin.png" COMP; + image: "option/T01-2_icon_controller_more.png" COMP; + image: "option/T01-2_icon_controller_trim.png" COMP; + image: "option/T01-2_icon_controller_connection_info.png" COMP; + image: "option/T01-2_icon_controller_repeat_off.png" COMP; + image: "option/T01-2_icon_controller_repeat_on.png" COMP; + image: "option/T01-2_icon_controller_sa.png" COMP; + + image: "bookmark/T01-2_function_tray.png" COMP; + image: "bookmark/T01-2_icon_thumbnail_bg.png" COMP; + image: "bookmark/T01-2_btn_bookmark.png" COMP; + image: "bookmark/T01-2_btn_bookmark_press.png" COMP; + image: "bookmark/T01-2_bookmark_thumbnail.png" COMP; + image: "bookmark/T01-2_btn_remove_bookmark.png" COMP; + image: "bookmark/T01-2_btn_remove_bookmark_press.png" COMP; + + image: "panel/T01-2_controller_progress_bar.png" COMP; + image: "panel/T01-2_controller_progress_bg.png" COMP; + image: "panel/T01-2_icon_toolbar_cancel.png" COMP; + image: "panel/T01-2_icon_toolbar_done.png" COMP; + + image: "adjustment/T01-2_controller_progress_handle.png" COMP; + image: "adjustment/T01-2_controller_progress_handle_press.png" COMP; + image: "adjustment/T01-2_fine_adjustment_bg.png" COMP; + image: "adjustment/T01-2_fine_adjustment_bg_ef.png" COMP; + image: "adjustment/T01-2_fine_adjustment_progress_bar.png" COMP; + image: "adjustment/T01-2_fine_adjustment_progress_bg.png" COMP; + image: "adjustment/T01-2_fine_adjustment_progress_handle.png" COMP; + + image: "trim/T01-2_controller_trimming_handle_ending_press.png" COMP; + image: "trim/T01-2_controller_trimming_handle_ending.png" COMP; + image: "trim/T01-2_controller_trimming_handle_beginning_press.png" COMP; + image: "trim/T01-2_controller_trimming_handle_beginning.png" COMP; + image: "trim/T01-2_controller_track_ball.png" COMP; + image: "trim/T01-2_icon_toolbar_forward.png" COMP; + image: "trim/T01-2_icon_toolbar_reverse.png" COMP; + + + image: "mw/T01-2_icon_close.png" COMP; + image: "mw/T01-2_icon_full_size.png" COMP; + image: "mw/T01-2_icon_hide_panel.png" COMP; + image: "mw/T01-2_icon_open_panel.png" COMP; + image: "mw/T01-2_multiscreen_bg.png" COMP; + image: "mw/T01-2_multiscreen_bg_press.png" COMP; + image: "mw/T01-2_multiscreen_player_bg.png" COMP; + image: "mw/T01-2_player_icon_FF.png" COMP; + image: "mw/T01-2_player_icon_FF_press.png" COMP; + image: "mw/T01-2_player_icon_Pause.png" COMP; + image: "mw/T01-2_player_icon_Pause_press.png" COMP; + image: "mw/T01-2_player_icon_Play.png" COMP; + image: "mw/T01-2_player_icon_Play_press.png" COMP; + image: "mw/T01-2_player_icon_REW.png" COMP; + image: "mw/T01-2_player_icon_REW_press.png" COMP; + image: "mw/T01-2_resize_controller.png" COMP; + image: "mw/T01-2_resize_controller_press.png" COMP; + + // FOR GENLIST SWEEP and check box + image: "00_sweep_list_bg.png" COMP; + image: "T01_checkbox.png" COMP; + image: "00_check_bg_dim.png" COMP; + image: "T01_check.png" COMP; + image: "T01_grid_select_check.png" COMP; + image: "00_grid_select_check.png" COMP; + image: "T01_video_list_progress_bar.png" COMP; + image: "00_winset_list_progress_bg.png" COMP; + + image: "white/panel/T01-2_btn_toolbar_back.png" COMP; + image: "white/panel/T01-2_btn_toolbar_volume.png" COMP; + image: "white/panel/T02_volume_icon_Mute.png" COMP; + image: "white/control/T01-2_icon_toolbar_next.png" COMP; + image: "white/control/T01-2_icon_toolbar_play.png" COMP; + image: "white/control/T01-2_icon_toolbar_previous.png" COMP; + image: "white/control/T01-2_icon_toolbar_stop.png" COMP; + image: "white/control/T01-2_icon_toolbar_pause.png" COMP; + + image: "white/common/T01-2_popup_bg.png" COMP; + image: "white/common/T01-2_popup_arrow.png" COMP; + + image: "volume/T01-2_volume_icon_02.png" COMP; + image: "volume/T01-2_volume_icon_01.png" COMP; + image: "volume/T01-2_player_volume_handle_press.png" COMP; + image: "volume/T01-2_player_volume_handle.png" COMP; + image: "volume/T01-2_player_progress_bg.png" COMP; + image: "volume/T01-2_player_progress_bar.png" COMP; +} + diff --git a/res/edc/main.edc b/res/edc/main.edc new file mode 100755 index 0000000..d0fe9e8 --- /dev/null +++ b/res/edc/main.edc @@ -0,0 +1,557 @@ +#define GRAY_RECT_COLOR 128 128 128 128 +#define SPEEDBOX_OFFSET_Y 225 + + +#include "image_res.edc" +#include "vp_font.edc" + +collections { + group { + name: "main"; + + parts { + part { + name: "main.background"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 0; + } + } + part { + name: "main.nocontents.bg"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 399 399; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.4;} + rel2 { relative: 0.5 0.4;} + image { normal: "gallery_video_player_bg.png"; border: 7 7 0 0; } + color: GRAY_RECT_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "main.nocontents.image"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 144 144; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.4;} + rel2 { relative: 0.5 0.4;} + image { normal: "T01_Nocontents_multimedia.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "main.speedbox"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 280 173; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.49; } + rel2 { relative: 0.5 0.49;} + image {normal: "white/common/T01-2_popup_bg.png"; border: 10 10 10 10;} + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "main.speedbox.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 280 173; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.49; } + rel2 { relative: 0.5 0.49;} + color: 0 0 0 102; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "main.speedbox.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "main.speedbox"; } + rel2 { relative: 1.0 1.0; to: "main.speedbox"; } + color: FONT_PLAYBACK_SPEED_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_SIZE; + text: ""; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "main.option.button"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 45; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + description { + state: "visible_off" 0.0; + inherit: "hide" 0.0; + visible: 0; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + min: 0 104; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 90; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible : 0; + } + } + + part { + name: "main.bookmark"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 206; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; to_y: "main.option.button";} + rel2 { relative: 1.0 0.0; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + min: 0 207; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible : 0; + } + } + + part { + name: "main.panel.bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 0; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + color : 0 0 0 128; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + min: 0 214; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 204; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 297; + } + } + + part { + name: "main.panel.line"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to_y: "main.panel.bg";} + rel2 { relative: 1.0 0.0; to_y: "main.panel.bg";} + color : 153 153 153 178; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 1; + } + + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "main.panel.top"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 12; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.3 0.0; to_y: "main.panel.line";} + rel2 { relative: 0.7 1.0; to_y: "main.panel.line";} + color : 0 0 0 0; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 17; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "main.panel.button"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 56; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0486 1.0; to_y: "main.panel.top";} + rel2 { relative: 0.9514 1.0; to_y: "main.panel.top";} + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0273 1.0; to_y: "main.panel.top";} + rel2 { relative: 0.9727 1.0; to_y: "main.panel.top";} + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + + part { + name: "main.panel"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + min: 0 192; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 192; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 297; + } + } + + part { name: "main.animation"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + min: 288 195; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.4;} + rel2 { relative: 0.5 0.4;} + color: 255 0 0 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + } /* parts */ + + programs { + program { + signal: "signal.main.nocontents.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.nocontents.image"; + target: "main.nocontents.bg"; + } + + program { + signal: "signal.main.nocontents.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.nocontents.image"; + target: "main.nocontents.bg"; + } + + program { + signal: "signal.main.speedbox.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.speedbox"; + target: "main.speedbox.rect"; + target: "main.speedbox.txt"; + } + + program { + signal: "signal.main.speedbox.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.speedbox"; + target: "main.speedbox.rect"; + target: "main.speedbox.txt"; + } + + program { + signal: "signal.main.animation.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.animation"; + } + + program { + signal: "signal.main.animation.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.animation"; + } + + program { + signal: "signal.main.portrate.mode"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel.top"; + target: "main.panel.button"; + target: "main.panel"; + target: "main.bookmark"; + } + + program { + signal: "signal.main.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel.top"; + target: "main.panel.button"; + target: "main.panel"; + } + + program { + signal: "signal.main.trim.mode"; + source: "*"; + action: STATE_SET "trim" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel.top"; + target: "main.panel.button"; + target: "main.panel.line"; + target: "main.panel"; + } + + program { + name: "control_portrait_show"; + signal: "signal.main.control.portrait.show"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_show_finished"; + } + + program { + name: "control_landscape_show"; + signal: "signal.main.control.landscape.show"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_show_finished"; + } + + program { + name: "control_hide"; + signal: "signal.main.control.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.option.button"; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_hide_finished"; + } + + program { + name: "control_landscape_bookmark_hide"; + signal: "signal.main.control.hide.with.bookmark"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.panel.bg"; + target: "main.panel"; + transition: LINEAR 0.4; + after: "control_hide_finished"; + } + program { + name: "control_show_finished"; + action: SIGNAL_EMIT "signal.control.show.finish" "*"; + } + + program { + name: "control_hide_finished"; + action: SIGNAL_EMIT "signal.control.hide.finish" "*"; + } + + program { + signal: "signal.main.landscape.bookmark.hide"; + source: "*"; + script { + set_state(PART:"main.option.button", "visible_off", 0.0); + set_state(PART:"main.bookmark", "default", 0.0); + } + } + + program { + signal: "signal.main.landscape.bookmark.show"; + source: "*"; + script { + set_state(PART:"main.option.button", "visible_off", 0.0); + set_state(PART:"main.bookmark", "landscape", 0.0); + } + } + } /* programs */ + } /* group */ +} /* collections */ diff --git a/res/edc/multi_win.edc b/res/edc/multi_win.edc new file mode 100755 index 0000000..7185254 --- /dev/null +++ b/res/edc/multi_win.edc @@ -0,0 +1,69 @@ +#include "image_res.edc" +#include "vp_font.edc" + +collections { + + group { + name: "mw"; + parts { + part { + name: "mw.bg"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 0; + } + + } + + part { + name: "mw.image"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + repeat_events : 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { + signal: "signal.mw.image.show"; + source: "*"; + script { + set_state(PART:"mw.image", "show", 0.0); + } + } + program { + signal: "signal.mw.image.hide"; + source: "*"; + script { + set_state(PART:"mw.image", "default", 0.0); + } + } + } + } +} diff --git a/res/edc/option_button.edc b/res/edc/option_button.edc new file mode 100644 index 0000000..346a8f0 --- /dev/null +++ b/res/edc/option_button.edc @@ -0,0 +1,326 @@ +#include "image_res.edc" +#include "vp_font.edc" + + +/* + | rect1 | rect2 | rect3 | rect4 | rect5 +----------------------------------------------------------- +local | screen | share | bookmark | mw | more +myfile | screen | share | | mw | more +email | screen | share | | mw | trim +web | screen | sa | | mw | repeat +message | screen | sa | | mw | +allshare | screen | connection info | | mw | more +*/ + + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} // CONTROL_BUTTON_PROG \ + + +collections { + group { + name: "option"; + script { + public val_launch_mode = 0; /* 0: local, 1: gallery, 2: Email, 3: Web, 4: Message 5: Allshare */ + } + + parts { + part { + name: "option.bg"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 153; + } + } + + part { + name: "option.rect.1"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.2 1.0; } + color: 255 0 0 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.25 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.33 1.0;} + } + } + + part { + name: "option.rect.2"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.2 0.0; } + rel2 { relative: 0.4 1.0; } + color: 0 255 0 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.25 0.0;} + rel2 { relative: 0.5 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.33 0.0;} + rel2 { relative: 0.66 1.0;} + } + } + + part { + name: "option.rect.3"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.4 0.0; } + rel2 { relative: 0.6 1.0; } + color: 0 0 255 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "option.rect.4"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.6 0.0; } + rel2 { relative: 0.8 1.0; } + color: 255 255 0 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.5 0.0;} + rel2 { relative: 0.75 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.66 0.0;} + rel2 { relative: 0.99 1.0;} + } + } + + part { + name: "option.rect.5"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.8 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 0 255 0; + } + description { + state: "menu_4" 0.0; + inherit: "default" 0.0; + visible: 1; + rel1 { relative: 0.75 0.0;} + rel2 { relative: 1.0 1.0;} + + } + description { + state: "menu_3" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "option.select.bg"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 40 24; + fixed: 1 1; + align: 0.5 1.0; + image { normal: "white/common/T01-2_popup_arrow.png"; } + rel1 { relative: 0.5 1.0; to: option.rect.1; } + rel2 { relative: 0.5 1.0; to: option.rect.1; } + color: 255 255 255 255; + } + description { + state: "mode_1" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 0.0; to: option.rect.1; } + rel2 { relative: 0.5 0.0; to: option.rect.1; } + + } + description { + state: "mode_2" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.2; } + rel2 { relative: 0.5 1.0; to: option.rect.2; } + } + description { + state: "mode_3" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.3; } + rel2 { relative: 0.5 1.0; to: option.rect.3; } + } + description { + state: "mode_4" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.4; } + rel2 { relative: 0.5 1.0; to: option.rect.4; } + } + description { + state: "mode_5" 0.0; + inherit: "default" 0.0; + visible: 0; + rel1 { relative: 0.5 1.0; to: option.rect.5; } + rel2 { relative: 0.5 1.0; to: option.rect.5; } + } + } + + part { + name: "option.share"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: option.rect.1; } + rel2 { relative: 0.5 0.5; to: option.rect.1; } + image { normal: "option/T01-2_icon_function_share.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + programs { + CONTROL_BUTTON_PROG("option.share"); + + program { + signal: "signal.option.share.down"; + source: "*"; + script: { + set_state(PART:"option.select.bg", "mode_1", 0.0); + } + } + + program { + signal: "signal.option.share.up"; + source: "*"; + script: { + set_state(PART:"option.select.bg", "default", 0.0); + } + } + + program { + signal: "signal.option.mode.local"; + source: "*"; + script: { + set_int(val_launch_mode, 0); + + set_state(PART:"option.rect.1", "default", 0.0); + set_state(PART:"option.rect.2", "default", 0.0); + set_state(PART:"option.rect.3", "default", 0.0); + set_state(PART:"option.rect.4", "default", 0.0); + set_state(PART:"option.rect.5", "default", 0.0); + + set_state(PART:"option.share", "default", 0.0); + } + } + } //programs + } //parts + } //group +} //collections diff --git a/res/edc/panel.edc b/res/edc/panel.edc new file mode 100755 index 0000000..f6bc218 --- /dev/null +++ b/res/edc/panel.edc @@ -0,0 +1,155 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define LINE_RECT_COLOR 130 130 130 255 + +collections { + group { + name: "panel"; + + parts { + part { + name: "panel.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "panel.progress"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 78; + fixed: 0 1; + align: 0.5 0.0; + color: 255 0 0 255; + rel1 { relative: 0.0277 0.0;} + rel2 { relative: 0.9723 0.0;} + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 78; + rel1 { relative: 0.01875 0.0;} + rel2 { relative: 0.98125 0.0;} + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 183; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0;} + } + } + + part { + name: "panel.control.line"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.40625; } + rel2 { relative: 1.0 0.40625; } + color: 255 0 0 0; + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 1; + rel1 { relative: 0.0 0.40625; } + rel2 { relative: 1.0 0.40625; } + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 1; + rel1 { relative: 0.0 0.616161; } + rel2 { relative: 1.0 0.616161; } + } + } + part { + name: "panel.control"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 114; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; } + rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 114; + rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; } + rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; } + } + description { + state: "trim" 0.0; + inherit: "default" 0.0; + min: 0 114; + rel1 { relative: 0.0 0.0; to_y: "panel.control.line"; } + rel2 { relative: 1.0 0.0; to_y: "panel.control.line"; } + } + } + } // parts + + programs { + program { + signal: "signal.panel.portrate.mode"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "panel.progress"; + target: "panel.control.line"; + target: "panel.control"; + } + + program { + signal: "signal.panel.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "panel.progress"; + target: "panel.control.line"; + target: "panel.control"; + } + + program { + signal: "signal.panel.trim.mode"; + source: "*"; + action: STATE_SET "trim" 0.0; + target: "panel.progress"; + target: "panel.control.line"; + target: "panel.control"; + } + } + } // group +} // collections diff --git a/res/edc/popup_progressbar.edc b/res/edc/popup_progressbar.edc new file mode 100755 index 0000000..87add92 --- /dev/null +++ b/res/edc/popup_progressbar.edc @@ -0,0 +1,263 @@ +collections { +group { name: "popup_center_progressview"; + parts{ + part { name: "elm.title"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + max: 80 16; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 0.5 0.0; + } + color: 108 108 108 255; + align: 0.5 0.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.0; + to: "elm.swallow.content"; + } + } + } + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 0 70; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + part { name: "elm.text.left"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + max: 150 16; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 0.0 1.0; + } + color: 108 108 108 255; + align: 0.0 1.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 1.0; + to: "elm.swallow.content"; + } + } + } + part { name: "elm.text.right"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + max: 150 16; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 1.0 1.0; + } + color: 108 108 108 255; + align: 1.0 1.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 1.0; + to: "elm.swallow.content"; + } + } + } + } +} + + +group { name: "popup_center_text_progressview"; + parts{ + part { name: "pad_t"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 0.0; + min: 0 14; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + } + } + } + part { name: "pad_l"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 1.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + align: 1.0 0.0; + } + } + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.5 1.0; + to: "pad_t"; + } + rel2 { + relative: 0.5 0.0; + to: "pad_b"; + } + } + } + part { name: "pad_b"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 1.0; + min: 0 90; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + scale : 1; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "pad_bm"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: 0 52; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "elm.text.subtext1"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 0.0 1.0; + } + color: 108 108 108 255; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + part { name: "elm.text.subtext2"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: 16; + min: 0 0; + align: 1.0 1.0; + } + color: 108 108 108 255; + align: 1.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + } +} +} + diff --git a/res/edc/progress.edc b/res/edc/progress.edc new file mode 100755 index 0000000..3ef5412 --- /dev/null +++ b/res/edc/progress.edc @@ -0,0 +1,459 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define PROGRESS_LINE_RECT_COLOR 54 54 54 255 + +collections { + group { + name: "progress"; + + parts { + part { + name: "progress.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { name: "progress.txt.played"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 90 28; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; } + rel2 { relative: 1.0 0.5; } + color: FONT_START_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "00:00:00"; + align: 0.0 1.0; + } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + } + } + + part { name: "progress.txt.total"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 90 28; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.5; } + rel2 { relative: 1.0 0.5; } + color: FONT_END_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "--:--:--"; + align: 1.0 1.0; + } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + } + } + + part { + name: "progress.bg"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 7; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.1647 0.5; } + rel2 { relative: 0.8353 0.5; } + image { normal: "panel/T01-2_controller_progress_bg.png"; } + } + description { + state: "portrate" 0.0; + inherit: "default" 0.0; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0933 0.5; } + rel2 { relative: 0.9067 0.5; } + } + } + + part { + name: "progress.buffer.bar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 5; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to_x: progress.playing ; to_y: progress.bg; } + rel2 { relative: 1.0 1.0; to_x: progress.buffering; to_y: progress.bg; } + color: 128 128 128 255; + } + } + + part { + name: "progress.middle"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 5; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: progress.bg; } + rel2 { relative: 0.5 1.0; to_x: progress.circle; to_y: progress.bg; } + color: 255 255 255 255; + image { normal: "panel/T01-2_controller_progress_bar.png";} + } + } + part { name: "progress.buffering"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 5; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to: progress.bg; } + rel2 { relative: 1.0 1.0; to: progress.bg; } + color: 255 255 255 0; + } + dragable { + confine: "progress.confine.rect"; + x: 1 1 1; + } + } + + part { name: "progress.confine.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to: progress.bg; } + rel2 { relative: 1.0 1.0; to: progress.bg; } + color: 255 255 255 0; + } + } + + part { + name: "progress.circle"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 5; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.5 0.0; to_x: progress.playing; to_y: progress.bg; } + rel2 { relative: 0.5 1.0; to_x: progress.playing; to_y: progress.bg; } + color: 255 255 255 255; + } + } + + part { name: "progress.playing"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + visible: 1; + state: "default" 0.0; + color: 255 255 255 0; + min: 0 15; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to_y: progress.rect; } + rel2 { relative: 0.0 0.0; to_y: progress.rect; } + } + dragable { + confine: "progress.confine.rect"; + x: 1 1 1; + } + } + + part { + name: "progress.adjustment.handle"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 25 25; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; } + rel2 { relative: 0.5 0.5; to_x: progress.circle; to_y: progress.bg; } + image { normal: "adjustment/T01-2_controller_progress_handle.png";} + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "progress.adjustment.bg.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 174 153; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; } + rel2 { relative: 0.5 0.0; to_x: progress.circle; to_y: progress.rect; } + color: 0 0 0 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.bg"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 174 153; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; } + rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_bg.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.progress.bg"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 1 20; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; } + rel2 { relative: 0.91379 0.23529; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_progress_bg.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.progress.bar"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 1 20; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.08620 0.23529; to: progress.adjustment.bg.rect; } + rel2 { relative: 0.5 0.23529; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_progress_bar.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "progress.adjustment.progress.handle"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 36 36; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; } + rel2 { relative: 0.5 0.183006; to: progress.adjustment.bg.rect; } + color: 255 255 255 255; + image { normal: "adjustment/T01-2_fine_adjustment_progress_handle.png";} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "progress.adjustment.bg.ef"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 174 153; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: progress.adjustment.bg.rect; } + rel2 { relative: 1.0 1.0; to: progress.adjustment.bg.rect; } + image { normal: "adjustment/T01-2_fine_adjustment_bg_ef.png";} + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "progress.adjustment.txt"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 174 40; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.470588; to: progress.adjustment.bg.rect;} + rel2 { relative: 1.0 0.470588; to: progress.adjustment.bg.rect;} + color: 191 191 191 255; + text { + font: FONT_ROMAN_TYPE; + text_class: "slp"; + size: 32; + text: "00:00:00"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } /* parts */ + + programs { + program { + signal: "signal.progress.portrate.mode"; + source: "*"; + action: STATE_SET "portrate" 0.0; + target: "progress.bg"; + target: "progress.txt.played"; + target: "progress.txt.total"; + } + + program { + signal: "signal.progress.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "progress.bg"; + target: "progress.txt.played"; + target: "progress.txt.total"; + } + + program { + signal: "signal.progress.pointer.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "progress.adjustment.handle"; + } + + program { + signal: "signal.progress.pointer.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "progress.adjustment.handle"; + } + + program { + signal: "signal.progress.adjustment.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "progress.adjustment.handle"; + target: "progress.adjustment.bg.rect"; + target: "progress.adjustment.bg.ef"; + target: "progress.adjustment.bg"; + target: "progress.adjustment.progress.bg"; + target: "progress.adjustment.progress.bar"; + target: "progress.adjustment.progress.handle"; + target: "progress.adjustment.txt"; + } + + program { + signal: "signal.progress.adjustment.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "progress.adjustment.handle"; + target: "progress.adjustment.bg.rect"; + target: "progress.adjustment.bg.ef"; + target: "progress.adjustment.bg"; + target: "progress.adjustment.progress.bg"; + target: "progress.adjustment.progress.bar"; + target: "progress.adjustment.progress.handle"; + target: "progress.adjustment.txt"; + } + } + } // group +} // collections diff --git a/res/edc/progress_trim.edc b/res/edc/progress_trim.edc new file mode 100755 index 0000000..932264b --- /dev/null +++ b/res/edc/progress_trim.edc @@ -0,0 +1,291 @@ +#include "image_res.edc" +#include "vp_font.edc" + +collections { + group { + name: "trim.control"; + parts { + part { + name: "trim.control.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { name: "trim.control.txt.played"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 58; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.027777 0.0; } + rel2 { relative: 1.0 0.0; } + color: FONT_START_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 28; + text: "00:00:00"; + align: 0.0 0.5; + } + } + } + + part { name: "trim.control.txt.total"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 90 58; + fixed: 1 1; + align: 1.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.97223 0.0; } + color: FONT_END_COLOR; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 28; + text: "--:--:--"; + align: 1.0 0.5; + } + } + } + + part { + name: "trim.control.line"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 1; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.316994; } + rel2 { relative: 1.0 0.316994; } + color : 153 153 153 171; + } + } + + part { + name: "trim.control.thumb.bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.316994; } + rel2 { relative: 1.0 1.0; } + color : 0 0 0 0; + } + } + + part { + name: "trim.control.thumb"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 112; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_y : trim.control.thumb.bg;} + rel2 { relative: 1.0 0.5; to_y : trim.control.thumb.bg;} + color : 0 0 0 0; + } + } + part { + name: "trim.control.middle"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 1.0; + rel1 { relative: 0.0 0.0; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 1.0; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; } + color: 0 0 0 0; + } + } + part { + name: "trim.control.confine.rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: trim.control.middle; } + rel2 { relative: 1.0 1.0; to: trim.control.middle; } + color: 0 0 0 0; + } + } + + part { name: "trim.control.playing"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 19 124; + fixed: 1 1; + align: 0.0 0.0; + image { normal: "trim/T01-2_controller_track_ball.png"; } + color: 255 255 255 255; + } + dragable { + confine: "trim.control.confine.rect"; + x: 1 1 1; + } + } + + part { + name: "trim.control.start.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to_y : trim.control.thumb.bg;} + rel2 { relative: 0.0 1.0; to_y : trim.control.thumb.bg;} + color: 0 0 0 0; + } + } + + part { + name: "trim.control.end.rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_y : trim.control.thumb.bg;} + rel2 { relative: 1.0 1.0; to_y : trim.control.thumb.bg;} + color: 0 0 0 0; + } + } + + part { name: "trim.control.confine.rect.start"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; } + color: 255 255 255 0; + } + } + + part { name: "trim.control.confine.rect.end"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_x: trim.control.start.rect; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 0.5; to_x: trim.control.end.rect; to_y: trim.control.thumb.bg; } + color: 255 255 255 0; + } + } + part { name: "trim.control.confine.rect.start.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 0 100; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_y: trim.control.thumb.bg; } + rel2 { relative: 0.0 0.5; to_x: trim.control.confine.start; to_y: trim.control.thumb.bg; } + color: 0 0 0 153; + } + } + + part { name: "trim.control.confine.rect.end.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 0 100; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.5 0.5; to_x: trim.control.confine.end; to_y: trim.control.thumb.bg; } + rel2 { relative: 1.0 0.5; to_y: trim.control.thumb.bg; } + color: 0 0 0 153; + } + } + part { + name: "trim.control.confine.start"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + image { normal: "trim/T01-2_controller_trimming_handle_beginning.png";} + } + dragable { + confine: "trim.control.confine.rect.start"; + x: 1 1 1; + } + } + + part { + name: "trim.control.confine.end"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 24 117; + fixed: 1 1; + align: 0.0 0.5; + image { normal: "trim/T01-2_controller_trimming_handle_ending.png";} + } + dragable { + confine: "trim.control.confine.rect.end"; + x: 1 1 1; + } + } + + + } /* parts */ + } /* group */ +} /* collections */ + diff --git a/res/edc/setting.edc b/res/edc/setting.edc new file mode 100755 index 0000000..9691ac7 --- /dev/null +++ b/res/edc/setting.edc @@ -0,0 +1,33 @@ +collections { + group { + name: "setting"; + parts { + part { + name: "setting.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 255; + } + } + part { + name: "setting.list"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + } + } +} \ No newline at end of file diff --git a/res/edc/subtitle.edc b/res/edc/subtitle.edc new file mode 100755 index 0000000..3d5265b --- /dev/null +++ b/res/edc/subtitle.edc @@ -0,0 +1,419 @@ +#include "image_res.edc" +#include "vp_font.edc" + + +collections { + styles { + style { + name: "textblock_style_small"; + base: "font=SLP:style=Roman font_size=22 color=#fff align=center wrap=word text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Roman"; + tag: "b" "+ font=SLP:style=Roman"; + tag: "tab" "\t"; + } + style { + name: "textblock_style_medium"; + base: "font=SLP:style=Roman font_size=35 color=#fff align=center wrap=word text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Roman"; + tag: "b" "+ font=SLP:style=Roman"; + tag: "tab" "\t"; + } + + style { + name: "textblock_style_large"; + base: "font=SLP:style=Roman font_size=48 color=#fff align=center wrap=word text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Roman"; + tag: "b" "+ font=SLP:style=Roman"; + tag: "tab" "\t"; + } + + } + + group { + name: "subtitle"; + script { + public val_rotate_mode = 0; /* 0: portrate, 1: landscape */ + public val_layout_show = 1; /* 0: off, 1: on */ + public val_sync_show = 0; /* 0: off, 1: on */ + public val_size_mode = 1; /* 0: small, 1: medium, 2: large */ + + public change_bottom_line() { + if(get_int(val_rotate_mode) == 0) { + if(get_int(val_layout_show) == 1) { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "default_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "default", 0.0); + } + } + else { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "default_off_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "default_off", 0.0); + } + } + } + else if(get_int(val_rotate_mode) == 1) { + if(get_int(val_layout_show) == 1) { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "landscape_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "landscape", 0.0); + } + } + else { + if(get_int(val_sync_show) == 1) { + set_state(PART:"subtitle.bottom.line", "landscape_off_sync", 0.0); + } + else { + set_state(PART:"subtitle.bottom.line", "landscape_off", 0.0); + } + } + } + + } /* change_size_mode */ + + } /* script */ + + parts { + part { + name: "subtitle.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "subtitle.lockscreen.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 24 18 ; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 0.0 0.0;} + color: 255 255 255 255; + } + } + + part { + name: "subtitle.lockscreen"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 56 56; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 1.0 1.0; to: "subtitle.lockscreen.rect";} + rel2 { relative: 0.0 0.0;} + image { normal: "T01-2_hold_icon_lock.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "subtitle.lockscreen.text.rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 16 56 ; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_x: "subtitle.lockscreen";} + rel2 { relative: 0.0 0.0;} + color: 255 0 0 255; + } + } + part { + name: "subtitle.lockscreen.text"; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 56; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 1.0 1.0; to_x: subtitle.lockscreen.text.rect; to_y: "subtitle.lockscreen.rect"; } + rel2 { relative: 1.0 0.0; } + color: 255 255 255 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 32; + text: "Press hold key to unlock"; + align: 0.0 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + + part { + name: "subtitle.bottom.line"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 1; + fixed: 0 1; + align: 0.0 0.0; + visible: 1; + rel1 { relative: 0.0 0.82421;} + rel2 { relative: 1.0 0.82421;} + color: 0 0 0 0; + } + description { + state: "default_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.9921875;} + rel2 { relative: 1.0 0.9921875;} + } + description { + state: "default_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.716406;} + rel2 { relative: 1.0 0.716406;} + } + description { + state: "default_off_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.884375;} + rel2 { relative: 1.0 0.884375;} + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.70277;} + rel2 { relative: 1.0 0.70277;} + } + description { + state: "landscape_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.98611;} + rel2 { relative: 1.0 0.98611;} + } + description { + state: "landscape_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.541666;} + rel2 { relative: 1.0 0.541666;} + } + description { + state: "landscape_off_sync" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.825;} + rel2 { relative: 1.0 0.825;} + } + } + + part { + name: "subtitle.label.txt"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + multiline: 1; + description { + visible: 1; + state: "default" 0.0; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; to_y: subtitle.bottom.line; } + color: FONT_START_COLOR; + text { + style: "textblock_style_medium"; + align: 0.5 1.0; + } + } + description { + state: "small" 0.0; + inherit: "default" 0.0; + text { + style: "textblock_style_small"; + align: 0.5 1.0; + } + + } + description { + state: "large" 0.0; + inherit: "default" 0.0; + text { + style: "textblock_style_large"; + align: 0.5 1.0; + } + + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + } /* parts */ + programs { + program { + signal: "signal.subtitle.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + change_bottom_line(); + } + } + program { + signal: "signal.subtitle.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.layout.show"; + source: "*"; + script { + set_int(val_layout_show, 1); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.layout.hide"; + source: "*"; + script { + set_int(val_layout_show, 0); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.sync.show"; + source: "*"; + script { + set_int(val_sync_show, 1); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.sync.hide"; + source: "*"; + script { + set_int(val_sync_show, 0); + change_bottom_line(); + } + } + + program { + signal: "signal.subtitle.size.medium"; + source: "*"; + script { + set_int(val_size_mode, 1); + set_state(PART:"subtitle.label.txt", "default", 0.0); + + } + } + + program { + signal: "signal.subtitle.size.small"; + source: "*"; + script { + set_int(val_size_mode, 0); + set_state(PART:"subtitle.label.txt", "small", 0.0); + + } + } + + program { + signal: "signal.subtitle.size.large"; + source: "*"; + script { + set_int(val_size_mode, 2); + set_state(PART:"subtitle.label.txt", "large", 0.0); + + } + } + + program { + signal: "signal.subtitle.txt.show"; + source: "*"; + script { + if(get_int(val_size_mode) == 0) { + set_state(PART:"subtitle.label.txt", "small", 0.0); + } + else if(get_int(val_size_mode) == 1) { + set_state(PART:"subtitle.label.txt", "default", 0.0); + } + else if(get_int(val_size_mode) == 2) { + set_state(PART:"subtitle.label.txt", "large", 0.0); + } + + } + } + + program { + signal: "signal.subtitle.txt.hide"; + source: "*"; + script { + set_state(PART:"subtitle.label.txt", "hide", 0.0); + + } + } + program { + signal: "signal.lockscreen.show"; + source: "*"; + script { + set_state(PART:"subtitle.lockscreen", "show", 0.0); + set_state(PART:"subtitle.lockscreen.text", "show", 0.0); + + } + } + program { + signal: "signal.lockscreen.hide"; + source: "*"; + script { + set_state(PART:"subtitle.lockscreen", "default", 0.0); + set_state(PART:"subtitle.lockscreen.text", "default", 0.0); + } + } + + } /*programs */ + } /* group */ +} /* collections */ diff --git a/res/edc/subtitle_sync.edc b/res/edc/subtitle_sync.edc new file mode 100755 index 0000000..b40bd2f --- /dev/null +++ b/res/edc/subtitle_sync.edc @@ -0,0 +1,415 @@ +#include "image_res.edc" +#include "vp_font.edc" + +// program macro + +#define CONTROL_BUTTON_PROG(_item_name_) \ +program { \ + name: _item_name_".pressed"; \ + source: _item_name_; \ + signal: "mouse,down,1"; \ + action: STATE_SET "pressed" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".down.signal"; \ +} \ +program { \ + name: _item_name_".clicked"; \ + source: _item_name_; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: _item_name_; \ + after: "send."_item_name_".up.signal"; \ +} \ +program { \ + name: "send."_item_name_".down.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".down" _item_name_; \ +} \ +program { \ + name: "send."_item_name_".up.signal"; \ + action: SIGNAL_EMIT "signal."_item_name_".up" _item_name_; \ +} // CONTROL_BUTTON_PROG + +collections { + group { + name: "subtitle.sync"; + script { + public val_rotate_mode = 0; /* 0: portrate, 1: landscape */ + public val_layout_show = 1; /* 0: off, 1: on */ + + public change_top_line() { + if(get_int(val_rotate_mode) == 0) { + if(get_int(val_layout_show) == 1) { + set_state(PART:"subtitle.sync.line", "default", 0.0); + } + else { + set_state(PART:"subtitle.sync.line", "visible_off", 0.0); + } + } + else if(get_int(val_rotate_mode) == 1) { + if(get_int(val_layout_show) == 1) { + set_state(PART:"subtitle.sync.line", "land_default", 0.0); + } + else { + set_state(PART:"subtitle.sync.line", "land_visible_off", 0.0); + } + } + } /* change_top_line */ + + } /* script */ + + parts { + part { + name: "subtitle.sync.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "subtitle.sync.line"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 1; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { relative: 0.0 0.735156; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.735156; to_y:subtitle.sync.bg; } + color: 0 0 0 0; + } + description { + state: "visible_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.903125; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.903125; to_y:subtitle.sync.bg; } + } + description { + state: "land_default" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.558333; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.558333; to_y:subtitle.sync.bg; } + } + description { + state: "land_visible_off" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 0.82777; to_y:subtitle.sync.bg; } + rel2 { relative: 1.0 0.82777; to_y:subtitle.sync.bg; } + } + } + + part { + name: "subtitle.sync.rect"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 104; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.07222 1.0; to_y: subtitle.sync.line; } + rel2 { relative: 0.92778 1.0; to_y: subtitle.sync.line; } + image { normal: "subtitle/T01-2_sync_btn_bg.png"; border: 19 19 0 0; border_scale: 1;} + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "subtitle.sync.rect.1"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 64 64; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.02922 0.5; to: subtitle.sync.rect; } + rel2 { relative: 0.02922 0.5; to: subtitle.sync.rect; } + image { normal: "subtitle/T01-2_sync_list_press.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.rect.2"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to: subtitle.sync.rect; } + rel2 { relative: 1.0 0.5; to: subtitle.sync.rect; } + color: 0 0 0 0; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.rect.3"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 64 64; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.86688 0.5; to: subtitle.sync.rect; } + rel2 { relative: 0.86688 0.5; to: subtitle.sync.rect; } + image { normal: "subtitle/T01-2_sync_list_press.png"; } + color: 255 255 255 255; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.slow.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 64 64; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: subtitle.sync.rect.1; } + rel2 { relative: 0.5 0.5; to: subtitle.sync.rect.1; } + image { normal: "subtitle/T01-2_sync_slowly.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "subtitle.sync.fast.button"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 56 56; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to: subtitle.sync.rect.3; } + rel2 { relative: 0.5 0.5; to: subtitle.sync.rect.3; } + image { normal: "subtitle/T01-2_sync_faster.png"; } + color: 255 255 255 255; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { name: "subtitle.sync.txt"; + type: TEXT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: subtitle.sync.rect.2; } + rel2 { relative: 1.0 1.0; to: subtitle.sync.rect.2; } + color: FONT_START_COLOR; + text { + font: FONT_ROMAN_TYPE; + text_class: "slp"; + size: 40; + text: "0.0 sec"; + align: 0.5 0.5; + } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + } /* parts */ + + programs { + program { + signal: "signal.subtitle.portrate.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 0); + change_top_line(); + } + } + program { + signal: "signal.subtitle.landscape.mode"; + source: "*"; + script { + set_int(val_rotate_mode, 1); + change_top_line(); + } + } + + program { + signal: "signal.subtitle.layout.show"; + source: "*"; + script { + set_int(val_layout_show, 1); + change_top_line(); + } + } + + program { + signal: "signal.subtitle.layout.hide"; + source: "*"; + script { + set_int(val_layout_show, 0); + change_top_line(); + } + } + + CONTROL_BUTTON_PROG("subtitle.sync.slow.button"); + CONTROL_BUTTON_PROG("subtitle.sync.fast.button"); + + program { + name: "subtitle.sync.rect.1.pressed"; + source: "subtitle.sync.rect.1"; + signal: "mouse,down,1"; + action: STATE_SET "pressed" 0.0; + target: subtitle.sync.rect.1; + after: "send.subtitle.sync.slow.button.down.signal"; + } + + program { + name: "subtitle.sync.rect.3.pressed"; + source: "subtitle.sync.rect.3"; + signal: "mouse,down,1"; + action: STATE_SET "pressed" 0.0; + target: subtitle.sync.rect.3; + after: "send.subtitle.sync.fast.button.down.signal"; + } + + program { + name: "subtitle.sync.rect.1.clicked"; + source: "subtitle.sync.rect.1"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: subtitle.sync.rect.1; + after: "send.subtitle.sync.slow.button.up.signal"; + } + + program { + name: "subtitle.sync.rect.3.clicked"; + source: "subtitle.sync.rect.3"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: subtitle.sync.rect.3; + after: "send.subtitle.sync.fast.button.up.signal"; + } + + program { + signal: "signal.subtitle.sync.slow.button.down"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.1", "pressed", 0.0); + } + } + program { + signal: "signal.subtitle.sync.fast.button.down"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.3", "pressed", 0.0); + } + } + + program { + signal: "signal.subtitle.sync.slow.button.up"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.1", "default", 0.0); + } + } + program { + signal: "signal.subtitle.sync.fast.button.up"; + source: "*"; + script { + set_state(PART:"subtitle.sync.rect.3", "default", 0.0); + } + } + + program { + signal: "signal.subtitle.sync.show"; + source: "*"; + script { + set_state(PART:"subtitle.sync.fast.button", "default", 0.0); + set_state(PART:"subtitle.sync.txt", "default", 0.0); + set_state(PART:"subtitle.sync.slow.button", "default", 0.0); + set_state(PART:"subtitle.sync.rect", "default", 0.0); + set_state(PART:"subtitle.sync.rect.1", "default", 0.0); + set_state(PART:"subtitle.sync.rect.2", "default", 0.0); + set_state(PART:"subtitle.sync.rect.3", "default", 0.0); + } + } + program { + signal: "signal.subtitle.sync.hide"; + source: "*"; + script { + set_state(PART:"subtitle.sync.fast.button", "hide", 0.0); + set_state(PART:"subtitle.sync.txt", "hide", 0.0); + set_state(PART:"subtitle.sync.slow.button", "hide", 0.0); + set_state(PART:"subtitle.sync.rect", "hide", 0.0); + set_state(PART:"subtitle.sync.rect.1", "hide", 0.0); + set_state(PART:"subtitle.sync.rect.2", "hide", 0.0); + set_state(PART:"subtitle.sync.rect.3", "hide", 0.0); + } + } + + } /* programs */ + } /* group */ +} /* collection */ diff --git a/res/edc/vp-button-white.edc b/res/edc/vp-button-white.edc new file mode 100755 index 0000000..14a16a5 --- /dev/null +++ b/res/edc/vp-button-white.edc @@ -0,0 +1,504 @@ +#define BUTTON_STATE_ENABLED 0 +#define BUTTON_STATE_DISABLED 1 + +#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 106 74 +#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC 5 5 5 5 +#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 56 56 + +#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255 +#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255 + +#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_MIN_INC 22 46 +#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4 +#define BUTTON_NAVIFRAME_CENTER_PADDING_MIN_MAX_INC 16 2 +#define BUTTON_NAVIFRAME_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36 +#define BUTTON_NAVIFRAME_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0 +#define BUTTON_NAVIFRAME_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0 +#define BUTTON_NAVIFRAME_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36 +#define BUTTON_NAVIFRAME_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38 +#define BUTTON_NAVIFRAME_CENTER_TEXT_FONT_SIZE_INC 32 +#define BUTTON_NAVIFRAME_MULTILINE_TEXT_FONT_SIZE_INC 24 + +#define BUTTON_NAVIFRAME_BG_MIN_INC 106 68 +#define BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC 106 68 +#define BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC 72 724 +#define BUTTON_NAVIFRAME_BG_BORDER_INC 5 5 5 5 +#define BUTTON_NAVIFRAME_PADDING_MIN_INC 16 3 +#define BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38 +#define BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0 +#define BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC 38 38 +#define BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC 32 +#define BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC 106 68 + +#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 82 64 +#define BUTTON_NAVIFRAME_MORE_BG_BORDER_INC 5 5 5 5 +#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 50 50 + +#define BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC 211 211 211 255 +#define BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC 249 249 249 255 +#define BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC 249 249 249 255 +#define BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC 211 211 211 255 + +////////////////////////////////////////////////////////////// + group { name: "elm/button/base/video/naviframe/title/default"; + images { + image: "white/common/T01-2_title_btn_bg.png" COMP; + image: "white/common/T01-2_title_btn_bg_press_01.png" COMP; + image: "white/common/T01-2_title_btn_bg_press_02.png" COMP; + } + script { + public button_state = BUTTON_STATE_ENABLED; + } + parts { + part { name: "button_image"; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC; + max: BUTTON_NAVIFRAME_TITLE_BUTTON_MIN_INC; + image { + normal: "white/common/T01-2_title_btn_bg.png"; + border: BUTTON_NAVIFRAME_BG_BORDER_INC; + border_scale: 1; + } + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "white/common/T01-2_title_btn_bg_press_01.png"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + image.normal: "white/common/T01-2_title_btn_bg_press_02.png"; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: BUTTON_NAVIFRAME_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: BUTTON_NAVIFRAME_BG_MIN_INC; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_NAVIFRAME_VISIBLE_BG_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + min: BUTTON_NAVIFRAME_ICONONLY_BG_MIN_INC; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: BUTTON_NAVIFRAME_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "visible" 0.0; + visible: 0; + min: BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_VISIBLE_ICON_RECT_MIN_MAX_INC; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 1 0; + min: 0 0; + visible: 0; + } + description { state: "visible" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 1 0; + min: BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: BUTTON_NAVIFRAME_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + min: BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_VISIBLE_ICON_MIN_MAX_INC; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + } + description { state: "icononly" 0.0; + min: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_ICONONLY_ICON_MIN_MAX_INC; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_TEXT_NAVIFRAME_NORMAL_COLOR_INC; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: BUTTON_TEXT_NAVIFRAME_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_NAVIFRAME_PRESSED_COLOR_INC; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: BUTTON_TEXT_NAVIFRAME_DISABLED_COLOR_INC; + visible: 1; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_NAVIFRAME_FOCUSED_COLOR_INC; + } + } + part { name: "over2"; + type: RECT; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "disabled_visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + target: "padding_after_icon"; + target: "icon_rect"; + target: "bg"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + set_int(button_state, BUTTON_STATE_DISABLED); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + set_int(button_state, BUTTON_STATE_ENABLED); + } + } + program { name: "focused"; + //signal: "elm,action,focus"; + //source: "elm"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + //signal: "elm,action,unfocus"; + //source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } diff --git a/res/edc/vp-button.edc b/res/edc/vp-button.edc new file mode 100755 index 0000000..d013cf2 --- /dev/null +++ b/res/edc/vp-button.edc @@ -0,0 +1,1069 @@ +#define BUTTON_STATE_ENABLED 0 +#define BUTTON_STATE_DISABLED 1 + +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC 146 124 98 255 +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC 217 147 26 255 +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC 217 147 26 255 +#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255 + +#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36 +#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74 +#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4 +#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2 +#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36 +#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0 +#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0 +#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36 +#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38 +#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32 +#define BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC 24 + +#define BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC 106 40 +#define BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC 36 32 + +#define NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255 +#define NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255 + +#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74 +#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74 +#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74 +#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5 +#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 5 5 +#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0 +#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38 +#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32 + +#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 108 108 108 255 +#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255 +#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 108 108 108 255 +#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 108 115 118 255 + +/////////////////////////////////////////////////////////////////////////////////////// + group { name: "elm/button/base/video/style1"; + alias: "elm/button/base/video/text_only/style1"; + alias: "elm/button/base/video/center"; + alias: "elm/button/base/video/icon_and_text/center"; + alias: "elm/button/base/video/nocontents/search_button"; + alias: "elm/button/base/video/naviframe/title/default"; + images { + image: "T01_title_btn.png" COMP; + image: "T01_title_btn_press.png" COMP; + } + script { + public button_state = BUTTON_STATE_ENABLED; + } + parts { + part { name: "button_image"; + scale: 1; + description { state: "default" 0.0; + image { + normal: "T01_title_btn.png"; + border: BUTTON_TEXT_STYLE1_BG_BORDER_INC; + border_scale: 1; + } + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image { + normal: "T01_title_btn_press.png"; + } + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + image { + normal: "T01_title_btn.png"; + } + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + image { + normal: "T01_title_btn_press.png"; + } + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2 { + relative: 0.0 0.0; + } + min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: BUTTON_TEXT_STYLE1_BG_MIN_INC; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1 { + relative: 1.0 1.0; + } + min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC; + fixed: 1 1; + visible: 0; + } + } + part { name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "visible" 0.0; + visible: 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC; + max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + to: "icon_rect"; + } + fixed: 1 0; + min: 0 0; + visible: 0; + } + description { state: "visible" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + to: "icon_rect"; + } + fixed: 1 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC; + max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + } + description { state: "icononly" 0.0; + min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC; + max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC; + align: 0.5 0.5; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC; + visible: 1; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC; + } + } + part { name: "over2"; + type: RECT; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + if (get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "disabled_visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + set_state(PART:"bg", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + set_state(PART:"bg", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + target: "padding_after_icon"; + target: "icon_rect"; + target: "bg"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + set_int(button_state, BUTTON_STATE_DISABLED); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + set_int(button_state, BUTTON_STATE_ENABLED); + } + } + program { name: "focused"; + //signal: "elm,action,focus"; + //source: "elm"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + //signal: "elm,action,unfocus"; + //source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } + +/////////////////////////////////////////////////////////////////////////////////////// + group { name: "elm/button/base/video/naviframe/back_btn/default"; + alias: "elm/button/base/video/naviframe/prev_btn/default"; + alias: "elm/button/base/video/naviframe/end_btn/default"; + //TODO: Remove this alias later + alias: "elm/button/base/video/navigationbar_prev_btn/default"; + alias: "elm/button/base/video/navigationbar_backbutton/default"; + alias: "elm/button/base/video/navigationbar_end_btn/default"; + images { + image: "T01_btn_prev.png" COMP; + + } + parts { + part { name: "button_image"; + type: RECT; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC; + color: 0 0 0 0; + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + } + description { + state: "disabled" 0.0; + inherit: "default" 0.0; + } + } + part {name: "padding_right"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + align: 1 0; + min: 1 0; + rel1 { relative: 1 0.2; } + rel2 { relative: 1 0.8; } + fixed: 1 0; + color: NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC; + } + } + part {name: "padding_before_right"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + align: 1 0; + min: 1 0; + rel1 { relative: 0 0; to: "padding_right"; } + rel2 { relative: 0 1; to: "padding_right"; } + fixed: 1 0; + color: NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC; + } + } + part { name: "button_center_part"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC; + max: BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC; + align: 0.5 0.5; + rel2 { relative: 0 1; to_x: "padding_before_right"; } + image { + normal: "T01_btn_prev.png"; + } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "T01_btn_prev.png"; + } + } + part { name: "over1"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + target: "button_center_part"; + } + program { name: "button_unclick"; + signal: "mouse,up,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + after: "button_unclick_anim"; + } + program { name: "button_unclick_anim"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "button_center_part"; + } + program { name: "button_unclick2"; + signal: "mouse,clicked,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disabler"; + target: "button_image"; + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "button_image"; + } + } + } + +/////////////////////////////////////////////////////////////////////////////////////// + group { name: "elm/button/base/naviframe_control/multiline"; + alias: "elm/button/base/video/navigationbar_control/multiline"; + script { + public button_state = BUTTON_STATE_ENABLED; + } + images.image: "T01_title_btn.png" COMP; + images.image: "T01_title_btn_press.png" COMP; + styles{ + style { name: "btn_multiline_navigationbar_controlbar_style"; + base: "font=SLP:style=Medium font_size="BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + } + } + parts { + part { name: "button_image"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC; + rel1.offset: 0 0; + rel2.offset: -1 -1; + image.normal: "T01_title_btn.png"; + image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + image.normal: "T01_title_btn.png"; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "T01_title_btn_press.png"; + } + } + part { + name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 0.0; + } + min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC; + fixed: 1 1; + visible: 0; + } + } + part { + name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC; + fixed: 1 1; + visible: 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 0.0 1.0; + to_x: "elm.swallow.content"; + to_y: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.swallow.content"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { + name: "padding_icon_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + visible: 0; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + relative: 1.0 1.0; + to: "icon_rect"; + } + fixed: 1 0; + min: 0 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + relative: 1.0 1.0; + to: "icon_rect"; + } + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + visible: 1; + min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC; + max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + } + description { state: "icononly" 0.0; + visible: 1; + min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC; + max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + align: 0.5 0.5; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_icon_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + align: 0.5 0.5; + color: 255 255 255 255; + text { + style: "btn_multiline_navigationbar_controlbar_style"; + min: 0 0; + max: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 80 0; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + color: 255 255 255 255; + } + } + part { name: "over2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 127; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if(get_int(button_state) != BUTTON_STATE_DISABLED) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + target: "padding_icon_text"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "clipper"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + set_int(button_state, BUTTON_STATE_DISABLED); + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "clipper"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + set_int(button_state, BUTTON_STATE_ENABLED); + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "focused"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } diff --git a/res/edc/vp-chapter-view.edc b/res/edc/vp-chapter-view.edc new file mode 100755 index 0000000..6305934 --- /dev/null +++ b/res/edc/vp-chapter-view.edc @@ -0,0 +1,757 @@ + + +#define ITEM_BG_IMAGE "white/common/T01-2_popup_bg.png" +#define ITEM_BG_IMAGE_BORDER 3 3 3 3 + +#define ITEM_BG_COLOR 40 40 40 20 +#define ITEM_TEXT_BG_COLOR 0 0 0 255 +#define ITEM_TEXT_COLOR 255 255 255 255 + +collections { + group { + images { + image: ITEM_BG_IMAGE COMP; + } + name: "chapter"; + parts { + part { + name: "chapter.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + } + part { + name: "chapter.item.01.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.01;} + rel2 { relative: 0.246 0.33;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.02.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.01;} + rel2 { relative: 0.492 0.33;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.03.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.01;} + rel2 { relative: 0.738 0.33;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.04.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.01;} + rel2 { relative: 0.984 0.33;} + color: ITEM_BG_COLOR; + } + } + + + part { + name: "chapter.item.05.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.34;} + rel2 { relative: 0.246 0.66;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.06.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.34;} + rel2 { relative: 0.492 0.66;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.07.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.34;} + rel2 { relative: 0.738 0.66;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.08.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.34;} + rel2 { relative: 0.984 0.66;} + color: ITEM_BG_COLOR; + } + } + + + part { + name: "chapter.item.09.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.67;} + rel2 { relative: 0.246 0.99;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.10.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.67;} + rel2 { relative: 0.492 0.99;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.11.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.67;} + rel2 { relative: 0.738 0.99;} + color: ITEM_BG_COLOR; + } + } + + part { + name: "chapter.item.12.bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.67;} + rel2 { relative: 0.984 0.99;} + color: ITEM_BG_COLOR; + } + } + part { + name: "chapter.item.01"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.01;} + rel2 { relative: 0.246 0.33;} + } + } + part { + name: "chapter.item.02"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.01;} + rel2 { relative: 0.492 0.33;} + } + } + + part { + name: "chapter.item.03"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.01;} + rel2 { relative: 0.738 0.33;} + } + } + + part { + name: "chapter.item.04"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.01;} + rel2 { relative: 0.984 0.33;} + } + } + + + part { + name: "chapter.item.05"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.34;} + rel2 { relative: 0.246 0.66;} + } + } + part { + name: "chapter.item.06"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.34;} + rel2 { relative: 0.492 0.66;} + } + } + + part { + name: "chapter.item.07"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.34;} + rel2 { relative: 0.738 0.66;} + } + } + + part { + name: "chapter.item.08"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.34;} + rel2 { relative: 0.984 0.66;} + } + } + + + part { + name: "chapter.item.09"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.016 0.67;} + rel2 { relative: 0.246 0.99;} + } + } + part { + name: "chapter.item.10"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.262 0.67;} + rel2 { relative: 0.492 0.99;} + } + } + + part { + name: "chapter.item.11"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.508 0.67;} + rel2 { relative: 0.738 0.99;} + } + } + + part { + name: "chapter.item.12"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.754 0.67;} + rel2 { relative: 0.984 0.99;} + } + } + + part { + name: "chapter.item.01.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.01.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.01.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.02.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.02.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.02.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.03.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.03.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.03.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.04.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.04.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.04.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + + part { + name: "chapter.item.05.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.05.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.05.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.06.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.06.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.06.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.07.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.07.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.07.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.08.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.08.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.08.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + + part { + name: "chapter.item.09.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.09.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.09.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.10.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.10.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.10.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.11.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.11.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.11.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + + part { + name: "chapter.item.12.num"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + align: 0.0 1.0; + rel1 { relative: 0.0 1.0; to: "chapter.item.12.bg";} + rel2 { relative: 0.0 1.0; to: "chapter.item.12.bg";} + color: ITEM_TEXT_BG_COLOR; + } + } + part { + name: "chapter.item.01.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.01.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.01.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "01"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.02.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.02.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.02.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "02"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.03.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.03.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.03.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "03"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.04.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.04.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.04.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "04"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.05.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.05.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.05.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "05"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.06.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.06.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.06.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "06"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.07.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.07.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.07.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "07"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.08.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.08.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.08.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "08"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.09.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.09.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.09.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "09"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.10.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.10.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.10.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "10"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.11.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.11.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.11.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "11"; + align: 0.5 0.5; + } + } + } + + part { + name: "chapter.item.12.num.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "chapter.item.12.num";} + rel2 { relative: 1.0 1.0; to: "chapter.item.12.num";} + color: ITEM_TEXT_COLOR ; + text { + font: FONT_MEDIUM_TYPE; + text_class: "slp"; + size: 25; + text: "12"; + align: 0.5 0.5; + } + } + } + } /* parts */ + } /* group */ +} /* collections */ diff --git a/res/edc/vp-check.edc b/res/edc/vp-check.edc new file mode 100755 index 0000000..6dc567e --- /dev/null +++ b/res/edc/vp-check.edc @@ -0,0 +1,1318 @@ +#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 42 42 + +#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC 255 255 255 255 +#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC 255 255 255 255 +#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC 136 136 136 136 + +////////////////////////////////////////////////////////// +// +#define GALLERY_EDC_IMAGE_CHECK_BG "T01_checkbox.png" +#define GALLERY_EDC_IMAGE_CHECK_BG_DIM "00_check_bg_dim.png" +#define GALLERY_EDC_IMAGE_CHECK_BG_CHECKING "T01_check.png" +#define GALLERY_EDC_IMAGE_CHECK_ALBUM_BG "T01_checkbox.png" +#define GALLERY_EDC_IMAGE_CHECK_GRID "T01_grid_select_check.png" +#define GALLERY_EDC_IMAGE_CHECK_PINCH_GRID "00_grid_select_check.png" + +// Grid item background size W: 14+158+6; H: 24+158 +#define W 178 +#define H 182 + +// Gap between bg and icon +#define GAP_BG_L 14 +#define GAP_BG_R 6 +#define GAP_BG_T 24 + +// Gap between icon and shadow +#define GAP_ICON_L 3 +#define GAP_ICON_R 3 +#define GAP_ICON_T 0 +#define GAP_ICON_B 4 + +// Shadow image size +#define SHADOW_W (W-GAP_BG_L-GAP_BG_R+GAP_ICON_L+GAP_ICON_R) +#define SHADOW_H (H-GAP_BG_T+GAP_ICON_B) + +// Gap between bg and shadow +#define GAP_SHADOW_L (GAP_BG_L-GAP_ICON_L) +#define GAP_SHADOW_R (GAP_BG_R-GAP_ICON_R) +#define GAP_SHADOW_T (GAP_BG_T-GAP_ICON_T) +#define GAP_SHADOW_B (0+GAP_ICON_B) + + + +#define ZOOMED_W 116 //6+104+6 +#define ZOOMED_H 110 //6+104 + +#define ZOOMED_GAP_L 6 +#define ZOOMED_GAP_R 6 +#define ZOOMED_GAP_T 6 +#define ZOOMED_GAP_B 0 +// +////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////// +// +// check default textblock style +// +/////////////////////////////////////////////////////////////////////////////////////// + styles { + style { name: "check_label_textblock_style"; + base: "font=SLP:style=Roman font_size=32 color=#ffffff wrap=char"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Bold"; + tag: "b" "+ font=SLP:style=Bold"; + tag: "whitecolor" "+ color=#ffffff"; + tag: "tab" "\t"; + } + } + +#define CHECK_STATE_DEFAULT 0 +#define CHECK_STATE_VISIBLE 1 +#define CHECK_STATE_DISABLED_VISIBLE 2 +#define CHECK_STATE_DISABLED 3 + +//////////////////////////////////////////////////////////////////////////////// +#define CHECK_STYLE_DEFAULT(style_name, image_bg, image_checking, min_width, min_height) \ + group { name: "elm/check/base/"style_name; \ + images { \ + image: image_bg COMP; \ + image: GALLERY_EDC_IMAGE_CHECK_BG_DIM COMP; \ + image: image_checking COMP; \ + } \ + script { \ + public check_state = CHECK_STATE_DEFAULT; \ + } \ + parts { \ + part { name: "back_bg"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel2.relative: 0.0 1.0; \ + align: 0 0.5; \ + min: min_width min_height; \ + fixed: 1 0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "bg"; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \ + max: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \ + fixed: 1 1; \ + rel1.to: "back_bg"; \ + rel2.to: "back_bg"; \ + image.normal: image_bg; \ + fill.smooth : 0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + image.normal: GALLERY_EDC_IMAGE_CHECK_BG_DIM; \ + fill.smooth : 0; \ + } \ + } \ + part { name: "check"; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "bg"; \ + rel2.to: "bg"; \ + visible: 0; \ + image.normal: image_checking; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: "elm.swallow.content"; \ + type: SWALLOW; \ + description { state: "default" 0.0; \ + fixed: 1 0; \ + visible: 0; \ + color: 255 255 255 255; \ + align: 0.0 0.5; \ + rel1 { \ + to_x: "bg"; \ + relative: 1.0 0.0; \ + offset: 1 1; \ + } \ + rel2 { \ + to_x: "bg"; \ + relative: 1.0 1.0; \ + offset: 2 -2; \ + } \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + aspect_preference: VERTICAL; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + } \ + } \ + part { name: "elm.text"; \ + type: TEXTBLOCK; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + visible: 0; \ + fixed: 0 1; \ + rel1 { \ + relative: 1.0 0.5; \ + offset: 1 1; \ + to_x: "elm.swallow.content"; \ + } \ + rel2 { \ + relative: 1.0 0.5; \ + offset: -2 -2; \ + } \ + align: 0.0 0.5; \ + text { \ + style: "check_label_textblock_style"; \ + min: 0 0; \ + } \ + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \ + } \ + } \ + part { name: "events1"; \ + type: RECT; \ + ignore_flags: ON_HOLD; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "events2"; \ + type: RECT; \ + repeat_events: 1; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "disabler"; \ + type: RECT; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + visible: 0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + } \ + programs { \ + program { name: "click"; \ + signal: "mouse,clicked,1"; \ + source: "events1"; \ + action: SIGNAL_EMIT "elm,action,check,toggle" ""; \ + } \ + program { name: "check_on"; \ + signal: "elm,state,check,on"; \ + source: "elm"; \ + script { \ + set_int(check_state, CHECK_STATE_VISIBLE); \ + set_state(PART:"check", "visible", 0.0); \ + } \ + } \ + program { name: "check_off"; \ + signal: "elm,state,check,off"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "check"; \ + script { \ + if (get_int(check_state) == CHECK_STATE_VISIBLE) \ + { \ + set_int(check_state, CHECK_STATE_DEFAULT); \ + set_state(PART:"check", "default", 0.0); \ + } \ + } \ + } \ + program { name: "text_show"; \ + signal: "elm,state,text,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "text_hide"; \ + signal: "elm,state,text,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "icon_show"; \ + signal: "elm,state,icon,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "icon_hide"; \ + signal: "elm,state,icon,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "disable"; \ + signal: "elm,state,disabled"; \ + source: "elm"; \ + action: STATE_SET "disabled" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + after: "disable_text"; \ + } \ + program { name: "disable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.text", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.text", "disabled", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "disabled", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + { \ + set_state(PART:"check", "disabled_visible", 0.0); \ + set_int(check_state, CHECK_STATE_DISABLED_VISIBLE); \ + } \ + } \ + } \ + program { name: "enable"; \ + signal: "elm,state,enabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + after: "enable_text"; \ + } \ + program { name: "enable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + set_state(PART:"elm.text", "visible", 0.0); \ + else \ + set_state(PART:"elm.text", "default", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "default", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + { \ + set_state(PART:"check", "visible", 0.0); \ + set_int(check_state, CHECK_STATE_VISIBLE); \ + } \ + else \ + set_int(check_state, CHECK_STATE_DEFAULT); \ + } \ + } \ + } \ + } + +//////////////////////////////////////////////////////////////////////////////// + CHECK_STYLE_DEFAULT("gallery/default", GALLERY_EDC_IMAGE_CHECK_BG, GALLERY_EDC_IMAGE_CHECK_BG_CHECKING, 42, 42) + +//////////////////////////////////////////////////////////////////////////////// + CHECK_STYLE_DEFAULT("gallery/album", GALLERY_EDC_IMAGE_CHECK_ALBUM_BG, GALLERY_EDC_IMAGE_CHECK_BG_CHECKING, 42, 42) + +//////////////////////////////////////////////////////////////////////////////// +#define CHECK_STYLE_GRID(style_name, image_grid, width, height) \ + group { name: "elm/check/base/"style_name; \ + images.image: image_grid COMP; \ + parts { \ + part { name: "bg"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } \ + part { name: "icon_bg_img"; \ + type: RECT; \ + mouse_events: 0; \ + scale : 1; \ + description { \ + color: 0 0 0 0; \ + rel1 { relative: GAP_SHADOW_L/W GAP_SHADOW_T/H; to: "bg"; } \ + rel2 { relative: (W-GAP_SHADOW_R-1)/W (H+GAP_SHADOW_B-1)/H; to: "bg"; } \ + } \ + } \ + part { name: "icon_bg"; \ + type: RECT; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + rel1 { relative: GAP_ICON_L/SHADOW_W GAP_ICON_T/SHADOW_H; to: "icon_bg_img"; } \ + rel2 { relative: (SHADOW_W-GAP_ICON_R+2)/SHADOW_W (SHADOW_H-GAP_ICON_B+1)/SHADOW_H; to: "icon_bg_img"; } \ + } \ + } \ + part { name: "bg2"; \ + type: RECT; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "icon_bg"; \ + rel2.to: "icon_bg"; \ + align: 0.5 0.5; \ + min: width height; \ + max: width height; \ + color: 0 0 0 0; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } \ + } \ + part { name: "selected_bg"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "icon_bg"; \ + rel2.to: "icon_bg"; \ + color: 0 0 0 0; \ + visible: 0; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + color: 0 0 0 153; \ + visible: 1; \ + } \ + } \ + part { name: "check"; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + rel1.to: "bg2"; \ + rel2.to: "bg2"; \ + visible: 0; \ + image.normal: image_grid; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + part { name: "elm.swallow.content"; \ + type: SWALLOW; \ + description { \ + state: "default" 0.0; \ + fixed: 1 0; \ + visible: 0; \ + color: 255 255 255 255; \ + align: 0.0 0.5; \ + rel1 { \ + to_x: "bg2"; \ + relative: 1.0 0.0; \ + offset: 1 1; \ + } \ + rel2 { \ + to_x: "bg2"; \ + relative: 1.0 1.0; \ + offset: 2 -2; \ + } \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + aspect_preference: VERTICAL; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + color: 128 128 128 128; \ + fixed: 1 1; \ + visible: 1; \ + aspect: 1.0 1.0; \ + } \ + } \ + part { name: "elm.text"; \ + type: TEXTBLOCK; \ + mouse_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + visible: 0; \ + fixed: 0 1; \ + rel1 { \ + relative: 1.0 0.5; \ + offset: 1 1; \ + to_x: "elm.swallow.content"; \ + } \ + rel2 { \ + relative: 1.0 0.5; \ + offset: -2 -2; \ + } \ + color: 255 255 255 255; \ + align: 0.0 0.5; \ + text { \ + style: "check_label_textblock_style"; \ + min: 0 0; \ + } \ + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \ + } \ + description { state: "visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + } \ + description { state: "disabled_visible" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + text.min: 1 1; \ + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \ + } \ + } \ + part { name: "events"; \ + type: RECT; \ + ignore_flags: ON_HOLD; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } \ + part { name: "disabler"; \ + type: RECT; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + visible: 0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + } \ + programs { \ + program { name: "click"; \ + signal: "mouse,up,1"; \ + source: "events"; \ + action: SIGNAL_EMIT "elm,action,check,toggle" ""; \ + after: "bg_normal"; \ + } \ + program { name: "bg_normal"; \ + script { \ + set_state(PART:"bg", "default", 0.0); \ + set_state(PART:"bg2", "default", 0.0); \ + } \ + } \ + program { name: "mouseout"; \ + signal: "mouse,out"; \ + source: "events"; \ + after: "bg_check_normal"; \ + } \ + program { name: "bg_check_normal"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "pressed")) \ + set_state(PART:"check", "visible", 0.0); \ + set_state(PART:"bg", "default", 0.0); \ + set_state(PART:"bg2", "default", 0.0); \ + } \ + } \ + program { name: "pressed"; \ + signal: "mouse,down,1"; \ + source: "events"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"check", "pressed", 0.0); \ + set_state(PART:"bg", "pressed", 0.0); \ + set_state(PART:"bg2", "pressed", 0.0); \ + } \ + } \ + program { name: "check_on"; \ + signal: "elm,state,check,on"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "check"; \ + target: "selected_bg"; \ + } \ + program { name: "check_off"; \ + signal: "elm,state,check,off"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "check"; \ + target: "selected_bg"; \ + } \ + program { name: "text_show"; \ + signal: "elm,state,text,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "text_hide"; \ + signal: "elm,state,text,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text"; \ + } \ + program { name: "icon_show"; \ + signal: "elm,state,icon,visible"; \ + source: "elm"; \ + action: STATE_SET "visible" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "icon_hide"; \ + signal: "elm,state,icon,hidden"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.swallow.content"; \ + } \ + program { name: "disable"; \ + signal: "elm,state,disabled"; \ + source: "elm"; \ + action: STATE_SET "disabled" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + target: "bg2"; \ + after: "disable_text"; \ + } \ + program { name: "disable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.text", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.text", "disabled", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "disabled", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"check", "disabled_visible", 0.0); \ + } \ + } \ + program { name: "enable"; \ + signal: "elm,state,enabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "disabler"; \ + target: "bg"; \ + target: "bg2"; \ + after: "enable_text"; \ + } \ + program { name: "enable_text"; \ + script { \ + new st[31]; \ + new Float:vl; \ + get_state(PART:"elm.text", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + set_state(PART:"elm.text", "visible", 0.0); \ + else \ + set_state(PART:"elm.text", "default", 0.0); \ + get_state(PART:"elm.swallow.content", st, 30, vl); \ + if (!strcmp(st, "visible")) \ + set_state(PART:"elm.swallow.content", "visible", 0.0); \ + else \ + set_state(PART:"elm.swallow.content", "default", 0.0); \ + get_state(PART:"check", st, 30, vl); \ + if (!strcmp(st, "disabled_visible")) \ + set_state(PART:"check", "visible", 0.0); \ + } \ + } \ + } \ + } + +//////////////////////////////////////////////////////////////////////////////// + CHECK_STYLE_GRID("gallery/grid", GALLERY_EDC_IMAGE_CHECK_GRID, 64, 64) + +//////////////////////////////////////////////////////////////////////////////// + group { name: "elm/check/base/gallery/pinch/grid"; + images.image: GALLERY_EDC_IMAGE_CHECK_PINCH_GRID COMP; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "icon_bg"; + type: RECT; + description { + state: "default" 0.0; + color: 0 0 0 0; + rel1 { relative: ZOOMED_GAP_L/ZOOMED_W ZOOMED_GAP_T/ZOOMED_H; to: "bg"; } + rel2 { relative: (ZOOMED_W-ZOOMED_GAP_R)/ZOOMED_W (ZOOMED_H-ZOOMED_GAP_B)/ZOOMED_H; to: "bg"; } + } + } + part { name: "bg2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "icon_bg"; + rel2.to: "icon_bg"; + align: 0.5 0.5; + min: 40 40; + max: 40 40; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "selected_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1.to: "icon_bg"; + rel2.to: "icon_bg"; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 0 0 0 153; + visible: 1; + } + } + part { name: "check"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg2"; + rel2.to: "bg2"; + visible: 0; + image.normal: GALLERY_EDC_IMAGE_CHECK_PINCH_GRID; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { + state: "default" 0.0; + fixed: 1 0; + visible: 0; + color: 255 255 255 255; + align: 0.0 0.5; + rel1 { + to_x: "bg2"; + relative: 1.0 0.0; + offset: 1 1; + } + rel2 { + to_x: "bg2"; + relative: 1.0 1.0; + offset: 2 -2; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 0 1; + rel1 { + relative: 1.0 0.5; + offset: 1 1; + to_x: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.5; + offset: -2 -2; + } + color: 255 255 255 255; + align: 0.0 0.5; + text { + style: "check_label_textblock_style"; + min: 0 0; + } + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; + } + } + part { name: "events"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "click"; + signal: "mouse,up,1"; + source: "events"; + action: SIGNAL_EMIT "elm,action,check,toggle" ""; + after: "bg_normal"; + } + program { name: "bg_normal"; + script { + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "mouseout"; + signal: "mouse,out"; + source: "events"; + after: "bg_check_normal"; + } + program { name: "bg_check_normal"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "pressed")) + set_state(PART:"check", "visible", 0.0); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "pressed"; + signal: "mouse,down,1"; + source: "events"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "pressed", 0.0); + set_state(PART:"bg", "pressed", 0.0); + set_state(PART:"bg2", "pressed", 0.0); + } + } + program { name: "check_on"; + signal: "elm,state,check,on"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "check_off"; + signal: "elm,state,check,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); + else + set_state(PART:"elm.swallow.content", "disabled", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "disabled_visible", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "visible", 0.0); + else + set_state(PART:"elm.swallow.content", "default", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"check", "visible", 0.0); + } + } + } + } + +//////////////////////////////////////////////////////////////////////////////// + group { name: "elm/check/base/gallery/album/grid"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "bg2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + align: 0.5 0.5; + min: 40 40; + max: 40 40; + color: 0 0 0 0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "selected_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 0 0 0 153; + visible: 1; + } + } + part { name: "check"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg2"; + rel2.to: "bg2"; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { + state: "default" 0.0; + fixed: 1 0; + visible: 0; + color: 255 255 255 255; + align: 0.0 0.5; + rel1 { + to_x: "bg2"; + relative: 1.0 0.0; + offset: 1 1; + } + rel2 { + to_x: "bg2"; + relative: 1.0 1.0; + offset: 2 -2; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 128 128 128 128; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 0 1; + rel1 { + relative: 1.0 0.5; + offset: 1 1; + to_x: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.5; + offset: -2 -2; + } + color: 255 255 255 255; + align: 0.0 0.5; + text { + style: "check_label_textblock_style"; + min: 0 0; + } + color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; + } + } + part { name: "events"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "click"; + signal: "mouse,up,1"; + source: "events"; + action: SIGNAL_EMIT "elm,action,check,toggle" ""; + after: "bg_normal"; + } + program { name: "bg_normal"; + script { + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "mouseout"; + signal: "mouse,out"; + source: "events"; + after: "bg_check_normal"; + } + program { name: "bg_check_normal"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "pressed")) + set_state(PART:"check", "visible", 0.0); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"bg2", "default", 0.0); + } + } + program { name: "pressed"; + signal: "mouse,down,1"; + source: "events"; + script { + new st[31]; + new Float:vl; + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "pressed", 0.0); + set_state(PART:"bg", "pressed", 0.0); + set_state(PART:"bg2", "pressed", 0.0); + } + } + program { name: "check_on"; + signal: "elm,state,check,on"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "check_off"; + signal: "elm,state,check,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "check"; + target: "selected_bg"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); + else + set_state(PART:"elm.swallow.content", "disabled", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"check", "disabled_visible", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disabler"; + target: "bg"; + target: "bg2"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.swallow.content", "visible", 0.0); + else + set_state(PART:"elm.swallow.content", "default", 0.0); + get_state(PART:"check", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"check", "visible", 0.0); + } + } + } + } + +#undef CHECK_STATE_DEFAULT +#undef CHECK_STATE_VISIBLE +#undef CHECK_STATE_DISABLED_VISIBLE +#undef CHECK_STATE_DISABLED diff --git a/res/edc/vp-controlbar.edc b/res/edc/vp-controlbar.edc new file mode 100755 index 0000000..a89a419 --- /dev/null +++ b/res/edc/vp-controlbar.edc @@ -0,0 +1,760 @@ +/* +* Refer to nbeat-theme\themes\groups\controlbar.edc +*/ + +#define CONTROLBAR_LARGE_H 78 //Macros defined in file: nbeat.edc. +#define CONTROLBAR_LARGE_LANDSCAPE_H 62 +#define CONTROLBAR_SMALL_H 65 +#define CONTROLBAR_SMALL_LANDSCAPE_H 50 +#define CONTROLBAR_W 78 + +#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 22 22 22 255 +#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 63 63 63 255 + + + group{ + name: "elm/controlbar/base/video/default"; + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_image"; + type: SWALLOW; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "large" 0.0; + min: 0 CONTROLBAR_LARGE_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "small" 0.0; + min: 0 CONTROLBAR_SMALL_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "left" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 0.0 1.0; offset: 0 -1;} + } + description{ + state: "right" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 {relative: 1.0 0.0; offset: -1 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + } + part{ + name: "elm.swallow.items"; + type: SWALLOW; + scale: 1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_image";} + rel2 {relative: 1.0 1.0; to: "bg_image";} + } + } + } + programs{ + program{ + name: "default"; + signal: "elm,state,default"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + } + program{ + name: "large"; + signal: "elm,state,large"; + source: "elm"; + action: STATE_SET "large" 0.0; + target: "bg_image"; + } + program{ + name: "small"; + signal: "elm,state,small"; + source: "elm"; + action: STATE_SET "small" 0.0; + target: "bg_image"; + } + program{ + name: "left"; + signal: "elm,state,left"; + source: "elm"; + action: STATE_SET "left" 0.0; + target: "bg_image"; + } + program{ + name: "right"; + signal: "elm,state,right"; + source: "elm"; + action: STATE_SET "right" 0.0; + target: "bg_image"; + } + } + } + + group{ + name: "elm/controlbar/background/video/default"; + images{ + image: "T01_toolbar_bg.png" COMP; + } + parts{ + part{ + name: "bg_image"; + type: IMAGE; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + image.normal: "T01_toolbar_bg.png"; + color: 255 255 255 255; + } + } + programs { + program { + name: "tabbar_bg"; + signal: "elm,state,tabbar"; + source: "elm"; + action: STATE_SET "tabbar" 0.0; + target: "bg_image"; + } + } + } + } + + group{ + name: "elm/controlbar/view/video/default"; + parts{ + part{ + name: "bg_rect"; + type: RECT; + mouse_events:1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "elm.swallow.view"; + type: SWALLOW; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_rect";} + rel2 {relative: 1.0 1.0; to: "bg_rect";} + } + } + } + } + + group{ + name: "elm/controlbar/item_bg/video/default"; + images{ + image: "T01_toolbar_press.png" COMP; + } + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + min: 0 CONTROLBAR_SMALL_H; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_img"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "toolbar_pressed" 0.0; + inherit: "default" 0.0; + rel1 {relative: 0.0 0.07; offset: 3 0;} + rel2 {relative: 1.0 0.93; offset: -3 0;} + image.normal: "T01_toolbar_press.png"; + image.border: 2 2 2 2; + visible: 1; + } + } + part{ + name: "left_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 5;} + rel2 {relative: 0.0 1.0; offset: 1 -3;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "right_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 1.0 0.0; offset: -1 5;} + rel2 {relative: 1.0 1.0; offset: 0 -3;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "top_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 5 0;} + rel2 {relative: 1.0 0.0; offset: -5 1;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "bottom_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 1.0; offset: 5 -1;} + rel2 {relative: 1.0 1.0; offset: -5 0;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "item"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + rel1 {to: "bg_rect";} + rel2 {to: "bg_rect";} + } + } + } + programs { + program { + name: "toolbar_pressed"; + signal: "elm,state,toolbar_pressed"; + source: "elm"; + action: STATE_SET "toolbar_pressed" 0.0; + target: "bg_img"; + } + program { + name: "unselected"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "unpressed"; + signal: "elm,state,unpressed"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "left_line_show"; + signal: "elm,state,left_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "left_line"; + } + program { + name: "left_line_hide"; + signal: "elm,state,left_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "left_line"; + } + program { + name: "right_line_show"; + signal: "elm,state,right_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "right_line"; + } + program { + name: "right_line_hide"; + signal: "elm,state,right_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "right_line"; + } + program { + name: "top_line_show"; + signal: "elm,state,top_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "top_line"; + } + program { + name: "top_line_hide"; + signal: "elm,state,top_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "top_line"; + } + program { + name: "bottom_line_show"; + signal: "elm,state,bottom_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "bottom_line"; + } + program { + name: "bottom_line_hide"; + signal: "elm,state,bottom_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bottom_line"; + } + } + } + + + group{ + name: "elm/controlbar/base/video/landscape/default"; + + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_image"; + type: SWALLOW; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "large" 0.0; + min: 0 CONTROLBAR_LARGE_LANDSCAPE_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "small" 0.0; + min: 0 CONTROLBAR_SMALL_LANDSCAPE_H; + fixed: 0 1; + align: 0.5 1.0; + rel1 {relative: 0.0 1.0; offset: 0 -1;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "left" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 0.0 1.0; offset: 0 -1;} + } + description{ + state: "right" 0.0; + min: CONTROLBAR_W 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 {relative: 1.0 0.0; offset: -1 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + } + part{ + name: "elm.swallow.items"; + type: SWALLOW; + scale: 1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_image";} + rel2 {relative: 1.0 1.0; to: "bg_image";} + } + } + } + programs{ + program{ + name: "default"; + signal: "elm,state,default"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + } + program{ + name: "large"; + signal: "elm,state,large"; + source: "elm"; + action: STATE_SET "large" 0.0; + target: "bg_image"; + } + program{ + name: "small"; + signal: "elm,state,small"; + source: "elm"; + action: STATE_SET "small" 0.0; + target: "bg_image"; + } + program{ + name: "left"; + signal: "elm,state,left"; + source: "elm"; + action: STATE_SET "left" 0.0; + target: "bg_image"; + } + program{ + name: "right"; + signal: "elm,state,right"; + source: "elm"; + action: STATE_SET "right" 0.0; + target: "bg_image"; + } + } + } + + group{ + name: "elm/controlbar/background/video/landscape/default"; + + images{ + image: "T01_toolbar_bg.png" COMP; + } + + parts{ + part{ + name: "bg_image"; + type: IMAGE; + scale: 1; + mouse_events:0; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + image.normal: "T01_toolbar_bg.png"; + color: 255 255 255 255; + } + } + programs { + program { + name: "tabbar_bg"; + signal: "elm,state,tabbar"; + source: "elm"; + action: STATE_SET "tabbar" 0.0; + target: "bg_image"; + } + } + } + } + + group{ + name: "elm/controlbar/view/video/landscape/default"; + + parts{ + part{ + name: "bg_rect"; + type: RECT; + mouse_events:1; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "elm.swallow.view"; + type: SWALLOW; + description{ + state: "default" 0.0; + rel1 {relative: 0.0 0.0; to: "bg_rect";} + rel2 {relative: 1.0 1.0; to: "bg_rect";} + } + } + } + } + + group{ + name: "elm/controlbar/item_bg/video/landscape/default"; + images{ + image: "T01_toolbar_press.png" COMP; + } + + parts{ + part{ + name: "bg_rect"; + type: RECT; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + min: 0 CONTROLBAR_SMALL_LANDSCAPE_H; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + color: 0 0 0 0; + } + } + part{ + name: "bg_img"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 0;} + rel2 {relative: 1.0 1.0; offset: -1 -1;} + } + description{ + state: "toolbar_pressed" 0.0; + inherit: "default" 0.0; + rel1 {relative: 0.0 0.07; offset: 3 0;} + rel2 {relative: 1.0 0.93; offset: -3 0;} + image.normal: "T01_toolbar_press.png"; + image.border: 2 2 2 2; + visible: 1; + } + } + part{ + name: "left_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 0 5;} + rel2 {relative: 0.0 1.0; offset: 1 -3;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "right_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 1.0 0.0; offset: -1 5;} + rel2 {relative: 1.0 1.0; offset: 0 -3;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "top_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 0.0; offset: 5 0;} + rel2 {relative: 1.0 0.0; offset: -5 1;} + color: CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "bottom_line"; + type: RECT; + scale: 1; + mouse_events: 0; + description{ + state: "default" 0.0; + visible: 0; + rel1 {relative: 0.0 1.0; offset: 5 -1;} + rel2 {relative: 1.0 1.0; offset: -5 0;} + color: CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC; + } + description{ + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part{ + name: "item"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description{ + state: "default" 0.0; + rel1 {to: "bg_rect";} + rel2 {to: "bg_rect";} + } + } + } + programs { + program { + name: "toolbar_pressed"; + signal: "elm,state,toolbar_pressed"; + source: "elm"; + action: STATE_SET "toolbar_pressed" 0.0; + target: "bg_img"; + } + program { + name: "unselected"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "unpressed"; + signal: "elm,state,unpressed"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_img"; + } + program { + name: "left_line_show"; + signal: "elm,state,left_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "left_line"; + } + program { + name: "left_line_hide"; + signal: "elm,state,left_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "left_line"; + } + program { + name: "right_line_show"; + signal: "elm,state,right_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "right_line"; + } + program { + name: "right_line_hide"; + signal: "elm,state,right_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "right_line"; + } + program { + name: "top_line_show"; + signal: "elm,state,top_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "top_line"; + } + program { + name: "top_line_hide"; + signal: "elm,state,top_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "top_line"; + } + program { + name: "bottom_line_show"; + signal: "elm,state,bottom_line_show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "bottom_line"; + } + program { + name: "bottom_line_hide"; + signal: "elm,state,bottom_line_hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bottom_line"; + } + } + } + diff --git a/res/edc/vp-ctxpopup.edc b/res/edc/vp-ctxpopup.edc new file mode 100755 index 0000000..24cdd9b --- /dev/null +++ b/res/edc/vp-ctxpopup.edc @@ -0,0 +1,1764 @@ +/////////////////////////////////////////////////////////////////////////////////////// +// +// ctxpopup +// +/////////////////////////////////////////////////////////////////////////////////////// + +#define CTXPOPUP_SHADOW_PADDING 10 +#define CTXPOPUP_FRAME_CORNER_SIZE 4 4 +#define CTXPOPUP_FONT_COLOR 0 0 0 255 +#define CTXPOPUP_CLICKED_FONT_COLOR 255 255 255 255 +#define CTXPOPUP_ITEM_DISABLED_COLOR 0 0 0 100 +#define CTXPOPUP_LIST_PADDING 10 +#define CTXPOPUP_LIST_SHADOW_PADDING 3 + +#define CTXPOPUP_BUBBLE_BG_IMAGE "white/common/00_popup_bubble_bg.png" +#define CTXPOPUP_BG_IMAGE "white/common/T01-2_popup_bg.png" +#define CTXPOPUP_BUBBLE_BG_IMAGE_BORDER 13 13 13 13 +#define CTXPOPUP_BG_IMAGE_BORDER 3 3 3 3 +#define CTXPOPUP_BG_IMAGEEDITOR_BORDER 10 10 10 10 +#define CTXPOPUP_BG_COLOR_INC 22 27 30 165 +#define CTXPOPUP_BG_PRESS_COLOR_INC 42 137 194 255 +#define CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC 249 249 249 255 +#define CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC 249 249 249 255 +#define CTXPOPUP_SEPARATOR_COLOR_INC 200 200 200 255 +#define CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC 200 200 200 255 +#define CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC 1 0 +#define CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC 1 999999 +#define CTXPOPUP_VERTICAL_SEPARATOR_MIN_SIZE_INC 0 1 +#define CTXPOPUP_VERTICAL_SEPARATOR_MAX_SIZE_INC 999999 1 +#define CTXPOPUP_TP_BG_COLOR_INC 0 140 210 255 +#define CTXPOPUP_ITEM_TEXT_SIZE_INC 33 +#define CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC 33 +#define CTXPOPUP_ITEM_HEIGHT_INC 112 +#define CTXPOPUP_ITEM_ICON_INC 160 112 +#define CTXPOPUP_ICON_WIDTH_INC 64 +#define CTXPOPUP_ICON_HEIGHT_INC 64 +#define CTXPOPUP_ARROW_SIZE_INC 40 24 +#define CTXPOPUP_CONTENT_WIDTH_MAX_INC 630 +#define CTXPOPUP_ITEM_PADDING_INC 35 +#define CTXPOPUP_IE_ARROW_SIZE_INC 52 +#define CTXPOPUP_IE_FONT_SIZE_INC 40 +#define CTXPOPUP_IE_ITEM_PADDING_INC 22 +#define CTXPOPUP_IE_ITEM_HEIGHT_INC 75 +#define CTXPOPUP_IE_CONTENT_WIDTH_MAX_INC 720 +#define CTXPOPUP_IE_ICON_WIDTH_INC 60 +#define CTXPOPUP_IE_ICON_HEIGHT_INC 60 +#define CTXPOPUP_TP_ARROW_SIZE_INC 30 +#define CTXPOPUP_TP_HEIGHT_INC 106 + +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/scroller/base/video/ctxpopup"; + script { + public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer; + public timer0(val) { + new v; + v = get_int(sbvis_v); + if (v) { + v = get_int(sbalways_v); + if(!v) { + emit("do-hide-vbar", ""); + set_int(sbvis_v, 0); + } + } + v = get_int(sbvis_h); + if (v) { + v = get_int(sbalways_h); + if(!v) { + emit("do-hide-hbar", ""); + set_int(sbvis_h, 0); + } + } + set_int(sbvis_timer, 0); + return 0; + } + } + images { + image: "white/common/01_scroller.png" COMP; + } + parts { + part { + name: "clipper"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + } + } + part { + name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + } + } + part { + name: "sb_vbar_clip_master"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_vbar_clip"; + clip_to:"sb_vbar_clip_master"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel2{ to:"clipper"; relative: 1.0 1.0;} + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_vbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + visible: 0; + align: 1.0 0.0; + rel1{ to:"clipper"; relative: 1.0 0.0; } + rel2{ to:"clipper"; relative: 1.0 1.0;} + } + } + part { + name: "elm.dragable.vbar"; + clip_to: "sb_vbar_clip"; + mouse_events: 0; + scale: 1; + dragable { + x: 0 0 0; + y: 1 1 0; + confine: "sb_vbar"; + } + description { + state: "default" 0.0; + fixed: 1 1; + min: 14 32; + rel1 { + relative: 0.5 0.5; + to: "sb_vbar"; + } + rel2 { + relative: 0.5 0.5; + to: "sb_vbar"; + } + image { + normal: "white/common/01_scroller.png"; + border: 0 0 6 6; + border_scale: 1; + } + } + } + part { + name: "sb_hbar_clip_master"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_hbar_clip"; + clip_to: "sb_hbar_clip_master"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel2{ to:"clipper"; relative: 1.0 1.0;} + } + description { + state: "hidden" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { + name: "sb_hbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + visible: 0; + align: 0.0 1.0; + rel1 {to:"clipper"; relative: 0.0 1.0;} + rel2 {to:"clipper"; relative: 1.0 1.0;} + } + } + part { + name: "elm.dragable.hbar"; + clip_to: "sb_hbar_clip"; + mouse_events: 0; + scale: 1; + dragable { + x: 1 1 0; + y: 0 0 0; + confine: "sb_hbar"; + } + description { + state: "default" 0.0; + fixed: 1 1; + min: 32 12; + rel1 {relative: 0.5 0.5; to: "sb_hbar";} + rel2 {relative: 0.5 0.5; to: "sb_hbar";} + image { + normal: "white/common/01_scroller.png"; + border: 6 6 0 0; + border_scale: 1; + } + } + } + } + programs { + program { + name: "load"; + signal: "load"; + source: ""; + script { + set_state(PART:"sb_vbar_clip", "hidden", 0.0); + set_state(PART:"sb_hbar_clip", "hidden", 0.0); + set_int(sbvis_v, 0); + set_int(sbvis_h, 0); + set_int(sbalways_v, 0); + set_int(sbalways_h, 0); + set_int(sbvis_timer, 0); + } + } + program { + name: "vbar_show"; + signal: "elm,action,show,vbar"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "sb_vbar_clip_master"; + } + program { + name: "vbar_hide"; + signal: "elm,action,hide,vbar"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "sb_vbar_clip_master"; + } + program { + name: "vbar_show_always"; + signal: "elm,action,show_always,vbar"; + source: "elm"; + script { + new v; + v = get_int(sbvis_v); + v |= get_int(sbalways_v); + if (!v) { + set_int(sbalways_v, 1); + emit("do-show-vbar", ""); + set_int(sbvis_v, 1); + } + } + } + program { + name: "vbar_show_notalways"; + signal: "elm,action,show_notalways,vbar"; + source: "elm"; + script { + new v; + v = get_int(sbalways_v); + if (v) { + set_int(sbalways_v, 0); + v = get_int(sbvis_v); + if (!v) { + emit("do-hide-vbar", ""); + set_int(sbvis_v, 0); + } + } + } + } + program { + name: "sb_vbar_show"; + signal: "do-show-vbar"; + source: ""; + action: STATE_SET "default" 0.0; + transition: LINEAR 1.0; + target: "sb_vbar_clip"; + } + program { + name: "sb_vbar_hide"; + signal: "do-hide-vbar"; + source: ""; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 1.0; + target: "sb_vbar_clip"; + } + program { + name: "hbar_show"; + signal: "elm,action,show,hbar"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "sb_hbar_clip_master"; + } + program { + name: "hbar_hide"; + signal: "elm,action,hide,hbar"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "sb_hbar_clip_master"; + } + program { + name: "hbar_show_always"; + signal: "elm,action,show_always,hbar"; + source: "elm"; + script { + new v; + v = get_int(sbvis_h); + v |= get_int(sbalways_h); + if (!v) { + set_int(sbalways_h, 1); + emit("do-show-hbar", ""); + set_int(sbvis_h, 1); + } + } + } + program { + name: "hbar_show_notalways"; + signal: "elm,action,show_notalways,hbar"; + source: "elm"; + script { + new v; + v = get_int(sbalways_h); + if (v) { + set_int(sbalways_h, 0); + v = get_int(sbvis_h); + if (!v) { + emit("do-hide-hbar", ""); + set_int(sbvis_h, 0); + } + } + } + } + program { + name: "sb_hbar_show"; + signal: "do-show-hbar"; + source: ""; + action: STATE_SET "default" 0.0; + transition: LINEAR 1.0; + target: "sb_hbar_clip"; + } + program { + name: "sb_hbar_hide"; + signal: "do-hide-hbar"; + source: ""; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 1.0; + target: "sb_hbar_clip"; + } + program { + name: "scroll"; + signal: "elm,action,scroll"; + source: "elm"; + action: STATE_SET "default" 0.0; + script { + new v; + v = get_int(sbvis_v); + v |= get_int(sbalways_v); + if (!v) { + emit("do-show-vbar", ""); + set_int(sbvis_v, 1); + } + v = get_int(sbvis_h); + v |= get_int(sbalways_h); + if(!v) { + emit("do-show-hbar", ""); + set_int(sbvis_h, 1); + } + v = get_int(sbvis_timer); + if (v > 0) cancel_timer(v); + v = timer(2.0, "timer0", 0); + set_int(sbvis_timer, v); + } + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/bg/video/pass_event"; + alias: "elm/ctxpopup/bg/video/extended/entry/pass_event"; + alias: "elm/ctxpopup/bg/video/extended/entry"; + alias: "elm/ctxpopup/bg/video/timepicker"; + parts { + part { + name: "bg"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "visible" 0.0; + visible: 0; + } + } + } + programs { + program { + name: "show"; + signal: "elm,state,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "bg"; + } + program { + name: "hide"; + signal: "elm,state,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/bg/video/default"; + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "visible" 0.0; + color: 0 0 0 0; + visible: 1; + } + } + } + programs { + program { + name: "clicked_event"; + signal: "mouse,clicked,1"; + source: "bg"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "show"; + signal: "elm,state,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "bg"; + } + program { + name: "hide"; + signal: "elm,state,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + } + } + } + + group { + name: "elm/ctxpopup/base/video/default"; + images { + image: CTXPOPUP_BUBBLE_BG_IMAGE COMP; + image: CTXPOPUP_BG_IMAGE COMP; + } + parts { + part { + name:"frame_shadow_left_top_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + rel2 { relative: 0 0; } + align: 1 1; + fixed: 1 1; + visible: 0; + } + } + part { + name:"frame_shadow_right_bottom_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + max: CTXPOPUP_SHADOW_PADDING CTXPOPUP_SHADOW_PADDING; + rel1{relative: 1 1;} + align: 0 0; + fixed: 1 1; + visible: 0; + } + } + + part { + name: "frame_shadow"; + type: IMAGE; + scale: 1; + mouse_events: 0; + clip_to: "ctxpopup_clip"; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.2 0.2; + to:"frame_shadow_left_top_padding"; + } + rel2 { + relative: 0.8 0.8; + to:"frame_shadow_right_bottom_padding"; + } + image { + normal: CTXPOPUP_BUBBLE_BG_IMAGE; + border: CTXPOPUP_BUBBLE_BG_IMAGE_BORDER; + border_scale: 1; + } + } + } + + part { name: "arrow_area_left"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 40 0; + fixed: 1 1; + align: 1 0.5; + rel1 { + relative: 0 1; + to_y: "ctxpopup_frame_left_top"; + } + rel2 { + relative:0 0; + to:"ctxpopup_frame_left_bottom"; + } + } + } + part { name: "arrow_area_right"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 40 0; + fixed: 1 1; + align: 0 0.5; + rel1 { + relative: 1 1; + to:"ctxpopup_frame_right_top"; + } + rel2 { + relative: 1 0; + to_y: "ctxpopup_frame_right_bottom"; + } + } + } + part { name: "arrow_area_up"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 0 40; + fixed: 1 1; + align: 0.5 1; + rel1 { + relative: 1 0; + to_x: "ctxpopup_frame_left_top"; + } + rel2 { + relative: 0 0; + to:"ctxpopup_frame_right_top"; + } + } + } + part { name: "arrow_area_down"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + description { state: "default" 0.0; + visible: 0; + min: 0 40; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 1 1; + to:"ctxpopup_frame_left_bottom"; + } + rel2 { + relative: 0 1; + to_x: "ctxpopup_frame_right_bottom"; + } + } + } + part { name: "elm.swallow.arrow_up"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_up"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + part { name: "elm.swallow.arrow_down"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_down"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + part { name: "elm.swallow.arrow_left"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_left"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + part { name: "elm.swallow.arrow_right"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + clip_to: "ctxpopup_clip"; + dragable { + x: 1 1 0; + y: 1 1 0; + confine: "arrow_area_right"; + } + description { + state: "default" 0.0; + min: 40 40; + fixed: 1 1; + visible: 1; + } + } + + part { + name: "ctxpopup_frame_left_top"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 0 0; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + + part { + name: "ctxpopup_frame_right_top"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 1 0; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + + part { + name: "ctxpopup_frame_left_bottom"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 0 1; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + + part { + name: "ctxpopup_frame_right_bottom"; + type: RECT; + scale: 1; + description { + visible: 0; + align: 1 1; + min: CTXPOPUP_FRAME_CORNER_SIZE; + max: CTXPOPUP_FRAME_CORNER_SIZE; + } + } + part { + name:"list_shadow_right_bottom_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_LIST_SHADOW_PADDING CTXPOPUP_LIST_SHADOW_PADDING; + max: CTXPOPUP_LIST_SHADOW_PADDING CTXPOPUP_LIST_SHADOW_PADDING; + align: 0 0; + fixed: 1 1; + visible: 0; + rel1 {to:"elm.swallow.content"; relative: 1 1;} + } + } + part { + name:"content_left_top_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + align: 0 0; + fixed: 1 1; + visible: 0; + } + } + part { + name:"content_right_bottom_padding"; + type:RECT; + scale: 1; + mouse_events: 0; + description { + min: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + max: CTXPOPUP_LIST_PADDING CTXPOPUP_LIST_PADDING; + rel1 { relative: 1 1;} + rel2 { relative: 1 1;} + align: 1 1; + fixed: 1 1; + visible: 0; + } + } + + + part { + name: "frame_bg"; + type: IMAGE; + scale: 1; + mouse_events: 0; + clip_to: "ctxpopup_clip"; + description { + state: "default" 0.0; + visible: 1; + rel1 {to:"ctxpopup_frame_left_top";} + rel2 {to:"ctxpopup_frame_right_bottom";} + image { + normal: CTXPOPUP_BG_IMAGE; + border: CTXPOPUP_BG_IMAGE_BORDER; + border_scale: 1; + } + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + clip_to: "ctxpopup_clip"; + description { + state: "default" 0.0; + align: 0 0; + rel1 {to:"ctxpopup_frame_left_top"; relative: 0.5 0.5;} + rel2 {to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5;} + } + } + part { name: "ctxpopup_clip"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + rel1 { to:"ctxpopup_frame_left_top"; relative: 0.5 0.5; } + rel2 { to:"ctxpopup_frame_right_bottom"; relative: 0.5 0.5; } + } + description { state: "show_up" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_down"; relative: 0 1; } + rel2 { to:"arrow_area_down"; relative: 1 1; } + } + description { state: "show_left" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_right"; relative: 1 0; } + rel2 { to:"arrow_area_right"; relative: 1 1; } + } + description { state: "show_right" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_left"; relative: 0 0; } + rel2 { to:"arrow_area_left"; relative: 0 1; } + } + description { state: "show_down" 0.0; + color: 255 255 255 0; + rel1 { to:"arrow_area_up"; relative: 0 0; } + rel2 { to:"arrow_area_up"; relative: 1 0; } + } + description { state: "hide_up" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_down"; relative: 0 1; } + rel2 { to:"arrow_area_down"; relative: 1 1; } + } + description { state: "hide_left" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_right"; relative: 1 0; } + rel2 { to:"arrow_area_right"; relative: 1 1; } + } + description { state: "hide_right" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_left"; relative: 0 0; } + rel2 { to:"arrow_area_left"; relative: 0 1; } + } + description { state: "hide_down" 0.0; + color: 255 255 255 255; + rel1 { to:"arrow_area_up"; relative: 0 0; } + rel2 { to:"arrow_area_up"; relative: 1 0; } + } + description { state: "visible" 0.0; + color: 255 255 255 255; + rel1 { to_x:"arrow_area_left"; to_y:"arrow_area_up"; } + rel2 { to_x:"arrow_area_right"; to_y:"arrow_area_down"; } + } + } + } + programs { + program { name: "show"; + signal: "elm,state,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_up"; + signal: "elm,state,show,up"; + source: "elm"; + action: STATE_SET "show_up" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_left"; + signal: "elm,state,show,left"; + source: "elm"; + action: STATE_SET "show_left" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_right"; + signal: "elm,state,show,right"; + source: "elm"; + action: STATE_SET "show_right" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "show_down"; + signal: "elm,state,show,down"; + source: "elm"; + action: STATE_SET "show_down" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + } + program { name: "hide_up"; + signal: "elm,state,hide,up"; + source: "elm"; + action: STATE_SET "hide_up" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_left"; + signal: "elm,state,hide,left"; + source: "elm"; + action: STATE_SET "hide_left" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_right"; + signal: "elm,state,hide,right"; + source: "elm"; + action: STATE_SET "hide_right" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_down"; + signal: "elm,state,hide,down"; + source: "elm"; + action: STATE_SET "hide_down" 0.0; + transition: LINEAR 0.25; + target: "ctxpopup_clip"; + after: "hide_finished"; + } + program { name: "hide_finished"; + action: SIGNAL_EMIT "elm,action,hide,finished" ""; + } + } + } + +/////////////////////////////////////////////////////////////////////////////// + group { name: "elm/ctxpopup/arrow/video/default"; + images { + image: "white/common/00_popup_tail_left.png" COMP; + image: "white/common/00_popup_tail_right.png" COMP; + image: "white/common/00_popup_tail_top.png" COMP; + image: "white/common/00_popup_tail_bottom.png" COMP; + image: "white/common/T01-2_popup_arrow.png" COMP; + } + parts { + part { + name: "ctxpopup_arrow"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + visible: 0; + align: 0.5 0.5; + } + description { + state: "left" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 1.0 0.5; + image { + normal: "white/common/00_popup_tail_left.png"; + } + } + description { + state: "right" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.0 0.5; + image { + normal: "white/common/00_popup_tail_right.png"; + } + } + description { + state: "top" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 1.0; + image { + normal: "white/common/T01-2_popup_arrow.png"; + } + } + description { + state: "bottom" 0.0; + min: CTXPOPUP_ARROW_SIZE_INC; + max: CTXPOPUP_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + image { + normal: "white/common/00_popup_tail_bottom.png"; + } + } + } + } + programs { + program { + name: "enable_left_arrow"; + signal: "elm,state,left"; + source: "elm"; + action: STATE_SET "left" 0.0; + target: "ctxpopup_arrow"; + } + program { + name: "enable_right_arrow"; + signal: "elm,state,right"; + source: "elm"; + action: STATE_SET "right" 0.0; + target: "ctxpopup_arrow"; + } + program { + name: "enable_top_arrow"; + signal: "elm,state,top"; + source: "elm"; + action: STATE_SET "top" 0.0; + target: "ctxpopup_arrow"; + } + program { + name: "enable_bottom_arrow"; + signal: "elm,state,bottom"; + source: "elm"; + action: STATE_SET "bottom" 0.0; + target: "ctxpopup_arrow"; + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/text_style_item/video/default"; + parts { + part { + name: "event_blocker"; + mouse_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } + part { + name: "bg"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + color: CTXPOPUP_BG_COLOR_INC; + visible: 0; + } + description { + state: "clicked" 0.0; + color: CTXPOPUP_BG_PRESS_COLOR_INC; + visible: 1; + } + } + part { + name: "separator"; + mouse_events: 0; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 1 0; + max: 1 999999; + visible: 0; + } + description { + state: "horizontal" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0 0.5; + min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + description { + state: "vertical" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 0 1; + max: 999999 1; + visible: 1; + } + } + part { + name: "left_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 30 CTXPOPUP_ITEM_HEIGHT_INC; + max: 30 CTXPOPUP_ITEM_HEIGHT_INC; + align: 0 0.5; + fixed: 1 1; + visible: 0; + } + } + part { + name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 1 CTXPOPUP_ITEM_HEIGHT_INC; + max: (CTXPOPUP_CONTENT_WIDTH_MAX_INC-2*CTXPOPUP_ITEM_PADDING_INC) CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 0 1; + align: 0.5 0.5; + rel1 {relative: 1.0 0.0; to: "left_padding";} + rel2 {relative: 0.0 1.0; to: "right_padding";} + color: CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC; + text { + font: "SLP:style=Regular"; + size: CTXPOPUP_ITEM_TEXT_SIZE_INC; + align: 0 0.5; + min: 1 1; + text_class: "list_item"; + } + } + description { + state: "text_horizontal" 0.0; + inherit: "default" 0.0; + text { + size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC; + align: 0.5 0.5; + min: 1 1; + } + } + description { + state: "compress" 0.0; + inherit: "default" 0.0; + max: -1 -1; + text { + min: 0 1; + } + } + description { + state: "compress.text_horizontal" 0.0; + inherit: "default" 0.0; + max: -1 -1; + text { + size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC; + align: 0.5 0.5; + min: 0 1; + } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC; + } + description { + state: "clicked.text_horizontal" 0.0; + inherit: "default" 0.0; + color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC; + text { + size: CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC; + align: 0.5 0.5; + min: 0 1; + } + } + } + part { + name: "right_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 30 CTXPOPUP_ITEM_HEIGHT_INC; + max: 30 CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 1 0; + align: 1.0 0.5; + } + } + part { + name: "over1"; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { + state: "default" 0.0; + } + } + part { + name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "disclip"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "disabled" 0.0; + visible: 1; + color: CTXPOPUP_ITEM_DISABLED_COLOR; + } + } + } + programs { + program { + name: "item_unclick"; + signal: "mouse,up,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "default"; + signal: "elm,state,default"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + } + } + program { + name: "compress"; + signal: "elm,state,compress"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"separator", st, 30, vl); + if (!strcmp(st, "horizontal")) + set_state(PART:"elm.text", "compress.text_horizontal", 0.0); + else + set_state(PART:"elm.text", "compress", 0.0); + } + } + program { + name: "vertical"; + signal: "elm,state,vertical"; + source: "elm"; + script { + set_state(PART:"separator", "vertical", 0.0); + set_state(PART:"elm.text", "vertical", 0.0); + } + } + program { + name: "horizontal"; + signal: "elm,state,horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "horizontal", 0.0); + set_state(PART:"elm.text", "text_horizontal", 0.0); + } + } + program { + name: "text_horizontal"; + signal: "elm,state,text_horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + set_state(PART:"elm.text", "text_horizontal", 0.0); + } + } + program { + name: "item_click2"; + signal: "mouse,down,1"; + source: "over2"; + script { + new st[31]; + new Float:vl; + get_state(PART:"separator", st, 30, vl); + if (!strcmp(st, "horizontal")) + set_state(PART:"elm.text", "clicked.text_horizontal", 0.0); + else + set_state(PART:"elm.text", "clicked", 0.0); + set_state(PART:"bg", "clicked", 0.0); + } + } + program { + name: "item_unclick2"; + signal: "mouse,up,1"; + source: "over2"; + script { + new st[31]; + new Float:vl; + get_state(PART:"separator", st, 30, vl); + if (!strcmp(st, "horizontal")) + set_state(PART:"elm.text", "compress.text_horizontal", 0.0); + else + set_state(PART:"elm.text", "compress", 0.0); + set_state(PART:"bg", "default", 0.0); + } + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/icon_style_item/video/default"; + parts { + part { + name: "event_blocker"; + mouse_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } + part { + name: "bg"; + scale: 1; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + color: CTXPOPUP_BG_COLOR_INC; + visible: 0; + min: CTXPOPUP_ITEM_ICON_INC; + max: CTXPOPUP_ITEM_ICON_INC; + } + description { + state: "clicked" 0.0; + color: CTXPOPUP_BG_PRESS_COLOR_INC; + visible: 1; + } + } + part { + name: "left_top_padding"; + scale: 1; + description { + min: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + max: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + visible: 0; + align: 0 0; + fixed: 1 1; + } + } + part { + name: "separator"; + mouse_events: 0; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 1 0; + max: 1 999999; + visible: 0; + } + description { + state: "horizontal" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0 0.5; + min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + description { + state: "vertical" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: CTXPOPUP_VERTICAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_VERTICAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: (CTXPOPUP_ICON_WIDTH_INC - 10) (CTXPOPUP_ICON_HEIGHT_INC - 10); + max: (CTXPOPUP_ICON_WIDTH_INC - 10) (CTXPOPUP_ICON_HEIGHT_INC - 10); + align: 0.5 0.5; + aspect: 1.0 1.0; + rel1 { to: "left_top_padding"; relative: 1 1; } + rel2 { to: "right_bottom_padding"; relative: 0 0; } + } + } + part { + name: "right_bottom_padding"; + scale: 1; + description { + min: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + max: (CTXPOPUP_ITEM_PADDING_INC * 2) CTXPOPUP_ITEM_PADDING_INC; + visible: 0; + align: 1 1; + fixed: 1 1; + } + } + part { + name: "over1"; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { + state: "default" 0.0; + } + } + part { + name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "disclip"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "disabled" 0.0; + visible: 1; + color: CTXPOPUP_ITEM_DISABLED_COLOR; + } + } + } + programs { + program { + name: "default"; + signal: "elm,state,default"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + } + } + program { + name: "vertical"; + signal: "elm,state,vertical"; + source: "elm"; + script { + set_state(PART:"separator", "vertical", 0.0); + } + } + program { + name: "horizontal"; + signal: "elm,state,horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "horizontal", 0.0); + } + } + program { + name: "item_unclick"; + signal: "mouse,up,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "item_click2"; + signal: "mouse,down,1"; + source: "over2"; + script { + set_state(PART:"bg", "clicked", 0.0); + } + } + program { + name: "item_unclick2"; + signal: "mouse,up,1"; + source: "over2"; + script { + set_state(PART:"bg", "default", 0.0); + } + } + } + } +/////////////////////////////////////////////////////////////////////////////// + group { + name: "elm/ctxpopup/icon_text_style_item/video/default"; + parts { + part { + name: "event_blocker"; + mouse_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "bg"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + color: CTXPOPUP_BG_COLOR_INC; + visible: 0; + } + description { + state: "clicked" 0.0; + color: CTXPOPUP_BG_PRESS_COLOR_INC; + visible: 1; + } + } + part { + name: "icon_left_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + align: 0 0; + fixed: 1 1; + visible: 0; + } + } + part { + name: "separator"; + mouse_events: 0; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 1 0; + max: 1 999999; + visible: 0; + } + description { + state: "horizontal" 0.0; + color: CTXPOPUP_HORIZONTAL_SEPARATOR_COLOR_INC; + align: 0 0.5; + min: CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC; + max: CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC; + visible: 1; + } + description { + state: "vertical" 0.0; + color: CTXPOPUP_SEPARATOR_COLOR_INC; + align: 0.5 0; + min: 0 1; + max: 999999 1; + visible: 1; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: CTXPOPUP_ICON_WIDTH_INC CTXPOPUP_ICON_HEIGHT_INC; + max: CTXPOPUP_ICON_WIDTH_INC CTXPOPUP_ICON_HEIGHT_INC; + align: 0 0.5; + aspect: 1.0 1.0; + rel1 { to:"icon_left_padding"; relative: 1 0; } + } + } + part { + name: "icon_right_padding"; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + align: 0 0.5; + fixed: 1 1; + visible: 0; + rel1 { to:"elm.swallow.icon"; relative: 1 1; } + } + } + part { + name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 1 CTXPOPUP_ITEM_HEIGHT_INC; + max: (CTXPOPUP_CONTENT_WIDTH_MAX_INC-(3*CTXPOPUP_ITEM_PADDING_INC)-CTXPOPUP_ICON_WIDTH_INC) CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 0 1; + align: 0.5 0.5; + rel1 {relative: 1.0 0.0; to_x: "icon_right_padding";} + rel2 {relative: 0.0 1.0; to_x: "text_right_padding";} + color: CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: CTXPOPUP_ITEM_TEXT_SIZE_INC; + align: 0.0 0.5; + min: 1 1; + text_class: "list_item"; + } + } + description { + state: "compress" 0.0; + inherit: "default" 0.0; + max: -1 -1; + text { + min: 0 1; + } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + color: CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC; + } + } + part { + name: "text_right_padding"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + max: CTXPOPUP_ITEM_PADDING_INC CTXPOPUP_ITEM_HEIGHT_INC; + fixed: 1 0; + align: 1.0 0.5; + } + } + part { + name: "over1"; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { + state: "default" 0.0; + } + } + part { + name: "over2"; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "disclip"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "disabled" 0.0; + visible: 1; + color: CTXPOPUP_ITEM_DISABLED_COLOR; + } + } + } + programs { + program { + name: "item_unclick"; + signal: "mouse,up,1"; + source: "over1"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { + name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "default"; + signal: "elm,state,default"; + source: "elm"; + script { + set_state(PART:"separator", "default", 0.0); + } + } + program { + name: "compress"; + signal: "elm,state,compress"; + source: "elm"; + action: STATE_SET "compress" 0.0; + target: "elm.text"; + } + program { + name: "vertical"; + signal: "elm,state,vertical"; + source: "elm"; + script { + set_state(PART:"separator", "vertical", 0.0); + } + } + program { + name: "horizontal"; + signal: "elm,state,horizontal"; + source: "elm"; + script { + set_state(PART:"separator", "horizontal", 0.0); + } + } + program { + name: "item_click2"; + signal: "mouse,down,1"; + source: "over2"; + script { + set_state(PART:"elm.text", "clicked", 0.0); + set_state(PART:"bg", "clicked", 0.0); + } + } + program { + name: "item_unclick2"; + signal: "mouse,up,1"; + source: "over2"; + script { + set_state(PART:"elm.text", "compress", 0.0); + set_state(PART:"bg", "default", 0.0); + } + } + } + } + + + + diff --git a/res/edc/vp-custom-winset-style.edc b/res/edc/vp-custom-winset-style.edc new file mode 100755 index 0000000..7e12a69 --- /dev/null +++ b/res/edc/vp-custom-winset-style.edc @@ -0,0 +1,12 @@ +#include "image_res.edc" + +collections { + #include "vp-button-white.edc" + #include "vp-controlbar.edc" + #include "custom/vp-naviframe-custom.edc" + #include "vp-layout.edc" + #include "vp-check.edc" + #include "vp-progressbar-list.edc" + #include "vp-ctxpopup.edc" + #include "vp-nocontents.edc" +} diff --git a/res/edc/vp-layout.edc b/res/edc/vp-layout.edc new file mode 100755 index 0000000..dff249c --- /dev/null +++ b/res/edc/vp-layout.edc @@ -0,0 +1,377 @@ + /*************************************************/ + /* elm_layout -> video style */ + /*************************************************/ + +group { + name: "elm/layout/application/video"; + parts { + part { + name: "elm.swallow.bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "elm.swallow.indicator"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 50; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: 0 0 0 255; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + fixed: 0 1; + } + } + + part { + name: "elm.swallow.pixmap.bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 255; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "elm.swallow.pixmap"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.event"; + type: SWALLOW; + mouse_events: 1; + repeat_events : 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.subtitle"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + repeat_events : 1; + description { + state: "default" 0.0; + rel1.to_y: "elm.swallow.indicator"; + rel1.relative: 0.0 1.0; + } + } + + part { + name: "elm.swallow.volume.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 813; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: 0 255 0 128; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 336; + } + } + + part { + name: "elm.swallow.volume"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 616 104; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + rel2 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + } + } + + part { + name: "elm.swallow.subtitle.sync"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.controlbar"; + type: SWALLOW; + description { + state: "default" 0.0; + visible: 0; + } + } + } /* parts */ + + programs { + program { + signal: "signal.layout.pixmap.bg.show"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "show", 0.0); + } + } + program { + signal: "signal.layout.pixmap.bg.hide"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "default", 0.0); + } + } + program { + signal: "signal.layout.indicator.show"; + source: "*"; + script { + set_state(PART:"elm.swallow.indicator", "default", 0.0); + } + } + program { + signal: "signal.layout.indicator.hide"; + source: "*"; + script { + set_state(PART:"elm.swallow.indicator", "hide", 0.0); + } + } + program { + signal: "signal.volume.potrait.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "default", 0.0); + } + } + program { + signal: "signal.volume.landscape.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "landscape", 0.0); + } + } + + } +} /* group */ + +group { + name: "elm/layout/application/video_no_indicator"; + parts { + part { + name: "elm.swallow.bg"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + color: 0 0 0 255; + } + } + part { + name: "elm.swallow.pixmap.bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 255; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "elm.swallow.pixmap"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.event"; + type: SWALLOW; + mouse_events: 1; + repeat_events : 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.subtitle"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + mouse_events: 1; + repeat_events : 1; + scale: 1; + description { + state: "default" 0.0; + } + } + part { + name: "elm.swallow.subtitle.sync"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "elm.swallow.controlbar"; + type: SWALLOW; + description { + state: "default" 0.0; + visible: 0; + } + } + + part { + name: "elm.swallow.volume.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 0 813; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: 0 255 0 128; + } + description { + state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 336; + } + } + + part { + name: "elm.swallow.volume"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + min: 616 104; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + rel2 { relative: 0.5 1.0; to_y : "elm.swallow.volume.top"; } + } + } + } /* parts */ + + programs { + program { + signal: "signal.layout.pixmap.bg.show"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "show", 0.0); + } + } + program { + signal: "signal.layout.pixmap.bg.hide"; + source: "*"; + script { + set_state(PART:"elm.swallow.pixmap.bg", "default", 0.0); + } + } + program { + signal: "signal.volume.potrait.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "default", 0.0); + } + } + program { + signal: "signal.volume.landscape.mode"; + source: "*"; + script { + set_state(PART:"elm.swallow.volume.top", "landscape", 0.0); + } + } + } +} /* group */ + + diff --git a/res/edc/vp-naviframe.edc b/res/edc/vp-naviframe.edc new file mode 100755 index 0000000..49bde21 --- /dev/null +++ b/res/edc/vp-naviframe.edc @@ -0,0 +1,4830 @@ +#include "image_res.edc" + +#define NAVIFRAME_TITLE_H_INC_PORTRATE 90 +#define NAVIFRAME_TITLE_H_INC_LANDSCAPE 72 + +#define NAVIFRAME_TITLE_H_INC 100 +#define NAVIFRAME_SEGMENT_TITLE_H_INC 136 +#define NAVIFRAME_OH_OPENED_H_INC 106 +#define NAVIFRAME_OH_CONTENT_H_INC 74 +#define NAVIFRAME_OH_PADDING_INC 16 +#define NAVIFRAME_OH_ARROW_SIZE_INC 19 12 +#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196 +#define NAVIFRAME_PREV_BTN_W_INC 124 +#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10 +#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80 +#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144 +#define NAVIFRAME_TEXT_PADDING_INC 144 +#define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52 +#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186 +#define NAVIFRAME_TITLE_SEGMENT_H_INC 74 +#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 28 +#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50 +#define NAVIFRAME_TITLE_FONT_SIZE_INC 36 +#define NAVIFRAME_ICON_SIZE_INC 32 32 +#define NAVIFRAME_ICON_PADDING_INC 16 0 +#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 37 48 54 255 +#define NAVIFRAME_TITLE_TEXT_COLOR_INC 235 236 237 255 +#define NAVIFRAME_TITLE_BG_COLOR_INC 50 65 74 255 +#define NAVIFRAME_OH_BORDER_INC 0 0 4 0 + +#define CONTROLBAR_LARGE_HEIGHT_INC 122 +#define CONTROLBAR_SMALL_HEIGHT_INC 102 +#define CONTROLBAR_WIDTH_INC 122 + + +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 + + group { name:"elm/naviframe/base/video/default"; + parts { + part { name: "base"; + description { state: "default" 0.0; + } + } + } + } + group { name:"elm/naviframe/item/video/basic/default"; + alias:"elm/naviframe/item/video/1line/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + image: "T01_title_bg.png" COMP; + image: "T01_title_bg_h.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + type: IMAGE; // ORIGINAL - type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC_PORTRATE; // ORIGINAL - min: 1 NAVIFRAME_TITLE_H_INC + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + image { normal: "T01_title_bg.png"; } // ORIGINAL - color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC_LANDSCAPE; + image { normal: "T01_title_bg_h.png"; } + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + program { + name: "title_portrate_mode"; + signal: "signal.naviframe.portrate.mode"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "title_bg"; + } + program { + name: "title_landscape_mode"; + signal: "signal.naviframe.landscape.mode"; + source: "*"; + action: STATE_SET "landscape" 0.0; + target: "title_bg"; + } + } + } + + + + + group { name:"elm/naviframe/item/basic2/default"; + alias:"elm/naviframe/item/video/2line/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.mid.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader2"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader.mid.padding";} + rel2 { relative: 1.0 1.0; to: "optionheader.mid.padding";} + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.bottom.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader2"; } + rel2 { relative: 1.0 1.0; to: "optionheader2"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 0; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/segment/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "title_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + fixed: 1 1; + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0; + rel1.to: "padding_before_left_btn"; + rel1.relative: 1 0; + rel2.to: "padding_after_right_btn"; + rel2.relative: 0 1; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0; + rel1.relative: 1.0 1.0; + rel1.to_x: "padding_before_left_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 1.0 1.0; + rel2.to_x: "padding_before_left_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.0; + fixed: 1 1; + rel1.relative: 0.0 1.0; + rel1.to_x: "padding_after_right_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 0.0 1.0; + rel2.to_x: "padding_after_right_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "segment2"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.to_x: "title_bg"; + rel1.relative: 0.28 1; + rel2.to_y: "elm.text.title"; + rel2.to_x: "title_bg"; + rel2.relative: 0.72 1; + } + } + part { name: "segment3"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.relative: 0.2 1; + rel1.to_x: "title_bg"; + rel2.to_y: "elm.text.title"; + rel2.to_x: "title_bg"; + rel2.relative: 0.8 1; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "title_bg"; + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/tabbar/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel1.to: "base"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name:"elm/naviframe/item/basic/instant/default"; + alias:"elm/naviframe/item/video/1line/instant/default"; + alias:"elm/naviframe/item/video/instant/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,tltle_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name:"elm/naviframe/item/basic2/instant/default"; + alias:"elm/naviframe/item/video/2line/instant/default"; + alias:"elm/naviframe/item/video/instant2/default"; + images { + image: "naviframe_optionheader.png" COMP; + image: "naviframe_optionheader_arrow.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + } + parts { + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "naviframe_optionheader.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_DOUBLE_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.mid.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader2"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader.mid.padding";} + rel2 { relative: 1.0 1.0; to: "optionheader.mid.padding";} + fixed: 0 1; + align: 0.0 0.0; + } + } + part { name: "optionheader.bottom.padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader2"; } + rel2 { relative: 1.0 1.0; to: "optionheader2"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_before_more_btn"; + type: RECT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_more_btn"; } + rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } + rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 0; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } + rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.025; to: "title_more_btn"; } + rel2 { relative: 1.0 1.025; to: "title_more_btn"; } + image.normal: "naviframe_optionheader_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + if (get_int(more_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + set_state(PART:"padding_before_right_btn", "default", 0.0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,elm.swallow.icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,elm.swallow.icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/segment/instant/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "title_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_SEGMENT_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_y: "title_bg"; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "padding_before_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_after_left_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_left_btn"; } + rel2 { relative: 1.0 1.0; to: "title_left_btn"; } + visible: 0; + } + } + part { name: "padding_after_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + } + part { name: "padding_before_right_btn"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + text_class: "slp_medium"; + size: NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + } + min: 0 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC; + fixed: 1 1; + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.5 0; + rel1.to: "padding_before_left_btn"; + rel1.relative: 1 0; + rel2.to: "padding_after_right_btn"; + rel2.relative: 0 1; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 0 0; + rel1.relative: 1.0 1.0; + rel1.to_x: "padding_before_left_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 1.0 1.0; + rel2.to_x: "padding_before_left_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.0; + fixed: 1 1; + rel1.relative: 0.0 1.0; + rel1.to_x: "padding_after_right_btn"; + rel1.to_y: "elm.text.title"; + rel2.relative: 0.0 1.0; + rel2.to_x: "padding_after_right_btn"; + rel2.to_y: "elm.text.title"; + } + } + part { name: "segment2"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.relative: 0.28 1; + rel2.to_y: "elm.text.title"; + rel2.relative: 0.72 1; + } + } + part { name: "segment3"; + type: "SWALLOW"; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_TITLE_SEGMENT_H_INC; + max: 999999 NAVIFRAME_TITLE_SEGMENT_H_INC; + fixed: 0 1; + align: 0.5 0; + rel1.to_y: "elm.text.title"; + rel1.relative: 0.2 1; + rel2.to_y: "elm.text.title"; + rel2.relative: 0.8 1; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "title_clip"; + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_clip"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + group { name: "elm/naviframe/item/tabbar/instant/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bgp_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } diff --git a/res/edc/vp-naviframe_white.edc b/res/edc/vp-naviframe_white.edc new file mode 100755 index 0000000..059d987 --- /dev/null +++ b/res/edc/vp-naviframe_white.edc @@ -0,0 +1,853 @@ +#define NAVIFRAME_TITLE_H_INC 108 +#define NAVIFRAME_SEGMENT_TITLE_H_INC 126 +#define NAVIFRAME_OH_OPENED_H_INC 114 +#define NAVIFRAME_OH_CONTENT_H_INC 72 +#define NAVIFRAME_OH_PADDING_INC 16 +#define NAVIFRAME_OH_SHADOW_INC 10 +#define NAVIFRAME_OH_ARROW_SIZE_INC 28 24 +#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 202 +#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 120 72 +#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144 +#define NAVIFRAME_TITLE_SEGMENT_H_INC 62 +#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 38 +#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 54 +#define NAVIFRAME_TITLE_FONT_SIZE_INC 52 +#define NAVIFRAME_ICON_SIZE_INC 32 32 +#define NAVIFRAME_PADDING_INC 16 0 +#define NAVIFRAME_ICON_PADDING_INC 64 0 +#define NAVIFRAME_TITLE_TEXT_COLOR_INC 249 249 249 255 +#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 249 249 249 255 +#define NAVIFRAME_OH_BORDER_INC 1 1 5 1 +#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 200 + +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 + +#define CONTROLBAR_LARGE_HEIGHT_INC 122 +#define CONTROLBAR_SMALL_HEIGHT_INC 114 +#define CONTROLBAR_WIDTH_INC 122 + + +group { + name:"elm/naviframe/base/video/default"; + parts { + part { + name: "base"; + description { + state: "default" 0.0; + } + } + } +} + +group { + name:"elm/naviframe/item/video/basic/default"; + alias:"elm/naviframe/item/video/1line/default"; + images { + image: "white/common/00_winset_control_top_bg.png" COMP; + image: "white/common/00_winset_control_top_arrow.png" COMP; + image: "white/common/00_winset_title_line.png" COMP; + image: "white/common/00_winset_control_toolbar_bg.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { + name: "base"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + } + description { + state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { + state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { + name: "title_bg"; + scale: 1; + type: RECT; + description { + state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + visible: 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + color: NAVIFRAME_TITLE_BG_COLOR_INC; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { + name: "title_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { + normal: "white/common/00_winset_control_top_bg.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { + name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { + name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 0 1; + align: 0.0 0.0; + } + } + part { + name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "optionheader_shadow"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { + state: "default" 0.0; + min: 0 NAVIFRAME_OH_SHADOW_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_bottom_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_bottom_padding"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { + name: "content_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { + name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING_INC; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + visible: 0; + } + description { + state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_ICON_PADDING_INC; + } + } + part { + name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: NAVIFRAME_PADDING_INC; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to_x: "title_more_btn"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "title_more_btn"; to_y: "title_bg"; } + visible: 0; + } + } + part { + name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + } + } + part { + name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { + state: "default" 0.0; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "elm.text.title"; } + rel2 { relative: 0.0 1.0; to: "elm.text.title"; } + fixed: 1 0; + min: NAVIFRAME_PADDING_INC; + visible: 0; + } + } + part { + name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_before_text"; } + rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 1.0 0.5; + } + } + part { + name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { + name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + } + } + part { + name: "left_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + image.normal: "white/common/00_winset_title_line.png"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + } + } + part { + name: "right_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + image.normal: "white/common/00_winset_title_line.png"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { + state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + } + } + part { + name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.1; to: "title_more_btn"; } + rel2 { relative: 1.0 1.2; to: "title_more_btn"; } + image.normal: "white/common/00_winset_control_top_arrow.png"; + color: 255 255 255 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { + name: "controlbar_bg"; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + image.normal: "white/common/00_winset_control_toolbar_bg.png"; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { + name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + } + } + part { + name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { + name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { + name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { + state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { + name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { + name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { + name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { + name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { + name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { + name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { + name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { + name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { + name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { + name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { + name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { + name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { + name: "icon_show"; + signal: "elm,state,icon,show"; + source: "elm"; + action: STATE_SET "icon" 0.0; + target: "padding_center_text1"; + } + program { + name: "icon_hide"; + signal: "elm,state,icon,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "padding_center_text1"; + } + program { + name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "left_btn_separator"; + } + program { + name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "left_btn_separator"; + } + program { + name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "right_btn_separator"; + } + program { + name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "right_btn_separator"; + } + program { + name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { + name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { + name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { + name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { + name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { + name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { + name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { + name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { + name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { + name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { + name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { + name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { + name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { + name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { + name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { + name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { + name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { + name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } /* programs */ +} /* group */ + + diff --git a/res/edc/vp-nocontents.edc b/res/edc/vp-nocontents.edc new file mode 100755 index 0000000..903694a --- /dev/null +++ b/res/edc/vp-nocontents.edc @@ -0,0 +1,72 @@ +#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC 32 +#define NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC 173 170 165 255 + + group { + name: "elm/layout/nocontents/video"; + styles{ + style { name: "nocontent_style"; + base: "font=SLP:style=Roman text_class=slp font_size="NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC" align=center color=#ffffff wrap=word"; + tag: "br" "\n"; + tag: "hilight" "+ font=SLP:style=Bold text_class=slp"; + tag: "b" "+ font=SLP:style=Bold text_class=slp"; + tag: "tab" "\t"; + } + } + images { + image: "T01_Nocontents_multimedia.png" COMP; + } + parts { + part { name: "bg"; + scale: 1; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 255 255 255 255; + } + } + part { name: "nocontents.image"; + description { state: "default" 0.0; + visible: 1; + align: 0.5 0.0; + rel1 { relative: 203/720 296/1016; to: "bg";} + rel2 { relative: (203+314)/720 (296+310)/1016; to: "bg";} + image { + normal: "T01_Nocontents_multimedia.png"; + border: 1 1 1 1; + border_scale: 1; + } + aspect: 1.0 1.0; + aspect_preference: BOTH; + } + } + part { name: "middle.padding"; + scale: 1; + type: RECT; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { relative: 0.0 1.0; to_y: "nocontents.image";} + rel2 { relative: 1.0 (296+310+54)/1016; to: "bg";} + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + fixed: 0 1; + align: 0.5 0.0; + visible: 1; + rel1 { relative: 0.0 1.0; to_x: "bg"; to_y: "middle.padding";} + rel2 { relative: 1.0 1.0; to: "bg";} + color: NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC; + text { + style: "nocontent_style"; + align: 0.5 0.5; + min: 0 0; + max: 0 1; + } + } + } + } + } diff --git a/res/edc/vp-progressbar-list.edc b/res/edc/vp-progressbar-list.edc new file mode 100755 index 0000000..b9c9041 --- /dev/null +++ b/res/edc/vp-progressbar-list.edc @@ -0,0 +1,584 @@ +#define PROGRESSBAR_TITLE_FONT_SIZE_INC 28 +#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20 + +#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC 0 0 0 255 +#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC 224 224 224 255 +#define PROGRESSBAR_LIST_PROCESS_WIDTH_INC 66 +#define PROGRESSBAR_LIST_PROCESS_HEIGHT_INC 66 +#define PROGRESSBAR_LIST_PROCESS_SMALL_INC 35 +#define PROGRESSBAR_LIST_PROCESS_SMALL_IMAGE "32x32" +#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 8 + +#define GALLERY_EDC_IMAGE_LIST_PROGRESS_BG "00_winset_list_progress_bg.png" +#define GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR "T01_video_list_progress_bar.png" + + group { name: "elm/progressbar/horizontal/video/list_progress"; + images { + image: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG COMP; + image: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR COMP; + } + parts { + part { name: "elm.padding.left"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + } + color: 0 0 0 0; + align: 0.0 0.0; + } + } + part { name: "elm.padding.right"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + } + color: 0 0 0 0; + align: 1.0 0.0; + } + } + part { name: "elm.background.progressbar"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to_x: "elm.padding.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to_x: "elm.padding.right"; + relative: 0.0 1.0; + offset: 0 0; + } + } + } + part { name: "elm.swallow.bar"; + mouse_events: 0; + scale: 1; + type: SWALLOW; + description { + min: 1 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC; + max: 99999 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC; + state: "default" 0.0; + rel1 { + to: "elm.background.progressbar"; + relative: 0.0 0.0; + } + rel2 { + to: "elm.background.progressbar"; + relative: 1.0 1.0; + } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 { + offset: 0 0; + to_y: "elm.background.progressbar"; + } + rel2 { + offset: 0 -1; + relative: 0.0 1.0; + to_y: "elm.background.progressbar"; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel2.offset: 4 -1; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 1 1; + align: 0.0 0.5; + rel1.to_x: "elm.swallow.content"; + rel1.relative: 1.0 0.0; + rel2.to_x: "elm.swallow.content"; + rel2.relative: 1.0 1.0; + color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC; + min: 0 0; + align: 0.0 0.5; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 0; + text.min: 1 1; + } + } + part { name: "background"; + mouse_events: 0; + scale: 1; + clip_to: "elm.background.progressbar"; + description { + state: "default" 0.0; + rel1 { + to: "elm.swallow.bar"; + relative: 0.0 0.0; + } + rel2 { + to: "elm.swallow.bar"; + relative: 1.0 1.0; + } + image { + normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BG; + border: 0 0 1 1; + } + } + } + part { name: "elm.text.status"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + rel1 { + to: "background"; + relative: 0.5 0.5; + } + rel2 { + to: "background"; + relative: 0.5 0.5; + } + text { + font: "SLP:style=Medium"; + text_class: "slp"; + size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC; + min: 0 0; + align: 0.5 0.0; + } + color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 0; + text.min: 1 1; + } + } + part { name: "elm.progress.progressbar"; + mouse_events: 0; + scale: 1; + clip_to: "elm.background.progressbar"; + description { + state: "default" 0.0; + min: 0 0; + fixed: 1 1; + rel1 { + to: "elm.swallow.bar"; + relative: 0.0 0.0; + } + rel2 { + to_y: "elm.swallow.bar"; + to_x: "elm.cur.progressbar"; + offset: -1 -1; + } + image { + normal: GALLERY_EDC_IMAGE_LIST_PROGRESS_BAR; + border: 0 0 1 1; + } + } + description { + state: "invert" 0.0; + inherit: "default" 0.0; + rel1 { + to_y: "elm.swallow.bar"; + to_x: "elm.cur.progressbar"; + } + rel2 { + to: "elm.swallow.bar"; + relative: 1.0 1.0; + } + } + description { + state: "state_begin" 0.0; + inherit: "default" 0.0; + rel1 { + to: "elm.swallow.bar"; + relative: 0.0 0.0; + } + rel2 { + to: "elm.swallow.bar"; + relative: 0.1 1.0; + } + } + description { + state: "state_end" 0.0; + inherit: "default" 0.0; + rel1 { + to: "elm.swallow.bar"; + relative: 0.9 0.0; + } + rel2 { + to: "elm.swallow.bar"; + relative: 1.0 1.0; + } + } + } + part { name: "text-bar"; + type: TEXT; + mouse_events: 0; + scale: 1; + clip_to: "progress-rect"; + //effect: SOFT_SHADOW; + scale: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + visible: 0; + rel1.to: "elm.text.status"; + rel1.offset: -1 -1; + rel2.to: "elm.text.status"; + text { + text_source: "elm.text.status"; + font: "SLP:style=Medium"; + text_class: "slp"; + size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC; + min: 0 0; + align: 0.0 0.0; + } + color: PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 0; + text.min: 1 1; + } + } + part { name: "elm.cur.progressbar"; + mouse_events: 0; + scale: 1; + dragable { + confine: "background"; + x: 1 1 1; + y: 0 0 0; + } + description { state: "default" 0.0; + min: 0 28; + fixed: 1 1; + visible: 0; + rel1 { + to: "background"; + relative: 0 0; + } + rel2.to: "background"; + } + } + part { name: "progress-rect"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1.to: "elm.progress.progressbar"; + rel2.to: "elm.progress.progressbar"; + } + } + } + programs { + program { name: "label_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "label_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "units_show"; + signal: "elm,state,units,visible"; + source: "elm"; + action: STATE_SET "show" 0.0; + target: "text-bar"; + target: "elm.text.status"; + } + program { name: "units_hide"; + signal: "elm,state,units,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "text-bar"; + target: "elm.text.status"; + } + program { name: "slide_to_end"; + action: STATE_SET "state_end" 0.0; + transition: LINEAR 0.5; + target: "elm.progress.progressbar"; + after: "slide_to_begin"; + } + program { name: "slide_to_begin"; + signal: "elm,state,slide,begin"; + action: STATE_SET "state_begin" 0.0; + target: "elm.progress.progressbar"; + transition: LINEAR 0.5; + after: "slide_to_end"; + } + program { name: "start_pulse"; + signal: "elm,state,pulse,start"; + source: "elm"; + // after: "slide_to_end"; + } + program { name: "stop_pulse"; + signal: "elm,state,pulse,stop"; + source: "elm"; + action: ACTION_STOP; + target: "slide_to_begin"; + target: "slide_to_end"; + target: "start_pulse"; + //after: "state_pulse"; + } + program { name: "state_pulse"; + signal: "elm,state,pulse"; + source: "elm"; + action: STATE_SET "state_begin" 0.0; + target: "elm.progress.progressbar"; + after: "units_hide"; + } + program { name: "state_fraction"; + signal: "elm,state,fraction"; + source: "elm"; + action: ACTION_STOP; + target: "slide_to_begin"; + target: "slide_to_end"; + target: "start_pulse"; + action: STATE_SET "default" 0.0; + target: "elm.progress.progressbar"; + } + program { name: "set_invert_on"; + signal: "elm,state,inverted,on"; + source: "elm"; + action: STATE_SET "invert" 0.0; + target: "elm.progress.progressbar"; + } + program { name: "set_invert_off"; + signal: "elm,state,inverted,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.progress.progressbar"; + } + } + } + + +/* +#define PROGRESS_BG_DESC( param_num ) \ + description { state: "pulse" 0.#param_num; \ + inherit: "default" 0.0; \ + image { \ + normal: GALLERY_EDC_IMAGE_LIST_PROCESS_##param_num; \ + } \ + } + +#define PROGRESSING_DELAY 0.03 + + group { name: "elm/progressbar/horizontal/gallery/list_process"; + images { + image: GALLERY_EDC_IMAGE_LIST_PROCESS_01 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_02 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_03 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_04 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_05 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_06 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_07 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_08 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_09 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_10 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_11 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_12 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_13 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_14 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_15 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_16 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_17 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_18 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_19 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_20 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_21 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_22 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_23 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_24 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_25 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_26 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_27 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_28 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_29 COMP; + image: GALLERY_EDC_IMAGE_LIST_PROCESS_30 COMP; + } + parts { + part { name: "elm.background.progressbar"; + mouse_events: 0; + scale: 1; + type: RECT; + description { + state: "default" 0.0; + } + } + part { name: "elm.swallow.bar"; + mouse_events: 0; + scale: 1; + type: SWALLOW; + description { state: "default" 0.0; + min: 0 0; + max: 0 0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 0 0; + visible: 0; + } + } + part { name: "background"; + mouse_events: 0; + scale: 1; + clip_to: "elm.background.progressbar"; + description { + state: "default" 0.0; + min: PROGRESSBAR_LIST_PROCESS_WIDTH_INC PROGRESSBAR_LIST_PROCESS_HEIGHT_INC; + max: PROGRESSBAR_LIST_PROCESS_WIDTH_INC PROGRESSBAR_LIST_PROCESS_HEIGHT_INC; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: BOTH; + image { + normal: GALLERY_EDC_IMAGE_LIST_PROCESS_01; + } + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + image { + normal: GALLERY_EDC_IMAGE_LIST_PROCESS_01; + } + } + PROGRESS_BG_DESC( 01 ) + PROGRESS_BG_DESC( 02 ) + PROGRESS_BG_DESC( 03 ) + PROGRESS_BG_DESC( 04 ) + PROGRESS_BG_DESC( 05 ) + PROGRESS_BG_DESC( 06 ) + PROGRESS_BG_DESC( 07 ) + PROGRESS_BG_DESC( 08 ) + PROGRESS_BG_DESC( 09 ) + PROGRESS_BG_DESC( 10 ) + PROGRESS_BG_DESC( 11 ) + PROGRESS_BG_DESC( 12 ) + PROGRESS_BG_DESC( 13 ) + PROGRESS_BG_DESC( 14 ) + PROGRESS_BG_DESC( 15 ) + PROGRESS_BG_DESC( 16 ) + PROGRESS_BG_DESC( 17 ) + PROGRESS_BG_DESC( 18 ) + PROGRESS_BG_DESC( 19 ) + PROGRESS_BG_DESC( 20 ) + PROGRESS_BG_DESC( 21 ) + PROGRESS_BG_DESC( 22 ) + PROGRESS_BG_DESC( 23 ) + PROGRESS_BG_DESC( 24 ) + PROGRESS_BG_DESC( 25 ) + PROGRESS_BG_DESC( 26 ) + PROGRESS_BG_DESC( 27 ) + PROGRESS_BG_DESC( 28 ) + PROGRESS_BG_DESC( 29 ) + PROGRESS_BG_DESC( 30 ) + } + } + script { + public pulse_state; + } + programs { + program { name: "continue_pulse"; + script { + new Float:state; + state = get_float(pulse_state); + set_state(PART:"background", "pulse", state); + state += 0.01; + if( state > 0.30 ) + state = 0.01; + set_float(pulse_state, state); + } + after: "delay"; + } + program { name: "delay"; + action: STATE_SET "pulse" 0.10; + target: "background"; + in: PROGRESSING_DELAY 0.0; + after: "continue_pulse"; + } + program { name: "start_pulse"; + signal: "elm,state,pulse,start"; + source: "elm"; + script { + set_float(pulse_state, 0.0); + } + after: "continue_pulse"; + } + program { name: "stop_pulse"; + signal: "elm,state,pulse,stop"; + source: "elm"; + action: ACTION_STOP; + target: "continue_pulse"; + target: "delay"; + target: "start_pulse"; + after: "init_pulse"; + } + program { name: "init_pulse"; + action: STATE_SET "default" 0.0; + target: "background"; + } + } + } +*/ diff --git a/res/edc/vp-speedbox-popup.edc b/res/edc/vp-speedbox-popup.edc new file mode 100644 index 0000000..fe751fb --- /dev/null +++ b/res/edc/vp-speedbox-popup.edc @@ -0,0 +1,314 @@ +#include "image_res.edc" +#include "vp_font.edc" + +#define SPEED_BOX_BG_COLOR 0 0 0 77 +#define SPEED_BOX_PRESS_BG_COLOR 42 137 194 255 +#define SPEED_BOX_LINE_COLOR 153 153 153 178 + +collections { + group { + name: "speedbox"; + parts { + part { + name: "speedbox.bg"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + image {normal: "white/common/T01-2_popup_bg.png"; border: 10 10 10 10;} + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.1"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 112 99; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 1.0; to: "speedbox.bg";} + rel2 { relative: 0.5 1.0; to: "speedbox.bg";} + color: SPEED_BOX_BG_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "focus" 0.0; + inherit: "default" 0.0; + visible: 1; + color: SPEED_BOX_PRESS_BG_COLOR; + } + } + + part { + name: "speedbox.step.2"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 112 99; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.1";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.1";} + color: SPEED_BOX_BG_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "focus" 0.0; + inherit: "default" 0.0; + visible: 1; + color: SPEED_BOX_PRESS_BG_COLOR; + } + } + + part { + name: "speedbox.step.3"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 112 99; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.2";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.2";} + color: SPEED_BOX_BG_COLOR; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "focus" 0.0; + inherit: "default" 0.0; + visible: 1; + color: SPEED_BOX_PRESS_BG_COLOR; + } + } + + part { + name: "speedbox.step.1.line"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 110 1; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.1";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.1";} + color: SPEED_BOX_LINE_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.2.line"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 110 1; + fixed: 1 1; + align: 0.5 1.0; + rel1 { relative: 0.5 0.0; to: "speedbox.step.2";} + rel2 { relative: 0.5 0.0; to: "speedbox.step.2";} + color: SPEED_BOX_LINE_COLOR; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.1.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "speedbox.step.1";} + rel2 { relative: 1.0 1.0; to: "speedbox.step.1";} + color: FONT_PLAYBACK_SPEED_BTN_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_BTN_SIZE; + text: "x2"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.2.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "speedbox.step.2";} + rel2 { relative: 1.0 1.0; to: "speedbox.step.2";} + color: FONT_PLAYBACK_SPEED_BTN_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_BTN_SIZE; + text: "x3"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "speedbox.step.3.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "speedbox.step.3";} + rel2 { relative: 1.0 1.0; to: "speedbox.step.3";} + color: FONT_PLAYBACK_SPEED_BTN_COLOR; + text { + font: FONT_PLAYBACK_SPEED_FONT; + text_class: FONT_PLAYBACK_SPEED_CLASS; + size: FONT_PLAYBACK_SPEED_BTN_SIZE; + text: "x4"; + align: 0.5 0.5; + } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } /* parts */ + programs { + program { + signal: "signal.speedbox.visible.on"; + source: "*"; + after: "set.speedbox.visible.on"; + } + + program { + signal: "signal.speedbox.visible.off"; + source: "*"; + after: "set.speedbox.visible.off"; + } + + program { + name: "set.speedbox.visible.on"; + source: "*"; + action: STATE_SET "show" 0.0; + + target: "speedbox.bg"; + target: "speedbox.step.1"; + target: "speedbox.step.2"; + target: "speedbox.step.3"; + target: "speedbox.step.1.line"; + target: "speedbox.step.2.line"; + target: "speedbox.step.1.txt"; + target: "speedbox.step.2.txt"; + target: "speedbox.step.3.txt"; + } + + program { + name: "set.speedbox.visible.off"; + source: "*"; + action: STATE_SET "default" 0.0; + + target: "speedbox.bg"; + target: "speedbox.step.1"; + target: "speedbox.step.2"; + target: "speedbox.step.3"; + target: "speedbox.step.1.line"; + target: "speedbox.step.2.line"; + target: "speedbox.step.1.txt"; + target: "speedbox.step.2.txt"; + target: "speedbox.step.3.txt"; + } + program { + signal: "signal.speedbox.set.mode.1"; + source: "*"; + script { + set_state(PART:"speedbox.step.1", "focus", 0.0); + set_state(PART:"speedbox.step.2", "show", 0.0); + set_state(PART:"speedbox.step.3", "show", 0.0); + } + } + program { + signal: "signal.speedbox.set.mode.2"; + source: "*"; + script { + set_state(PART:"speedbox.step.1", "show", 0.0); + set_state(PART:"speedbox.step.2", "focus", 0.0); + set_state(PART:"speedbox.step.3", "show", 0.0); + } + } + program { + signal: "signal.speedbox.set.mode.3"; + source: "*"; + script { + set_state(PART:"speedbox.step.1", "show", 0.0); + set_state(PART:"speedbox.step.2", "show", 0.0); + set_state(PART:"speedbox.step.3", "focus", 0.0); + } + } + + } /* programs */ + } /* groups */ +} /* collections */ diff --git a/res/edc/vp-toolbar.edc b/res/edc/vp-toolbar.edc new file mode 100755 index 0000000..0a937fb --- /dev/null +++ b/res/edc/vp-toolbar.edc @@ -0,0 +1,1733 @@ +#define ITEM_STATE_ENABLED 0 +#define ITEM_STATE_DISABLED 1 + +group { name: "elm/toolbar/base/default"; + images { + image: "00_winset_control_toolbar_bg.png" COMP; + } + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + image.normal: "00_winset_control_toolbar_bg.png"; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/item/default"; + images { + image: "00_winset_toolbar_press.png" COMP; + } + styles{ + style { name: "toolbar_style"; + base: "font=SLP:style=Medium font_size="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC" align=center color="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC" wrap=mixed ellipsis=1 text_class=slp"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Bold"; + tag: "b" "+ font=SLP:style=Bold"; + tag: "tab" "\t"; + } + } + + data.item: "transition_animation_on" "1"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + } + image { + normal: "00_winset_toolbar_press.png"; + border: 3 3 3 3; + } + image.middle: SOLID; + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: 10 8; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: 10 5; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.5 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "elm.text"; + } + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.swallow.icon_new"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon_new.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text_new.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.text_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "event2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "pressed"; + signal: "mouse,down,1"; + source: "event"; + script { + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"bg", "selected", 0.0); + } + transition: LINEAR 0.2; + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event2"; + action: STATE_SET "default" 0.0; + target: "bg"; + transition: LINEAR 0.1; + } + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } + program { name: "mouse,in"; + signal: "mouse,in"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,in" "elm"; + } + program { name: "mouse,out"; + signal: "mouse,out"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,out" "elm"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_DISABLED); + set_state(PART:"bg", "disabled", 0.0); + set_state(PART:"elm.text.clipper", "disabled", 0.0); + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_ENABLED); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"elm.text.clipper", "default", 0.0); + set_state(PART:"elm.icon.clipper", "default", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "label_set,animation,forward"; + signal: "elm,state,label_set,forward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation,backward"; + signal: "elm,state,label_set,backward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation"; + signal: "elm,state,label_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + transition: LINEAR 0.2; + after: "label_set,animation,done"; + } + program { name: "label_set,animation,done"; + action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; + } + program { name: "label,reset"; + signal: "elm,state,label,reset"; + source: "elm"; + script { + set_state(PART:"elm.text_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.text.clipper", "default", 0.0); + else + set_state(PART:"elm.text.clipper", "disabled", 0.0); + } + } + program { name: "icon_set,animation,forward"; + signal: "elm,state,icon_set,forward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation,backward"; + signal: "elm,state,icon_set,backward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation"; + signal: "elm,state,icon_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + transition: LINEAR 0.2; + after: "icon_set,animation,done"; + } + program { name: "icon_set,animation,done"; + action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; + } + program { name: "icon,reset"; + signal: "elm,state,icon,reset"; + source: "elm"; + script { + set_state(PART:"elm.icon_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.icon.clipper", "default", 0.0); + else + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + } + } + } +} + +group { name: "elm/toolbar/item/item_horizontal"; + inherit: "elm/toolbar/item/default"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "icon_rect"; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + } + description { state: "visible" 0.0; + fixed: 1 0; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { name: "padding_after_icon"; + description { state: "default" 0.0; //when only icon or no icon is there + rel1.relative: 1.0 0.0; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 6 0; + } + } + part { name: "padding_before_text"; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: 6 0; + } + } + part { name: "elm.swallow.icon"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.swallow.icon_new"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/separator/default"; + parts { + part { name: "base"; + type: RECT; + description { state: "default" 0.0; + min: 3 1; + max: 3 9999; + color: 0 0 0 0; + } + } + part { name: "separator_left"; + type: RECT; + description { state: "default" 0.0; + min: 1 1; + max: 1 9999; + fixed: 1 1; + rel1 { + relative: 0.0 0.1; + offset: 0 0; + } + rel2 { + relative: 0.0 0.9; + offset: 1 0; + } + color: TOOLBAR_ITEM_SEPARATOR_LEFT_COLOR_INC; + } + } + part { name: "separator_middle"; + type: RECT; + description { state: "default" 0.0; + min: 1 1; + max: 1 9999; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "separator_left"; + } + rel2 { + relative: 1.0 1.0; + offset: 1 -1; + to: "separator_left"; + } + color: TOOLBAR_ITEM_SEPARATOR_MIDDLE_COLOR_INC; + } + } + part { name: "separator_right"; + type: RECT; + description { state: "default" 0.0; + min: 1 1; + max: 1 9999; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "separator_middle"; + } + rel2 { + relative: 1.0 1.0; + offset: 1 -1; + to: "separator_middle"; + } + color: TOOLBAR_ITEM_SEPARATOR_RIGHT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/object/default"; + parts { + part { name: "elm.swallow.object"; // object group + type: SWALLOW; + description { + state: "default" 0.0; + } + } + } +} + +group { name: "elm/toolbar/base/tabbar"; + alias: "elm/toolbar/base/tabbar/item_horizontal"; + images { + image: "00_winset_control_tabbar_bg_top.png" COMP; + } + + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + image.normal: "00_winset_control_tabbar_bg_top.png"; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/item/tabbar"; + images { + image: "00_winset_tabbar_focus.png" COMP; + } + + data.item: "transition_animation_on" "1"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + image { + normal: "00_winset_tabbar_focus.png"; + } + image.middle: SOLID; + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: 10 8; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: 10 5; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.5 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "elm.text"; + } + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.swallow.icon_new"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon_new.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text_new.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.text_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg"; + transition: LINEAR 0.2; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + transition: LINEAR 0.1; + }/* + program { name: "pressed"; + signal: "mouse,down,1"; + source: "event"; + action: STATE_SET "selected" 0.0; + target: "bg"; + target: "elm.text"; + target: "elm.text_new"; + transition: LINEAR 0.2; + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event"; + action: STATE_SET "default" 0.0; + target: "bg"; + target: "elm.text"; + target: "elm.text_new"; + transition: LINEAR 0.1; + }*/ + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } + program { name: "mouse,in"; + signal: "mouse,in"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,in" "elm"; + } + program { name: "mouse,out"; + signal: "mouse,out"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,out" "elm"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_DISABLED); + set_state(PART:"bg", "disabled", 0.0); + set_state(PART:"elm.text.clipper", "disabled", 0.0); + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(item_state, ITEM_STATE_ENABLED); + set_state(PART:"bg", "default", 0.0); + set_state(PART:"elm.text.clipper", "default", 0.0); + set_state(PART:"elm.icon.clipper", "default", 0.0); + run_program(PROGRAM:"label_set,animation,done"); + run_program(PROGRAM:"icon_set,animation,done"); + } + } + program { name: "label_set,animation,forward"; + signal: "elm,state,label_set,forward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation,backward"; + signal: "elm,state,label_set,backward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation"; + signal: "elm,state,label_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + transition: LINEAR 0.2; + after: "label_set,animation,done"; + } + program { name: "label_set,animation,done"; + action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; + } + program { name: "label,reset"; + signal: "elm,state,label,reset"; + source: "elm"; + script { + set_state(PART:"elm.text_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.text.clipper", "default", 0.0); + else + set_state(PART:"elm.text.clipper", "disabled", 0.0); + } + } + program { name: "icon_set,animation,forward"; + signal: "elm,state,icon_set,forward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation,backward"; + signal: "elm,state,icon_set,backward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation"; + signal: "elm,state,icon_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + transition: LINEAR 0.2; + after: "icon_set,animation,done"; + } + program { name: "icon_set,animation,done"; + action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; + } + program { name: "icon,reset"; + signal: "elm,state,icon,reset"; + source: "elm"; + script { + set_state(PART:"elm.icon_new.clipper", "default", 0.0); + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"elm.icon.clipper", "default", 0.0); + else + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + } + } + } +} + +group { name: "elm/toolbar/item/tabbar/item_horizontal"; + inherit: "elm/toolbar/item/tabbar"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "icon_rect"; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + } + description { state: "visible" 0.0; + fixed: 1 0; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { name: "padding_after_icon"; + description { state: "default" 0.0; //when only icon or no icon is there + rel1.relative: 1.0 0.0; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 6 0; + } + } + part { name: "padding_before_text"; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: 6 0; + } + } + part { name: "elm.swallow.icon"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.swallow.icon_new"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/base/naviframe"; + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/object/naviframe"; + parts { + part { name: "elm.swallow.object"; // object group + type: SWALLOW; + description { + state: "default" 0.0; + rel1.offset: 5 0; + rel2.offset: -6 -1; + } + } + } +} + diff --git a/res/edc/vp-volume-popup.edc b/res/edc/vp-volume-popup.edc new file mode 100644 index 0000000..6229e06 --- /dev/null +++ b/res/edc/vp-volume-popup.edc @@ -0,0 +1,318 @@ +#include "image_res.edc" + +#define BG_WIDTH 126 + +collections { + group { + name: "volume"; + parts { + part { + name: "volume.bg"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 128; + } + } + + part { + name: "volume.left"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 10 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 0.0 1.0; } + color: 255 0 0 255; + } + } + + part { + name: "volume.right"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 10 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 255 0 0 255; + } + } + + part { + name: "volume.icon.1"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 1.0 0.5; to_x: "volume.left"; } + rel2 { relative: 1.0 0.5; to_x: "volume.left"; } + image { normal: "volume/T01-2_volume_icon_01.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.icon.2"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.5; to_x: "volume.right"; } + rel2 { relative: 0.0 0.5; to_x: "volume.right"; } + image { normal: "volume/T01-2_volume_icon_02.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.icon.1.right"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 6 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to_x: "volume.icon.1"; } + rel2 { relative: 1.0 1.0; to_x: "volume.icon.1"; } + color: 0 255 0 255; + } + } + + part { + name: "volume.icon.2.left"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 6 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 0.0 0.0; to_x: "volume.icon.2"; } + rel2 { relative: 0.0 1.0; to_x: "volume.icon.2"; } + color: 0 255 0 255; + } + } + + part { + name: "volume.icon.handle.start"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; } + rel2 { relative: 1.0 0.5; to_x: "volume.icon.1.right"; } + image { normal: "volume/T01-2_player_volume_handle.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.icon.handle.end"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 58 58; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; } + rel2 { relative: 0.0 0.5; to_x: "volume.icon.2.left"; } + image { normal: "volume/T01-2_player_volume_handle.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.txt.start"; + type: TEXT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "volume.icon.handle.start";} + rel2 { relative: 1.0 1.0; to: "volume.icon.handle.start";} + color: 42 137 194 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 38; + text: "0"; + align: 0.5 0.5; + } + } + } + + part { + name: "volume.txt.end"; + type: TEXT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "volume.icon.handle.end";} + rel2 { relative: 1.0 1.0; to: "volume.icon.handle.end";} + color: 42 137 194 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 38; + text: "15"; + align: 0.5 0.5; + } + } + } + + part { + name: "volume.progress.bg"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 8; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 1.0 0.5; to_x: "volume.icon.handle.start"; } + rel2 { relative: 0.0 0.5; to_x: "volume.icon.handle.end"; } + image { normal: "volume/T01-2_player_progress_bg.png"; } + } + } + + part { + name: "volume.progress.bar"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + state: "default" 0.0; + min: 0 8; + fixed: 0 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to_x: "volume.progress.bg"; } + rel2 { relative: 1.0 0.5; to_x: "volume.progress.drag"; } + image { normal: "volume/T01-2_player_progress_bar.png"; } + } + } + + part { name: "volume.progress.confine.rect"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to_x: "volume.progress.bg"; } + rel2 { relative: 1.0 1.0; to_x: "volume.progress.bg"; } + color: 255 255 255 0; + } + } + + part { + name: "volume.progress.circle"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.5 0.5; to_x: volume.progress.drag; } + rel2 { relative: 0.5 0.5; to_x: volume.progress.drag; } + image { normal: "volume/T01-2_player_volume_handle_press.png"; } + color: 255 255 255 255; + } + } + + part { + name: "volume.progress.circle.txt"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "volume.progress.circle";} + rel2 { relative: 1.0 1.0; to: "volume.progress.circle";} + color: 255 255 255 255; + text { + font: FONT_BOLD_TYPE; + text_class: "slp"; + size: 38; + text: "12"; + align: 0.5 0.5; + } + } + } + part { + name: "volume.progress.drag"; + type: RECT; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 58 58; + fixed: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.5; to: "volume.progress.bg"; } + rel2 { relative: 1.0 0.5; to: "volume.progress.bg"; } + color: 255 255 255 0; + } + dragable { + confine: "volume.progress.confine.rect"; + x: 1 1 1; + } + } + } /* parts */ +// programs { + +// } /* programs */ + } /* group */ +} + diff --git a/res/edc/vp_font.edc b/res/edc/vp_font.edc new file mode 100755 index 0000000..560bbbf --- /dev/null +++ b/res/edc/vp_font.edc @@ -0,0 +1,28 @@ +#define FONT_BOLD_TYPE "SLP:style=Bold" +#define FONT_MEDIUM_TYPE "SLP:style=Medium" +#define FONT_REGULAR_TYPE "SLP:style=Regular" +#define FONT_ROMAN_TYPE "SLP:style=Roman" + +#define FONT_COLOR 255 255 255 255 + +#define FONT_START_COLOR 255 255 255 255 +#define FONT_END_COLOR 142 142 142 255 +#define FONT_TRIM_START_COLOR 56 56 56 255 +#define FONT_TRIM_END_COLOR 255 255 255 255 +#define FONT_BOOKMARK_TITLE 249 249 249 255 + +#define FONT_PLAYBACK_SPEED_COLOR 255 255 255 255 +#define FONT_PLAYBACK_SPEED_BTN_COLOR 255 255 255 255 + +#define FONT_PLAYBACK_SPEED_SIZE 90 +#define FONT_PLAYBACK_SPEED_BTN_SIZE 36 + +#define FONT_PLAYBACK_SPEED_FONT FONT_REGULAR_TYPE +#define FONT_PLAYBACK_SPEED_BTN_FONT FONT_REGULAR_TYPE + +#define FONT_PLAYBACK_SPEED_CLASS "slp" +#define FONT_PLAYBACK_SPEED_BTN_CLASS "slp" + + +#define TITLE_FONT_SIZE 28 +#define TEXT_TRIM_SIZE 25 \ No newline at end of file diff --git a/res/images/00_Option_header_bt.png b/res/images/00_Option_header_bt.png new file mode 100755 index 0000000..659fc23 Binary files /dev/null and b/res/images/00_Option_header_bt.png differ diff --git a/res/images/00_Option_header_bt_dim.png b/res/images/00_Option_header_bt_dim.png new file mode 100755 index 0000000..3fb76e2 Binary files /dev/null and b/res/images/00_Option_header_bt_dim.png differ diff --git a/res/images/00_Option_header_bt_press.png b/res/images/00_Option_header_bt_press.png new file mode 100755 index 0000000..8a05504 Binary files /dev/null and b/res/images/00_Option_header_bt_press.png differ diff --git a/res/images/00_button_01_normal.png b/res/images/00_button_01_normal.png new file mode 100755 index 0000000..fd06c1c Binary files /dev/null and b/res/images/00_button_01_normal.png differ diff --git a/res/images/00_button_01_normal_dim.png b/res/images/00_button_01_normal_dim.png new file mode 100755 index 0000000..7bb54fc Binary files /dev/null and b/res/images/00_button_01_normal_dim.png differ diff --git a/res/images/00_button_01_normal_press.png b/res/images/00_button_01_normal_press.png new file mode 100755 index 0000000..829554a Binary files /dev/null and b/res/images/00_button_01_normal_press.png differ diff --git a/res/images/00_check_bg_dim.png b/res/images/00_check_bg_dim.png new file mode 100755 index 0000000..d95649c Binary files /dev/null and b/res/images/00_check_bg_dim.png differ diff --git a/res/images/00_grid_select_check.png b/res/images/00_grid_select_check.png new file mode 100755 index 0000000..4385567 Binary files /dev/null and b/res/images/00_grid_select_check.png differ diff --git a/res/images/00_sweep_list_bg.png b/res/images/00_sweep_list_bg.png new file mode 100755 index 0000000..1606042 Binary files /dev/null and b/res/images/00_sweep_list_bg.png differ diff --git a/res/images/00_winset_btn_prev.png b/res/images/00_winset_btn_prev.png new file mode 100755 index 0000000..15b43b0 Binary files /dev/null and b/res/images/00_winset_btn_prev.png differ diff --git a/res/images/00_winset_btn_prev_press.png b/res/images/00_winset_btn_prev_press.png new file mode 100755 index 0000000..1ffbb0b Binary files /dev/null and b/res/images/00_winset_btn_prev_press.png differ diff --git a/res/images/00_winset_control_top_arrow.png b/res/images/00_winset_control_top_arrow.png new file mode 100755 index 0000000..9f31c89 Binary files /dev/null and b/res/images/00_winset_control_top_arrow.png differ diff --git a/res/images/00_winset_list_progress_bg.png b/res/images/00_winset_list_progress_bg.png new file mode 100755 index 0000000..5e83560 Binary files /dev/null and b/res/images/00_winset_list_progress_bg.png differ diff --git a/res/images/00_winset_thumbs_bg.png b/res/images/00_winset_thumbs_bg.png new file mode 100755 index 0000000..6226c90 Binary files /dev/null and b/res/images/00_winset_thumbs_bg.png differ diff --git a/res/images/00_winset_thumbs_focus_bg.png b/res/images/00_winset_thumbs_focus_bg.png new file mode 100755 index 0000000..4f7d66f Binary files /dev/null and b/res/images/00_winset_thumbs_focus_bg.png differ diff --git a/res/images/00_winset_thumbs_loading_bg.png b/res/images/00_winset_thumbs_loading_bg.png new file mode 100755 index 0000000..0472430 Binary files /dev/null and b/res/images/00_winset_thumbs_loading_bg.png differ diff --git a/res/images/01_controlbar_icon_delete.png b/res/images/01_controlbar_icon_delete.png new file mode 100755 index 0000000..07e2898 Binary files /dev/null and b/res/images/01_controlbar_icon_delete.png differ diff --git a/res/images/01_controlbar_icon_set_as.png b/res/images/01_controlbar_icon_set_as.png new file mode 100755 index 0000000..3f5a68f Binary files /dev/null and b/res/images/01_controlbar_icon_set_as.png differ diff --git a/res/images/01_controlbar_icon_share.png b/res/images/01_controlbar_icon_share.png new file mode 100755 index 0000000..76ef1ce Binary files /dev/null and b/res/images/01_controlbar_icon_share.png differ diff --git a/res/images/01_header_icon_add.png b/res/images/01_header_icon_add.png new file mode 100755 index 0000000..43c4984 Binary files /dev/null and b/res/images/01_header_icon_add.png differ diff --git a/res/images/01_header_icon_cancel.png b/res/images/01_header_icon_cancel.png new file mode 100755 index 0000000..4fb54c3 Binary files /dev/null and b/res/images/01_header_icon_cancel.png differ diff --git a/res/images/01_header_icon_others.png b/res/images/01_header_icon_others.png new file mode 100755 index 0000000..4fc9dfa Binary files /dev/null and b/res/images/01_header_icon_others.png differ diff --git a/res/images/12_music_player_sound_path.png b/res/images/12_music_player_sound_path.png new file mode 100755 index 0000000..771ebb8 Binary files /dev/null and b/res/images/12_music_player_sound_path.png differ diff --git a/res/images/DM_Gallery_Increase.png b/res/images/DM_Gallery_Increase.png new file mode 100755 index 0000000..fdf6231 Binary files /dev/null and b/res/images/DM_Gallery_Increase.png differ diff --git a/res/images/T01-2_hold_icon_lock.png b/res/images/T01-2_hold_icon_lock.png new file mode 100755 index 0000000..8e34351 Binary files /dev/null and b/res/images/T01-2_hold_icon_lock.png differ diff --git a/res/images/T01-2_icon_toolbar_cancel.png b/res/images/T01-2_icon_toolbar_cancel.png new file mode 100755 index 0000000..5cb7824 Binary files /dev/null and b/res/images/T01-2_icon_toolbar_cancel.png differ diff --git a/res/images/T01_Image_Look.png b/res/images/T01_Image_Look.png new file mode 100755 index 0000000..5ecda87 Binary files /dev/null and b/res/images/T01_Image_Look.png differ diff --git a/res/images/T01_Nocontents_multimedia.png b/res/images/T01_Nocontents_multimedia.png new file mode 100755 index 0000000..a59046f Binary files /dev/null and b/res/images/T01_Nocontents_multimedia.png differ diff --git a/res/images/T01_Option_header_bt.png b/res/images/T01_Option_header_bt.png new file mode 100755 index 0000000..94b1e2f Binary files /dev/null and b/res/images/T01_Option_header_bt.png differ diff --git a/res/images/T01_Option_header_bt_press.png b/res/images/T01_Option_header_bt_press.png new file mode 100755 index 0000000..17331c1 Binary files /dev/null and b/res/images/T01_Option_header_bt_press.png differ diff --git a/res/images/T01_Trim_handle_beginning.png b/res/images/T01_Trim_handle_beginning.png new file mode 100755 index 0000000..859aa3e Binary files /dev/null and b/res/images/T01_Trim_handle_beginning.png differ diff --git a/res/images/T01_Trim_handle_ending.png b/res/images/T01_Trim_handle_ending.png new file mode 100755 index 0000000..adf7c82 Binary files /dev/null and b/res/images/T01_Trim_handle_ending.png differ diff --git a/res/images/T01_back.png b/res/images/T01_back.png new file mode 100755 index 0000000..73d57a5 Binary files /dev/null and b/res/images/T01_back.png differ diff --git a/res/images/T01_btn_prev.png b/res/images/T01_btn_prev.png new file mode 100755 index 0000000..ccaf337 Binary files /dev/null and b/res/images/T01_btn_prev.png differ diff --git a/res/images/T01_check.png b/res/images/T01_check.png new file mode 100755 index 0000000..d5057e4 Binary files /dev/null and b/res/images/T01_check.png differ diff --git a/res/images/T01_checkbox.png b/res/images/T01_checkbox.png new file mode 100755 index 0000000..61dc76a Binary files /dev/null and b/res/images/T01_checkbox.png differ diff --git a/res/images/T01_control_icon_detail.png b/res/images/T01_control_icon_detail.png new file mode 100755 index 0000000..e82b44d Binary files /dev/null and b/res/images/T01_control_icon_detail.png differ diff --git a/res/images/T01_control_icon_fullscreen.png b/res/images/T01_control_icon_fullscreen.png new file mode 100755 index 0000000..7fa140f Binary files /dev/null and b/res/images/T01_control_icon_fullscreen.png differ diff --git a/res/images/T01_control_icon_reduce.png b/res/images/T01_control_icon_reduce.png new file mode 100755 index 0000000..fbdb906 Binary files /dev/null and b/res/images/T01_control_icon_reduce.png differ diff --git a/res/images/T01_control_top_arrow.png b/res/images/T01_control_top_arrow.png new file mode 100755 index 0000000..3f2ee50 Binary files /dev/null and b/res/images/T01_control_top_arrow.png differ diff --git a/res/images/T01_control_top_bg.png b/res/images/T01_control_top_bg.png new file mode 100755 index 0000000..e7b5045 Binary files /dev/null and b/res/images/T01_control_top_bg.png differ diff --git a/res/images/T01_controlbar_icon_cancel.png b/res/images/T01_controlbar_icon_cancel.png new file mode 100755 index 0000000..5cb7824 Binary files /dev/null and b/res/images/T01_controlbar_icon_cancel.png differ diff --git a/res/images/T01_controlbar_icon_done.png b/res/images/T01_controlbar_icon_done.png new file mode 100755 index 0000000..46304a4 Binary files /dev/null and b/res/images/T01_controlbar_icon_done.png differ diff --git a/res/images/T01_controller_btn.png b/res/images/T01_controller_btn.png new file mode 100755 index 0000000..4db7a11 Binary files /dev/null and b/res/images/T01_controller_btn.png differ diff --git a/res/images/T01_controller_btn_press.png b/res/images/T01_controller_btn_press.png new file mode 100755 index 0000000..4069b0f Binary files /dev/null and b/res/images/T01_controller_btn_press.png differ diff --git a/res/images/T01_grid_select_check.png b/res/images/T01_grid_select_check.png new file mode 100755 index 0000000..f131f47 Binary files /dev/null and b/res/images/T01_grid_select_check.png differ diff --git a/res/images/T01_icon_expand.png b/res/images/T01_icon_expand.png new file mode 100755 index 0000000..ba1158e Binary files /dev/null and b/res/images/T01_icon_expand.png differ diff --git a/res/images/T01_icon_reduce.png b/res/images/T01_icon_reduce.png new file mode 100755 index 0000000..7e80daa Binary files /dev/null and b/res/images/T01_icon_reduce.png differ diff --git a/res/images/T01_icon_soundPath.png b/res/images/T01_icon_soundPath.png new file mode 100755 index 0000000..79e0cda Binary files /dev/null and b/res/images/T01_icon_soundPath.png differ diff --git a/res/images/T01_icon_soundPath_h.png b/res/images/T01_icon_soundPath_h.png new file mode 100755 index 0000000..ad3b1d4 Binary files /dev/null and b/res/images/T01_icon_soundPath_h.png differ diff --git a/res/images/T01_icon_soundPath_press.png b/res/images/T01_icon_soundPath_press.png new file mode 100755 index 0000000..9fcc466 Binary files /dev/null and b/res/images/T01_icon_soundPath_press.png differ diff --git a/res/images/T01_player_progress_bar.png b/res/images/T01_player_progress_bar.png new file mode 100755 index 0000000..2f25452 Binary files /dev/null and b/res/images/T01_player_progress_bar.png differ diff --git a/res/images/T01_player_progress_bg.png b/res/images/T01_player_progress_bg.png new file mode 100755 index 0000000..58d94cc Binary files /dev/null and b/res/images/T01_player_progress_bg.png differ diff --git a/res/images/T01_player_progress_point.png b/res/images/T01_player_progress_point.png new file mode 100755 index 0000000..0e8c5c5 Binary files /dev/null and b/res/images/T01_player_progress_point.png differ diff --git a/res/images/T01_sound_path.png b/res/images/T01_sound_path.png new file mode 100755 index 0000000..d4f3843 Binary files /dev/null and b/res/images/T01_sound_path.png differ diff --git a/res/images/T01_title_bg.png b/res/images/T01_title_bg.png new file mode 100755 index 0000000..039da67 Binary files /dev/null and b/res/images/T01_title_bg.png differ diff --git a/res/images/T01_title_bg_h.png b/res/images/T01_title_bg_h.png new file mode 100755 index 0000000..7d0cec4 Binary files /dev/null and b/res/images/T01_title_bg_h.png differ diff --git a/res/images/T01_title_btn.png b/res/images/T01_title_btn.png new file mode 100755 index 0000000..20c31f1 Binary files /dev/null and b/res/images/T01_title_btn.png differ diff --git a/res/images/T01_title_btn_press.png b/res/images/T01_title_btn_press.png new file mode 100755 index 0000000..49861ed Binary files /dev/null and b/res/images/T01_title_btn_press.png differ diff --git a/res/images/T01_toolbar_bg.png b/res/images/T01_toolbar_bg.png new file mode 100755 index 0000000..e02c6c6 Binary files /dev/null and b/res/images/T01_toolbar_bg.png differ diff --git a/res/images/T01_toolbar_press.png b/res/images/T01_toolbar_press.png new file mode 100755 index 0000000..851583e Binary files /dev/null and b/res/images/T01_toolbar_press.png differ diff --git a/res/images/T01_video_list_progress_bar.png b/res/images/T01_video_list_progress_bar.png new file mode 100755 index 0000000..cc9c1bc Binary files /dev/null and b/res/images/T01_video_list_progress_bar.png differ diff --git a/res/images/adjustment/T01-2_controller_progress_handle.png b/res/images/adjustment/T01-2_controller_progress_handle.png new file mode 100755 index 0000000..fc80139 Binary files /dev/null and b/res/images/adjustment/T01-2_controller_progress_handle.png differ diff --git a/res/images/adjustment/T01-2_controller_progress_handle_press.png b/res/images/adjustment/T01-2_controller_progress_handle_press.png new file mode 100755 index 0000000..d14c5f6 Binary files /dev/null and b/res/images/adjustment/T01-2_controller_progress_handle_press.png differ diff --git a/res/images/adjustment/T01-2_fine_adjustment_bg.png b/res/images/adjustment/T01-2_fine_adjustment_bg.png new file mode 100755 index 0000000..40efe0e Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_bg.png differ diff --git a/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png b/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png new file mode 100755 index 0000000..b088e8a Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_bg_ef.png differ diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png b/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png new file mode 100755 index 0000000..34240ab Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_progress_bar.png differ diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png b/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png new file mode 100755 index 0000000..b4c6def Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_progress_bg.png differ diff --git a/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png b/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png new file mode 100755 index 0000000..b8fa147 Binary files /dev/null and b/res/images/adjustment/T01-2_fine_adjustment_progress_handle.png differ diff --git a/res/images/bookmark/T01-2_bookmark_thumbnail.png b/res/images/bookmark/T01-2_bookmark_thumbnail.png new file mode 100755 index 0000000..2d4a8ca Binary files /dev/null and b/res/images/bookmark/T01-2_bookmark_thumbnail.png differ diff --git a/res/images/bookmark/T01-2_btn_bookmark.png b/res/images/bookmark/T01-2_btn_bookmark.png new file mode 100755 index 0000000..13fa60a Binary files /dev/null and b/res/images/bookmark/T01-2_btn_bookmark.png differ diff --git a/res/images/bookmark/T01-2_btn_bookmark_press.png b/res/images/bookmark/T01-2_btn_bookmark_press.png new file mode 100755 index 0000000..34ef87f Binary files /dev/null and b/res/images/bookmark/T01-2_btn_bookmark_press.png differ diff --git a/res/images/bookmark/T01-2_btn_remove_bookmark.png b/res/images/bookmark/T01-2_btn_remove_bookmark.png new file mode 100755 index 0000000..a040031 Binary files /dev/null and b/res/images/bookmark/T01-2_btn_remove_bookmark.png differ diff --git a/res/images/bookmark/T01-2_btn_remove_bookmark_press.png b/res/images/bookmark/T01-2_btn_remove_bookmark_press.png new file mode 100755 index 0000000..812f6f0 Binary files /dev/null and b/res/images/bookmark/T01-2_btn_remove_bookmark_press.png differ diff --git a/res/images/bookmark/T01-2_function_tray.png b/res/images/bookmark/T01-2_function_tray.png new file mode 100755 index 0000000..2df684b Binary files /dev/null and b/res/images/bookmark/T01-2_function_tray.png differ diff --git a/res/images/bookmark/T01-2_icon_thumbnail_bg.png b/res/images/bookmark/T01-2_icon_thumbnail_bg.png new file mode 100755 index 0000000..b5692d1 Binary files /dev/null and b/res/images/bookmark/T01-2_icon_thumbnail_bg.png differ diff --git a/res/images/com.samsung.video-player.png b/res/images/com.samsung.video-player.png new file mode 100644 index 0000000..0cc2384 Binary files /dev/null and b/res/images/com.samsung.video-player.png differ diff --git a/res/images/com.samsung.video-player.png_old b/res/images/com.samsung.video-player.png_old new file mode 100755 index 0000000..aa8b191 Binary files /dev/null and b/res/images/com.samsung.video-player.png_old differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_01.png b/res/images/desktop/controlbar/DM_Key screen_icon_01.png new file mode 100755 index 0000000..89e94e7 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_01.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_02.png b/res/images/desktop/controlbar/DM_Key screen_icon_02.png new file mode 100755 index 0000000..06e41d4 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_02.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_03.png b/res/images/desktop/controlbar/DM_Key screen_icon_03.png new file mode 100755 index 0000000..919801c Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_03.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png new file mode 100755 index 0000000..4bc3885 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_ff.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png new file mode 100755 index 0000000..c5b9e8f Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_ff_press.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_pause.png b/res/images/desktop/controlbar/DM_Key screen_icon_pause.png new file mode 100644 index 0000000..28a8872 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_pause.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png new file mode 100644 index 0000000..37609ad Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_pause_press.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play.png b/res/images/desktop/controlbar/DM_Key screen_icon_play.png new file mode 100755 index 0000000..9bf836d Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_play.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png new file mode 100755 index 0000000..e9e9583 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_play_press.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png new file mode 100755 index 0000000..1140a01 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_rew.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png new file mode 100755 index 0000000..306af4e Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_rew_press.png differ diff --git a/res/images/desktop/controlbar/DM_Key screen_icon_volume.png b/res/images/desktop/controlbar/DM_Key screen_icon_volume.png new file mode 100755 index 0000000..8d2fe43 Binary files /dev/null and b/res/images/desktop/controlbar/DM_Key screen_icon_volume.png differ diff --git a/res/images/desktop/winset/T01-2_controller_progress_bar.png b/res/images/desktop/winset/T01-2_controller_progress_bar.png new file mode 100755 index 0000000..03f54cf Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_bar.png differ diff --git a/res/images/desktop/winset/T01-2_controller_progress_bg.png b/res/images/desktop/winset/T01-2_controller_progress_bg.png new file mode 100755 index 0000000..f020771 Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_bg.png differ diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle.png b/res/images/desktop/winset/T01-2_controller_progress_handle.png new file mode 100755 index 0000000..fc80139 Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_handle.png differ diff --git a/res/images/desktop/winset/T01-2_controller_progress_handle_press.png b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png new file mode 100755 index 0000000..d14c5f6 Binary files /dev/null and b/res/images/desktop/winset/T01-2_controller_progress_handle_press.png differ diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_bg.png b/res/images/desktop/winset/T01-2_fine_adjustment_bg.png new file mode 100755 index 0000000..40efe0e Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_bg.png differ diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png b/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png new file mode 100755 index 0000000..b088e8a Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_bg_ef.png differ diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png new file mode 100755 index 0000000..34240ab Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bar.png differ diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png new file mode 100755 index 0000000..b4c6def Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_progress_bg.png differ diff --git a/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png new file mode 100755 index 0000000..b8fa147 Binary files /dev/null and b/res/images/desktop/winset/T01-2_fine_adjustment_progress_handle.png differ diff --git a/res/images/gallery_loading_ani_01.png b/res/images/gallery_loading_ani_01.png new file mode 100755 index 0000000..9402e71 Binary files /dev/null and b/res/images/gallery_loading_ani_01.png differ diff --git a/res/images/gallery_loading_ani_02.png b/res/images/gallery_loading_ani_02.png new file mode 100755 index 0000000..e71d491 Binary files /dev/null and b/res/images/gallery_loading_ani_02.png differ diff --git a/res/images/gallery_loading_ani_03.png b/res/images/gallery_loading_ani_03.png new file mode 100755 index 0000000..1ed0de9 Binary files /dev/null and b/res/images/gallery_loading_ani_03.png differ diff --git a/res/images/gallery_loading_ani_04.png b/res/images/gallery_loading_ani_04.png new file mode 100755 index 0000000..18cc497 Binary files /dev/null and b/res/images/gallery_loading_ani_04.png differ diff --git a/res/images/gallery_loading_ani_05.png b/res/images/gallery_loading_ani_05.png new file mode 100755 index 0000000..036c49b Binary files /dev/null and b/res/images/gallery_loading_ani_05.png differ diff --git a/res/images/gallery_loading_ani_06.png b/res/images/gallery_loading_ani_06.png new file mode 100755 index 0000000..3cb5e33 Binary files /dev/null and b/res/images/gallery_loading_ani_06.png differ diff --git a/res/images/gallery_loading_ani_07.png b/res/images/gallery_loading_ani_07.png new file mode 100755 index 0000000..fae06de Binary files /dev/null and b/res/images/gallery_loading_ani_07.png differ diff --git a/res/images/gallery_loading_ani_08.png b/res/images/gallery_loading_ani_08.png new file mode 100755 index 0000000..70eaaf0 Binary files /dev/null and b/res/images/gallery_loading_ani_08.png differ diff --git a/res/images/gallery_loading_ani_09.png b/res/images/gallery_loading_ani_09.png new file mode 100755 index 0000000..7fb390c Binary files /dev/null and b/res/images/gallery_loading_ani_09.png differ diff --git a/res/images/gallery_loading_ani_10.png b/res/images/gallery_loading_ani_10.png new file mode 100755 index 0000000..941fc3b Binary files /dev/null and b/res/images/gallery_loading_ani_10.png differ diff --git a/res/images/gallery_loading_ani_11.png b/res/images/gallery_loading_ani_11.png new file mode 100755 index 0000000..a67149d Binary files /dev/null and b/res/images/gallery_loading_ani_11.png differ diff --git a/res/images/gallery_loading_ani_12.png b/res/images/gallery_loading_ani_12.png new file mode 100755 index 0000000..b36421a Binary files /dev/null and b/res/images/gallery_loading_ani_12.png differ diff --git a/res/images/gallery_loading_ani_13.png b/res/images/gallery_loading_ani_13.png new file mode 100755 index 0000000..d70d609 Binary files /dev/null and b/res/images/gallery_loading_ani_13.png differ diff --git a/res/images/gallery_loading_ani_14.png b/res/images/gallery_loading_ani_14.png new file mode 100755 index 0000000..ab52db7 Binary files /dev/null and b/res/images/gallery_loading_ani_14.png differ diff --git a/res/images/gallery_loading_ani_15.png b/res/images/gallery_loading_ani_15.png new file mode 100755 index 0000000..1de8adb Binary files /dev/null and b/res/images/gallery_loading_ani_15.png differ diff --git a/res/images/gallery_loading_ani_16.png b/res/images/gallery_loading_ani_16.png new file mode 100755 index 0000000..521b61f Binary files /dev/null and b/res/images/gallery_loading_ani_16.png differ diff --git a/res/images/gallery_loading_ani_17.png b/res/images/gallery_loading_ani_17.png new file mode 100755 index 0000000..6cb5ba9 Binary files /dev/null and b/res/images/gallery_loading_ani_17.png differ diff --git a/res/images/gallery_loading_ani_18.png b/res/images/gallery_loading_ani_18.png new file mode 100755 index 0000000..a636079 Binary files /dev/null and b/res/images/gallery_loading_ani_18.png differ diff --git a/res/images/gallery_loading_ani_19.png b/res/images/gallery_loading_ani_19.png new file mode 100755 index 0000000..0a4f650 Binary files /dev/null and b/res/images/gallery_loading_ani_19.png differ diff --git a/res/images/gallery_loading_ani_20.png b/res/images/gallery_loading_ani_20.png new file mode 100755 index 0000000..14cc339 Binary files /dev/null and b/res/images/gallery_loading_ani_20.png differ diff --git a/res/images/gallery_loading_ani_21.png b/res/images/gallery_loading_ani_21.png new file mode 100755 index 0000000..0e78db7 Binary files /dev/null and b/res/images/gallery_loading_ani_21.png differ diff --git a/res/images/gallery_loading_ani_22.png b/res/images/gallery_loading_ani_22.png new file mode 100755 index 0000000..80d592e Binary files /dev/null and b/res/images/gallery_loading_ani_22.png differ diff --git a/res/images/gallery_loading_ani_23.png b/res/images/gallery_loading_ani_23.png new file mode 100755 index 0000000..b4bd7ca Binary files /dev/null and b/res/images/gallery_loading_ani_23.png differ diff --git a/res/images/gallery_loading_ani_24.png b/res/images/gallery_loading_ani_24.png new file mode 100755 index 0000000..69445e4 Binary files /dev/null and b/res/images/gallery_loading_ani_24.png differ diff --git a/res/images/gallery_loading_ani_25.png b/res/images/gallery_loading_ani_25.png new file mode 100755 index 0000000..233a038 Binary files /dev/null and b/res/images/gallery_loading_ani_25.png differ diff --git a/res/images/gallery_loading_ani_26.png b/res/images/gallery_loading_ani_26.png new file mode 100755 index 0000000..d52a017 Binary files /dev/null and b/res/images/gallery_loading_ani_26.png differ diff --git a/res/images/gallery_loading_ani_27.png b/res/images/gallery_loading_ani_27.png new file mode 100755 index 0000000..4221ecc Binary files /dev/null and b/res/images/gallery_loading_ani_27.png differ diff --git a/res/images/gallery_loading_ani_28.png b/res/images/gallery_loading_ani_28.png new file mode 100755 index 0000000..da37330 Binary files /dev/null and b/res/images/gallery_loading_ani_28.png differ diff --git a/res/images/gallery_loading_ani_29.png b/res/images/gallery_loading_ani_29.png new file mode 100755 index 0000000..41e97e1 Binary files /dev/null and b/res/images/gallery_loading_ani_29.png differ diff --git a/res/images/gallery_loading_ani_30.png b/res/images/gallery_loading_ani_30.png new file mode 100755 index 0000000..ac0bb55 Binary files /dev/null and b/res/images/gallery_loading_ani_30.png differ diff --git a/res/images/gallery_video_add_btn.png b/res/images/gallery_video_add_btn.png new file mode 100755 index 0000000..63f7d63 Binary files /dev/null and b/res/images/gallery_video_add_btn.png differ diff --git a/res/images/gallery_video_add_btn_press.png b/res/images/gallery_video_add_btn_press.png new file mode 100755 index 0000000..2bfc65b Binary files /dev/null and b/res/images/gallery_video_add_btn_press.png differ diff --git a/res/images/gallery_video_control_ff.png b/res/images/gallery_video_control_ff.png new file mode 100755 index 0000000..e0a49f1 Binary files /dev/null and b/res/images/gallery_video_control_ff.png differ diff --git a/res/images/gallery_video_control_ff_2.png b/res/images/gallery_video_control_ff_2.png new file mode 100755 index 0000000..57d60d6 Binary files /dev/null and b/res/images/gallery_video_control_ff_2.png differ diff --git a/res/images/gallery_video_control_ff_3.png b/res/images/gallery_video_control_ff_3.png new file mode 100755 index 0000000..6f023ea Binary files /dev/null and b/res/images/gallery_video_control_ff_3.png differ diff --git a/res/images/gallery_video_control_ff_4.png b/res/images/gallery_video_control_ff_4.png new file mode 100755 index 0000000..427735f Binary files /dev/null and b/res/images/gallery_video_control_ff_4.png differ diff --git a/res/images/gallery_video_control_ff_5.png b/res/images/gallery_video_control_ff_5.png new file mode 100755 index 0000000..93aa2be Binary files /dev/null and b/res/images/gallery_video_control_ff_5.png differ diff --git a/res/images/gallery_video_control_frame_back.png b/res/images/gallery_video_control_frame_back.png new file mode 100755 index 0000000..7a0428d Binary files /dev/null and b/res/images/gallery_video_control_frame_back.png differ diff --git a/res/images/gallery_video_control_frame_forword.png b/res/images/gallery_video_control_frame_forword.png new file mode 100755 index 0000000..af2b776 Binary files /dev/null and b/res/images/gallery_video_control_frame_forword.png differ diff --git a/res/images/gallery_video_control_next.png b/res/images/gallery_video_control_next.png new file mode 100755 index 0000000..e0a49f1 Binary files /dev/null and b/res/images/gallery_video_control_next.png differ diff --git a/res/images/gallery_video_control_pause.png b/res/images/gallery_video_control_pause.png new file mode 100755 index 0000000..d36fbf4 Binary files /dev/null and b/res/images/gallery_video_control_pause.png differ diff --git a/res/images/gallery_video_control_play.png b/res/images/gallery_video_control_play.png new file mode 100755 index 0000000..16b49a5 Binary files /dev/null and b/res/images/gallery_video_control_play.png differ diff --git a/res/images/gallery_video_control_prev.png b/res/images/gallery_video_control_prev.png new file mode 100755 index 0000000..029e57c Binary files /dev/null and b/res/images/gallery_video_control_prev.png differ diff --git a/res/images/gallery_video_control_rew.png b/res/images/gallery_video_control_rew.png new file mode 100755 index 0000000..029e57c Binary files /dev/null and b/res/images/gallery_video_control_rew.png differ diff --git a/res/images/gallery_video_control_rew_2.png b/res/images/gallery_video_control_rew_2.png new file mode 100755 index 0000000..ad63c27 Binary files /dev/null and b/res/images/gallery_video_control_rew_2.png differ diff --git a/res/images/gallery_video_control_rew_3.png b/res/images/gallery_video_control_rew_3.png new file mode 100755 index 0000000..96d43fd Binary files /dev/null and b/res/images/gallery_video_control_rew_3.png differ diff --git a/res/images/gallery_video_control_rew_4.png b/res/images/gallery_video_control_rew_4.png new file mode 100755 index 0000000..60f2a1d Binary files /dev/null and b/res/images/gallery_video_control_rew_4.png differ diff --git a/res/images/gallery_video_control_rew_5.png b/res/images/gallery_video_control_rew_5.png new file mode 100755 index 0000000..2eba4f6 Binary files /dev/null and b/res/images/gallery_video_control_rew_5.png differ diff --git a/res/images/gallery_video_delete_btn.png b/res/images/gallery_video_delete_btn.png new file mode 100755 index 0000000..fe62076 Binary files /dev/null and b/res/images/gallery_video_delete_btn.png differ diff --git a/res/images/gallery_video_delete_btn_press.png b/res/images/gallery_video_delete_btn_press.png new file mode 100755 index 0000000..2d2466f Binary files /dev/null and b/res/images/gallery_video_delete_btn_press.png differ diff --git a/res/images/gallery_video_fastforward_1x.png b/res/images/gallery_video_fastforward_1x.png new file mode 100755 index 0000000..c1ea6b1 Binary files /dev/null and b/res/images/gallery_video_fastforward_1x.png differ diff --git a/res/images/gallery_video_fastforward_2x.png b/res/images/gallery_video_fastforward_2x.png new file mode 100755 index 0000000..ea0486c Binary files /dev/null and b/res/images/gallery_video_fastforward_2x.png differ diff --git a/res/images/gallery_video_fastforward_3x.png b/res/images/gallery_video_fastforward_3x.png new file mode 100755 index 0000000..6e16eff Binary files /dev/null and b/res/images/gallery_video_fastforward_3x.png differ diff --git a/res/images/gallery_video_fastforward_4x.png b/res/images/gallery_video_fastforward_4x.png new file mode 100755 index 0000000..a1eeacb Binary files /dev/null and b/res/images/gallery_video_fastforward_4x.png differ diff --git a/res/images/gallery_video_icon_btn.png b/res/images/gallery_video_icon_btn.png new file mode 100755 index 0000000..9ef6888 Binary files /dev/null and b/res/images/gallery_video_icon_btn.png differ diff --git a/res/images/gallery_video_icon_btn_press.png b/res/images/gallery_video_icon_btn_press.png new file mode 100755 index 0000000..628c8e7 Binary files /dev/null and b/res/images/gallery_video_icon_btn_press.png differ diff --git a/res/images/gallery_video_icon_mute.png b/res/images/gallery_video_icon_mute.png new file mode 100755 index 0000000..e92f376 Binary files /dev/null and b/res/images/gallery_video_icon_mute.png differ diff --git a/res/images/gallery_video_icon_volume.png b/res/images/gallery_video_icon_volume.png new file mode 100755 index 0000000..49d9cf5 Binary files /dev/null and b/res/images/gallery_video_icon_volume.png differ diff --git a/res/images/gallery_video_player_bg.png b/res/images/gallery_video_player_bg.png new file mode 100755 index 0000000..611a7b7 Binary files /dev/null and b/res/images/gallery_video_player_bg.png differ diff --git a/res/images/gallery_video_popup_mute.png b/res/images/gallery_video_popup_mute.png new file mode 100755 index 0000000..32f447c Binary files /dev/null and b/res/images/gallery_video_popup_mute.png differ diff --git a/res/images/gallery_video_rewind_1x.png b/res/images/gallery_video_rewind_1x.png new file mode 100755 index 0000000..31f3696 Binary files /dev/null and b/res/images/gallery_video_rewind_1x.png differ diff --git a/res/images/gallery_video_rewind_2x.png b/res/images/gallery_video_rewind_2x.png new file mode 100755 index 0000000..17c17c9 Binary files /dev/null and b/res/images/gallery_video_rewind_2x.png differ diff --git a/res/images/gallery_video_rewind_3x.png b/res/images/gallery_video_rewind_3x.png new file mode 100755 index 0000000..badb983 Binary files /dev/null and b/res/images/gallery_video_rewind_3x.png differ diff --git a/res/images/gallery_video_rewind_4x.png b/res/images/gallery_video_rewind_4x.png new file mode 100755 index 0000000..a855514 Binary files /dev/null and b/res/images/gallery_video_rewind_4x.png differ diff --git a/res/images/icon/06_myfiles_list_folder.png b/res/images/icon/06_myfiles_list_folder.png new file mode 100644 index 0000000..d53be43 Binary files /dev/null and b/res/images/icon/06_myfiles_list_folder.png differ diff --git a/res/images/icon/T01-2_icon_function_bg.png b/res/images/icon/T01-2_icon_function_bg.png new file mode 100755 index 0000000..7354c9e Binary files /dev/null and b/res/images/icon/T01-2_icon_function_bg.png differ diff --git a/res/images/icon/T01-2_icon_popup_sound_allive.png b/res/images/icon/T01-2_icon_popup_sound_allive.png new file mode 100755 index 0000000..0f40b7b Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_allive.png differ diff --git a/res/images/icon/T01-2_icon_popup_sound_audio_track.png b/res/images/icon/T01-2_icon_popup_sound_audio_track.png new file mode 100755 index 0000000..eb9b26d Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_audio_track.png differ diff --git a/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png b/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png new file mode 100755 index 0000000..a5aa8a0 Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_repeat_mode.png differ diff --git a/res/images/icon/T01-2_icon_popup_sound_settings.png b/res/images/icon/T01-2_icon_popup_sound_settings.png new file mode 100755 index 0000000..b548ecd Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_sound_settings.png differ diff --git a/res/images/icon/T01-2_icon_popup_subtitle.png b/res/images/icon/T01-2_icon_popup_subtitle.png new file mode 100755 index 0000000..5122b35 Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_subtitle.png differ diff --git a/res/images/icon/T01-2_icon_popup_trim.png b/res/images/icon/T01-2_icon_popup_trim.png new file mode 100755 index 0000000..1cab618 Binary files /dev/null and b/res/images/icon/T01-2_icon_popup_trim.png differ diff --git a/res/images/icon/T01-2_icon_title_allshare.png b/res/images/icon/T01-2_icon_title_allshare.png new file mode 100755 index 0000000..2e46917 Binary files /dev/null and b/res/images/icon/T01-2_icon_title_allshare.png differ diff --git a/res/images/icon/T01-2_icon_title_soundpath.png b/res/images/icon/T01-2_icon_title_soundpath.png new file mode 100755 index 0000000..1da849c Binary files /dev/null and b/res/images/icon/T01-2_icon_title_soundpath.png differ diff --git a/res/images/icon/T01_controlbar_icon_add_to_home.png b/res/images/icon/T01_controlbar_icon_add_to_home.png new file mode 100755 index 0000000..ff44f72 Binary files /dev/null and b/res/images/icon/T01_controlbar_icon_add_to_home.png differ diff --git a/res/images/icon/_06_myfiles_list_folder.png b/res/images/icon/_06_myfiles_list_folder.png new file mode 100644 index 0000000..52b77ba Binary files /dev/null and b/res/images/icon/_06_myfiles_list_folder.png differ diff --git a/res/images/mw/T01-2_icon_close.png b/res/images/mw/T01-2_icon_close.png new file mode 100755 index 0000000..535503b Binary files /dev/null and b/res/images/mw/T01-2_icon_close.png differ diff --git a/res/images/mw/T01-2_icon_full_size.png b/res/images/mw/T01-2_icon_full_size.png new file mode 100755 index 0000000..49b535c Binary files /dev/null and b/res/images/mw/T01-2_icon_full_size.png differ diff --git a/res/images/mw/T01-2_icon_hide_panel.png b/res/images/mw/T01-2_icon_hide_panel.png new file mode 100755 index 0000000..df600e1 Binary files /dev/null and b/res/images/mw/T01-2_icon_hide_panel.png differ diff --git a/res/images/mw/T01-2_icon_open_panel.png b/res/images/mw/T01-2_icon_open_panel.png new file mode 100755 index 0000000..df473a6 Binary files /dev/null and b/res/images/mw/T01-2_icon_open_panel.png differ diff --git a/res/images/mw/T01-2_multiscreen_bg.png b/res/images/mw/T01-2_multiscreen_bg.png new file mode 100755 index 0000000..e509e80 Binary files /dev/null and b/res/images/mw/T01-2_multiscreen_bg.png differ diff --git a/res/images/mw/T01-2_multiscreen_bg_press.png b/res/images/mw/T01-2_multiscreen_bg_press.png new file mode 100755 index 0000000..72463d6 Binary files /dev/null and b/res/images/mw/T01-2_multiscreen_bg_press.png differ diff --git a/res/images/mw/T01-2_multiscreen_player_bg.png b/res/images/mw/T01-2_multiscreen_player_bg.png new file mode 100755 index 0000000..17b8cc8 Binary files /dev/null and b/res/images/mw/T01-2_multiscreen_player_bg.png differ diff --git a/res/images/mw/T01-2_player_icon_FF.png b/res/images/mw/T01-2_player_icon_FF.png new file mode 100755 index 0000000..c53ca33 Binary files /dev/null and b/res/images/mw/T01-2_player_icon_FF.png differ diff --git a/res/images/mw/T01-2_player_icon_FF_press.png b/res/images/mw/T01-2_player_icon_FF_press.png new file mode 100755 index 0000000..76fdaee Binary files /dev/null and b/res/images/mw/T01-2_player_icon_FF_press.png differ diff --git a/res/images/mw/T01-2_player_icon_Pause.png b/res/images/mw/T01-2_player_icon_Pause.png new file mode 100755 index 0000000..367d26d Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Pause.png differ diff --git a/res/images/mw/T01-2_player_icon_Pause_press.png b/res/images/mw/T01-2_player_icon_Pause_press.png new file mode 100755 index 0000000..65b0d49 Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Pause_press.png differ diff --git a/res/images/mw/T01-2_player_icon_Play.png b/res/images/mw/T01-2_player_icon_Play.png new file mode 100755 index 0000000..4ef93d9 Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Play.png differ diff --git a/res/images/mw/T01-2_player_icon_Play_press.png b/res/images/mw/T01-2_player_icon_Play_press.png new file mode 100755 index 0000000..123bd29 Binary files /dev/null and b/res/images/mw/T01-2_player_icon_Play_press.png differ diff --git a/res/images/mw/T01-2_player_icon_REW.png b/res/images/mw/T01-2_player_icon_REW.png new file mode 100755 index 0000000..4ceb469 Binary files /dev/null and b/res/images/mw/T01-2_player_icon_REW.png differ diff --git a/res/images/mw/T01-2_player_icon_REW_press.png b/res/images/mw/T01-2_player_icon_REW_press.png new file mode 100755 index 0000000..82f9b5e Binary files /dev/null and b/res/images/mw/T01-2_player_icon_REW_press.png differ diff --git a/res/images/mw/T01-2_resize_controller.png b/res/images/mw/T01-2_resize_controller.png new file mode 100755 index 0000000..b1fee34 Binary files /dev/null and b/res/images/mw/T01-2_resize_controller.png differ diff --git a/res/images/mw/T01-2_resize_controller_press.png b/res/images/mw/T01-2_resize_controller_press.png new file mode 100755 index 0000000..185866b Binary files /dev/null and b/res/images/mw/T01-2_resize_controller_press.png differ diff --git a/res/images/navibar_item_separator_shadow.png b/res/images/navibar_item_separator_shadow.png new file mode 100755 index 0000000..05d347d Binary files /dev/null and b/res/images/navibar_item_separator_shadow.png differ diff --git a/res/images/naviframe_optionheader.png b/res/images/naviframe_optionheader.png new file mode 100755 index 0000000..e90f19c Binary files /dev/null and b/res/images/naviframe_optionheader.png differ diff --git a/res/images/naviframe_optionheader_arrow.png b/res/images/naviframe_optionheader_arrow.png new file mode 100755 index 0000000..de84372 Binary files /dev/null and b/res/images/naviframe_optionheader_arrow.png differ diff --git a/res/images/option/T01-2_icon_controller_connection_info.png b/res/images/option/T01-2_icon_controller_connection_info.png new file mode 100755 index 0000000..ac1beec Binary files /dev/null and b/res/images/option/T01-2_icon_controller_connection_info.png differ diff --git a/res/images/option/T01-2_icon_controller_more.png b/res/images/option/T01-2_icon_controller_more.png new file mode 100755 index 0000000..715a23d Binary files /dev/null and b/res/images/option/T01-2_icon_controller_more.png differ diff --git a/res/images/option/T01-2_icon_controller_multiwin.png b/res/images/option/T01-2_icon_controller_multiwin.png new file mode 100755 index 0000000..abc3dd4 Binary files /dev/null and b/res/images/option/T01-2_icon_controller_multiwin.png differ diff --git a/res/images/option/T01-2_icon_controller_repeat_off.png b/res/images/option/T01-2_icon_controller_repeat_off.png new file mode 100755 index 0000000..3ab9f18 Binary files /dev/null and b/res/images/option/T01-2_icon_controller_repeat_off.png differ diff --git a/res/images/option/T01-2_icon_controller_repeat_on.png b/res/images/option/T01-2_icon_controller_repeat_on.png new file mode 100755 index 0000000..42ea4cc Binary files /dev/null and b/res/images/option/T01-2_icon_controller_repeat_on.png differ diff --git a/res/images/option/T01-2_icon_controller_sa.png b/res/images/option/T01-2_icon_controller_sa.png new file mode 100755 index 0000000..0619a24 Binary files /dev/null and b/res/images/option/T01-2_icon_controller_sa.png differ diff --git a/res/images/option/T01-2_icon_controller_trim.png b/res/images/option/T01-2_icon_controller_trim.png new file mode 100755 index 0000000..f1e796a Binary files /dev/null and b/res/images/option/T01-2_icon_controller_trim.png differ diff --git a/res/images/option/T01-2_icon_function_bg.png b/res/images/option/T01-2_icon_function_bg.png new file mode 100755 index 0000000..7354c9e Binary files /dev/null and b/res/images/option/T01-2_icon_function_bg.png differ diff --git a/res/images/option/T01-2_icon_function_bookmark.png b/res/images/option/T01-2_icon_function_bookmark.png new file mode 100755 index 0000000..76e182f Binary files /dev/null and b/res/images/option/T01-2_icon_function_bookmark.png differ diff --git a/res/images/option/T01-2_icon_function_screenmode.png b/res/images/option/T01-2_icon_function_screenmode.png new file mode 100755 index 0000000..6c9a5d3 Binary files /dev/null and b/res/images/option/T01-2_icon_function_screenmode.png differ diff --git a/res/images/option/T01-2_icon_function_screenmode02.png b/res/images/option/T01-2_icon_function_screenmode02.png new file mode 100755 index 0000000..3a545b6 Binary files /dev/null and b/res/images/option/T01-2_icon_function_screenmode02.png differ diff --git a/res/images/option/T01-2_icon_function_screenmode03.png b/res/images/option/T01-2_icon_function_screenmode03.png new file mode 100755 index 0000000..9c001f6 Binary files /dev/null and b/res/images/option/T01-2_icon_function_screenmode03.png differ diff --git a/res/images/option/T01-2_icon_function_select_bg.png b/res/images/option/T01-2_icon_function_select_bg.png new file mode 100755 index 0000000..614c426 Binary files /dev/null and b/res/images/option/T01-2_icon_function_select_bg.png differ diff --git a/res/images/option/T01-2_icon_function_share.png b/res/images/option/T01-2_icon_function_share.png new file mode 100755 index 0000000..39d8972 Binary files /dev/null and b/res/images/option/T01-2_icon_function_share.png differ diff --git a/res/images/option/T01-2_icon_function_subtitle.png b/res/images/option/T01-2_icon_function_subtitle.png new file mode 100755 index 0000000..51207bb Binary files /dev/null and b/res/images/option/T01-2_icon_function_subtitle.png differ diff --git a/res/images/option/T01-2_icon_function_trim.png b/res/images/option/T01-2_icon_function_trim.png new file mode 100755 index 0000000..0619696 Binary files /dev/null and b/res/images/option/T01-2_icon_function_trim.png differ diff --git a/res/images/org.tizen.video-player.png b/res/images/org.tizen.video-player.png new file mode 100755 index 0000000..8814085 Binary files /dev/null and b/res/images/org.tizen.video-player.png differ diff --git a/res/images/panel/T01-2_btn_toolbar_back.png b/res/images/panel/T01-2_btn_toolbar_back.png new file mode 100755 index 0000000..e58ce84 Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_back.png differ diff --git a/res/images/panel/T01-2_btn_toolbar_back_press.png b/res/images/panel/T01-2_btn_toolbar_back_press.png new file mode 100755 index 0000000..0852249 Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_back_press.png differ diff --git a/res/images/panel/T01-2_btn_toolbar_volum.png b/res/images/panel/T01-2_btn_toolbar_volum.png new file mode 100755 index 0000000..3e09485 Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_volum.png differ diff --git a/res/images/panel/T01-2_btn_toolbar_volum_press.png b/res/images/panel/T01-2_btn_toolbar_volum_press.png new file mode 100755 index 0000000..d07e670 Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_volum_press.png differ diff --git a/res/images/panel/T01-2_btn_toolbar_volume.png b/res/images/panel/T01-2_btn_toolbar_volume.png new file mode 100755 index 0000000..f7c10e8 Binary files /dev/null and b/res/images/panel/T01-2_btn_toolbar_volume.png differ diff --git a/res/images/panel/T01-2_controller_progress_bar.png b/res/images/panel/T01-2_controller_progress_bar.png new file mode 100755 index 0000000..03f54cf Binary files /dev/null and b/res/images/panel/T01-2_controller_progress_bar.png differ diff --git a/res/images/panel/T01-2_controller_progress_bg.png b/res/images/panel/T01-2_controller_progress_bg.png new file mode 100755 index 0000000..f020771 Binary files /dev/null and b/res/images/panel/T01-2_controller_progress_bg.png differ diff --git a/res/images/panel/T01-2_icon_controller_repeat.png b/res/images/panel/T01-2_icon_controller_repeat.png new file mode 100755 index 0000000..e8012e3 Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_repeat.png differ diff --git a/res/images/panel/T01-2_icon_controller_repeat_1.png b/res/images/panel/T01-2_icon_controller_repeat_1.png new file mode 100755 index 0000000..941301f Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_repeat_1.png differ diff --git a/res/images/panel/T01-2_icon_controller_repeat_all.png b/res/images/panel/T01-2_icon_controller_repeat_all.png new file mode 100755 index 0000000..bdd28af Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_repeat_all.png differ diff --git a/res/images/panel/T01-2_icon_controller_sa.png b/res/images/panel/T01-2_icon_controller_sa.png new file mode 100755 index 0000000..3b6b488 Binary files /dev/null and b/res/images/panel/T01-2_icon_controller_sa.png differ diff --git a/res/images/panel/T01-2_icon_toolbar_cancel.png b/res/images/panel/T01-2_icon_toolbar_cancel.png new file mode 100755 index 0000000..5cb7824 Binary files /dev/null and b/res/images/panel/T01-2_icon_toolbar_cancel.png differ diff --git a/res/images/panel/T01-2_icon_toolbar_done.png b/res/images/panel/T01-2_icon_toolbar_done.png new file mode 100755 index 0000000..46304a4 Binary files /dev/null and b/res/images/panel/T01-2_icon_toolbar_done.png differ diff --git a/res/images/panel/T02_volume_icon_Mute.png b/res/images/panel/T02_volume_icon_Mute.png new file mode 100755 index 0000000..2918312 Binary files /dev/null and b/res/images/panel/T02_volume_icon_Mute.png differ diff --git a/res/images/subtitle/T01-2_sync_btn_bg.png b/res/images/subtitle/T01-2_sync_btn_bg.png new file mode 100755 index 0000000..a7a8fd0 Binary files /dev/null and b/res/images/subtitle/T01-2_sync_btn_bg.png differ diff --git a/res/images/subtitle/T01-2_sync_faster.png b/res/images/subtitle/T01-2_sync_faster.png new file mode 100755 index 0000000..44cb065 Binary files /dev/null and b/res/images/subtitle/T01-2_sync_faster.png differ diff --git a/res/images/subtitle/T01-2_sync_list_press.png b/res/images/subtitle/T01-2_sync_list_press.png new file mode 100755 index 0000000..f252cc3 Binary files /dev/null and b/res/images/subtitle/T01-2_sync_list_press.png differ diff --git a/res/images/subtitle/T01-2_sync_slowly.png b/res/images/subtitle/T01-2_sync_slowly.png new file mode 100755 index 0000000..92b43e6 Binary files /dev/null and b/res/images/subtitle/T01-2_sync_slowly.png differ diff --git a/res/images/toolbar/T01-2_btn_toolbar_back.png b/res/images/toolbar/T01-2_btn_toolbar_back.png new file mode 100755 index 0000000..e58ce84 Binary files /dev/null and b/res/images/toolbar/T01-2_btn_toolbar_back.png differ diff --git a/res/images/toolbar/T01-2_btn_toolbar_volum.png b/res/images/toolbar/T01-2_btn_toolbar_volum.png new file mode 100755 index 0000000..3e09485 Binary files /dev/null and b/res/images/toolbar/T01-2_btn_toolbar_volum.png differ diff --git a/res/images/toolbar/T01-2_btn_toolbar_volume.png b/res/images/toolbar/T01-2_btn_toolbar_volume.png new file mode 100755 index 0000000..f7c10e8 Binary files /dev/null and b/res/images/toolbar/T01-2_btn_toolbar_volume.png differ diff --git a/res/images/toolbar/T01-2_controlbar_icon_folder.png b/res/images/toolbar/T01-2_controlbar_icon_folder.png new file mode 100644 index 0000000..53500ff Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_folder.png differ diff --git a/res/images/toolbar/T01-2_controlbar_icon_near_device.png b/res/images/toolbar/T01-2_controlbar_icon_near_device.png new file mode 100644 index 0000000..0520970 Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_near_device.png differ diff --git a/res/images/toolbar/T01-2_controlbar_icon_recorded.png b/res/images/toolbar/T01-2_controlbar_icon_recorded.png new file mode 100644 index 0000000..0717057 Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_recorded.png differ diff --git a/res/images/toolbar/T01-2_controlbar_icon_video.png b/res/images/toolbar/T01-2_controlbar_icon_video.png new file mode 100644 index 0000000..da41533 Binary files /dev/null and b/res/images/toolbar/T01-2_controlbar_icon_video.png differ diff --git a/res/images/toolbar/T01-2_icon_toolbar_cancel.png b/res/images/toolbar/T01-2_icon_toolbar_cancel.png new file mode 100755 index 0000000..5cb7824 Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_cancel.png differ diff --git a/res/images/toolbar/T01-2_icon_toolbar_delete.png b/res/images/toolbar/T01-2_icon_toolbar_delete.png new file mode 100755 index 0000000..757aee3 Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_delete.png differ diff --git a/res/images/toolbar/T01-2_icon_toolbar_done.png b/res/images/toolbar/T01-2_icon_toolbar_done.png new file mode 100755 index 0000000..46304a4 Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_done.png differ diff --git a/res/images/toolbar/T01-2_icon_toolbar_setting.png b/res/images/toolbar/T01-2_icon_toolbar_setting.png new file mode 100644 index 0000000..4dcd409 Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_setting.png differ diff --git a/res/images/toolbar/T01-2_icon_toolbar_sort_by.png b/res/images/toolbar/T01-2_icon_toolbar_sort_by.png new file mode 100644 index 0000000..e252d2b Binary files /dev/null and b/res/images/toolbar/T01-2_icon_toolbar_sort_by.png differ diff --git a/res/images/toolbar/T02_controlbar_icon_search.png b/res/images/toolbar/T02_controlbar_icon_search.png new file mode 100755 index 0000000..e748043 Binary files /dev/null and b/res/images/toolbar/T02_controlbar_icon_search.png differ diff --git a/res/images/toolbar/T02_volume_icon_Mute.png b/res/images/toolbar/T02_volume_icon_Mute.png new file mode 100755 index 0000000..2918312 Binary files /dev/null and b/res/images/toolbar/T02_volume_icon_Mute.png differ diff --git a/res/images/trim/T01-2_controller_track_ball.png b/res/images/trim/T01-2_controller_track_ball.png new file mode 100755 index 0000000..0f92633 Binary files /dev/null and b/res/images/trim/T01-2_controller_track_ball.png differ diff --git a/res/images/trim/T01-2_controller_trimming_handle_beginning.png b/res/images/trim/T01-2_controller_trimming_handle_beginning.png new file mode 100755 index 0000000..46dbb93 Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_beginning.png differ diff --git a/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png b/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png new file mode 100755 index 0000000..f610a78 Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_beginning_press.png differ diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending.png b/res/images/trim/T01-2_controller_trimming_handle_ending.png new file mode 100755 index 0000000..3984517 Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_ending.png differ diff --git a/res/images/trim/T01-2_controller_trimming_handle_ending_press.png b/res/images/trim/T01-2_controller_trimming_handle_ending_press.png new file mode 100755 index 0000000..bae372a Binary files /dev/null and b/res/images/trim/T01-2_controller_trimming_handle_ending_press.png differ diff --git a/res/images/trim/T01-2_icon_toolbar_forward.png b/res/images/trim/T01-2_icon_toolbar_forward.png new file mode 100755 index 0000000..a6aaf21 Binary files /dev/null and b/res/images/trim/T01-2_icon_toolbar_forward.png differ diff --git a/res/images/trim/T01-2_icon_toolbar_reverse.png b/res/images/trim/T01-2_icon_toolbar_reverse.png new file mode 100755 index 0000000..6b9d2d8 Binary files /dev/null and b/res/images/trim/T01-2_icon_toolbar_reverse.png differ diff --git a/res/images/trim/gallery_video_fastforward_1x.png b/res/images/trim/gallery_video_fastforward_1x.png new file mode 100755 index 0000000..c1ea6b1 Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_1x.png differ diff --git a/res/images/trim/gallery_video_fastforward_2x.png b/res/images/trim/gallery_video_fastforward_2x.png new file mode 100755 index 0000000..ea0486c Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_2x.png differ diff --git a/res/images/trim/gallery_video_fastforward_3x.png b/res/images/trim/gallery_video_fastforward_3x.png new file mode 100755 index 0000000..6e16eff Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_3x.png differ diff --git a/res/images/trim/gallery_video_fastforward_4x.png b/res/images/trim/gallery_video_fastforward_4x.png new file mode 100755 index 0000000..a1eeacb Binary files /dev/null and b/res/images/trim/gallery_video_fastforward_4x.png differ diff --git a/res/images/trim/gallery_video_rewind_1x.png b/res/images/trim/gallery_video_rewind_1x.png new file mode 100755 index 0000000..31f3696 Binary files /dev/null and b/res/images/trim/gallery_video_rewind_1x.png differ diff --git a/res/images/trim/gallery_video_rewind_2x.png b/res/images/trim/gallery_video_rewind_2x.png new file mode 100755 index 0000000..17c17c9 Binary files /dev/null and b/res/images/trim/gallery_video_rewind_2x.png differ diff --git a/res/images/trim/gallery_video_rewind_3x.png b/res/images/trim/gallery_video_rewind_3x.png new file mode 100755 index 0000000..badb983 Binary files /dev/null and b/res/images/trim/gallery_video_rewind_3x.png differ diff --git a/res/images/trim/gallery_video_rewind_4x.png b/res/images/trim/gallery_video_rewind_4x.png new file mode 100755 index 0000000..a855514 Binary files /dev/null and b/res/images/trim/gallery_video_rewind_4x.png differ diff --git a/res/images/video_sound_path_dim.png b/res/images/video_sound_path_dim.png new file mode 100755 index 0000000..02b5867 Binary files /dev/null and b/res/images/video_sound_path_dim.png differ diff --git a/res/images/volume/T01-2_player_progress_bar.png b/res/images/volume/T01-2_player_progress_bar.png new file mode 100755 index 0000000..00d960c Binary files /dev/null and b/res/images/volume/T01-2_player_progress_bar.png differ diff --git a/res/images/volume/T01-2_player_progress_bg.png b/res/images/volume/T01-2_player_progress_bg.png new file mode 100755 index 0000000..a9a629a Binary files /dev/null and b/res/images/volume/T01-2_player_progress_bg.png differ diff --git a/res/images/volume/T01-2_player_volume_handle.png b/res/images/volume/T01-2_player_volume_handle.png new file mode 100755 index 0000000..a5bb976 Binary files /dev/null and b/res/images/volume/T01-2_player_volume_handle.png differ diff --git a/res/images/volume/T01-2_player_volume_handle_press.png b/res/images/volume/T01-2_player_volume_handle_press.png new file mode 100755 index 0000000..598fb63 Binary files /dev/null and b/res/images/volume/T01-2_player_volume_handle_press.png differ diff --git a/res/images/volume/T01-2_volume_icon_01.png b/res/images/volume/T01-2_volume_icon_01.png new file mode 100755 index 0000000..da5bf5d Binary files /dev/null and b/res/images/volume/T01-2_volume_icon_01.png differ diff --git a/res/images/volume/T01-2_volume_icon_02.png b/res/images/volume/T01-2_volume_icon_02.png new file mode 100755 index 0000000..8020ecb Binary files /dev/null and b/res/images/volume/T01-2_volume_icon_02.png differ diff --git a/res/images/white/common/00_popup_bubble_bg.png b/res/images/white/common/00_popup_bubble_bg.png new file mode 100755 index 0000000..11b536d Binary files /dev/null and b/res/images/white/common/00_popup_bubble_bg.png differ diff --git a/res/images/white/common/00_popup_tail_bottom.png b/res/images/white/common/00_popup_tail_bottom.png new file mode 100755 index 0000000..a37b8be Binary files /dev/null and b/res/images/white/common/00_popup_tail_bottom.png differ diff --git a/res/images/white/common/00_popup_tail_left.png b/res/images/white/common/00_popup_tail_left.png new file mode 100755 index 0000000..593c109 Binary files /dev/null and b/res/images/white/common/00_popup_tail_left.png differ diff --git a/res/images/white/common/00_popup_tail_right.png b/res/images/white/common/00_popup_tail_right.png new file mode 100755 index 0000000..0b451f7 Binary files /dev/null and b/res/images/white/common/00_popup_tail_right.png differ diff --git a/res/images/white/common/00_popup_tail_top.png b/res/images/white/common/00_popup_tail_top.png new file mode 100755 index 0000000..d99ce87 Binary files /dev/null and b/res/images/white/common/00_popup_tail_top.png differ diff --git a/res/images/white/common/00_winset_control_toolbar_bg.png b/res/images/white/common/00_winset_control_toolbar_bg.png new file mode 100755 index 0000000..d21ae34 Binary files /dev/null and b/res/images/white/common/00_winset_control_toolbar_bg.png differ diff --git a/res/images/white/common/00_winset_control_top_arrow.png b/res/images/white/common/00_winset_control_top_arrow.png new file mode 100755 index 0000000..2d0503d Binary files /dev/null and b/res/images/white/common/00_winset_control_top_arrow.png differ diff --git a/res/images/white/common/00_winset_control_top_bg.png b/res/images/white/common/00_winset_control_top_bg.png new file mode 100755 index 0000000..187516e Binary files /dev/null and b/res/images/white/common/00_winset_control_top_bg.png differ diff --git a/res/images/white/common/00_winset_title_line.png b/res/images/white/common/00_winset_title_line.png new file mode 100755 index 0000000..2be73aa Binary files /dev/null and b/res/images/white/common/00_winset_title_line.png differ diff --git a/res/images/white/common/01_scroller.png b/res/images/white/common/01_scroller.png new file mode 100755 index 0000000..88ee4ab Binary files /dev/null and b/res/images/white/common/01_scroller.png differ diff --git a/res/images/white/common/T01-2_popup_arrow.png b/res/images/white/common/T01-2_popup_arrow.png new file mode 100755 index 0000000..1644c53 Binary files /dev/null and b/res/images/white/common/T01-2_popup_arrow.png differ diff --git a/res/images/white/common/T01-2_popup_bg.png b/res/images/white/common/T01-2_popup_bg.png new file mode 100755 index 0000000..aa3a361 Binary files /dev/null and b/res/images/white/common/T01-2_popup_bg.png differ diff --git a/res/images/white/common/T01-2_popup_btn_bg.png b/res/images/white/common/T01-2_popup_btn_bg.png new file mode 100755 index 0000000..e86b399 Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_bg.png differ diff --git a/res/images/white/common/T01-2_popup_btn_bg2.9.png b/res/images/white/common/T01-2_popup_btn_bg2.9.png new file mode 100755 index 0000000..53427eb Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_bg2.9.png differ diff --git a/res/images/white/common/T01-2_popup_btn_normal.png b/res/images/white/common/T01-2_popup_btn_normal.png new file mode 100755 index 0000000..c4be89a Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_normal.png differ diff --git a/res/images/white/common/T01-2_popup_btn_press_bottom.png b/res/images/white/common/T01-2_popup_btn_press_bottom.png new file mode 100755 index 0000000..c62a838 Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_press_bottom.png differ diff --git a/res/images/white/common/T01-2_popup_btn_press_middle.png b/res/images/white/common/T01-2_popup_btn_press_middle.png new file mode 100755 index 0000000..f60efb0 Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_press_middle.png differ diff --git a/res/images/white/common/T01-2_popup_btn_press_top.png b/res/images/white/common/T01-2_popup_btn_press_top.png new file mode 100755 index 0000000..6da7da9 Binary files /dev/null and b/res/images/white/common/T01-2_popup_btn_press_top.png differ diff --git a/res/images/white/common/T01-2_popup_divider.png b/res/images/white/common/T01-2_popup_divider.png new file mode 100755 index 0000000..16ceb28 Binary files /dev/null and b/res/images/white/common/T01-2_popup_divider.png differ diff --git a/res/images/white/common/T01-2_title_btn_bg.png b/res/images/white/common/T01-2_title_btn_bg.png new file mode 100755 index 0000000..fe53ace Binary files /dev/null and b/res/images/white/common/T01-2_title_btn_bg.png differ diff --git a/res/images/white/common/T01-2_title_btn_bg_press_01.png b/res/images/white/common/T01-2_title_btn_bg_press_01.png new file mode 100755 index 0000000..c74d762 Binary files /dev/null and b/res/images/white/common/T01-2_title_btn_bg_press_01.png differ diff --git a/res/images/white/common/T01-2_title_btn_bg_press_02.png b/res/images/white/common/T01-2_title_btn_bg_press_02.png new file mode 100755 index 0000000..4c56281 Binary files /dev/null and b/res/images/white/common/T01-2_title_btn_bg_press_02.png differ diff --git a/res/images/white/control/T01-2_icon_toolbar_next.png b/res/images/white/control/T01-2_icon_toolbar_next.png new file mode 100755 index 0000000..413b481 Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_next.png differ diff --git a/res/images/white/control/T01-2_icon_toolbar_pause.png b/res/images/white/control/T01-2_icon_toolbar_pause.png new file mode 100755 index 0000000..cd95fae Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_pause.png differ diff --git a/res/images/white/control/T01-2_icon_toolbar_play.png b/res/images/white/control/T01-2_icon_toolbar_play.png new file mode 100755 index 0000000..e939a59 Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_play.png differ diff --git a/res/images/white/control/T01-2_icon_toolbar_previous.png b/res/images/white/control/T01-2_icon_toolbar_previous.png new file mode 100755 index 0000000..c57dd54 Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_previous.png differ diff --git a/res/images/white/control/T01-2_icon_toolbar_stop.png b/res/images/white/control/T01-2_icon_toolbar_stop.png new file mode 100755 index 0000000..d2ce746 Binary files /dev/null and b/res/images/white/control/T01-2_icon_toolbar_stop.png differ diff --git a/res/images/white/panel/T01-2_btn_toolbar_back.png b/res/images/white/panel/T01-2_btn_toolbar_back.png new file mode 100755 index 0000000..e58ce84 Binary files /dev/null and b/res/images/white/panel/T01-2_btn_toolbar_back.png differ diff --git a/res/images/white/panel/T01-2_btn_toolbar_volume.png b/res/images/white/panel/T01-2_btn_toolbar_volume.png new file mode 100755 index 0000000..f7c10e8 Binary files /dev/null and b/res/images/white/panel/T01-2_btn_toolbar_volume.png differ diff --git a/res/images/white/panel/T02_volume_icon_Mute.png b/res/images/white/panel/T02_volume_icon_Mute.png new file mode 100755 index 0000000..2918312 Binary files /dev/null and b/res/images/white/panel/T02_volume_icon_Mute.png differ diff --git a/res/po/CMakeLists.txt b/res/po/CMakeLists.txt new file mode 100755 index 0000000..407cb2b --- /dev/null +++ b/res/po/CMakeLists.txt @@ -0,0 +1,23 @@ +# for i18n + +SET(POFILES el_GR.po es_ES.po it_IT.po ko_KR.po pt_PT.po tr_TR.po zh_HK.po de_DE.po en.po fr_FR.po ja_JP.po nl_NL.po ru_RU.po zh_CN.po zh_TW.po) +SET(MSGFMT "/usr/bin/msgfmt") + +FOREACH(pofile ${POFILES}) + SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) + MESSAGE("PO: ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +MESSAGE(".mo files: ${moFiles}") +ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles}) diff --git a/res/po/POTFILES.in b/res/po/POTFILES.in new file mode 100755 index 0000000..eb1a31e --- /dev/null +++ b/res/po/POTFILES.in @@ -0,0 +1,2 @@ +# List of source files containing translatable strings. +PlayViewCtrl.c diff --git a/res/po/de_DE.po b/res/po/de_DE.po new file mode 100755 index 0000000..c000c40 --- /dev/null +++ b/res/po/de_DE.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Bereits vorhanden" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Verbindung mit Bluetooth-Stereo-Headset getrennt" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "DRM-Datei nur für Typ Sperre weiterl. unterstützt" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Neues Tag" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Original" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Im Stumm-Modus abspielen?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "DRM-Datei kann nicht wiedergegeben werden" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Senden nicht möglich. Dieses Element ist gegen Weiterleitung gesperrt." + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Nicht unterstützte DivX® DRM-Version" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Lesezeichen" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Fertig" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Favorit" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Details" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Auflösung" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Favorit hinzufügen" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Nachricht" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Name" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "Auf AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Als neues Video zuschn." + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Originalvideo zuschneiden" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Konto" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Shortcut hinzufügen" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Tag hzfg." + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Favoritenliste voll. Löschen Sie einige Favoriten" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Verbindung zum Server getrennt" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Gateway-Timeout" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Interner Serverfehler" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Lizenz abgelaufen" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Ladevorgang läuft..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Keine Dateien" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Kein Speicher mehr" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Speichern unter" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Um DivX® geschützte Videos wiederzugeben, muss Ihr Gerät registriert sein. Registrierungs Code: %s. Registrieren Sie es unter http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Video wird gekürzt..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Verbinden nicht möglich" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Wiedergabe nicht möglich. Ungültiges Paket vom Server" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Nicht autorisierter Videoausgang. Verwenden Sie den analogen Ausgang, um dieses DivX® geschützte Video anzusehen." + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Nicht autorisierter Videoausgang. Verwenden Sie HDMI, um dieses DivX® geschützte Video anzusehen." + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Ihr Gerät ist nicht autorisiert, dieses kopiergeschützte DivX® Video abzuspielen." + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Zu-\nschneiden" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Video-Player" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Keine Mediendatei" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Video kann nicht wiedergegeben werden. Fehler aufgetreten." + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Dateigröße" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Zuschnei." + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Video freig." + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Videoliste" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Bildseitenformat beibehalten" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Einstellen als" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Untertitel" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Datei kann nicht gefunden werden" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Video kann nicht wiedergegeben werden. Ungültige Streamingdaten" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Nicht unterstütztes Audioformat" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Nicht unterstützter Dateityp" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Nicht unterst. F." + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Nicht unterstütztes Videoformat" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Auflösung" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Video kann während eines Anrufs nicht wiedergegeben werden" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Aufnahme" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Video" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1-Kanal" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1-Sound-Effekte nur im Kopfhörer-Modus möglich" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Breite" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Länge" + diff --git a/res/po/el_GR.po b/res/po/el_GR.po new file mode 100755 index 0000000..e3e9716 --- /dev/null +++ b/res/po/el_GR.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Υπάρχει ήδη" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Το κύριο στερεοφωνικό σετ ακουστικών Bluetooth αποσυνδέθηκε" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "Το αρχείο DRM υποστηρ. μόνο για κλείδωμα προώθησης" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Νέα ετικέτα" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Αρχικό" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Αναπαραγωγή σε αθόρυβη λειτουργία;" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Δεν είναι δυνατή η αναπαραγωγή του αρχείου DRM" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Δεν είναι δυνατή η αποστολή. Έχει απενεργοποιηθεί η δυνατότητα προώθησης" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Μη υποστηριζόμενη έκδοση DivX DRM" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Σελιδοδείκτης" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Τέλος" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Αγαπημένα" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Λεπτομέρειες" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Ανάλυση" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Προσθήκη σελιδοδείκτη" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Μήνυμα" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Όνομα" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "Στο AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Περικοπή ως νέο βίντεο" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Περικοπή αρχικού βίντεο" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Λογαριασμός" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Προσθήκη συντόμευσης" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Πρ. ετικ." + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Η λίστα σελιδοδεικτών είναι πλήρης. Θέλετε να διαγράψετε μερικούς σελιδοδείκτες" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Αποσυνδέθηκε από τον διακομιστή" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Λήξη χρονικού ορίου για πύλη" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Σφάλμα" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Η άδεια χρήσης έχει λήξει" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Φόρτωση..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Δεν βρέθηκαν αρχεία" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Η μνήμη εξαντλήθηκε" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Αποθήκευση ως" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Για την αναπαραγωγή προστατευμένων βίντεο DivX, η συσκευή σας πρέπει να είναι εγγεγραμμένη. Κωδικός εγγραφής: %s. Κάντε εγγραφή στη διεύθυνση http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Περικοπή βίντεο..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Δεν είναι δυνατή η σύνδεση" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Δεν είναι δυνατή η αναπαραγωγή. Μη έγκυρο πακέτο από διακομιστή" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε την αναλογική έξοδο για να προβάλλετε αυτό το προστατευμένο βίντεο DivX" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Μη εξουσιοδοτημένη έξοδος βίντεο. Χρησιμοποιήστε HDMI για να προβάλλετε αυτό το προστατευμένο βίντεο DivX" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Η συσκευή σας δεν έχει εξουσιοδότηση για αναπαραγωγή αυτού του προστατευμένου βίντεο DivX®" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Ξάκρισμα" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Βίντεο" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Δεν βρέθηκε αρχείο μέσων" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Προέκυψε σφάλμα" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Μέγεθος αρχείου" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Κόψιμο" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Κοινή χρ.βίν." + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Λίστα βίντεο" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Διατήρηση αναλογίας εικόνας" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Ορισμός ως" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Υπότιτλοι" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Δεν είναι δυνατή η εύρεση του αρχείου" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο. Μη έγκυρα δεδομένα ροής" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Μη υποστηριζόμενη μορφή ήχου" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Μη υποστηριζόμενος τύπος αρχείου" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Μη υποστ. μορφή" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Μη υποστηριζόμενη μορφή βίντεο" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Ανάλυση" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Δεν είναι δυνατή η αναπαραγωγή βίντεο κατά την κλήση" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Κανονικό" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Φωνή" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Ταινία" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1 καν." + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Τo εφέ ήχων του καναλιού 7.1 εκτελείται μ στη λειτουργία ακουστικών" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Γεωγραφικό πλάτος" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Γεωγραφικό μήκος" + diff --git a/res/po/en.po b/res/po/en.po new file mode 100755 index 0000000..e39a146 --- /dev/null +++ b/res/po/en.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Already exists" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Bluetooth stereo headset disconnected" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "DRM file not supported except for forward lock type" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "New tag" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Original" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Play in Silent mode?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Unable to play DRM file" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Unable to send. This item is forward-locked" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Unsupported DivX DRM version" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Bookmark" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Done" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Favourite" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Details" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Resolution" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Add bookmark" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Message" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Name" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "On AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Trim as new video" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Trim original video" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Account" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Add shortcut" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Add tag" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Bookmark list full. Delete some bookmarks" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Disconnected from server" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Gateway timeout" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Internal server error" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Licence expired" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Loading..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "No files" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Out of memories" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Save as" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "To play DivX locked videos, your device must be registered. Registration code: %s Register at http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Trimming video..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Unable to connect" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Unable to play. Invalid packet from server" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Unauthorized Video Output. Please use Analog output to view this DivX Protected video" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Unauthorized Video Output. Please use HDMI to view this DivX Protected video" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Your device is not authorized to play this DivX® protected video." + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Trim" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Video player" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "No media file" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Unable to play video. Error occurred" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "File size" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Trim" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Share video" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Video list" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Keep aspect ratio" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Set as" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Subtitles" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Unable to find file" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Unable to play video. Invalid streaming data" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Unsupported audio format" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Unsupported file type" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Unsupported format" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Unsupported video format" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Resolution" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Unable to play video during call" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Voice" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Movie" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1 channel sound effect works in earphone mode only" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Latitude" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Longitude" + diff --git a/res/po/es_ES.po b/res/po/es_ES.po new file mode 100755 index 0000000..89ad5c6 --- /dev/null +++ b/res/po/es_ES.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Ya existe" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Auricular estéreo Bluetooth desconectado" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "Archivo DRM incompat, salvo para tipo bloq reenvío" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Nueva etiqueta" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Original" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "¿Reproducir en modo silencio?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "No se puede reproducir archivo DRM" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Imposible enviar. Este elemento está bloqueado para el reenvío." + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Versión DivX DRM no admitida" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Favorito" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Finalizado" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Favorito" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Detalles" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Resolución" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Añadir elemento favorito" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Mensajes" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Nombre" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "En AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Recortar como vídeo nuevo" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Recortar vídeo original" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Cuenta" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Agregar acceso directo" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Añad etiq" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Lista de favoritos llena. Elimine algunos favoritos" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Desconectado del servidor" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Tiempo de espera de puerta de enlace" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Error interno del servidor" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "La licencia ha caducado" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Cargando..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Ningún archivo" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Sin memoria" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Guardar como" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Para reproducir vídeos DivX protegidos, su dispositivo debe estar registrado. Código de registro: %s. Regístrese en http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Recortando vídeo..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "No se puede conectar" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "No se puede reproducir. Paquete no válido procedente del servidor" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Salida de vídeo no autorizada. Utilice la salida analógica para ver este vídeo DivX protegido" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Salida de vídeo no autorizada. Utilice HDMI para ver este vídeo DivX protegido" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Su aparato no esta autorizado para reproducir este video de DivX® protegido." + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Recortar" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Vídeos" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "No hay archivo multimedia" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "No se puede reproducir vídeo. Se ha producido un error" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Tamaño del archivo" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Recortar" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Compart vídeo" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Lista de vídeos" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Mantener relación de aspecto" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Definir como" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Subtítulos" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "No se puede encontrar el archivo" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "No se puede reproducir vídeo. Datos de streaming no válidos" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Formato de audio no compatible" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de archivo no admitido" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Formato no admitido" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Formato de vídeo no admitido" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Resolución" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "No se puede reproducir vídeo durante la llamada" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Voz" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Película" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "Can. 7.1" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "El efecto de sonido del canal 7.1 sólo funciona en modo auricular" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Latitud" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Longitud" + diff --git a/res/po/fr_FR.po b/res/po/fr_FR.po new file mode 100755 index 0000000..ffa675c --- /dev/null +++ b/res/po/fr_FR.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Existe déjà" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Casque stéréo Bluetooth déconnecté" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "Fichier DRM non pris en charge sf contenu protégé" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Nouveau libellé" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Original" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Activer le son ?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Impossible de lire le fichier DRM" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Envoi impossible. Le transfert de cet élément est verrouillé" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Version DivX® DRM non prise en charge" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Favori" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "OK" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Favori" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Détails" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Résolution" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Ajouter un favori" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Message" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Nom" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "Sur AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Rogner comme nouv. vidéo" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Rogner la vidéo originale" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Compte" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Ajouter raccourci" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Libellé" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Liste de favoris saturée. Supprimer des favoris" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Déconnecté du serveur" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Passerelle expirée" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Erreur du serveur interne" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Licence expirée" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Chargement..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Aucun fichier" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Mémoire saturée" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Enregistrer sous" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Pour lire les vidéos protégées DivX®, votre périphérique doit être enregistré. Code d'enregistrement : %s. Enregistrez-vous sur http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Rognage de la vidéo..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Connexion impossible" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Lecture impossible. Paquet du serveur non valide" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Sortie vidéo non autorisée. Utilisez une sortie analogique pour regarder cette vidéo DivX® protégée" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Sortie vidéo non autorisée. Utilisez une sortie HDMI pour regarder cette vidéo DivX® protégée" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Votre appareil n’est pas autorisé à lire cette vidéo protégée DivX®." + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Rogner" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Lecteur vidéo" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Aucun fichier média" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Impossible de lire la vidéo. Une erreur est survenue" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Taille du fichier" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Rogner" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Partager vidéo" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Liste vidéo" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Conserver la taille de l'écran" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Définir comme" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Sous-titres" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Impossible de trouver le fichier" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Impossible de lire la vidéo. Données de diffusion non valides" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Format audio non pris en charge" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Type de fichier non pris en charge" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Form. non supporté" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Format vidéo non pris en charge" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Résolution" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Impossible de lire la vidéo pendant un appel" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Voix" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Vidéo" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "L'effet sonore 7.1 ne fonctionne qu'en mode Ecouteur uniquement" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Latitude" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Longitude" + diff --git a/res/po/it_IT.po b/res/po/it_IT.po new file mode 100755 index 0000000..1e0fa64 --- /dev/null +++ b/res/po/it_IT.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Già esiste" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Auricolare stereo Bluetooth disconnesso" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "File DRM non support.escl.tipo bloccato per invio" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Nuovo tag" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Originali" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Riprodurre con profilo Silenzioso?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Impossibile riprodurre file DRM" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Impossibile inviare. L'elemento è bloccato per l'invio" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Versione DRM DivX non supportata" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Preferito" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Fatto" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Preferiti" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Dettagli" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Risoluzione" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Aggiungi preferito" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "DLNA" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Messaggio" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Nome" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "Su AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Ritaglia come nuovo video" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Ritaglia video originale" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Account" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Aggiungi collegamento" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Aggiungi tag" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Elenco preferiti pieno. Eliminare alcuni preferiti" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Disconnesso dal server" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Time out Gateway" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Errore interno server" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Licenza scaduta" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Caricamento..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Nessun file" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Memoria insufficiente" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Salva con nome" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Per riprodurre video DivX protetti, il dispositivo deve essere registrato. Codice di registrazione: %s. Registrarsi su http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Ritaglio video in corso..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Impossibile stabilire connessione" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Impossibile avviare riproduzione. Pacchetto non valido dal server" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Output video non autorizzato. Utilizzare l'output analogico per visualizzare questo video DivX protetto" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Output video non autorizzato. Utilizzare l'HDMI per visualizzare questo video DivX protetto" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Il dispositivo non è autorizzato a riprodurre un video DivX® protetto" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Ritaglia" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Lettore video" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Nessun file multimediale" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Impossibile riprodurre il video. Si è verificato un errore" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Dimensioni file" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Ritaglia" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Condiv. video" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Elenco video" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Conserva formato" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Imposta come" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Sottotitoli" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Espl. file non riuscita" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Impossibile riprodurre il video. Dati di streaming non validi" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Formato audio non supportato" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo file non supportato" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Formato non supp." + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Formato video non supportato" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Risoluzione" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Impossibile riprodurre durante chiamata" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normale" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Voce" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Filmato" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1 ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "L'effetto sonoro a 7.1 canali funziona solo in modalità auricolare" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Latitudine" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Longitudine" + diff --git a/res/po/ja_JP.po b/res/po/ja_JP.po new file mode 100755 index 0000000..bcb7201 --- /dev/null +++ b/res/po/ja_JP.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "既に登録されています。" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Bluetooth​ステレオ​ヘッド​セット​は​切断​され​ました" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "フォワード​ロック​タイプ​以外​の​DRM​ファイル​には​対応​して​いません" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "新しい​タグ" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "オリジナル" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "マナーモード中ですが、再生しますか?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "DRMファイルを再生できません" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "送信​できません。​この​アイテム​は​転送​ロック​されて​います" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "未対応​DivX DRM​バージョン" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "ブック​マーク" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "完了" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "お気に入り" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "詳細" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "解像度" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "ブックマーク登録" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "SMS" + +msgid "IDS_VPL_OPT_NAME" +msgstr "名前" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "新しいビデオとしてトリミング" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "元のビデオをトリミング" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "アカウント" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "ショートカット​を​追加​" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "タグ​を​追加​" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "ブックマーク​リスト​が​いっぱいです。​ブックマーク​を​いくつか​削除​してください。" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "サーバー​から​切断​され​ました" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "ゲートウェイ​タイムアウト" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Internal server error" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "ライセンス​の​有効期限​が​切れ​ました" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "読み込み中..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "ファイルがありません。" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "メモリが不足しています" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "名前​を​付けて​保存​" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "DivX​保護​ビデオを​再生するには、デバイスの​登録が​必要です。登録​コード: %s 登録はhttp://vod.divx.com にて行ってください" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "ビデオをトリミング中..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "接続​できません。" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "再生​できません。​サーバー​から​の​パケット​が​無効​です" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "許可されていない​ビデオが​再生されました。​​保護されてるDivX​ビデオを​再生するには​アナログ出力を​使用してください" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "許可されていない​ビデオが​再生されました。保護されてるDivXビデオを​再生するには​HDMI出力を​使用してください" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "このデバイスではDivX®保護ビデオを再生できません" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "整備" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "動画" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "メディア​ファイルが​ありません" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "ビデオ​を​再生​できません​。​エラー​が​発生​しました" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "ファイル​サイズ" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "トリミング" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "動画を共有" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "ビデオ​リスト" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "縦横​比​を​保存​" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "登録" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "サブタイトル" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "ファイル​が​見つかり​ません" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "ビデオ​を​再生​できません​。​無効​な​ストリーミング​データ​です" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "サポートされていない​オーディオ​形式" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "未対応のファイルです" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "未対応フォーマット" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "未対応​ビデオ​形式" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "撮影サイズ" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "通話中​は​ビデオ​再生​できません" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "標準" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "音声" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "映画" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1チャンネルは、イヤホンモードでのみ使用できます。" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "緯度" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "経度" + diff --git a/res/po/ko_KR.po b/res/po/ko_KR.po new file mode 100755 index 0000000..013f753 --- /dev/null +++ b/res/po/ko_KR.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "이미 저장되어 있습니다" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "블루투스 스테레오 헤드셋 연결이 끊어졌습니다" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "전달 잠금 파일을 제외한 DRM 파일은 지원되지 않습니다" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "태그 추가" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "원본" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "무음 모드에서 재생할까요?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "DRM 파일은 재생할 수 없습니다" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "전송할 수 없습니다. 잠금이 설정되어 있습니다" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "지원되지 않는 DivX DRM 버전입니다" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "북마크" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "완료" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "즐겨찾기" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "상세 정보" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "해상도" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "북마크 추가" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "메시지" + +msgid "IDS_VPL_OPT_NAME" +msgstr "이름" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "AllShare에서" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "새 동영상으로 잘라내기" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "원본 동영상 잘라내기" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "계정" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "단축메뉴 추가" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "태그 추가" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "북마크 목록이 가득 찼습니다. 북마크 일부를 삭제하세요" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "서버와 연결이 끊어졌습니다" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "게이트웨이 시간이 만료되었습니다" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "서버 오류가 발생하였습니다" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "라이선스 기한이 만료되었습니다" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "로딩 중..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "파일이 없습니다" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "메모리가 부족합니다" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "저장" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "DivX 동영상을 재생하려면 내 디바이스를 등록해야 합니다. 등록 코드: %s http://vod.divx.com에서 등록하세요" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "동영상 잘라내는 중..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "연결할 수 없습니다" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "서버에서 받은 패킷이 바르지 않아 재생할 수 없습니다" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 아날로그 출력 방식을 사용하세요" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "허가되지 않은 비디오 출력 방식입니다. 이 DivX 동영상을 보려면 HDMI 방식를 사용하세요" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "귀하의 제품은 DivX® DRM이 적용된 동영상의 재생 권한이 없습니다." + +msgid "IDS_VPL_SK3_TRIM" +msgstr "잘라내기" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "비디오 플레이어" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "미디어 파일이 없습니다" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "동영상을 재생할 수 없습니다. 오류가 발생하였습니다" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "파일 크기" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "잘라내기" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "동영상 공유" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "동영상 목록" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "비율 유지" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "설정" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "자막" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "파일을 찾을 수 없습니다" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "동영상을 재생할 수 없습니다. 스트리밍 데이터가 바르지 않습니다" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "지원되지 않는 오디오 포맷입니다" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "지원되지 않는 파일 형식입니다" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "지원되지 않는 형식입니다" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "지원되지 않는 동영상 포맷입니다" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "해상도" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "통화 중에는 동영상을 재생할 수 없습니다" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "보통" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "음성" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "영화" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1채널" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1채널 음향효과는 이어폰 연결 시에 적용됩니다" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "위도" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "경도" + diff --git a/res/po/nl_NL.po b/res/po/nl_NL.po new file mode 100755 index 0000000..9b866cc --- /dev/null +++ b/res/po/nl_NL.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Bestaat al" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Bluetooth-stereoheadset losgekoppeld" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "DRM-best alleen ondersteund voor blokkeren doorst" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Nieuwe tag" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Oorspronkelijk" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Afspelen in stille stand?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Kan DRM-bestand niet afspelen" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Verzenden onmogelijk. Dit item is geblokkeerd voor doorsturen." + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "DivX® DRM-versie niet ondersteund" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Favorieten" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Gereed" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Favoriet" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Details" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Resolutie" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Favoriet toevoegen" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Bericht" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Naam" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "Op AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Bijsnijden als nwe video" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Oorspr. video bijsnijden" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Account" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Sneltoets toevoegen" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Tag toev." + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Favorieten vol. Verwijder een aantal favorieten." + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Verbinding met server verbreken" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Time-out voor gateway" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Interne serverfout" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Licentie verlopen" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Laden..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Geen bestanden" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Geen geheugen meer" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Opslaan als" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Als u video's met DivX®-beveiliging wilt afspelen, moet uw apparaat zijn geregistreerd. Registratiecode: %s. Registreer op http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Video bijsnijden..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Verbinding mislukt" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Kan niet afspelen. Ongeldig pakket van server" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Niet-toegestane video-uitvoer. Gebruik Analoge uitvoer om deze met DivX®-beveiligde video weer te geven" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Niet-toegestane video-uitvoer. Gebruik HDMI om deze met DivX®-beveiligde video weer te geven" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Uw apparaat heeft geen toestemming om video met DivX®-beveiliging af te spelen" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Bijsnijd." + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Videospeler" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Geen mediabestand" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Kan video niet afspelen. Fout opgetreden" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Bestandsgrootte" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Bijsnijden" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Video delen" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Videolijst" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Verhouding behouden" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Instellen als" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Ondertitels" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Browsen mislukt" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Kan video niet afspelen. Ongeldige streaminggegevens" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Niet-ondersteunde audio-indeling" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Niet-ondersteund bestandstype" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Niet onderst. formaat" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Niet-ondersteunde video-indeling" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Resolutie" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Kan video niet afspelen tijdens gesprek" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normaal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Spraak" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Film" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1-kanaals geluidseffect werkt alleen met oortelefoonstand" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Breedtegraad" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Lengtegraad" + diff --git a/res/po/pt_PT.po b/res/po/pt_PT.po new file mode 100755 index 0000000..7e467b2 --- /dev/null +++ b/res/po/pt_PT.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Já existe" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Auricular estéreo Bluetooth desligado" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "Fich. DRM não supor. excepto p/ tipo bloq. reenc." + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Etiqueta nova" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Original" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Reproduzir no modo silencioso?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Impossível reproduzir ficheiro DRM" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Impossível enviar. Este item tem o reencaminhamento bloqueado." + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Versão de DRM DivX não suportada" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Favorito" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Concluir" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Favoritos" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Detalhes" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Resolução" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Adicionar favorito" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Mensagem" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Nome" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "Com AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Cortar como vídeo novo" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Cortar vídeo original" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Conta" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Adicionar atalho" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Ad. etiq." + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Lista de marcadores cheia. Apague alguns marcadores" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Desligada do servidor" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Tempo de gateway esgotado" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Erro interno de servidor" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Licença expirou" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "A carregar" + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Sem ficheiros" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Memória esgotada" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Guardar como" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Para reproduzir vídeos DivX protegidos, o dispositivo tem de estar registado. Código de registo: %s. Registar em http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "A limitar vídeo..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Impossível ligar" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Impossível reproduzir. Pacote inválido do servidor" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Saída de vídeo não autorizada. Utilize a saída analógica para ver este vídeo protegido DivX" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Saída de vídeo não autorizada. Utilize HDMI para ver este vídeo protegido DivX" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "O seu dispositivo não está autorizado a reproduzir vídeos protegidos DivX®" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Cortar" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Leitor de vídeo" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Nenhum ficheiro multimédia" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Impossível reproduzir vídeo. Ocorreu um erro" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Tamanho do ficheiro" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Cortar" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Part. vídeo" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Lista de vídeos" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Manter relação de visualização" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Definir como" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Legendas" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Ficheiro não encontrado" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Impossível reproduzir vídeo. Dados de streaming inválidos" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Formato de áudio não suportado" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de ficheiro não suportado" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Formato não suportado" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Formato de vídeo não suportado" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Resolução" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Impossível reproduzir vídeo durante chamada" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Voz" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Filme" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1cn" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "O efeito de som do canal 7.1 funciona apenas no modo de auricular" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Latitude" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Longitude" + diff --git a/res/po/ru_RU.po b/res/po/ru_RU.po new file mode 100755 index 0000000..84ae19a --- /dev/null +++ b/res/po/ru_RU.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Уже существует" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Стереогарнитура Bluetooth отключена" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "Поддерживается только запрет на пересылку для файлов DRM" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Новый тег" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Исходный" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Воспроизвести в профиле “Без звука”?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Невозможно воспроизвести файл DRM" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Нельзя отправить. Этот элемент заблокирован для пересылки." + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Неподдерживаемая DRM-версия DivX" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Закладка" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Готово" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Избранное" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Сведения" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Разрешение" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Добавить закладку" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Сообщение" + +msgid "IDS_VPL_OPT_NAME" +msgstr "Имя" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "На AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Обрезать и сохранить" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Обрезать исходное видео" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Учетная запись" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Добавить ссылку" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "Добавить метку" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Список закладок заполнен.\nУдалите некоторые закладки" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Отключен от сервера" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Тайм-аут шлюза" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Внутренняя ошибка сервера" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Лицензия просрочена" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Загрузка..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Нет файлов" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Недостаточно памяти" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Сохранить как" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "Для воспроизведения защищенного видео DivX необходимо зарегистрировать устройство. Код регистрации: %s. Регистрация выполняется на сайте http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Обрезка видео..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Невозможно подключиться" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Сбой воспроизведения. От сервера получен недопустимый пакет" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX аналоговый вывод" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Несанкционированный видеовывод. Используйте для воспроизведения защищенного видео DivX кабель HDMI" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Это устройство не авторизовано для воспроизведения защищенного видео DivX®" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Обрезать" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Видеоплеер" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Нет медиафайлов" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Невозможно воспроизвести видео. Ошибка" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Размер файла" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Настроить" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Обмен видео" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Список видео" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "Сохранять пропорции" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Установить как" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Субтитры" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Невозможно найти файл" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Невозможно воспроизвести видео. Недопустимые потоковые данные" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Неподдерживаемый формат аудио" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Неподдерживаемый тип файла" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Неподдерживаемый формат" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Неподдерживаемый формат видео" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Разрешение" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Воспроизведение видео во время вызова невозможно" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Обычный" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Голос" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Фильм" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1 кан." + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1-канальный звуковой эффект доступен только в режиме наушников" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Широта" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Долгота" + diff --git a/res/po/tr_TR.po b/res/po/tr_TR.po new file mode 100755 index 0000000..beec85b --- /dev/null +++ b/res/po/tr_TR.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "Zaten var" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "Bluetooth stereo kulaklık takılı değil" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "DRM dosyası iletme türü hariç desteklenmiyor" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "Yeni im" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "Orijinal" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "Sessiz modda oynatılsın mı?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "DRM dosyası çalınamıyor" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "Gönderilemiyor. Bu öğe iletmeye karşı kilitli." + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "Desteklenmeyen DivX DRM sürümü" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "Yer imi" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "Tamam" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "Sık kullanılanlar" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "Ayrıntılar" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "Çözünürlük" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "Yer imi ekle" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "Mesaj" + +msgid "IDS_VPL_OPT_NAME" +msgstr "İsim" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "AllShare üzerinde" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "Yeni videoyu kırp" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "Orijinal videoyu kırp" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "Hesap" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "Kısayol ekle" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "İm ekle" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "Yer işaretleri listesi dolu. Bazılarını silin" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "Sunucu bağlantısı kesildi" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "Ağ geçidi zaman aşımı" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "Dahili sunucu hatası" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "Lisans süresi doldu" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "Yükleniyor..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "Dosya yok" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "Bellek yetersiz" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "Farklı kaydet" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "DivX korumalı videoları oynatmak için cihazınız kayıtlı olmalıdır. Kayıt kodu: %s. http://vod.divx.com adresine kayıt olun" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "Video kırpılıyor..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "Bağlantı başarısız" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "Oynatılamıyor. Sunucudan geçersiz paket" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Yetkisiz Video Çıkışı. Lütfen DivX Korumalı videoyu izlemek için Analog çıkış kullanın" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "Yetkisiz Video Çıkışı. Lütfen DivX Korumalı videoyu izlemek için HDMI kullanın" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "Cihazınızın DivX korumalı videoyu oynatma izni yok" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "Kes" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "Video oynatıcı" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "Hiç ortam dosyası yok" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "Video oynatılamıyor. Hata oluştu" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "Dosya boyutu" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "Kes" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "Video paylaş" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "Video listesi" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "En-boy oranını koru" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "Yap" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "Altyazılar" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "Dosya bulunamıyor" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "Video oynatılamıyor. Geçersiz veri akışı." + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "Desteklenmeyen ses biçimi" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Desteklenmeyen dosya türü" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "Desteklenmeyen biçim" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "Desteklenmeyen video biçimi" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "Çözünürlük" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "Görüşme sırasında video oynatılamıyor" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "Normal" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "Ses" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "Film" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1 kanal ses efekti sadece kulaklık modunda çalışır" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "Enlem" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "Boylam" + diff --git a/res/po/zh_CN.po b/res/po/zh_CN.po new file mode 100755 index 0000000..3c73f77 --- /dev/null +++ b/res/po/zh_CN.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "已经存在" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "蓝牙立体声耳机未连接" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "不支持除转寄锁定类型之外的 DRM 文件" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "新标签" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "原作" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "在安静模式下播放?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "无法播放DRM文件" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "无法发送。此项目禁止转发" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "不支持的DivX® DRM版本" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "书签" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "完成" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "收藏" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "详情" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "分辨率" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "添加书签" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "娱乐共享" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "信息" + +msgid "IDS_VPL_OPT_NAME" +msgstr "名称" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "在AllShare上" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "修剪作为新视频" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "修剪原始视频" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "帐户" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "添加快捷键" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "添加标签" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "书签列表满。删除部分书签" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "已从服务器断开" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "网关超时" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "内部服务器无效" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "许可已过期" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "裝载中…" + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "无文件" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "内存不足" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "另存为" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "如欲播放被保护的DivX®视频,必须注册您的设备。请在 http://vod.divx.com注册,注册码:%s" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "正在剪切视频…" + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "无法连接" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "无法播放。服务器无效信息包" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "未经授权的视频输出。请使用模拟输出查看该DivX®保护视频" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "未经授权的视频输出。请使用HDMI查看该DivX®保护视频" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "您的设备没有被授权播放这个DivX®加密的视频." + +msgid "IDS_VPL_SK3_TRIM" +msgstr "剪切" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "视频播放器" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "没有媒体文件" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "无法播放视频。出现错误" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "文件大小" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "剪切" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "共享视频" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "视频列表" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "保持屏幕高宽比例" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "设定为" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "说明字幕" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "无法找到文件" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "无法播放视频。无效视频流数据" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "不支持的音频格式" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "不支持的文件类型" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "不支持格式" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "不支持的视频格式" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "分辨率" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "通话中无法播放视频" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "正常" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "语音" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "电影" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1ch" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1 声道声音效果只适用于耳机模式" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "纬度" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "经度" + diff --git a/res/po/zh_HK.po b/res/po/zh_HK.po new file mode 100755 index 0000000..5f840aa --- /dev/null +++ b/res/po/zh_HK.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "已存在" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "藍牙立體聲耳機已中斷連接" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "不支援 DRM 檔案,轉寄鎖定類型除外" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "新標籤" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "原圖" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "以靜音模式播放?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Unable to play DRM file" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "無法發送。此項目已轉寄鎖定" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "不支援的 DivX DRM 版本" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "書籤" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "完成" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "我的最愛" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "詳情" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "解像度" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "加入書籤" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "訊息" + +msgid "IDS_VPL_OPT_NAME" +msgstr "名稱" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "在 AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "修剪為新影片" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "修剪原始影片" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "帳戶" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "加入捷徑" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "加入標籤" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "書籤清單已滿。請刪除一些書籤" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "伺服器連接中斷" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "網關逾時" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "內部伺服器錯誤" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "許可已過期" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "正在載入..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "無檔案" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "記憶體不足" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "另存為" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "要播送DivX保護的影片,必須登記裝置。登記號碼:%s ,請前往http://vod.divx.com網站登記" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "正在修剪影片..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "無法連接" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "無法播放。來自伺服器的分組數據無效" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "未經授權的影片輸出。請使用模擬輸出觀看此段受 DivX 保護的影片" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "未經授權的影片輸出。請使用 HDMI 觀看此段受 DivX 保護的影片" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "裝置未獲授權,無法播放此DivX®保護的影片" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "修剪" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "影片播放器" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "無媒體檔案" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "無法播放影片。發生錯誤" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "檔案大小" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "修剪" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "共享影片" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "影片清單" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "保持屏幕寬高比例" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "設定為" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "字幕" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "無法尋找檔案" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "無法播放影片。無效串流數據" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "不支援的音效格式" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "不支援的檔案類型" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "不支援格式" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "不支援的影片格式" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "解像度" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "通話期間無法播放影片" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "正常" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "語音" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "電影" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1 聲道" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1 聲道音效只適用於耳機模式" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "緯度" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "經度" + diff --git a/res/po/zh_TW.po b/res/po/zh_TW.po new file mode 100755 index 0000000..8237fde --- /dev/null +++ b/res/po/zh_TW.po @@ -0,0 +1,198 @@ +msgid "IDS_VPL_BODY_ALREADY_EXISTS" +msgstr "已存在" + +msgid "IDS_VPL_BODY_BLUETOOTH_STEREO_HEADSET_DISCONNECTED" +msgstr "藍牙立體聲耳機已中斷連線" + +msgid "IDS_VPL_BODY_DRM_FILE_NOT_SUPPORTED_EXCEPT_FOR_FORWARD_LOCK_TYPE" +msgstr "不支援除了轉寄鎖定類型外的 DRM 檔案" + +msgid "IDS_VPL_BODY_NEW_TAG" +msgstr "新標籤" + +msgid "IDS_VPL_BODY_ORIGINAL" +msgstr "原圖" + +msgid "IDS_VPL_BODY_PLAY_IN_SILENT_MODE_Q" +msgstr "在靜音模式下播放嗎?" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_DRM_FILE" +msgstr "Unable to play DRM file" + +msgid "IDS_VPL_BODY_UNABLE_TO_SEND_THIS_ITEM_IS_FORWARD_LOCKED" +msgstr "無法傳送。此項目已鎖定轉寄" + +msgid "IDS_VPL_BODY_UNSUPPORTED_DIVX_DRM_VERSION" +msgstr "不支援的 DivX DRM 版本" + +msgid "IDS_VPL_BUTTON_BOOKMARK" +msgstr "書籤" + +msgid "IDS_VPL_BUTTON_DONE" +msgstr "完成" + +msgid "IDS_VPL_HEADER_FAVOURITE" +msgstr "我的最愛" + +msgid "IDS_VPL_MBODY_DETAILS_ABB" +msgstr "詳細" + +msgid "IDS_VPL_MBODY_RESOLUTION" +msgstr "解析度" + +msgid "IDS_VPL_OPT_ADD_BOOKMARK" +msgstr "新增書籤" + +msgid "IDS_VPL_OPT_ALLSHARE" +msgstr "AllShare" + +msgid "IDS_VPL_OPT_MESSAGE" +msgstr "訊息" + +msgid "IDS_VPL_OPT_NAME" +msgstr "名稱" + +msgid "IDS_VPL_OPT_ON_ALLSHARE_ABB" +msgstr "On AllShare" + +msgid "IDS_VPL_OPT_TRIM_AS_NEW_VIDEO_ABB" +msgstr "剪輯為新影片" + +msgid "IDS_VPL_OPT_TRIM_ORIGINAL_VIDEO_ABB" +msgstr "剪輯原始影片" + +msgid "IDS_VPL_POP_ACCOUNT" +msgstr "帳戶" + +msgid "IDS_VPL_POP_ADD_SHORTCUT" +msgstr "加入捷徑" + +msgid "IDS_VPL_POP_ADD_TAG" +msgstr "加入標籤" + +msgid "IDS_VPL_POP_BOOKMARK_LIST_FULL_DELETE_SOME_BOOKMARKS" +msgstr "書籤清單已滿。請刪除部分書籤" + +msgid "IDS_VPL_POP_DISCONNECTED_FROM_SERVER" +msgstr "伺服器連線中斷" + +msgid "IDS_VPL_POP_GATEWAY_TIME_OUT" +msgstr "閘道逾時" + +msgid "IDS_VPL_POP_INTERNAL_SERVER_ERROR" +msgstr "內部伺服器錯誤" + +msgid "IDS_VPL_POP_LICENCE_EXPIRED" +msgstr "授權已到期" + +msgid "IDS_VPL_POP_LOADING_ING" +msgstr "正在載入..." + +msgid "IDS_VPL_POP_NO_FILES" +msgstr "無檔案" + +msgid "IDS_VPL_POP_OUT_OF_MEMORIES" +msgstr "記憶體不足" + +msgid "IDS_VPL_POP_SAVE_AS" +msgstr "另存為" + +msgid "IDS_VPL_POP_TO_PLAY_DIVX_PROTECTED_VIDEOS_YOUR_DEVICE_MUST_BE_REGISTERED_REGISTRATION_CODE_C_PS_REGISTER_AT_HTTP_C_VODDIVXCOM_DIVX" +msgstr "要播放DivX保護的影片,您的設備必須註冊。註冊代碼:%s登錄在http://vod.divx.com" + +msgid "IDS_VPL_POP_TRIMMING_VIDEO_ING" +msgstr "正在剪輯影片..." + +msgid "IDS_VPL_POP_UNABLE_TO_CONNECT" +msgstr "無法連線" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_INVALID_PACKET_FROM_SERVER" +msgstr "無法播放。來自伺服器的封包無效" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_ANALOG_OUTPUT_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "未經授權的影片輸出。請使用模擬輸出觀賞受DivX保護的影片" + +msgid "IDS_VPL_POP_UNAUTHORIZED_VIDEO_OUTPUT_PLEASE_USE_HDMI_TO_VIEW_THIS_DIVX_PROTECTED_VIDEO_DIVIX" +msgstr "未經授權的影片輸出。請使用HDMI觀賞受DivX保護的影片" + +msgid "IDS_VPL_POP_YOUR_DEVICE_IS_NOT_AUTHORIZED_TO_PLAY_THIS_DIVX_PROTECTED_VIDEO_DIVX" +msgstr "您的設備沒有被授權播放這個DivX®加密的視頻。" + +msgid "IDS_VPL_SK3_TRIM" +msgstr "修剪" + +msgid "IDS_VPL_HEADER_VIDEO_PLAYER" +msgstr "視訊播放器" + +msgid "IDS_VPL_POP_NO_MEDIA_FILE" +msgstr "無媒體文件" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_ERROR_OCCURRED" +msgstr "無法播放影片。發生錯誤" + +msgid "IDS_VPL_BODY_FILE_SIZE" +msgstr "檔案大小" + +msgid "IDS_VPL_BUTTON_TRIM" +msgstr "剪輯" + +msgid "IDS_VPL_HEADER_SHARE_VIDEO_ABB" +msgstr "分享影片" + +msgid "IDS_VPL_HEADER_VIDEO_LIST" +msgstr "影片清單" + +msgid "IDS_VPL_OPT_KEEP_ASPECT_RATIO" +msgstr "保持螢幕顯示比例" + +msgid "IDS_VPL_OPT_SET_AS" +msgstr "設定為" + +msgid "IDS_VPL_OPT_SUBTITLES" +msgstr "字幕" + +msgid "IDS_VPL_POP_UNABLE_TO_FIND_FILE" +msgstr "無法找到檔案" + +msgid "IDS_VPL_POP_UNABLE_TO_PLAY_VIDEO_INVALID_STREAMING_DATA" +msgstr "無法播放影片。無效的串流數據" + +msgid "IDS_VPL_POP_UNSUPPORTED_AUDIO_FORMAT" +msgstr "不支援的音訊格式" + +msgid "IDS_VPL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "不支援的檔案類型" + +msgid "IDS_VPL_POP_UNSUPPORTED_FORMAT" +msgstr "不支援格式" + +msgid "IDS_VPL_POP_UNSUPPORTED_VIDEO_FORMAT" +msgstr "不支援的視訊格式" + +msgid "IDS_VPL_OPT_RESOLUTION" +msgstr "解析度" + +msgid "IDS_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL" +msgstr "無法在通話期間播放影片" + +msgid "IDS_VPL_OPT_NORMAL" +msgstr "正常" + +msgid "IDS_VPL_BODY_VOICE_M_SOUNDEFFECT" +msgstr "語音" + +msgid "IDS_VPL_BODY_MOVIE_M_SOUNDEFFECT" +msgstr "電影" + +msgid "IDS_VPL_BODY_51CH_M_SOUNDEFFECT" +msgstr "7.1 聲道" + +msgid "IDS_VPL_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "7.1 聲道音效只適用於耳機模式" + +msgid "IDS_VPL_BODY_LATITUDE" +msgstr "緯度" + +msgid "IDS_VPL_BODY_LONGITUDE" +msgstr "經度" + diff --git a/src/mp-drm-ctrl.c b/src/mp-drm-ctrl.c new file mode 100644 index 0000000..01b804a --- /dev/null +++ b/src/mp-drm-ctrl.c @@ -0,0 +1,411 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-drm-ctrl.h" + +static int nCheckConsumption = VIDEO_DRM_CONSUMPTION_STATE_DISABLE; + +static drm_file_type_e nDrmFileType = DRM_TYPE_UNDEFINED; + +#define ACCUMULATED_DATE 86400 /* 24*60*60 */ +#define RO_MESSAGE_LEN 1024 + +#define MOUNTH_COUNT 12 +#define DAY_COUNT 30 +#define HOUR_COUNT 24 + +static bool bForwordLock = FALSE; +/* + * External function + */ +void MpVideoDrmInit() +{ + VideoLogInfo(""); +} + +bool MpVideoDrmGetForwardLookState() +{ + VideoLogInfo(""); + + return bForwordLock; +} + +void MpVideoDrmSetConsumptionState(int nState) +{ + VideoLogInfo(""); + + nCheckConsumption = nState; +} + +int MpVideoDrmGetConsumption() +{ + VideoLogInfo(""); + + return nCheckConsumption; +} + +void MpVideoDrmStartConsumption(char *szPath) +{ + VideoLogInfo(""); + + + if (MpVideoDrmGetConsumption()) { + + } else { + VideoLogInfo("Disable consumption."); + } +} + +void MpVideoDrmPauseConsumption() +{ + VideoLogInfo(""); + + if (MpVideoDrmGetConsumption()) { + } else { + VideoLogInfo("Disable consumption."); + } +} + +void MpVideoDrmResumeConsumption() +{ + VideoLogInfo(""); + + if (MpVideoDrmGetConsumption()) { + } else { + VideoLogInfo("Disable consumption."); + } +} + +void MpVideoDrmStopConsumption() +{ + VideoLogInfo(""); + + if (MpVideoDrmGetConsumption()) { + MpVideoDrmSetConsumptionState (VIDEO_DRM_CONSUMPTION_STATE_DISABLE); + } else { + VideoLogInfo("Disable consumption."); + } +} + +bool MpVideoDrmIsDrmFile(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + int nRet = DRM_RETURN_SUCCESS; + drm_bool_type_e is_drm = DRM_FALSE; + + nRet = drm_is_drm_file(szPath, &is_drm); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet); + return FALSE; + } + + if(is_drm != DRM_TRUE) { + VideoLogInfo("It's not drm file."); + return FALSE; + } + + + drm_file_type_e drm_type = DRM_TYPE_UNDEFINED; + + nRet = drm_get_file_type(szPath, &drm_type); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_file_type : %d", nRet); + return FALSE; + } + + nDrmFileType = drm_type; + + if(drm_type != DRM_TYPE_OMA_V1 && drm_type != DRM_TYPE_OMA_V2) { + VideoLogInfo("It's not OMA drm file : %d", drm_type); + return FALSE; + } + + return TRUE; +} + +bool MpVideoDrmHasValidRo(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + int nRet = DRM_RETURN_SUCCESS; + drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED; + nRet = drm_get_license_status(szPath, DRM_PERMISSION_TYPE_PLAY, &license_status); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_license_status : %d", nRet); + return FALSE; + } + + if(license_status != DRM_LICENSE_STATUS_VALID) { + VideoLogInfo("Invalid license status : %d", license_status); + return FALSE; + } + + return TRUE; +} + +bool MpVideoDrmCheckForward(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + int nRet = DRM_RETURN_SUCCESS; + drm_action_allowed_data_s action_data; + drm_bool_type_e is_allow = DRM_FALSE; + memset(&action_data, 0, sizeof(drm_action_allowed_data_s)); + snprintf(action_data.file_path , DRM_MAX_LEN_FILEPATH, "%s", szPath); + + nRet = drm_is_action_allowed(DRM_IS_FORWARDING_ALLOWED,&action_data, &is_allow); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_is_action_allowed : %d", nRet); + bForwordLock = FALSE; + return FALSE; + } + + if(is_allow == DRM_TRUE) { + bForwordLock = TRUE; + return TRUE; + } + + return FALSE; +} + +MpVideoDrmInfo *MpVideoDrmCheckLeftRo(char *szVideoTitle, char *szPath) +{ + VideoLogInfo(""); + MpVideoDrmInfo *pResult = NULL; + pResult = calloc(1, sizeof(MpVideoDrmInfo)); + + if (!szVideoTitle) { + VideoLogInfo("[ERR] No has video title."); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL; + return pResult; + } + + if (!szPath) { + VideoLogInfo("[ERR] No has path."); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL; + return pResult; + } + + + + int nRet = DRM_RETURN_SUCCESS; + drm_constraint_info_s constraint_info; + memset(&constraint_info, 0, sizeof(drm_constraint_info_s)); + nRet = drm_get_constraint_info(szPath, DRM_PERMISSION_TYPE_PLAY, &constraint_info); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_file_info : %d", nRet); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERNAL; + return pResult; + } + + if(constraint_info.const_type.is_unlimited) { + VideoLogInfo("Unlimited DRM Contents"); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_count) { + if(constraint_info.remaining_count <= 0) { + VideoLogInfo("Count expired : %d / %d", + constraint_info.remaining_count, + constraint_info.original_count); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT; + pResult->nData = constraint_info.remaining_count; + return pResult; + } + else if(constraint_info.remaining_count == 1 || + constraint_info.remaining_count == 2) { + VideoLogInfo("Count Small : %d / %d", + constraint_info.remaining_count, + constraint_info.original_count); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_COUNT_SMALL; + pResult->nData = constraint_info.remaining_count; + return pResult; + } + else { + VideoLogInfo("Count valid : %d / %d", + constraint_info.remaining_count, + constraint_info.original_count); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + pResult->nData = constraint_info.remaining_count; + return pResult; + } + } + else if(constraint_info.const_type.is_datetime) { + VideoLogInfo("Start time: Year=%d,Month=%d,Day=%d," + "Hour=%d, minute=%d, Second=%d", + constraint_info.start_time.tm_year, + constraint_info.start_time.tm_mon, + constraint_info.start_time.tm_mday, + constraint_info.start_time.tm_hour, + constraint_info.start_time.tm_min, + constraint_info.start_time.tm_sec); + + + VideoLogInfo("End time: Year=%d,Month=%d,Day=%d," + "Hour=%d, minute=%d, Second=%d", + constraint_info.end_time.tm_year, + constraint_info.end_time.tm_mon, + constraint_info.end_time.tm_mday, + constraint_info.end_time.tm_hour, + constraint_info.end_time.tm_min, + constraint_info.end_time.tm_sec); + + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_interval) { + VideoLogInfo("Interval time: Year=%d,Month=%d,Day=%d," + "Hour=%d, minute=%d, Second=%d", + constraint_info.interval_time.tm_year, + constraint_info.interval_time.tm_mon, + constraint_info.interval_time.tm_mday, + constraint_info.interval_time.tm_hour, + constraint_info.interval_time.tm_min, + constraint_info.interval_time.tm_sec); + + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_INTERVAL_FIRST_USE; + pResult->nData = ((constraint_info.interval_time.tm_year * MOUNTH_COUNT + constraint_info.interval_time.tm_mon) * DAY_COUNT + constraint_info.interval_time.tm_mday); + return pResult; + + } + else if(constraint_info.const_type.is_timedcount) { + VideoLogInfo("DRM TimeCount " + "(original : %d, remainnig : %d, count_timer: %d)", + constraint_info.timed_original_count, + constraint_info.timed_remaining_count, + constraint_info.timed_count_timer); + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_accumulated) { + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_ACCUMULATED; + return pResult; + } + else if(constraint_info.const_type.is_individual) { + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + else if(constraint_info.const_type.is_system) { + pResult->nErrorCode = MP_VIDEO_DRM_ERROR_NONE; + return pResult; + } + + return pResult; +} + +bool MpVideoDrmIsDivX(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + + int nRet = DRM_RETURN_SUCCESS; + drm_bool_type_e is_drm = DRM_FALSE; + + nRet = drm_is_drm_file(szPath, &is_drm); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_is_drm_file : %d", nRet); + return FALSE; + } + + if(is_drm != DRM_TRUE) { + VideoLogInfo("It's not drm file."); + return FALSE; + } + + drm_file_type_e drm_type = DRM_TYPE_UNDEFINED; + + nRet = drm_get_file_type(szPath, &drm_type); + if(nRet != DRM_RETURN_SUCCESS) { + VideoLogInfo("[ERR]drm_get_file_type : %d", nRet); + return FALSE; + } + + nDrmFileType = drm_type; + + if(drm_type != DRM_TYPE_DIVX ) { + VideoLogInfo("It's not DivX drm file : %d", drm_type); + return FALSE; + } + + return TRUE; + +} + +bool MpVideoDrmCheckDivX(char *szPath) +{ + VideoLogInfo(""); + + if (!szPath) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + return TRUE; +} + +void MpVideoDrmGetFileExtension(char *szPath, char *szContentType, int nContentTypeStrSize) +{ + if (!szContentType) { + VideoLogInfo("[ERR]"); + return; + } + + if (!szPath) { + VideoLogInfo("[ERR]"); + return; + } + + memset(szContentType, 0, nContentTypeStrSize); + + drm_content_info_s content_info; + int nRet = DRM_RETURN_SUCCESS; + memset(&content_info, 0, sizeof(drm_content_info_s)); + + nRet = drm_get_content_info(szPath,&content_info); + + + VideoLogInfo("contentType: %s", content_info.mime_type); + + strncpy(szContentType, content_info.mime_type, nContentTypeStrSize - 1); +} diff --git a/src/mp-external-ug.c b/src/mp-external-ug.c new file mode 100755 index 0000000..869b3c3 --- /dev/null +++ b/src/mp-external-ug.c @@ -0,0 +1,628 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-external-ug.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-service-ctrl.h" + + +#define UG_LIST_ITEMS_SIZE_MAX 32 +#define UG_SHARE_MENU_ITEM_MAX 6 + + +static ui_gadget_h pUiGadgetHandle = NULL; +static Ecore_Event_Handler *pHardKeyEventHandler = NULL; +static MpExternalUGType nCurUGType = MP_EXTERNAL_UG_NONE; +static char **szUgItems = NULL; + + +static Evas_Object *pUGPopupHandle = NULL; +static Evas_Object *pUGGenList = NULL; + + +typedef struct _External_Ug { + MpExternalUGType nType; + char *szUgName; +} MpExternalUG; + +MpExternalUG st_MpExternalUG[] = { + {MP_EXTERNAL_UG_MESSAGE, "msg-composer-efl" }, + {MP_EXTERNAL_UG_EMAIL, "email-composer-efl" }, + {MP_EXTERNAL_UG_MYFILE_DETAIL, "myfile-detail-efl" }, + {MP_EXTERNAL_UG_YOUTUBE, "youtube-efl" }, + {MP_EXTERNAL_UG_BLUETOOTH, "setting-bluetooth-efl" }, + {MP_EXTERNAL_UG_FTM, "fileshare-efl" }, + {MP_EXTERNAL_UG_FACEBOOK, "facebook-efl" }, +}; + + + + +/* + * CALLBACK FUNCTION + */ + +static char *MpExternalUgGetLabelOfGenlistItemCb(const void *pUserData, Evas_Object *pObject, const char *pPart) +{ + VideoLogInfo(""); + + int nIndex = (int)pUserData; + + if(!strcmp(pPart, "elm.text")) + { + VideoLogInfo("Index : %d", nIndex); + return strdup(szUgItems[nIndex]); + } + + return NULL; +} + + +static Eina_Bool MpExternalUgHardkeyDownCb(void *pUserData, int nType, + void *pEvent) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpExternalUGType nExternalUgState = MpExternalUgGetCurUgState(); + + if (nExternalUgState <= MP_EXTERNAL_UG_NONE || + nExternalUgState >= MP_EXTERNAL_UG_MAX) { + VideoLogInfo + ("Return hardkey callback function because of no UG mode."); + return EINA_FALSE; + } + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent; + + if (!strcmp(pKeyEvent->keyname, KEY_END)) { + VideoLogInfo("Bakc(End) key"); + MpExternalUgUnload(); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + if (!strcmp(pKeyEvent->keyname, HOME_KEY)) { + VideoLogInfo("Home key"); + MpExternalUgUnload(); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + + return EINA_FALSE; +} + +void MpExternalUgLayoutCb(ui_gadget_h pUiGadget, enum ug_mode nMode, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + Evas_Object *pLayoutBase = NULL; + Evas_Object *pWin = NULL; + + pLayoutBase = ug_get_layout(pUiGadget); + if (!pLayoutBase) { + ug_destroy(pUiGadget); + VideoLogError("[ERR]"); + return; + } + pWin = ug_get_window(); + + switch (nMode) { + case UG_MODE_FULLVIEW: + evas_object_size_hint_weight_set(pLayoutBase, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_win_resize_object_add(pWin, pLayoutBase); + evas_object_show(pLayoutBase); + break; + + default: + VideoLogInfo("[DEFAUT!!!!!!!!]"); + break; + } +} + +void MpExternalUgResultCb(ui_gadget_h pUiGadget, service_h pService, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } +} + +void MpExternalUgDestroyCb(ui_gadget_h pUiGadget, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpExternalUgUnload(); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +static void MpExternalUGDestroyPopupList(void) +{ + VideoLogInfo(""); + int nCount = 0; + if(szUgItems) + { + for(nCount = 0; nCount < MP_EXTERNAL_UG_MAX; nCount++) + { + if(szUgItems[nCount]) + { + free(szUgItems[nCount]); + szUgItems[nCount] = NULL; + } + } + free(szUgItems); + szUgItems = NULL; + } + + if(pUGGenList) + { + evas_object_del(pUGGenList); + pUGGenList = NULL; + } + + if(pUGPopupHandle) { + evas_object_del(pUGPopupHandle); + pUGPopupHandle = NULL; + } + + MpUtilSetAlphaOfMainWindow(TRUE); +} + + +static void MpExternalUGPopupCb(void *pUserData, Evas_Object *pObject, + void *pEventInfo) +{ + VideoLogInfo(""); + + if(pUserData == NULL) + { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + MpExternalUGDestroyPopupList(); +} + +static void MpExternalUgResFn(service_h pRequest, service_h pReply, service_result_e nResult, void *pUserData) +{ + if(!pUserData) +{ + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +static void MpExternalUGAppSvcLoad(MpExternalUGType nExternalUGType, void *pUserData) +{ + + VideoLogInfo(""); + + if (pUserData == NULL) { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + service_h pServiceHandle = NULL; + int ret_val = 0; + char pkg_name[STR_LEN_MAX] = {0,}; + + if(service_create(&pServiceHandle) != SERVICE_ERROR_NONE) + { + VideoLogInfo("[ERR]service_create(&pServiceHandle)"); + return; + } + + switch(nExternalUGType) + { + case MP_EXTERNAL_UG_YOUTUBE: + strncpy(pkg_name,"org.tizen.youtube",STR_LEN_MAX-1); + break; + + case MP_EXTERNAL_UG_FACEBOOK: + strncpy(pkg_name,"org.tizen.facebook",STR_LEN_MAX-1); + break; + default: + break; + } + + if(service_set_operation(pServiceHandle, SERVICE_OPERATION_SEND) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_operation fail."); + return; + } + + if(nExternalUGType == MP_EXTERNAL_UG_YOUTUBE) + { + char xwin_id_str[12] = { 0, }; + Ecore_X_Window xwin_id = (Ecore_X_Window)MpUtilGetMainWindowXID(); + eina_convert_itoa(xwin_id, xwin_id_str); + VideoLogInfo("For YoutTube XID : %s", xwin_id_str); + service_add_extra_data(pServiceHandle, "XWINDOW_ID", xwin_id_str); + } + + if(service_set_mime(pServiceHandle, "video/*") != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_mime fail."); + return; + } + + if(service_set_uri(pServiceHandle, pAppData->szMediaUri) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_uri fail."); + return; + } + + + if(service_set_package(pServiceHandle, pkg_name) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_set_package fail : %d", ret_val); + return; + } + + if(service_send_launch_request(pServiceHandle, MpExternalUgResFn, pUserData) != SERVICE_ERROR_NONE) + { + if(pServiceHandle) + { + service_destroy(pServiceHandle); + } + + VideoLogInfo("[ERR]service_send_launch_request fail : %d", ret_val); + return; + } + + service_destroy(pServiceHandle); +} + +static void MpExternalUGSelectListItem(void *pUserData,Evas_Object *pObject,void *pEventInfo) +{ + VideoLogInfo(""); + + if(pUserData == NULL) + { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo; + + if(pItem) + { + int nIndex = 0; + nIndex = (int)elm_object_item_data_get(pItem); + + VideoLogInfo("Select Controlbar item of popup : %d", nIndex); + + if(!strcmp(szUgItems[nIndex], MP_SHARE_MESSAGE)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_MESSAGE, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_EMAIL)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_EMAIL, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_BLUETOOTH)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_BLUETOOTH, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_FTM)) + { + MpExternalUgLoad(MP_EXTERNAL_UG_FTM, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_FACEBOOK)) + { + MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_FACEBOOK, pUserData); + } + else if(!strcmp(szUgItems[nIndex], MP_SHARE_YOUTUBE)) + { + MpExternalUGAppSvcLoad(MP_EXTERNAL_UG_YOUTUBE, pUserData); + } + + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + + MpExternalUGDestroyPopupList(); +} + +/* + * External Function + */ +bool MpExternalUgLoad(MpExternalUGType nExternalUGType, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + struct ug_cbs cbs = { 0, }; + service_h pService; //bundle *pBundleHandle = NULL; + + + cbs.layout_cb = MpExternalUgLayoutCb; + cbs.result_cb = MpExternalUgResultCb; + cbs.destroy_cb = MpExternalUgDestroyCb; + cbs.priv = (void *)pAppData; + + service_create(&pService); //pBundleHandle = bundle_create(); + + UG_INIT_EFL(pAppData->pMainWindow, UG_OPT_INDICATOR_ENABLE); + + if(pUiGadgetHandle) + { + MpExternalUgUnload(); + } + + switch (nExternalUGType) + { + case MP_EXTERNAL_UG_MESSAGE: + VideoLogInfo("MP_EXTERNAL_UG_MESSAGE"); + //bundle_add(pBundleHandle, "ATTACHFILE", pAppData->szMediaUri); + service_add_extra_data(pService, "ATTACHFILE", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_EMAIL: + VideoLogInfo("MP_EXTERNAL_UG_EMAIL"); + //bundle_add(pBundleHandle, "RUN_TYPE", "5"); + service_add_extra_data(pService, "RUN_TYPE", "5"); + //bundle_add(pBundleHandle, "ATTACHMENT", pAppData->szMediaUri); + service_add_extra_data(pService, "ATTACHMENT", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_MYFILE_DETAIL: + VideoLogInfo("MP_EXTERNAL_UG_MYFILE_DETAIL"); + //bundle_add(pBundleHandle, "Path", pAppData->szMediaUri); + service_add_extra_data(pService, "Path", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_YOUTUBE: + VideoLogInfo("MP_EXTERNAL_UG_YOUTUBE"); + //bundle_add(pBundleHandle, "feature", "video_upload"); + service_add_extra_data(pService, "feature", "video_upload"); + //bundle_add(pBundleHandle, "video", pAppData->szMediaUri); + service_add_extra_data(pService, "video", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_FACEBOOK: + VideoLogInfo("MP_EXTERNAL_UG_FACEBOOK"); + //bundle_add(pBundleHandle, "feature", "video_upload"); + service_add_extra_data(pService, "feature", "video_upload"); + //bundle_add(pBundleHandle, "video", pAppData->szMediaUri); + service_add_extra_data(pService, "video", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_BLUETOOTH: + VideoLogInfo("MP_EXTERNAL_UG_BLUETOOTH"); + //bundle_add(pBundleHandle, "launch-type", "send"); + service_add_extra_data(pService, "launch-type", "send"); + //bundle_add(pBundleHandle, "filecount", "1"); + service_add_extra_data(pService, "filecount", "1"); + //bundle_add(pBundleHandle, "files", pAppData->szMediaUri); + service_add_extra_data(pService, "files", pAppData->szMediaUri); + break; + + case MP_EXTERNAL_UG_FTM: + VideoLogInfo("MP_EXTERNAL_UG_FTM"); + //bundle_add(pBundleHandle, "filecount", "1"); + service_add_extra_data(pService, "filecount", "1"); + //bundle_add(pBundleHandle, "files", pAppData->szMediaUri); + service_add_extra_data(pService, "files", pAppData->szMediaUri); + break; + + default: + service_destroy(pService); //bundle_free(pBundleHandle); + return FALSE; + } + + pUiGadgetHandle = ug_create(NULL, st_MpExternalUG[nExternalUGType].szUgName, UG_MODE_FULLVIEW, pService, &cbs); + + nCurUGType = nExternalUGType; + + service_destroy(pService); //bundle_free(pBundleHandle); + + pHardKeyEventHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpExternalUgHardkeyDownCb, pUserData); + + /* !!!!!SET ROTATE STATE!!!!! */ + + return TRUE; +} + +void MpExternalUgUnload(void) +{ + VideoLogInfo(""); + + MpExternalUGDestroyPopupList(); + + if (pHardKeyEventHandler) { + ecore_event_handler_del(pHardKeyEventHandler); + pHardKeyEventHandler = NULL; + } + + if (pUiGadgetHandle) { + ug_destroy(pUiGadgetHandle); + pUiGadgetHandle = NULL; + } + + nCurUGType = MP_EXTERNAL_UG_NONE; +} + +void MpExternalUgDestroyAll(void) +{ + VideoLogInfo(""); + + MpExternalUGDestroyPopupList(); + + ug_destroy_all(); +} + +int MpExternalUgGetCurUgState() +{ + VideoLogInfo(""); + + return (int)nCurUGType; +} + +void MpExternalUgSetUgState(MpExternalUGType nExternalUGType) +{ + VideoLogInfo(""); + + nCurUGType = nExternalUGType; +} + +bool MpExternalUgShow(void *pUserData, void *pParent) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Object *pButton = NULL; + Evas_Object *pBox = NULL; + + MpExternalUGDestroyPopupList(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pUGPopupHandle = elm_popup_add(pAppData->pMainWindow); + elm_object_style_set(pUGPopupHandle, "menustyle"); + elm_object_part_text_set(pUGPopupHandle, "title,text", MP_COM_BUTTON_SHARE); + evas_object_size_hint_weight_set(pUGPopupHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + pButton = elm_button_add(pUGPopupHandle); + elm_object_style_set (pButton, "popup_button/default"); + elm_object_text_set(pButton, MP_COM_CLOSE); + elm_object_part_content_set(pUGPopupHandle, "button1", pButton); + evas_object_smart_callback_add(pButton, "clicked", MpExternalUGPopupCb, (void*)pAppData); + + Elm_Genlist_Item_Class *st_Share_Itc = NULL; + + st_Share_Itc = elm_genlist_item_class_new(); + + st_Share_Itc->item_style = "1text"; + st_Share_Itc->func.text_get = (void *)MpExternalUgGetLabelOfGenlistItemCb; + st_Share_Itc->func.content_get = NULL; + st_Share_Itc->func.state_get = NULL; + st_Share_Itc->func.del = NULL; + /* Create genlist handle */ + pUGGenList = elm_genlist_add(pUGPopupHandle); + evas_object_size_hint_weight_set(pUGGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(pUGGenList, EVAS_HINT_FILL, EVAS_HINT_FILL); + + szUgItems = (char **)calloc(1, sizeof(char *) * MP_EXTERNAL_UG_MAX); + int idx = 0; + for(idx = 0; idx < MP_EXTERNAL_UG_MAX; idx++) + { + szUgItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char)); + } + + /* Set Sound alive string */ + strncpy(szUgItems[MP_EXTERNAL_UG_MESSAGE], MP_SHARE_MESSAGE, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_EMAIL], MP_SHARE_EMAIL, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_BLUETOOTH], MP_SHARE_BLUETOOTH, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_FTM], MP_SHARE_FTM, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_YOUTUBE], MP_SHARE_YOUTUBE, STR_LEN_MAX - 1); + strncpy(szUgItems[MP_EXTERNAL_UG_FACEBOOK], MP_SHARE_FACEBOOK, STR_LEN_MAX - 1); + + elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_MESSAGE, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData); + elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_EMAIL, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData); + elm_genlist_item_append(pUGGenList, st_Share_Itc, (void *)MP_EXTERNAL_UG_BLUETOOTH, NULL, ELM_GENLIST_ITEM_NONE, MpExternalUGSelectListItem, pAppData); + + elm_genlist_item_class_free(st_Share_Itc); + + pBox = elm_box_add(pUGPopupHandle); + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get()); + + elm_box_pack_end(pBox, pUGGenList); + elm_object_content_set(pUGPopupHandle, pBox); + + + evas_object_show(pUGGenList); + evas_object_show(pUGPopupHandle); + + + return TRUE; +} +void MpExternalUgHide() +{ + MpExternalUGDestroyPopupList(); +} + + diff --git a/src/mp-util-media-service.c b/src/mp-util-media-service.c new file mode 100755 index 0000000..1155d62 --- /dev/null +++ b/src/mp-util-media-service.c @@ -0,0 +1,2497 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include + + +#include "mp-video-log.h" +#include "mp-video-value-define.h" +#include "mp-video-type-define.h" +#include "mp-util-media-service.h" +#include "mp-video-string-define.h" + + + +static Eina_List *VideoFolderList = NULL; +static Eina_List *VideoItemList = NULL; +static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE; +static int nTotalVideoTypeFiles = 0; +static int nNumberOfVideoItemByType = 0; + + +bool MpUtilMediaSvcIs3gpFile(char* szFileUri) +{ + VideoLogInfo(""); + + int nRet = FALSE; + char* szTmpUriPath = szFileUri; + + if(szTmpUriPath) + { + char *szExt = NULL; + szExt = strrchr(szTmpUriPath, '.'); + + if((szExt != NULL) && ((szExt+1) != NULL)) + { + if(!strcmp(szExt+1, "3gp")) + { + nRet = TRUE; + } + else + { + nRet = FALSE; + } + } + else + { + VideoLogInfo("No exist extension."); + nRet = FALSE; + } + } + else + { + VideoLogInfo("No exist file uri."); + nRet = FALSE; + } + + return nRet; +} + +static bool MpUtilMediaSvcIterateForGetVideoItemCb(media_info_h pVideoItem, void *pUserData) +{ + VideoLogInfo(""); + + media_info_h *pAssignFolderItem = (media_info_h*)pUserData; + + if(pVideoItem != NULL) + { + char *szTmpStr = NULL; + media_info_clone(pAssignFolderItem, pVideoItem); + media_info_get_display_name(*pAssignFolderItem, &szTmpStr); + VideoLogInfo("Display name : %s", szTmpStr); + + if(szTmpStr) + { + free(szTmpStr); + } + } + + return FALSE; +} + +static bool MpUtilMediaSvcIterateForVideoItemListViewCb(media_info_h pMediaItem, void *pUserData) +{ + VideoLogInfo(""); + + media_info_h pAssignMediaItem = NULL; + media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS; + + media_info_get_media_type(pMediaItem, &nMediaType); + VideoLogInfo("nMediaType : %d", nMediaType); + + if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO) + { + char *szTmpItemFilePath = NULL; + char szItemFilePath[STR_LEN_MAX] = {0}; + + media_info_get_file_path(pMediaItem, &szTmpItemFilePath); + + if(szTmpItemFilePath == NULL) + { + VideoLogInfo("Fail to get file path of media item."); + return FALSE; + } + strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1); + + free(szTmpItemFilePath); + szTmpItemFilePath = NULL; + + VideoLogInfo("szItemFilePath : %s", szItemFilePath); + + nTotalVideoTypeFiles++; + + switch(nWhatFileType) + { + case MP_MEDIA_VIDEO_FILE_TYPE: + if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == TRUE) + { + return TRUE; + } + break; + + case MP_MEDIA_CAMERA_FILE_TYPE: + if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == FALSE) + { + return TRUE; + } + break; + + case MP_MEDIA_ALL_FILE_TYPE: + break; + } + + nNumberOfVideoItemByType++; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + + media_info_clone(&pAssignMediaItem, pMediaItem); + Eina_List **pList = (Eina_List **)pUserData; + *pList = eina_list_append(*pList, pAssignMediaItem); + } + + return TRUE; +} + +static bool MpUtilMediaSvcIterateCb(media_info_h pMediaItem, void *pUserData) +{ + VideoLogInfo(""); + + media_info_h pAssignMediaItem = NULL; + media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS; + + media_info_get_media_type(pMediaItem, &nMediaType); + VideoLogInfo("nMediaType : %d", nMediaType); + + if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO) + { + media_info_clone(&pAssignMediaItem, pMediaItem); + Eina_List **pList = (Eina_List **)pUserData; + *pList = eina_list_append(*pList, pAssignMediaItem); + + nTotalVideoTypeFiles++; + nNumberOfVideoItemByType++; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + } + + return TRUE; +} + +static bool MpUtilMediaSvcIterateForGetFolderCb(media_folder_h pFolderItem, void *pUserData) +{ + VideoLogInfo(""); + + media_folder_h *pAssignFolderItem = (media_folder_h*)pUserData; + + if(pFolderItem != NULL) + { + char *szTmpStr = NULL; + media_folder_clone(pAssignFolderItem, pFolderItem); + media_folder_get_name(*pAssignFolderItem, &szTmpStr); + VideoLogInfo("Folder name : %s", szTmpStr); + + if(szTmpStr) + { + free(szTmpStr); + } + } + + return FALSE; +} + +static bool MpUtilMediaSvcIterateForFolderListCb(media_folder_h pFolderItem, void *pUserData) +{ + VideoLogInfo(""); + + media_folder_h pAssignFolderItem = NULL; + media_folder_clone(&pAssignFolderItem, pFolderItem); + Eina_List **pList = (Eina_List **)pUserData; + *pList = eina_list_append(*pList, pAssignFolderItem); + + return TRUE; +} + +static bool MpUtilMediaSvcIterateGetTagCb(media_tag_h pTagItem, void *pUserData) +{ + VideoLogInfo(""); + + media_tag_h *pAssignTagItem = (media_tag_h*)pUserData; + + if(!pTagItem) + { + char *szTmpStr = NULL; + media_tag_clone(pAssignTagItem, pTagItem); + media_tag_get_name(*pAssignTagItem, &szTmpStr); + VideoLogInfo("szTagName : %s", szTmpStr); + + if(szTmpStr) + { + free(szTmpStr); + } + } + + return FALSE; +} + +static bool MpUtilMediaSvcIterateGetVideoItemOfTagCb(media_info_h media, void *pUserData) +{ + VideoLogInfo(""); + + return TRUE; +} + +// +// Internal function +// +bool MpUtilMediaSvcGetFileDirectoryName(char *szFilePath, char *szFileName, char *szDirectoryName, char *szDirectoryPath) +{ + VideoLogInfo(""); + + if(!szFilePath) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + int nCount = 0; + int nLoopCount = 0; + + for(nLoopCount = strlen(szFilePath); nLoopCount >= 0; nLoopCount--) + { + if (szFilePath[nLoopCount] != '\0') + { + nCount++; + } + + if(szFilePath[nLoopCount] == '/') + { + if(szFileName) + { + memcpy(szFileName, &szFilePath[nLoopCount + 1], --nCount); + *(szFileName + nCount) = '\0'; + VideoLogInfo("File name = %s\n", szFileName); + } + + if(szDirectoryPath) + { + memcpy(szDirectoryPath, &szFilePath[0], nLoopCount); + *(szDirectoryPath + nLoopCount + 1) = '\0'; + VideoLogInfo("Directory path = %s", szDirectoryPath); + } + + if(szDirectoryName) + { + nCount = 0; + for(--nLoopCount; nLoopCount >= 0; nLoopCount--) + { + nCount++; + if(szFilePath[nLoopCount] == '/') + { + memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount); + *(szDirectoryName + nCount) = '\0'; + VideoLogInfo("Directory Name = %s", szDirectoryName); + + return TRUE; + } + } + } + + return TRUE; + } + } + + return FALSE; +} + +// +// External function +// + +void MpUtilMediaSvcInitSession(void) +{ + VideoLogInfo(""); + + if(media_content_connect() != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to connect to media content db."); + } + else + { + VideoLogInfo("Success to connect to media content db."); + } +} + +void MpUtilMediaSvcFinishSession(void) +{ + VideoLogInfo(""); + + if(media_content_disconnect() != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to disconnect from media content db."); + return; + } + + + VideoLogInfo("Success to disconnect from media content db."); + return; +} + +bool MpUtilMediaSvcDestoryVideoItemList(void) +{ + if(!VideoItemList) + { + VideoLogInfo("VideoItemList is empty already."); + return FALSE; + } + + media_info_h pTmpVideoItem = NULL; + EINA_LIST_FREE(VideoItemList, pTmpVideoItem) + { + if(pTmpVideoItem) + { + media_info_destroy(pTmpVideoItem); + } + } + + VideoItemList = NULL; + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListFromFolder(char *szFolderPath, int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + if(!szFolderPath) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_folder_h m_FolderHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + + char *szFolderID = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + char szOrderObj[STR_LEN_MAX] = {0}; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and FOLDER_PATH = \"%s\"", szFolderPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetFolderCb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_folder_foreach_folder_from_db()."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(!m_FolderHandle) + { + VideoLogInfo("Fail to get folder handle."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get folder id."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + } + + if(szFolderID) + { + free(szFolderID); + szFolderID = NULL; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListForListView(int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType) +{ + VideoLogInfo(""); + + nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE; + + return MpUtilMediaSvcExtractVideoListForListView(nSortType); +} + +bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType) +{ + VideoLogInfo(""); + + nWhatFileType = MP_MEDIA_CAMERA_FILE_TYPE; + + return MpUtilMediaSvcExtractVideoListForListView(nSortType); +} + +bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName) +{ + VideoLogInfo(""); + + if(!szTagName) + { + VideoLogInfo("[ERR] No Exist tag name."); + return FALSE; + } + + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo("szTagName : %s", szTagName); + + int nTagID = 0; + char szTmpStr[STR_LEN_MAX] = {0}; + + media_tag_h pTagHandle = NULL; + filter_h m_FilterHandle = NULL; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + //snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%s\"", szTagName);//snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"\%%s\%\"", szTagName); + snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%%%s%%\"", szTagName); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, TAG_NAME, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_tag_foreach_tag_from_db(m_FilterHandle, MpUtilMediaSvcIterateGetTagCb, &pTagHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_tag_foreach_tag_from_db()."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(!pTagHandle) + { + VideoLogInfo("Fail to get pTagHandle."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_tag_get_tag_id(pTagHandle, &nTagID) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get tag ID."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + VideoLogInfo("nTagID : %d", nTagID); + + memset(szTmpStr, 0, STR_LEN_MAX); + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + + if(media_tag_foreach_media_from_db(nTagID, m_FilterHandle, MpUtilMediaSvcIterateGetVideoItemOfTagCb, VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_tag_foreach_media_from_db()."); + if(m_FilterHandle) + { + media_filter_destroy(m_FilterHandle); + m_FilterHandle = NULL; + } + return FALSE; + } + if(m_FilterHandle) + { + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + m_FilterHandle = NULL; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + char szTmpStr[STR_LEN_MAX] = {0}; + + nWhatFileType = MP_MEDIA_ALL_FILE_TYPE; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_FAVOURITE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword) +{ + if(VideoItemList) + { + VideoLogInfo("Already exist video list."); + return FALSE; + } + + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + char szOrderObj[STR_LEN_MAX] = {0}; + char szTmpStr[STR_LEN_MAX] = {0}; + + nWhatFileType = MP_MEDIA_ALL_FILE_TYPE; + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; + + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_TITLE like \"%%%s%%\"", keyword); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + + +void MpUtilMediaSvcDestoryVideoList(void) +{ + VideoLogInfo(""); + + if(VideoFolderList) + { + MpUtilMediaSvcDestoryVideoFolderList(); + VideoFolderList = NULL; + } + + if(VideoItemList) + { + MpUtilMediaSvcDestoryVideoItemList(); + VideoItemList = NULL; + } + + nTotalVideoTypeFiles = 0; + nNumberOfVideoItemByType = 0; +} + +bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath) +{ + if(!szFilePath) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + if(!VideoItemList) + { + VideoLogInfo("pList is empty already."); + return FALSE; + } + + VideoLogInfo("szFilePath : %s", szFilePath); + + char *szGetFilePath = NULL; + media_info_h pItem = NULL; + Eina_List *pIterateList = NULL; + EINA_LIST_FOREACH(VideoItemList, pIterateList, pItem) + { + if(pItem) + { + if(media_info_get_file_path(pItem, &szGetFilePath) == MEDIA_CONTENT_ERROR_NONE) + { + if(szGetFilePath) + { + if(!strcmp(szGetFilePath, szFilePath)) + { + VideoLogInfo("Find %s", szGetFilePath); + char *szMediaID = NULL; + media_info_get_media_id(pItem, &szMediaID); + media_info_delete_from_db(szMediaID); + VideoItemList = eina_list_remove(VideoItemList, pItem); + media_info_destroy(pItem); + + nNumberOfVideoItemByType--; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + + if(szMediaID) + { + free(szMediaID); + } + + if(szGetFilePath) + { + free(szGetFilePath); + } + + return TRUE; + } + } + else + { + VideoLogInfo("No exist %s in media info Database module.", szFilePath); + return FALSE; + } + } + } + } + return FALSE; +} + +bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex) +{ + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(!VideoItemList) + { + VideoLogInfo("pList is empty already."); + return FALSE; + } + + media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pItem) + { + char *szMediaID = NULL; + media_info_get_media_id(pItem, &szMediaID); + if(szMediaID) + { + media_info_delete_from_db(szMediaID); + VideoItemList = eina_list_remove(VideoItemList, pItem); + free(szMediaID); + media_info_destroy(pItem); + nNumberOfVideoItemByType--; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + } + else + { + VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex); + return FALSE; + } + } + else + { + VideoLogInfo("Fail to remove item in media svc and list."); + return FALSE; + } + + return TRUE; +} + +bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex) +{ + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(!VideoItemList) + { + VideoLogInfo("pList is empty already."); + return FALSE; + } + + media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pItem) + { + char *szMediaID = NULL; + media_info_get_media_id(pItem, &szMediaID); + if(szMediaID) + { + media_info_delete_from_db(szMediaID); + free(szMediaID); + nNumberOfVideoItemByType--; + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + } + else + { + VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex); + return FALSE; + } + } + else + { + VideoLogInfo("Fail to remove item in media svc and list."); + return FALSE; + } + + return TRUE; +} + + +bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID) +{ + VideoLogInfo(""); + + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + bool bRet = FALSE; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + bRet = FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + bRet = FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + bRet = FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + bRet = FALSE; + } + + if(pVideoItem) + { + char *szMediaID = NULL; + media_info_get_media_id(pVideoItem, &szMediaID); + if(szMediaID) + { + strncpy(szVideoID, szMediaID, STR_LEN_MAX-2); + free(szMediaID); + } + media_info_destroy(pVideoItem); + bRet = TRUE; + } + else + { + bRet = FALSE; + } + + return bRet; +} + +unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath) +{ + if(!szPath) + { + VideoLogInfo("No exist video path."); + return 0; + } + + VideoLogInfo("szPath : %s", szPath); + + time_t LastPlayedTime = 0; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_get_played_time(pVideoMetaHandle, &LastPlayedTime); + VideoLogInfo("Last Played Time : %d", LastPlayedTime); + video_meta_destroy(pVideoMetaHandle); + } + media_info_destroy(pVideoItem); + } + + return (unsigned int)LastPlayedTime; +} + +unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath) +{ + if(!szPath) + { + VideoLogInfo("No exist video path."); + return 0; + } + + VideoLogInfo("szPath : %s", szPath); + + int nDurationTime = 0; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + video_meta_get_duration(pVideoMetaHandle, &nDurationTime); + VideoLogInfo("Duration time : %d", nDurationTime); + video_meta_destroy(pVideoMetaHandle); + } + media_info_destroy(pVideoItem); + } + + return (unsigned int)nDurationTime; +} + +int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath) +{ + if(!szPath) + { + VideoLogInfo("No exist video path."); + return 0; + } + + VideoLogInfo("szPath : %s", szPath); + + unsigned long long nSize = 0; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + media_info_get_size(pVideoItem, &nSize); + VideoLogInfo("Video file size time : %d", nSize); + media_info_destroy(pVideoItem); + } + + return nSize; +} + +char *MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri) +{ + if(!szMediaUri) + { + VideoLogInfo("No exist video path."); + return NULL; + } + + VideoLogInfo("szPath : %s", szMediaUri); + + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char *szThumbnailPath = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + memset(szTmpStr, 0, STR_LEN_MAX); + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + if(pVideoItem) + { + media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath); + VideoLogInfo("Video thumbnail file path : %s", szThumbnailPath); + media_info_destroy(pVideoItem); + } + + return szThumbnailPath; +} + +void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime) +{ + if(!szMediaUri) + { + VideoLogInfo("No exist media uri."); + return; + } + + VideoLogInfo("szMediaUri : %s, nLastPlayedTime : %d", szMediaUri, nLastPlayedTime); + + time_t LastPlayedTime = (time_t)nLastPlayedTime; + media_info_h pVideoItem = NULL; + filter_h m_FilterHandle = NULL; + char szTmpStr[STR_LEN_MAX] = {0}; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return; + } + + if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get video item list with filter condition."); + media_filter_destroy(m_FilterHandle); + return; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return; + } + + video_meta_h pVideoMetaHandle = NULL; + + if(pVideoItem) + { + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get pVideoMetaHandle."); + } + else + { + if(pVideoMetaHandle) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_set_played_time(pVideoMetaHandle, LastPlayedTime); + video_meta_update_to_db(pVideoMetaHandle); + video_meta_destroy(pVideoMetaHandle); + VideoLogInfo("Last Played Time : %d", LastPlayedTime); + } + else + { + VideoLogInfo("No exist pVideoMetaHandle"); + } + } + media_info_destroy(pVideoItem); + } +} + +bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri, bool bLoop) +{ + VideoLogInfo(""); + + if(!szCurrMediaUri) + { + VideoLogInfo("[ERR] No exist current file path."); + return FALSE; + } + + if(!VideoItemList) + { + VideoLogInfo("No exist VideoItemList."); + if(bLoop) + { + strncpy(szNextMediaUri, szCurrMediaUri, (sizeof(char) * STR_LEN_MAX) - 1); + } + return FALSE; + } + + int nCount = 0; + int nListSize = 0; + media_info_h pVideoItem = NULL; + Eina_List *pIterateList = NULL; + + memset(szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX); + memset(szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX); + + nListSize = eina_list_count(VideoItemList); + + if(nListSize <= 1) + { + VideoLogInfo("Video list size == 1."); + return FALSE; + } + + EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) + { + if(pVideoItem == NULL) + { + continue; + } + + char *szVideoItemFilePath = NULL; + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + if(szVideoItemFilePath) + { + VideoLogInfo("URL of the File item - %s (%d / %d)", szVideoItemFilePath, nCount, nListSize); + if(!strcmp(szVideoItemFilePath, szCurrMediaUri)) + { + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + + pVideoItem = NULL; + pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount - 1); + if(pVideoItem) + { + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + else if(bLoop) + { + media_info_h m_LastItem = (media_info_h)eina_list_nth(VideoItemList, nListSize - 1); + VideoLogError("%p", m_LastItem); + if(m_LastItem) + { + media_info_get_file_path(m_LastItem, &szVideoItemFilePath); + strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + m_LastItem = NULL; + } + + pVideoItem = NULL; + pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount + 1); + if(pVideoItem) + { + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + else if(bLoop) + { + media_info_h m_FirstItem = (media_info_h)eina_list_nth(VideoItemList, 0); + if(m_FirstItem) + { + media_info_get_file_path(m_FirstItem, &szVideoItemFilePath); + strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1); + + free(szVideoItemFilePath); + szVideoItemFilePath = NULL; + } + m_FirstItem = NULL; + } + + VideoLogInfo("PreMediaUri:%s", szPreMediaUri); + VideoLogInfo("NextMediaUri:%s", szNextMediaUri); + + return TRUE; + } + } + + ++nCount; + } + + return FALSE; +} + +char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szVideoItemFilePath = NULL; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + media_info_get_file_path(pVideoItem, &szVideoItemFilePath); + VideoLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath); + } + + return szVideoItemFilePath; +} + +char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szVideoItemThumbnailPath = NULL; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath); + VideoLogInfo("szVideoItemFilePath : %s", szVideoItemThumbnailPath); + } + + return szVideoItemThumbnailPath; +} + +char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szTitle = NULL; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + media_info_get_display_name(pVideoItem, &szTitle); + VideoLogInfo("szTitle : %s", szTitle); + } + + return szTitle; +} + +int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return 0; + } + + int nDurationTime = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + video_meta_get_duration(pVideoMetaHandle, &nDurationTime); + VideoLogInfo("Duratiob time : %d", nDurationTime); + video_meta_destroy(pVideoMetaHandle); + } + } + + return nDurationTime; +} + +int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + time_t nLastPlayedTime = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + + if(pVideoItem) + { + video_meta_h pVideoMetaHandle = NULL; + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE) + { + video_meta_get_played_time(pVideoMetaHandle, &nLastPlayedTime); + VideoLogInfo("Last Play time : %d", nLastPlayedTime); + video_meta_destroy(pVideoMetaHandle); + } + } + + return (int)nLastPlayedTime; +} + +int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + unsigned long long nSize = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_size(pVideoItem, &nSize); + VideoLogInfo("Video file size time : %d", nSize); + } + + return nSize; +} + +int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + int nWidth = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + video_meta_h pVideoMetaHandle = NULL; + + if(pVideoItem) + { + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get pVideoMetaHandle."); + } + else + { + if(pVideoMetaHandle) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_get_width(pVideoMetaHandle, &nWidth); + video_meta_destroy(pVideoMetaHandle); + VideoLogInfo("Video Width : %f", nWidth); + } + else + { + VideoLogInfo("No exist pVideoMetaHandle"); + } + } + } + + return nWidth; +} + +int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + int nHeight = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + video_meta_h pVideoMetaHandle = NULL; + + if(pVideoItem) + { + if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get pVideoMetaHandle."); + } + else + { + if(pVideoMetaHandle) + { + char *szTmpStr = NULL; + video_meta_get_title(pVideoMetaHandle, &szTmpStr); + if(szTmpStr) + { + VideoLogInfo("Title : %s", szTmpStr); + free(szTmpStr); + } + else + { + VideoLogInfo("No exist title"); + } + + video_meta_get_height(pVideoMetaHandle, &nHeight); + video_meta_destroy(pVideoMetaHandle); + VideoLogInfo("Video Width : %f", nHeight); + } + else + { + VideoLogInfo("No exist pVideoMetaHandle"); + } + } + } + + return nHeight; +} + +time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + time_t nDateTime = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_modified_time(pVideoItem, &nDateTime); + VideoLogInfo("Video date time : %d", nDateTime); + } + + return nDateTime; +} + +char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + return NULL; +} + +double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + double nLongitude = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_longitude(pVideoItem, &nLongitude); + VideoLogInfo("nLongitude : %f", nLongitude); + } + + return nLongitude; +} + +double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex); + + double nLatitude = 0; + media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex); + if(pVideoItem) + { + media_info_get_latitude(pVideoItem, &nLatitude); + VideoLogInfo("nLongitude : %f", nLatitude); + } + + return nLatitude; +} + + + + +int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo(""); + + return (int)eina_list_count(VideoItemList); +} + +int MpUtilMediaSvcGetNumberOfVideoItemByType(void) +{ + VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType); + + return nNumberOfVideoItemByType; +} + +int MpUtilMediaSvcGetTotalVideoTypeFiles(void) +{ + VideoLogInfo("nTotalVideoTypeFiles : %d", nTotalVideoTypeFiles); + + return (int)nTotalVideoTypeFiles; +} + +void* MpUtilMediaSvcGetVideoitem(const int nVideoItemIndex) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return NULL; + } + + if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + VideoLogInfo(""); + + return (void*)eina_list_nth(VideoItemList, nVideoItemIndex); +} + +void MpUtilMediaSvcPrintListInfo(void) +{ + if(!VideoItemList) + { + VideoLogInfo("Not exist video item list handle."); + return; + } + + VideoLogInfo("List size : %d", MpUtilMediaSvcGetNumberOfVideoItemByType()); + + media_info_h pVideoItem = NULL; + Eina_List *pIterateList = NULL; + int nCounter = 0; + EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem) + { + if(pVideoItem) + { + char *szTitle = NULL; + media_info_get_display_name(pVideoItem, &szTitle); + if(szTitle) + { + VideoLogInfo("%d - Print title of all list items : %s", nCounter, szTitle); + free(szTitle); + } + else + { + VideoLogInfo("%d - Print title of all list items : NULL.", nCounter); + } + nCounter++; + } + } +} + +int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath) +{ + if(!VideoItemList || !szPath) + { + VideoLogInfo("[ERR] No exist VideoItemList or szPath."); + return 99999; + } + + VideoLogInfo(""); + + unsigned int nCounter = 0; + + Eina_List *pCurList = NULL; + media_info_h pVideoItem = NULL; + + EINA_LIST_FOREACH(VideoItemList, pCurList, pVideoItem) + { + if(pVideoItem) + { + char *szTitle = NULL; + media_info_get_display_name(pVideoItem, &szTitle); + VideoLogInfo("szTitle : %s", szTitle); + + if(!strcmp(szTitle , szPath)) + { + VideoLogInfo("Find same file url. index : %d", nCounter); + free(szTitle); + return nCounter; + } + free(szTitle); + } + + nCounter++; + } + + return 99999; +} + +bool MpUtilMediaSvcExtractVideoFolderList(int nSortType) +{ + VideoLogInfo(""); + + filter_h m_FilterHandle = NULL; + media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC; + + char szTmpStr[STR_LEN_MAX] = {0}; + char szOrderObj[STR_LEN_MAX] = {0}; + + switch(nSortType) + { + case MP_MEDIA_SORT_BY_NONE: + case MP_MEDIA_SORT_BY_NAME_ASC: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_NAME_DESC: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_DATE_MOST_RECENT: + nOrderType = MEDIA_CONTENT_ORDER_DESC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + case MP_MEDIA_SORT_BY_OLDEST: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1); + break; + + default: + nOrderType = MEDIA_CONTENT_ORDER_ASC; + strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1); + } + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1"); + if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForFolderListCb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail media_folder_foreach_folder_from_db()."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + } + + return TRUE; +} + +bool MpUtilMediaSvcDestoryVideoFolderList(void) +{ + if(!VideoFolderList) + { + VideoLogInfo("VideoFolderList is empty already."); + return FALSE; + } + + media_folder_h pTmpFolderItem = NULL; + EINA_LIST_FREE(VideoFolderList, pTmpFolderItem) + { + if(pTmpFolderItem) + { + media_folder_destroy(pTmpFolderItem); + } + } + + VideoFolderList = NULL; + + return TRUE; +} + +int MpUtilMediaSvcGetVideoFolderListSize(void) +{ + if(!VideoFolderList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo(""); + + if(VideoFolderList) + { + return (int)eina_list_count(VideoFolderList); + } + + return 0; +} + +char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex) +{ + if(!VideoFolderList) + { + VideoLogInfo("Not exist video folder list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex); + + if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szFolderName = NULL; + media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex); + if(pFolderItem) + { + media_folder_get_name(pFolderItem, &szFolderName); + + if(szFolderName) + { + VideoLogInfo("szFolderName : %s", szFolderName); + return szFolderName; + } + } + + return NULL; +} + +char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex) +{ + if(!VideoFolderList) + { + VideoLogInfo("Not exist video item list handle."); + return 0; + } + + VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex); + + if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize()) + { + VideoLogInfo("Error number of list item."); + return NULL; + } + + char *szFolderPath = NULL; + media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex); + if(pFolderItem) + { + media_folder_get_path(pFolderItem, &szFolderPath); + + if(szFolderPath) + { + VideoLogInfo("szFolderPath : %s", szFolderPath); + return szFolderPath; + } + } + + return NULL; +} + +static bool MpUtilMediaSvcBookmarkItemCb(media_bookmark_h pBookmark, void *pUserData) +{ + VideoLogInfo(""); + + media_bookmark_h pAssignBookmark = NULL; + media_bookmark_clone(&pAssignBookmark, pBookmark); + + GList **pList = (GList**)pUserData; + *pList = g_list_append(*pList, pAssignBookmark); + + return TRUE; +} + +bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list) +{ + if(!vid) + { + VideoLogInfo("No exist vid."); + return FALSE; + } + + if(!list) + { + VideoLogInfo("No exist list."); + return FALSE; + } + + VideoLogInfo("vid : %s", vid); + + filter_h m_FilterHandle = NULL; + + if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to create media filter handle."); + return FALSE; + } + + if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to set order."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_info_foreach_bookmark_from_db(vid, m_FilterHandle, MpUtilMediaSvcBookmarkItemCb, list) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to get bookmark of video item with filter condition."); + media_filter_destroy(m_FilterHandle); + return FALSE; + } + + if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("Fail to destroy media filter handle."); + return FALSE; + } + + return TRUE; +} + +void MpUtilMediaSvcBookmarkListClear(GList *pList) +{ + VideoLogInfo(""); + + if(pList == NULL) + { + VideoLogInfo("list == NULL\n"); + return; + } + + media_bookmark_h pBookmarkItem = NULL; + + int nCount = 0; + int i = 0; + + nCount = g_list_length(pList); + for(i = 0; i < nCount; i++) + { + pBookmarkItem = (void *)g_list_nth_data(pList, i); + if(pBookmarkItem) + { + media_bookmark_destroy(pBookmarkItem); + pBookmarkItem = NULL; + } + } + + g_list_free(pList); +} + +int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path) +{ + VideoLogInfo(""); + int ret = 0; + + if(vid < 0 || path == NULL) + { + VideoLogInfo("Invalid Parameter : %d, %s", vid, path); + return -1; + } + + if(media_bookmark_insert_to_db(vid, position, path) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("minfo_add_bookmark ERR : %d", ret); + return -1; + } + + return 0; +} + +int MpUtilMediaSvcBookmarkDelete(char *vid, int position) +{ + VideoLogInfo(""); + bool ret = 0; + + int bookmarkid = 0; + char *path = NULL; + + GList *list = NULL; + media_bookmark_h data = NULL; + Eina_List *l = NULL; + + ret = MpUtilMediaSvcBookmarkListGet(vid, &list); + if(ret == FALSE) + { + return -1; + } + + EINA_LIST_FOREACH((Eina_List *)list, l, data) + { + if(data) + { + time_t nMarkedTime; + media_bookmark_get_marked_time(data, &nMarkedTime); + if(position == nMarkedTime) + { + media_bookmark_get_bookmark_id(data, &bookmarkid); + media_bookmark_get_thumbnail_path(data, &path); + break; + } + } + } + + MpUtilMediaSvcBookmarkListClear(list); + + if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("[ERR] media_bookmark_delete_from_db()"); + if(path) + { + free(path); + path = NULL; + } + return -1; + } + + if(path == NULL) + { + VideoLogError("Thumbnail path is NULL"); + return -1; + } + + ecore_file_init(); + if(ecore_file_exists(path)) + { + if(ecore_file_remove(path)) + { + VideoLogInfo("Remove success :%s\n", path); + } + else + { + VideoLogInfo("Remove Failed :%s \n", path); + } + } + else + { + VideoLogInfo("The file not eixst :%s\n", path); + } + + ecore_file_shutdown(); + + if(path) + { + free(path); + path = NULL; + } + + return 0; +} + +int MpUtilMediaSvcBookmarkDeleteAll(char *vid) +{ + VideoLogInfo(""); + bool ret = 0; + + int bookmarkid = 0; + + GList *list = NULL; + media_bookmark_h data = NULL; + Eina_List *l = NULL; + char *szThumbnailPath = NULL; + + ret = MpUtilMediaSvcBookmarkListGet(vid, &list); + if(ret == FALSE) + { + return -1; + } + + EINA_LIST_FOREACH((Eina_List *)list, l, data) + { + if(data) + { + media_bookmark_get_bookmark_id(data, &bookmarkid); + media_bookmark_get_thumbnail_path(data, &szThumbnailPath); + + if(szThumbnailPath) + { + ecore_file_init(); + if(ecore_file_exists(szThumbnailPath)) + { + if(ecore_file_remove(szThumbnailPath)) + { + VideoLogInfo("Remove success : %s", szThumbnailPath); + } + else + { + VideoLogInfo("Remove Failed : %s", szThumbnailPath); + } + } + else + { + VideoLogInfo("The file not eixst :%s", szThumbnailPath); + } + ecore_file_shutdown(); + } + + if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE) + { + VideoLogInfo("[ERR]minfo_delete_bookmark"); + return -1; + } + } + } + + MpUtilMediaSvcBookmarkListClear(list); + + return 0; +} + +char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle) +{ + char *szThumbnailPath = NULL; + + media_bookmark_get_thumbnail_path((media_bookmark_h)pBookmarkItemHandle, &szThumbnailPath); + + return szThumbnailPath; +} + +int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle) +{ + time_t nBookmarkTime; + + media_bookmark_get_marked_time((media_bookmark_h)pBookmarkItemHandle, &nBookmarkTime); + + return (int)nBookmarkTime; +} diff --git a/src/mp-util.c b/src/mp-util.c new file mode 100755 index 0000000..cc39ccf --- /dev/null +++ b/src/mp-util.c @@ -0,0 +1,1588 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// CAPI +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-util-media-service.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +//#include "mp-video-info-ctrl.h" + +#define MP_LAUNCH_BLUETOOTH_PACKAGE_NAME "org.tizen.bluetooth" + +#define MP_UTIL_USER_AGENT_KEY "db/admin/uagent" +//#define MP_UTIL_TEMP_USER_AGENT_VALUE "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" +#define MP_UTIL_TEMP_USER_AGENT_VALUE "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/1.0; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B" +#define MP_UTIL_MMC_PATH "/opt/storage/sdcard" +#define MP_UTIL_FILE_PREFIX "file://" + +#define MP_UTIL_ALLSHARE_CHANGE_NOTI "memory/allshare/status" +#define MP_UTIL_ALLSHARE_NOTI_ON 1 +#define MP_UTIL_ALLSHARE_NOTI_OFF 0 + +#define MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS "db/private/org.tizen.video-player/preview_url_videos" +#define MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS "db/private/org.tizen.video-player/preview_url_records" + +static bool bAlphaSet = TRUE; + +static Ecore_X_Window pMainXwindow = 0; +static Ecore_X_Display *pX11DisplayHandle = NULL; + +static Evas_Object *pPopUpHandle = NULL; +static Evas_Object *pPopupWindow = NULL; + +static MpVideoRotateType nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL; + +/* + * Callback function + */ + +static void MpUtilBatteryStatusChangeCb(keynode_t *pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + int nLowBatteryStatus = 0; + + if (!pUserData) { + VideoLogInfo("User data is NULL."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!vconf_get_int + (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) { + if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) { + /* MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpUtilBatteryExitCb); */ + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + return; + } + } else { + VideoLogInfo("Fail to get vconf"); + } +} + +static void MpUtilMMCStatusChangeCb(keynode_t * pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + char szFilename[9] = { 0 }; + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + char *keyname = vconf_keynode_get_name(pKeyNode); + if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0) { + int nMMCState = vconf_keynode_get_int(pKeyNode); + if (nMMCState == VCONFKEY_FILEMANAGER_DB_UPDATED) { + strncpy(szFilename, pAppData->szMediaUri, sizeof(szFilename) - 1); + VideoLogInfo("FILE NAME[%s]", szFilename); + if (!strcmp(MP_UTIL_MMC_PATH, szFilename)) { + /* MpUtilNotifyPopUp(pAppData, "MMC card is ejected", NULL); */ + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + } + } else { + VideoLogInfo("Fail to get vconf"); + } +} + +/* + * External function + */ + +void MpUtilExitVideoPlayer(void) +{ + VideoLogInfo(""); + + elm_exit(); +} + +static void MpUtilDestroyMainWindow(void *pUserData, Evas_Object *pEvasObject, + void *pEvent) +{ + VideoLogInfo(""); + + MpUtilExitVideoPlayer(); +} + +void MpUtilResetForRelaunching(void) +{ + VideoLogInfo(""); + + pX11DisplayHandle = NULL; + pPopUpHandle = NULL; + pPopupWindow = NULL; +} + +void MpUtilSetAlphaOfMainWindow(bool bSetAlpha) +{ + VideoLogInfo(""); + + if(bSetAlpha) + { + } + else + { + } + bAlphaSet = bSetAlpha; +} + +void *MpUtilCreateMainWindow(const char *pStrName) +{ + VideoLogInfo(""); + + if (!pStrName) { + VideoLogInfo("[ERR] No exist pStrName."); + return NULL; + } + + if (pMainXwindow) { + evas_object_del((Evas_Object *)pMainXwindow); + pMainXwindow = 0; + } + + Evas_Object *pEvasObject; + + pEvasObject = elm_win_add(NULL, pStrName, ELM_WIN_BASIC); + if (pEvasObject) { + elm_win_title_set(pEvasObject, pStrName); + evas_object_smart_callback_add(pEvasObject, "delete,request", + MpUtilDestroyMainWindow, NULL); + elm_win_borderless_set(pEvasObject, EINA_FALSE); + } + + Evas *pEvas = evas_object_evas_get(pEvasObject); + Evas_Object *pMainRect = evas_object_rectangle_add(pEvas); + + if (pMainRect) + { + evas_object_size_hint_weight_set(pMainRect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_color_set(pMainRect, 0, 0, 0, 0); + evas_object_render_op_set(pMainRect, EVAS_RENDER_COPY); + evas_object_show(pMainRect); + elm_win_resize_object_add(pEvasObject, pMainRect); + } + pMainXwindow = elm_win_xwindow_get(pEvasObject); + + return (void *)pEvasObject; +} + +int MpUtilSetKeyGrab(const char *szKeyName, int nGrabMode) +{ + VideoLogInfo(""); + if (!pX11DisplayHandle) { + pX11DisplayHandle = ecore_x_display_get(); + } + + if (!pMainXwindow) { + VideoLogInfo("Not exist pMainXwindow."); + } + + utilx_grab_key(pX11DisplayHandle, pMainXwindow, szKeyName, nGrabMode); + return TRUE; +} + +int MpUtilSetKeyUngrab(const char *szKeyName) +{ + VideoLogInfo(""); + if (pMainXwindow && pX11DisplayHandle) { + utilx_ungrab_key(pX11DisplayHandle, pMainXwindow, szKeyName); + } + return TRUE; +} + + +bool MpUtilCheckRTSPType(char *szUriPath) +{ + if(szUriPath == NULL) { + VideoLogInfo("ERR:"); + return FALSE; + } + + //VideoLogInfo(" URI : %s", szUriPath); + + if (strstr(szUriPath, "rtp")) + return TRUE; + else if (strstr(szUriPath, "rtsp")) + return TRUE; + + return FALSE; +} + +int MpUtilCheckUriType(char *szUriPath) +{ + if(szUriPath == NULL) { + VideoLogInfo("ERR:"); + return FALSE; + } + + VideoLogInfo(" URI : %s", szUriPath); + + if (strstr(szUriPath, "rtp")) + return 1; + else if (strstr(szUriPath, "rtsp")) + return 1; + else if (strstr(szUriPath, "http")) + return 1; + else if (strstr(szUriPath, "https")) + return 1; + + return 0; +} + +bool MpUtilCheckLocalFileExist(char *uri) +{ + VideoLogInfo(""); + + if(uri == NULL) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + if(strstr(uri,MP_UTIL_FILE_PREFIX)) + { + if (!g_file_test(uri+strlen(MP_UTIL_FILE_PREFIX), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) + { + return FALSE; + } + return TRUE; + } + else + { + if(!g_file_test(uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) + { + return FALSE; + } + return TRUE; + } +} + +bool MpUtilCheckBatteryStatus(void) +{ + VideoLogInfo(""); + + int nLowBatteryStatus = 0; + + if (!vconf_get_int + (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &nLowBatteryStatus)) { + if (nLowBatteryStatus <= VCONFKEY_SYSMAN_BAT_POWER_OFF) { + return FALSE; + } + } + + return TRUE; +} + +int MpUtilBatteryStatusNoti(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + if(!pAppData) + { + VideoLogInfo("[ERR] No exist appdata."); + return FALSE; + } + + if(vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, MpUtilBatteryStatusChangeCb, pAppData)) + { + VideoLogInfo("[ERR] Fail to set Battery notification."); + /* return FALSE; */ + } + + return TRUE; +} + +int MpUtilBatteryStatusNotiIgnore(void) +{ + VideoLogInfo(""); + + if (vconf_ignore_key_changed + (VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, + MpUtilBatteryStatusChangeCb) < 0) { + VideoLogInfo("[ERR] Fail to ignore battery status."); + return FALSE; + } + + return TRUE; +} + +int MpUtilMMCstatusNoti(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + if (!pAppData) { + VideoLogInfo("[ERR] No exist appdata."); + return FALSE; + } + + if (vconf_notify_key_changed + (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb, + pAppData) < 0) { + VideoLogInfo("[ERR] Fail to set MMC notification."); + //return FALSE; + } + + return TRUE; +} + +int MpUtilMMCstatusNotiIgnore(void) +{ + VideoLogInfo(""); + + if (vconf_ignore_key_changed + (VCONFKEY_FILEMANAGER_DB_STATUS, MpUtilMMCStatusChangeCb) < 0) { + VideoLogInfo("[ERR] Fail to ignore MMC status."); + //return FALSE; + } + + return TRUE; +} + +int MpUtilGetRotationStateFromAppcore(void) +{ + VideoLogInfo(""); + int bLocked = -1; + + if (vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &bLocked) != 0) + { + VideoLogInfo("Get vlalue fail"); + return nCurRotateValue; + } + + if(bLocked == false) + { + switch(app_get_device_orientation()) + { + case APP_DEVICE_ORIENTATION_0: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL"); + nCurRotateValue = VIDEO_ROTATE_PORTRAIT_NORMAL; + break; + + case APP_DEVICE_ORIENTATION_90: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE"); + nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_180: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL"); + nCurRotateValue = VIDEO_ROTATE_PORTRAIT_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_270: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE"); + nCurRotateValue = VIDEO_ROTATE_LANDSCAPE_NORMAL; + break; + } + } + return nCurRotateValue; +} + +int MpUtilGetRotationState(void) +{ + VideoLogInfo(""); + + return nCurRotateValue; +} + +void MpUtilSetRotationState(int nCurRotation) +{ + VideoLogInfo(""); + + nCurRotateValue = nCurRotation; + + if (pPopupWindow) { + MpUtilRotateWindow(nCurRotation, pPopupWindow); + } +} + +bool MpUtilGetTitleFromFilepath(char *szFilepath, char *szTitle, int nLengthTitle) +{ + VideoLogInfo(""); + + if (!szFilepath || !szTitle) { + VideoLogInfo("[ERR]"); + return FALSE; + } + + char *szTitleName; + char *szExt; + + memset(szTitle, 0, nLengthTitle); + + szTitleName = strrchr(szFilepath, '/'); + + if (szTitleName) + szTitleName++; + else + szTitleName = szFilepath; + + szExt = strrchr(szTitleName, '.'); + + if (szExt) { + int nTmpStringSize = szExt - szTitleName; + strncpy(szTitle, szTitleName, nTmpStringSize); + } else { + strncpy(szTitle, szTitleName, STR_LEN_MAX - 1); + } + + return TRUE; +} + +void MpUtilInitSession(void) +{ + VideoLogInfo(""); + + sound_manager_set_session_type(SOUND_SESSION_TYPE_EXCLUSIVE); +} + +void MpUtilFinishSession(void) +{ + VideoLogInfo(""); + //sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE); +} + +/* +void MpUtilVolumeTypeSet(void) +{ + VideoLogInfo(""); + + sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA); +} + +void MpUtilVolumeTypeUnset(void) +{ + VideoLogInfo(""); + + sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE); +} + +void MpUtilSetVolumeChangeCbUnset() +{ + VideoLogInfo(""); + + sound_manager_unset_volume_changed_cb(); +} +*/ + +void MpUtilDeletePopupHandle(void) +{ + VideoLogInfo(""); + + if (pPopUpHandle) { + evas_object_del(pPopUpHandle); + pPopUpHandle = NULL; + } else { + VideoLogInfo("No exist popup."); + } + + if (pPopupWindow) { + evas_object_del(pPopupWindow); + pPopupWindow = NULL; + } else { + VideoLogInfo("No exist popup window."); + } + + MpUtilSetAlphaOfMainWindow(TRUE); +} + +bool MpUtilNotifyPopUp(VideoAppData *pAppData, char *szContents, void *PopupButtonCallbackFunc) +{ + VideoLogInfo(""); + + if (pAppData == NULL || szContents == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(pPopUpHandle, szContents); + elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR); + elm_popup_timeout_set(pPopUpHandle, 3.0); + + if(PopupButtonCallbackFunc) + { + evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData); + } + + if(pPopupWindow) + { + MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +} + +bool MpUtilWarinigPopUp(VideoAppData *pAppData, char *szContents, + void *PopupButtonCallbackFunc) +{ + VideoLogInfo(""); + + if (pAppData == NULL || szContents == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(pPopUpHandle, szContents); + elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_POP_ERROR); + elm_popup_timeout_set(pPopUpHandle, 3.0); + + if (PopupButtonCallbackFunc) { + evas_object_smart_callback_add(pPopUpHandle, "timeout", PopupButtonCallbackFunc, (void *)pAppData); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +} + + +bool MpUtilYesNoPopUp(VideoAppData *pAppData, char *szTitle, char *szContents, void *PopupYesButtonCallbackFunc, void *PopupNoButtonCallbackFunc) +{ + VideoLogInfo(""); + + if(szTitle == NULL || szContents == NULL || pAppData == NULL) + { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + Evas_Object *pButton = NULL; + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(pPopUpHandle, szContents); + elm_object_part_text_set(pPopUpHandle, "title,text", szTitle); + + pButton = elm_button_add(pPopUpHandle); + elm_object_style_set ( pButton, "popup_button/default"); + elm_object_text_set(pButton, MP_COM_SK_YES); + elm_object_part_content_set(pPopUpHandle, "button1", pButton); + + if(PopupYesButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupYesButtonCallbackFunc, (void*)pAppData); + } + + pButton = elm_button_add(pPopUpHandle); + elm_object_text_set(pButton, MP_COM_SK_NO); + elm_object_style_set ( pButton, "popup_button/default"); + elm_object_part_content_set(pPopUpHandle, "button2", pButton); + + if(PopupNoButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupNoButtonCallbackFunc, (void*)pAppData); + } + + //elm_popup_timeout_set(pPopUpHandle, 3.0); + + evas_object_show(pPopUpHandle); + + return TRUE; +} + +bool MpUtilRemoveQuestionPopUp(VideoAppData *pAppData, void *PopupDeleteButtonCallbackFunc, void *PopupCancelButtonCallbackFunc, void *pUserData) +{ + VideoLogInfo(""); + + if(pAppData == NULL) + { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + Evas_Object *pButton = NULL; + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_text_set(pPopUpHandle, "title,text", MP_COM_BODY_DELETE_Q); + + pButton = elm_button_add(pPopUpHandle); + elm_object_text_set(pButton, MP_COM_BODY_DELETE); + elm_object_style_set(pButton, "sweep/delete"); + elm_object_part_content_set(pPopUpHandle, "button1", pButton); + + if(PopupDeleteButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupDeleteButtonCallbackFunc, pUserData); + } + + pButton = elm_button_add(pPopUpHandle); + elm_object_text_set(pButton, MP_COM_BUTTON_CANCEL); + elm_object_part_content_set(pPopUpHandle, "button2", pButton); + + if(PopupCancelButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupCancelButtonCallbackFunc, pUserData); + } + + //elm_popup_timeout_set(pPopUpHandle, 3.0); + + evas_object_show(pPopUpHandle); + + return TRUE; +} + +void MpUtilSetLabelForDetail(Evas_Object *pBox, char *szString) +{ + VideoLogInfo(""); + + Evas_Object *pLabel = NULL; + + pLabel = elm_label_add(pBox); + elm_object_style_set(pLabel, "popup/default"); + elm_object_text_set(pLabel, szString); + elm_label_ellipsis_set(pLabel, EINA_TRUE); + elm_label_wrap_width_set(pLabel, 614 * elm_config_scale_get()); + evas_object_size_hint_weight_set(pLabel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_min_set(pLabel, 614 * elm_config_scale_get(), 35 * elm_config_scale_get()); + elm_box_pack_end(pBox, pLabel); + evas_object_show(pLabel); +} + +/*bool MpUtilDetailPopup(VideoAppData *pAppData, int nVideoItemIndex, char *szTitle, void *PopupButtonCallbackFunc) +{ + VideoLogInfo(""); + + if(szTitle == NULL || pAppData == NULL) + { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + char *szFilePath = NULL; + char *szVideoTitle = NULL; + + char szTmpStr[STR_LEN_MAX] = {0}; + char szTmpFileDate[STR_LEN_MAX] = {0}; + char szTmpFileExtension[STR_LEN_MAX] = {0}; + char szTmpFileSize[STR_LEN_MAX] = {0}; + + double nLongtitude = 0.0; + double nLatitude = 0.0; + + int nWidth = 0; + int nHeight = 0; + + Evas_Object *pBox = NULL; + Evas_Object *pButton = NULL; + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + szFilePath = MpUtilMediaSvcGetVideoUrl(nVideoItemIndex); + szVideoTitle = MpUtilMediaSvcGetVideoTitle(nVideoItemIndex); + nWidth = MpUtilMediaSvcGetVideoItemWidth(nVideoItemIndex); + nHeight = MpUtilMediaSvcGetVideoItemHeight(nVideoItemIndex); + + MpVideoInfoCtrlGetFileInfo(szFilePath, szTmpFileDate, STR_LEN_MAX, szTmpFileExtension, STR_LEN_MAX, szTmpFileSize, STR_LEN_MAX); + MpVideoInfoCtrlGetGPS(szFilePath, &nLongtitude, &nLatitude); + + pBox = elm_box_add(pPopUpHandle); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s ", MP_COM_BODY_DETAILS_TITLE, szVideoTitle); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s", MP_COM_BODY_FORMAT, szTmpFileExtension); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s", MP_COM_POP_DATE, szTmpFileDate); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %s", MP_COM_BODY_SIZE, szTmpFileSize); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %d x %d", MP_IDLE_BODY_RESOLUTION, nWidth, nHeight); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %f", _(MP_VPL_GPS_LATITUDE), nLatitude); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + snprintf(szTmpStr, STR_LEN_MAX, " %s: %f", _(MP_VPL_GPS_LONGITUTD), nLongtitude); + MpUtilSetLabelForDetail(pBox, szTmpStr); + memset(szTmpStr, 0, STR_LEN_MAX); + + elm_object_content_set(pPopUpHandle, pBox); + + elm_object_part_text_set(pPopUpHandle, "title,text", szTitle); + pButton = elm_button_add(pPopUpHandle); + elm_object_style_set (pButton, "popup_button/default"); + elm_object_text_set(pButton, MP_COM_SK_BACK); + elm_object_part_content_set(pPopUpHandle, "button1", pButton); + + if(szFilePath) + { + free(szFilePath); + szFilePath = NULL; + } + + if(szVideoTitle) + { + free(szVideoTitle); + szVideoTitle = NULL; + } + + if(PopupButtonCallbackFunc) + { + evas_object_smart_callback_add(pButton, "clicked", PopupButtonCallbackFunc, (void*)pAppData); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +}*/ + +bool MpUtilProgressPopUp(VideoAppData *pAppData, char *szLabel) +{ + VideoLogInfo(""); + + if (pAppData == NULL || szLabel == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + MpUtilDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + pPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + evas_object_size_hint_weight_set(pPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + Evas_Object *progressbar, *box, *label; + + label = elm_label_add(pPopUpHandle); + elm_object_text_set(label, szLabel); + evas_object_show(label); + + progressbar = elm_progressbar_add(pPopUpHandle); + elm_object_style_set(progressbar, "pending_list"); + elm_progressbar_pulse(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_progressbar_pulse(progressbar, EINA_TRUE); + evas_object_show(progressbar); + + box = elm_box_add(pPopUpHandle); + elm_box_pack_end(box, label); + elm_box_pack_end(box, progressbar); + evas_object_show(box); + elm_object_content_set(pPopUpHandle, box); + + if (pPopupWindow) { + MpUtilRotateWindow(MpUtilGetRotationState(), pPopupWindow); + } + + evas_object_show(pPopUpHandle); + + return TRUE; +} + + +void *MpUtilCreateButtonIcon(void *pParent, const char *szIconPath, bool bSizeUp, bool bSizeDown, int nAspectWidth, int nAspectHeight, void *pUserData, char* szButtonStyle, void *func) +{ + VideoLogInfo(""); + + Evas_Object *pButton = NULL; + Evas_Object *pIcon = NULL; + + pButton = elm_button_add(pParent); + + if(szIconPath) + { + pIcon = elm_icon_add(pParent); + elm_image_file_set(pIcon, szIconPath, NULL); + //evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_VERTICAL, nAspectWidth, nAspectHeight); + evas_object_size_hint_aspect_set(pIcon, EVAS_ASPECT_CONTROL_NEITHER, nAspectWidth, nAspectHeight); + //elm_icon_resizable_set(pIcon, bSizeUp, bSizeDown); + } + + if(szButtonStyle) + { + elm_object_style_set(pButton, szButtonStyle); + } + + if(pIcon) + { + elm_object_part_content_set(pButton,PART_BUTTON_ICON, pIcon); + } + + if(func) + { + evas_object_smart_callback_add(pButton, "clicked", func, (void *)pUserData); + } + + elm_object_focus_allow_set(pButton, EINA_FALSE); + evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(pButton); + + return (void *)pButton; +} + +void *MpUtilCreateStyleButton(void *pParent, const char* szButtonText, const void *pUserData, char* szButtonStyle, void *func) +{ + VideoLogInfo(""); + + Evas_Object *pButton = NULL; + + pButton = elm_button_add(pParent); + + if(szButtonStyle) + { + elm_object_style_set(pButton, szButtonStyle); + } + + if(szButtonText) + { + elm_object_text_set(pButton, szButtonText); + } + + if(func) + { + evas_object_smart_callback_add(pButton, "clicked", func, pUserData); + } + + elm_object_focus_allow_set(pButton, EINA_FALSE); + evas_object_size_hint_weight_set(pButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(pButton); + + return (void *)pButton; +} + +void *MpUtilLoadEdjFile(Evas * pEvas, char *szEdjName, char *szGroupName) +{ + VideoLogInfo(""); + + Evas_Object *pEdj = NULL; + int nWidth = 0; + int nHeight = 0; + + pEdj = edje_object_add(pEvas); + if (!edje_object_file_set(pEdj, szEdjName, szGroupName)) { + VideoLogInfo("[ERR] EDJ file error : %s | %s\n", szEdjName, + szGroupName); + return NULL; + } + + edje_object_size_min_get(pEdj, &nWidth, &nHeight); + evas_object_resize(pEdj, nWidth, nHeight); + + return (void *)pEdj; +} + +bool MpUtilIsCallOff(void) +{ + VideoLogInfo(""); + + int nCallStatus = 0; + + if (!vconf_get_int(VCONFKEY_CALL_STATE, &nCallStatus)) { + if (nCallStatus == VCONFKEY_CALL_OFF) + { + VideoLogInfo("Call off"); + return TRUE; + } + else + { + VideoLogInfo("!!! CALL ON !!!"); + return FALSE; + } + } + + return TRUE; +} + +bool MpUtilIsCameraOff(void) +{ + VideoLogInfo(""); + + int nCameraStatus = 0; + + if (!vconf_get_int(VCONFKEY_CAMERA_STATE, &nCameraStatus)) { + if (nCameraStatus == VCONFKEY_CAMERA_STATE_NULL) + { + VideoLogInfo("Camera off"); + return TRUE; + } + else + { + VideoLogInfo("!!! CAMERA ON !!!"); + } + } + + return FALSE; +} + +bool MpUtilRegisteCameraStatusCbFunc(void *pCameraStatusCb, void *pUserData) +{ + if (!pCameraStatusCb) { + VideoLogInfo("pEarjackCb is empty."); + return FALSE; + } + + VideoLogInfo(""); + + vconf_notify_key_changed(VCONFKEY_CAMERA_STATE, pCameraStatusCb, pUserData); + + return TRUE; +} + +bool MpUtilIsConnectEarjack(void) +{ + VideoLogInfo(""); + + int nEarjack = 0; + + if (!vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &nEarjack)) { + if (nEarjack) { + return TRUE; + } + } + + return FALSE; +} + +bool MpUtilRegisteEarjackCbFunc(void *pEarjackCb, void *pUserData) +{ + if (!pEarjackCb) { + VideoLogInfo("pEarjackCb is empty."); + return FALSE; + } + + VideoLogInfo(""); + + vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, pEarjackCb, pUserData); + + return TRUE; +} + +bool MpUtilSetPreviewUrlVideos(char* szPreviewUrl) +{ + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("[ERR]"); + } + + VideoLogInfo("szPreviewUrl : %s", szPreviewUrl); + + bool bRet = FALSE; + + if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS, szPreviewUrl)) + { + VideoLogInfo("Fail to write szPreviewUrl."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to write it."); + bRet = TRUE; + } + + return bRet; +} + +bool MpUtilGetPreviewUrlVideos(char* szRetPreviewUrl, int nStrSize) +{ + if(!szRetPreviewUrl) + { + VideoLogInfo("[ERR]"); + } + else + { + memset(szRetPreviewUrl, 0, nStrSize); + } + + VideoLogInfo(""); + + bool bRet = FALSE; + char *szPreviewUrl = NULL; + + + szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_VIDEOS); + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("Fail to get szPreviewUrl from vconf register."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl); + strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1); + free(szPreviewUrl); + bRet = TRUE; + } + + return bRet; +} + +bool MpUtilSetPreviewUrlRecords(char* szPreviewUrl) +{ + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("[ERR]"); + } + + VideoLogInfo(""); + + bool bRet = FALSE; + + if(vconf_set_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS, szPreviewUrl)) + { + VideoLogInfo("Fail to write szPreviewUrl."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to write it."); + bRet = TRUE; + } + + return bRet; +} + +bool MpUtilGetPreviewUrlRecords(char* szRetPreviewUrl, int nStrSize) +{ + if(!szRetPreviewUrl) + { + VideoLogInfo("[ERR]"); + } + else + { + memset(szRetPreviewUrl, 0, nStrSize); + } + + VideoLogInfo(""); + + bool bRet = FALSE; + char *szPreviewUrl = NULL; + + + szPreviewUrl = vconf_get_str(MP_UTIL_VCONF_KEY_PREVIEW_URL_RECORDS); + if(!szPreviewUrl || strlen(szPreviewUrl) <= 0) + { + VideoLogInfo("Fail to get szPreviewUrl from vconf register."); + bRet = FALSE; + } + else + { + VideoLogInfo("Success to get szPreviewUrl. : %s", szPreviewUrl); + strncpy(szRetPreviewUrl, szPreviewUrl, nStrSize - 1); + free(szPreviewUrl); + bRet = TRUE; + } + + return bRet; +} + +unsigned int MpUtilGetMainWindowXID(void) +{ + VideoLogInfo(""); + if (pMainXwindow) { + VideoLogInfo("pMainXwindow : %d", pMainXwindow); + return pMainXwindow; + } else { + VideoLogInfo("No exist main window XID."); + } + return 0; +} + +void MpUtilRotateWindow(int nRotateMode, void *pWindowHandle) +{ + VideoLogInfo(""); + + if (!pWindowHandle) { + return; + } + + switch (nRotateMode) { + case VIDEO_ROTATE_UNKNOWN: + VideoLogInfo("VIDEO_ROTATE_UNKNOWN"); + elm_win_rotation_with_resize_set(pWindowHandle, 0); + break; + + case VIDEO_ROTATE_PORTRAIT_NORMAL: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL"); + elm_win_rotation_with_resize_set(pWindowHandle, 0); + break; + + case VIDEO_ROTATE_LANDSCAPE_NORMAL: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL"); + elm_win_rotation_with_resize_set(pWindowHandle, 270); + break; + + case VIDEO_ROTATE_PORTRAIT_REVERSE: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE"); + elm_win_rotation_with_resize_set(pWindowHandle, 180); + break; + + case VIDEO_ROTATE_LANDSCAPE_REVERSE: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE"); + elm_win_rotation_with_resize_set(pWindowHandle, 90); + break; + + default: + VideoLogInfo("DEFAULT - VIDEO_ROTATE_UNKNOWN"); + elm_win_rotation_with_resize_set(pWindowHandle, 0); + break; + } +} + +void MpUtilGetUserAgent(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + int nWifiMode = 0; + + char *szUserAgent = NULL; + szUserAgent = vconf_get_str(VCONFKEY_ADMIN_UAGENT); + if(szUserAgent) + { + memset(pAppData->szUserAgent, 0, STR_LEN_MAX); + strncpy(pAppData->szUserAgent, szUserAgent, STR_LEN_MAX - 1); + free(szUserAgent); + } + else + { + VideoLogInfo("!!!!! NO EXIST USER AGENT !!!!!"); + } + +#if 0 + memset(pAppData->szUserAgent, 0, STR_LEN_MAX); + snprintf(pAppData->szUserAgent, STR_LEN_MAX, "%s", MP_UTIL_TEMP_USER_AGENT_VALUE); +#endif + + if(!vconf_get_int(VCONFKEY_WIFI_STATE, &nWifiMode)) + { + VideoLogInfo("User Agent : %s, Wi-Fi : %d", pAppData->szUserAgent, nWifiMode); + } + +} + +double MpUtilGetSysTime(void) +{ + struct timeval tv; + + gettimeofday(&tv, NULL); + return (double)tv.tv_sec + (double)tv.tv_usec / 1E6; +} + +void MpUtilLcdNormalPowerLockForResume(void) +{ + VideoLogInfo(""); + + pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW | HOLD_KEY_BLOCK, 0); +} + +void MpUtilLcdNormalPowerUnlockForPause(void) +{ + VideoLogInfo(""); + + pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER); +} + +void MpUtilLcdOffForPowerButton(void) +{ + VideoLogInfo(""); + + pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER); +} + +void MpUtilMultimediaKeyGrab(void) +{ + VideoLogInfo(""); + MpUtilSetKeyGrab(PLAY_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(STOP_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(PAUSE_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(NEXT_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(PREV_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(REWIND_KEY, KEY_GRAB_OR_EXCLUSIVE); + MpUtilSetKeyGrab(FORWARD_KEY, KEY_GRAB_OR_EXCLUSIVE); +} + +void MpUtilMultimediaKeyUngrab(void) +{ + VideoLogInfo(""); + + MpUtilSetKeyUngrab(PAUSE_KEY); + MpUtilSetKeyUngrab(PLAY_KEY); + MpUtilSetKeyUngrab(STOP_KEY); + MpUtilSetKeyUngrab(NEXT_KEY); + MpUtilSetKeyUngrab(PREV_KEY); + MpUtilSetKeyUngrab(FORWARD_KEY); + MpUtilSetKeyUngrab(REWIND_KEY); + +} + +void MpUtilMultimediaVolumeKeyGrab(void) +{ + VideoLogInfo(""); + + MpUtilSetKeyGrab(VOLUME_UP_KEY, KEY_GRAB_EXCLUSIVE); + MpUtilSetKeyGrab(VOLUME_DOWN_KEY, KEY_GRAB_EXCLUSIVE); + + int nRet = 0; + nRet = vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1); + if(nRet != 0) + { + VideoLogError("VCONFKEY_STARTER_USE_VOLUME_KEY set fail: %d", nRet); + } +} +void MpUtilMultimediaVolumeKeyUngrab(void) +{ + VideoLogInfo(""); + + MpUtilSetKeyUngrab(VOLUME_UP_KEY); + MpUtilSetKeyUngrab(VOLUME_DOWN_KEY); +} + +/* +bool MpUtilSbeamIsActive(void) +{ + VideoLogInfo("bIsActiveNfcSbeam : %d", bIsActiveNfcSbeam); + + return bIsActiveNfcSbeam; +} + +void MpUtilSbeamP2pTargetDiscoveredCb(nfc_discovered_type_e nType, nfc_p2p_target_h pTarget, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("User data is NULL."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if(nType == NFC_DISCOVERED_TYPE_ATTACHED) + { + VideoLogInfo("NFC_DISCOVERED_TYPE_ATTACHED"); + + if(bIsActiveNfcSbeam) + { + char szWindowId[STR_LEN_MAX] = {0}; + + if(strlen(pAppData->szMediaUri) <= 0) + { + VideoLogInfo("[ERR]No exist media uri."); + return; + } + + service_h svc_handle; + service_create(&svc_handle); + snprintf(szWindowId, STR_LEN_MAX-1, "%d", elm_win_xwindow_get(pAppData->pMainWindow)); + + service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/nfc_sbeam_send"); + service_set_mime(svc_handle, "text/DirectShareVideos"); + service_set_window(svc_handle, elm_win_xwindow_get(pAppData->pMainWindow)); + service_set_uri(svc_handle, pAppData->szMediaUri); + service_send_launch_request(svc_handle, NULL, NULL); + service_destroy(svc_handle); + } + else + { + VideoLogInfo("bIsActiveNfcSbeam is NULL."); + } + } +} + +void MpUtilSbeamInit(void* pUserData) +{ + if(!pUserData) + { + VideoLogInfo("User data is NULL."); + return; + } + + VideoLogInfo(""); + + int bSbeamState = VCONFKEY_NFC_SBEAM_OFF; + + if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0) + { + VideoLogInfo("Fail to get value."); + } + else + { + if(bSbeamState != VCONFKEY_NFC_SBEAM_ON) + { + VideoLogInfo("Off state about nfc sbeam"); + return; + } + } + + if(bIsActiveNfcSbeam == FALSE) + { + if(nfc_manager_initialize(NULL, NULL) != NFC_ERROR_NONE) + { + VideoLogInfo("[Err] Fail to initialize nfc manager."); + return; + } + + nfc_manager_set_p2p_target_discovered_cb(MpUtilSbeamP2pTargetDiscoveredCb, pUserData); + + bIsActiveNfcSbeam = TRUE; + } + else + { + VideoLogInfo("Already set sbeam activation."); + } +} + +void MpUtilSbeamDeinit(void) +{ + VideoLogInfo(""); + + int bSbeamState = VCONFKEY_NFC_SBEAM_OFF; + + if(vconf_get_bool(VCONFKEY_NFC_SBEAM, &bSbeamState) != 0) + { + VideoLogInfo("Fail to get value."); + } + else + { + if(bSbeamState != VCONFKEY_NFC_SBEAM_ON) + { + VideoLogInfo("Off state about nfc sbeam"); + return; + } + } + + if(bIsActiveNfcSbeam == TRUE) + { + if(nfc_manager_deinitialize() != NFC_ERROR_NONE) + { + VideoLogInfo("[Err] Fail to deinitialize nfc manager."); + } + + bIsActiveNfcSbeam = FALSE; + } + else + { + VideoLogInfo("Already set sbeam unactivation."); + } +} +*/ + +char* MpUtilGetFileSize(unsigned int size) +{ + VideoLogInfo(""); + +#define FILE_SIZE_LEN_MAX 64 +#define BASIC_SIZE 1024 //used for file size check + +enum VIDEO_PLAYER_FILE_SIZE_TYPE +{ + SIZE_BYTE = 0, + SIZE_KB, + SIZE_MB, + SIZE_GB +}; + + int nCount = 0; + + char *pTmp = (char *)calloc(1, sizeof(char) * FILE_SIZE_LEN_MAX + 1); + if(pTmp == NULL) + { + return NULL; + } + + while(size >= (BASIC_SIZE)) + { + size /= BASIC_SIZE; + nCount++; + } + + if(nCount == SIZE_BYTE) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuB", size); + } + else if(nCount == SIZE_KB) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuKB", size); + } + else if(nCount == SIZE_MB) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", size); + } + else if(nCount == SIZE_GB) + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuGB", size); + } + else + { + snprintf(pTmp, FILE_SIZE_LEN_MAX,"%zuMB", 0); + } + + VideoLogInfo("Size=%s", pTmp); + + return pTmp; +} + +void MpUtilConvertTime(int nVideoTime, char* szRetTime, bool bIsHideHour) +{ +#define VIDEO_TIME_MSEC_PER_SEC 1000 +#define VIDEO_TIME_SEC_PER_MIN 60 +#define VIDEO_TIME_MIN_PER_HOUR 60 +#define VIDEO_TIME_SEC_PER_HOUR (VIDEO_TIME_MIN_PER_HOUR * VIDEO_TIME_SEC_PER_MIN) + + if(!szRetTime) + { + VideoLogInfo("[ERR] No exist szRetTime pointer."); + return; + } + else + { + memset(szRetTime, 0, STR_LEN_MAX); + } + + if(nVideoTime <= 0) + { + VideoLogInfo("nVideoTime : %d", nVideoTime); + } + + int nTime = floor(nVideoTime / VIDEO_TIME_MSEC_PER_SEC); + int nHour = 0; + int nMin = 0; + int nSec = 0; + int nTmp = 0; + + if (nTime >= VIDEO_TIME_SEC_PER_HOUR) + { + nSec = nTime % VIDEO_TIME_SEC_PER_MIN; + nTmp = floor(nTime / VIDEO_TIME_SEC_PER_MIN); + nMin = nTmp % VIDEO_TIME_MIN_PER_HOUR; + nHour = floor(nTmp / VIDEO_TIME_MIN_PER_HOUR); + } + else if (nTime >= VIDEO_TIME_SEC_PER_MIN) + { + nHour = 0; + nMin = floor(nTime / VIDEO_TIME_SEC_PER_MIN); + nSec = nTime % VIDEO_TIME_SEC_PER_MIN; + } + else + { + nHour = 0; + nMin = 0; + nSec = nTime % VIDEO_TIME_SEC_PER_MIN; + } + + if(bIsHideHour) + { + if(nHour) + { + snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec); + } + else + { + snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d", nMin, nSec); + } + } + else + { + snprintf(szRetTime, STR_LEN_MAX - 1, "%02d:%02d:%02d", nHour, nMin, nSec); + } + + szRetTime[strlen(szRetTime)] = '\0'; + + VideoLogInfo("szRetTime : %s", szRetTime); +} + +void MpUtilLayoutVisibleOff(void *pWindowHandle) +{ + VideoLogInfo(""); + + if(pWindowHandle == NULL) + { + VideoLogError("Window handle is NULL"); + return; + } + + if(pX11DisplayHandle == NULL) + { + VideoLogError("Display handle is NULL"); + return; + } + + if (!strcmp ("mobile", elm_win_profile_get (pWindowHandle))) + { + utilx_set_fb_visible (pX11DisplayHandle, UTILX_FB_TYPE_UI, FALSE); + } + else + { + VideoLogError("Skip for Desktop mode : %s", elm_win_profile_get (pWindowHandle)); + } + return; +} \ No newline at end of file diff --git a/src/mp-video-animation-ctrl.c b/src/mp-video-animation-ctrl.c new file mode 100755 index 0000000..793f815 --- /dev/null +++ b/src/mp-video-animation-ctrl.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-value-define.h" +#include "mp-video-animation-ctrl.h" + +#define BUFFERING_TXT_MAX_LEN 16 + +static Evas_Object *pAnimationEdj = NULL; +static Ecore_Timer *pAnimationTimer = NULL; + +static int nIconIndex = 0; + +static Eina_Bool MpVideoAnimationCtrlTimerCb(void *data) +{ +/* VideoLogInfo(""); */ + + char sig_format[SIGNAL_TEXT_MAX_LEN] = { 0, }; + + snprintf(sig_format, SIGNAL_TEXT_MAX_LEN, "%s.%d", + SIGNAL_ANIMATION_IMAGE_LOADING, nIconIndex); + + edje_object_signal_emit(pAnimationEdj, sig_format, "*"); + + nIconIndex += 1; + if (nIconIndex > ANIMATION_MAX_COUNT) + nIconIndex = 1; + + return EINA_TRUE; +} + +void *MpVideoAnimationCtrlInit(void *pUserData) +{ + VideoLogInfo(""); + + if (pUserData == NULL) { + VideoLogInfo("data is NULL"); + return NULL; + } + + Evas *pMainWindowEvas = (Evas *) pUserData; + + pAnimationEdj = MpUtilLoadEdjFile(pMainWindowEvas, + VIDEO_PLAYER_ANIMATION_EDJ, + ANIMATION_EDJ_GROUP); + + evas_object_hide(pAnimationEdj); + + return (void *)pAnimationEdj; +} + +void MpVideoAnimationCtrlDestroy(void) +{ + VideoLogInfo(""); + + if (pAnimationTimer) { + ecore_timer_del(pAnimationTimer); + pAnimationTimer = NULL; + } + + if (pAnimationEdj) { + evas_object_hide(pAnimationEdj); + evas_object_del(pAnimationEdj); + pAnimationEdj = NULL; + } + + nIconIndex = 0; +} + +void MpVideoAnimationCtrlSetPercent(int nPercent) +{ + VideoLogInfo(""); + if (nPercent >= 0) { + char szBuffering[BUFFERING_TXT_MAX_LEN] = { 0, }; + + snprintf(szBuffering, BUFFERING_TXT_MAX_LEN, "Loading %d%%...", + nPercent); + edje_object_part_text_set(pAnimationEdj, "loading.txt", + szBuffering); + } else { + edje_object_part_text_set(pAnimationEdj, "loading.txt", + "Loading..."); + } +} + +void MpVideoAnimationCtrlPlay(void) +{ + VideoLogInfo(""); + if (pAnimationTimer == NULL) { + pAnimationTimer = ecore_timer_add(ANIMATION_TIMER_INTERVAL, + MpVideoAnimationCtrlTimerCb, + NULL); + } +} + +void MpVideoAnimationCtrlStop(void) +{ + VideoLogInfo(""); + + if (pAnimationTimer) { + ecore_timer_del(pAnimationTimer); + pAnimationTimer = NULL; + } +} + +void MpVideoAnimationCtrlShow(void) +{ + VideoLogInfo(""); + + if (pAnimationTimer == NULL) { + MpVideoAnimationCtrlPlay(); + MpVideoAnimationCtrlSetPercent(-1); + evas_object_show(pAnimationEdj); + } +} + +void MpVideoAnimationCtrlHide(void) +{ + VideoLogInfo(""); + + MpVideoAnimationCtrlStop(); + evas_object_hide(pAnimationEdj); +} + +bool MpVideoAnimationCtrlGetActiveState(void) +{ + VideoLogInfo(""); + if (pAnimationTimer) + return true; + else + return false; +} diff --git a/src/mp-video-app-ctrl.c b/src/mp-video-app-ctrl.c new file mode 100755 index 0000000..a837ebe --- /dev/null +++ b/src/mp-video-app-ctrl.c @@ -0,0 +1,1368 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-video-app-ctrl.h" +#include "mp-video-view-mgr.h" +#include "mp-util-media-service.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-streaming-ctrl.h" +#include "mp-external-ug.h" +#include "mp-video-ctrl-mgr.h" +#include "mp-video-service-ctrl.h" + +static int nPlayerErrorType = 0; +static int nPlayerInterruptType = 0; +static int nBufferingRate = 0; +static bool bWindowForegroundState = FALSE; + +static MpPlayerInterrupteType g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED; + +static Ecore_Pipe *pEcorePipeHandleForErrorMsg = NULL; +static Ecore_Pipe *pEcorePipeHandleBOF = NULL; +static Ecore_Pipe *pEcorePipeHandleEOF = NULL; +static Ecore_Pipe *pEcorePipeHandleForBuffering = NULL; +static Ecore_Pipe *pEcorePipeHandleForResumed = NULL; +static Ecore_Pipe *pEcorePipeHandleForInterruped = NULL; +static Ecore_Pipe *pEcorePipeHandlerForSeekComplete = NULL; + + +static void MpVideoAppCtrlStart(VideoAppData *pAppData); +static void MpVideoAppCtrlStop(VideoAppData *pAppData); +static void MpVideoAppCtrlPause(VideoAppData *pAppData); +static void MpVideoAppCtrlResume(VideoAppData *pAppData); +static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData); +static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData); +static void MpVideoAppCtrlFFDown(VideoAppData *pAppData); +static void MpVideoAppCtrlRewDown(VideoAppData *pAppData); +static void MpVideoAppCtrlFFUp(VideoAppData *pAppData); +static void MpVideoAppCtrlRewUp(VideoAppData *pAppData); +static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData); +static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData); +static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData); +static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState); +static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData); +static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData); +static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData); +static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData); +static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData); +static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData); +static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData); +static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData); +static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData); +static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData); +static void MpVideoAppCtrlExit(VideoAppData *pAppData); +static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData); +static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData); +static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData); +static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData); +static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData); +static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData); + + +/* + * Callback function + */ + +static void MpVideoAppCtrlUnSupportFormatErrorCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpUtilLcdNormalPowerUnlockForPause(); + + MpVideoAppCtrlEndOfStream(pAppData); +} + + +static void MpVideoAppCtrlExitCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); +} + +static int MpVideoAppCtrlPauseByInterrupteCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoAppCtrlPause(pAppData); + + g_nCurrentInterrupt = nPlayerInterruptType; + + switch(nPlayerInterruptType) + { + case MP_PLAYER_INTERRUPTED_COMPLETED: + VideoLogInfo("MP_PLAYER_INTERRUPTED_COMPLETED"); + break; + + case MP_PLAYER_INTERRUPTED_BY_OTHER_APP: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_OTHER_APP"); + break; + + case MP_PLAYER_INTERRUPTED_BY_CALL: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_CALL"); + break; + + case MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG"); + break; + + case MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT"); + break; + + case MP_PLAYER_INTERRUPTED_BY_ALARM: + VideoLogInfo("MP_PLAYER_INTERRUPTED_BY_ALARM"); + break; + + default: + VideoLogInfo("OTHER"); + break; + } + + return 0; +} + +static int MpVideoAppCtrlBeginOfPlayCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoCtrlMgrMediaPlay((void *)pAppData); + + pAppData->bStartSeek = FALSE; + + if(pAppData->nSetPosition > 0) + { + VideoLogInfo("Start position time : %dms", pAppData->nSetPosition); + MpVideoAppCtrlSetPosition(pAppData); + } + + } + else + { + pAppData->bStartSeek = FALSE; + if(pAppData->nSetPosition > 0) + { + VideoLogInfo("Pending seek position time : %dms", pAppData->nSetPosition); + MpVideoAppCtrlSetPosition(pAppData); + pAppData->bStartSeek = TRUE; + } + + if(MpVideoViewCtrlIsPauseByUser((void *)pAppData)) + { + MpVideoCtrlMgrSetMute(TRUE); + } + + if(!pAppData->bStartSeek) + { + MpVideoCtrlMgrMediaPlay((void *)pAppData); + } + } + + MpVideoAppCtrlBeginOfStream(pAppData); + MpUtilLcdNormalPowerLockForResume(); + + return 0; +} + +static int MpVideoAppCtrlEndOfPlayCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoViewCtrlPause(pAppData); + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + + MpUtilLcdNormalPowerUnlockForPause(); + + MpVideoAppCtrlEndOfStream(pAppData); + + return 0; +} + +static int MpVideoAppCtrlBufferingCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return 0; + } + + if(nBufferingRate < 10) + { + MpVideoAppCtrlShowLayout((VideoAppData *)pUserData); + } + + MpVideoViewSetBufferingRateForStreamingView(nBufferingRate, pUserData); + + return 0; +} + +static int MpVideoAppCtrlSeekCompletePipeCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->bStartSeek) + { + MpVideoCtrlMgrMediaPlay((void *)pAppData); + MpVideoAppCtrlBeginOfStream(pAppData); + MpUtilLcdNormalPowerLockForResume(); + pAppData->bStartSeek = FALSE; + } + + pAppData->bSeekComplete = TRUE; + + if(pAppData->nSeekPosition > 0) { + pAppData->nSetPosition = pAppData->nSeekPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + pAppData->nSeekPosition = 0; + MpVideoViewCtrlUpdateProgressbar((void *)pAppData); + return 0; + } + + if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_PAUSE) { + VideoLogInfo(""); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE; + } + else if(pAppData->nSeekPlayerState == MP_PLAYER_STATE_RESUME) { + VideoLogInfo(""); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nSeekPlayerState = MP_PLAYER_STATE_WAIT_FOR_RESPONSE; + } + + return 0; +} + +static void MpVideoAppCtrlSeekCompleteCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoLogInfo(""); + VideoAppData *pAppData = (VideoAppData *)pUserData; + if(pEcorePipeHandlerForSeekComplete) + { + if(!ecore_pipe_write(pEcorePipeHandlerForSeekComplete, (void *)pAppData, sizeof(VideoAppData))) + { + VideoLogDebug("Fail to write MpVideoAppCtrlSeekCompleteCb."); + } + } +} + + +static int MpVideoAppCtrlResumeByRewCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoAppCtrlResume(pAppData); + + return 0; +} + +static int MpVideoAppCtrlErrormsgCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoLogInfo(""); + + switch(MpVideoCtrlMgrGetErrorType(nPlayerErrorType)) + { + case MP_PLAYER_ERROR_NONE: + VideoLogInfo("MP_PLAYER_ERROR_NONE"); + break; + + case MP_PLAYER_ERROR_OUT_OF_MEMORY: + VideoLogInfo("MP_PLAYER_ERROR_OUT_OF_MEMORY"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_INVALID_PARAMETER: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_PARAMETER"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_NO_SUCH_FILE: + VideoLogInfo("MP_PLAYER_ERROR_NO_SUCH_FILE"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_FILE_NOT_FOUND, MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_INVALID_OPERATION: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_OPERATION"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb); + break; + + case MP_PLAYER_ERROR_SEEK_FAILED: + VideoLogInfo("MP_PLAYER_ERROR_SEEK_FAILED"); + break; + + case MP_PLAYER_ERROR_INVALID_STATE: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_STATE"); + break; + + case MP_PLAYER_ERROR_NOT_SUPPORTED_FILE: + VideoLogInfo("MP_PLAYER_ERROR_NOT_SUPPORTED_FILE"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_POP_UNSUPPORTED_FILE_TYPE), MpVideoAppCtrlUnSupportFormatErrorCb); + break; + + case MP_PLAYER_ERROR_INVALID_URI: + VideoLogInfo("MP_PLAYER_ERROR_INVALID_URI"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_INVALID_URL, MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_SOUND_POLICY: + VideoLogInfo("MP_PLAYER_ERROR_SOUND_POLICY"); + break; + + case MP_PLAYER_ERROR_CONNECTION_FAILED: + VideoLogInfo("MP_PLAYER_ERROR_CONNECTION_FAILED"); + MpUtilNotifyPopUp((VideoAppData*)pUserData, MP_COM_POP_CONNECTION_FAILED, MpVideoAppCtrlExitCb); + break; + + case MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED: + VideoLogInfo("MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED"); + break; + + default: + MpUtilNotifyPopUp((VideoAppData*)pUserData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlExitCb); + break; + } + + return 0; +} + +static void MpVideoAppCtrlPlayerPrepareCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandleBOF) + { + if(!ecore_pipe_write(pEcorePipeHandleBOF, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerCompletedCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandleEOF) + { + if(!ecore_pipe_write(pEcorePipeHandleEOF, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerInterruptedCb(player_interrupted_code_e nInterruptCode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + nPlayerInterruptType = nInterruptCode; + + if(pEcorePipeHandleForInterruped) + { + if(!ecore_pipe_write(pEcorePipeHandleForInterruped, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerErrorCb(int nPlayerErrorCode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + nPlayerErrorType = nPlayerErrorCode; + + if(pEcorePipeHandleForErrorMsg) + { + if(!ecore_pipe_write(pEcorePipeHandleForErrorMsg, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerBufferingCb(int nPercent, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo("Buffering : %d%% ", nPercent); + + nBufferingRate = nPercent; + + if(pEcorePipeHandleForBuffering) + { + if(!ecore_pipe_write(pEcorePipeHandleForBuffering, pUserData, sizeof(VideoAppData))) + { + VideoLogDebug("FAIL PIPE WRITE"); + } + } +} + +static void MpVideoAppCtrlPlayerUpdateSubtitleCb(unsigned long nDuration, char* szText, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); +} + +/* + * Internal function + */ +void MpVideoAppCtrlFuncInit(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + if(!pAppData) + { + VideoLogInfo("[ERR]"); + return; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStart = (void *)MpVideoAppCtrlStart; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStop = (void *)MpVideoAppCtrlStop; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause = (void *)MpVideoAppCtrlPause; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume = (void *)MpVideoAppCtrlResume; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause = (void *)MpVideoAppCtrlStopByAppPause; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume = (void *)MpVideoAppCtrlStartByAppResume; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFDown = (void *)MpVideoAppCtrlFFDown; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewDown = (void *)MpVideoAppCtrlRewDown; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlFFUp = (void *)MpVideoAppCtrlFFUp; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRewUp = (void *)MpVideoAppCtrlRewUp; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF = (void *)MpVideoAppCtrlSpeedFF; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew = (void *)MpVideoAppCtrlSpeedRew; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset = (void *)MpVideoAppCtrlSpeedReset; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen = (void *)MpVideoAppCtrlRotateScreen; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition = (void *)MpVideoAppCtrlGetPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition = (void *)MpVideoAppCtrlSetPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout = (void *)MpVideoAppCtrlHideLayout; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout = (void *)MpVideoAppCtrlShowLayout; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish = (void *)MpVideoAppCtrlHideFinish; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish = (void *)MpVideoAppCtrlShowFinish; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetVideoResolution = (void *)MpVideoAppCtrlGetVideoResolution; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime = (void *)MpVideoAppCtrlReqDurationTime; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlBeginOfStream = (void *)MpVideoAppCtrlBeginOfStream; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlEndOfStream = (void *)MpVideoAppCtrlEndOfStream; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit = (void *)MpVideoAppCtrlExit; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartStreaming = (void *)MpVideoAppCtrlStartStreaming; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching = (void *)MpVideoAppCtrlReLaunching; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition = (void *)MpVideoAppCtrlGetBufferingPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume = (void *)MpVideoAppCtrlShowVolume; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume = (void *)MpVideoAppCtrlHideVolume; +} + +static void MpVideoAppCtrlGetBufferingPosition(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("Skip Normal Play mode"); + return; + } + + if(MpUtilCheckRTSPType(pAppData->szMediaUri)) + { + return; + } + + pAppData->nBufferingPosition = MpVideoCtrlMgrGetBufferingPosition(); +} + +static void MpVideoAppCtrlStart(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + if(!MpUtilCheckLocalFileExist(pAppData->szMediaUri)) + { + MpUtilNotifyPopUp(pAppData, MP_COM_POP_FILE_NOT_EXIST, MpVideoAppCtrlExitCb); + return; + } + + MpUtilGetTitleFromFilepath(pAppData->szMediaUri, pAppData->szVideoTitle, STR_LEN_MAX); + MpVideoViewCtrlChangeTitle(pAppData); + MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, + (void *)MpUtilGetMainWindowXID(), + NULL, + pAppData->szSubtitle, + (void *)pAppData); + + MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb, + MpVideoAppCtrlPlayerInterruptedCb, + MpVideoAppCtrlPlayerErrorCb, + MpVideoAppCtrlPlayerBufferingCb, + MpVideoAppCtrlPlayerUpdateSubtitleCb, + (void*)pAppData); + + if(!MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData)) + { + MpUtilNotifyPopUp(pAppData, _(MP_VPL_UNABLE_TO_PLAY_VIDEO), MpVideoAppCtrlUnSupportFormatErrorCb); + return; + } + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + if(!MpVideoStreamingCtrlIsNetworkOn()) + { + MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoAppCtrlExitCb); + return; + } + + if(MpVideoStreamingCtrlInit((void *)pAppData)) + { + VideoLogInfo("Connect to network."); + MpVideoAppCtrlStartStreaming((void *)pAppData); + } + } +} + +static void MpVideoAppCtrlStop(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP; + MpVideoCtrlMgrMediaStop((void *)pAppData); +} + +static void MpVideoAppCtrlPause(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) + { + VideoLogInfo("Allready Pause video player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE; + + MpVideoCtrlMgrMediaPause(pAppData); + MpVideoViewCtrlPause(pAppData); + MpVideoAppCtrlShowLayout(pAppData); + MpUtilLcdNormalPowerUnlockForPause(); +} + +static void MpVideoAppCtrlResume(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(MpVideoViewCtrlIsPauseByUser((void *)pAppData)) + { + return; + } + + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) + { + VideoLogInfo("Allready Resume video player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME; + MpUtilMultimediaKeyGrab(); + + MpVideoAppCtrlGetPosition(pAppData); + MpVideoCtrlMgrMediaResume(pAppData); + MpVideoViewCtrlResume(pAppData); + MpVideoAppCtrlShowLayout(pAppData); + MpUtilLcdNormalPowerLockForResume(); +} + +static void MpVideoAppCtrlStopByAppPause(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + if(!MpVideoCtrlMgrIsExistPlayerHandle()) + { + VideoLogInfo("Not exist Player handle."); + return; + } + + VideoLogInfo(""); + + MpVideoAppCtrlGetPosition(pAppData); + pAppData->nSetPosition = pAppData->nCurPosition; + VideoLogInfo("Current position time : %d", pAppData->nSetPosition); + MpVideoViewCtrlPause(pAppData); + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + MpUtilLcdNormalPowerUnlockForPause(); + + MpVideoViewCtrlResetProgressBar((void *)pAppData); + + MpUtilMultimediaKeyUngrab(); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoViewSetBufferingRateForStreamingView(0, (void *)pAppData); + } +} + +static void MpVideoAppCtrlStartByAppResume(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(bWindowForegroundState == FALSE) + { + VideoLogInfo("The Window of the video player is hided."); + } + + MpVideoAppCtrlStart(pAppData); + MpVideoViewCtrlResume(pAppData); + MpVideoAppCtrlShowLayout(pAppData); + + return; +} + +static void MpVideoAppCtrlFFDown(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlRewDown(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlFFUp(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlRewUp(VideoAppData *pAppData) +{ + VideoLogInfo(""); +} + +static void MpVideoAppCtrlRotateScreen(VideoAppData *pAppData, int nRotateState) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(VIDEO_ROTATE_UNKNOWN > nRotateState || VIDEO_ROTATE_LANDSCAPE_REVERSE < nRotateState) + { + VideoLogInfo("Wrong rotate state. - %d", nRotateState); + return; + } + + MpVideoCtrlMgrRotateVideoScreen(nRotateState); +} + +static void MpVideoAppCtrlGetPosition(VideoAppData *pAppData) +{ + pAppData->nCurPosition = MpVideoCtrlMgrGetPosition(); +} + +static void MpVideoAppCtrlSetPosition(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoCtrlMgrSetPosition(pAppData->nSetPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData); + if(MpUtilCheckRTSPType(pAppData->szMediaUri)) + { + VideoLogInfo("RTSP SEEK Start"); + nBufferingRate = 0; + MpVideoAppCtrlBufferingCb((void *)pAppData); + } +} + +static void MpVideoAppCtrlSpeedReset(VideoAppData *pAppData) +{ + VideoLogInfo(""); + MpVideoAppCtrlGetPosition(pAppData); + MpVideoCtrlMgrSetPosition( pAppData->nCurPosition, (void *)MpVideoAppCtrlSeekCompleteCb, (void *)pAppData); + MpVideoCtrlMgrResetPlaySpeed((void *)pAppData); +} + +static void MpVideoAppCtrlSpeedFF(VideoAppData *pAppData) +{ + VideoLogInfo(""); + MpVideoCtrlMgrSetPlaySpeedUp((void *)pAppData); +} + +static void MpVideoAppCtrlSpeedRew(VideoAppData *pAppData) +{ + VideoLogInfo(""); + MpVideoCtrlMgrSetPlaySpeedDown((void *)pAppData); +} + +static void MpVideoAppCtrlHideLayout(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewHideLayout((void *)pAppData); +} + +static void MpVideoAppCtrlShowLayout(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewShowLayout((void *)pAppData); +} + +static void MpVideoAppCtrlHideFinish(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewCtrlHideFinish((void *)pAppData, bWindowForegroundState); + +} +static void MpVideoAppCtrlShowFinish(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoViewCtrlShowFinish((void *)pAppData); +} + +static void MpVideoAppCtrlGetVideoResolution(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + pAppData->nVideoWidthResolution = MpVideoCtrlMgrGetVideoWidthResolution(); + pAppData->nVideoHeightResolution = MpVideoCtrlMgrGetVideoHeightResolution(); +} + +static void MpVideoAppCtrlReqDurationTime(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + pAppData->nDuration = MpVideoCtrlMgrGetDuration(); +} + +static void MpVideoAppCtrlBeginOfStream(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpUtilMultimediaKeyGrab(); + + MpVideoAppCtrlGetVideoResolution(pAppData); + pAppData->nDuration = MpVideoCtrlMgrGetDuration(); + + MpVideoViewCtrlInitAfterBeginOfStream((void*)pAppData); + + if(MpVideoViewCtrlIsPauseByUser((void *)pAppData)) + { + MpVideoAppCtrlPause(pAppData); + MpVideoCtrlMgrSetMute(FALSE); + } + + if(MpVideoCtrlMgrIsOnlyAudio()) + { + MpVideoViewCtrlShowNocontentImage((void*)pAppData); + } + else + { + MpVideoViewCtrlHideNocontentImage((void*)pAppData); + } +} + +static void MpVideoAppCtrlEndOfStream(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY) + { + if(pAppData->nCurPosition >= 0) + { + MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, 0); + } + else + { + VideoLogInfo("Invalid Plaing time or duration time."); + } + } + MpVideoAppCtrlExit(pAppData); +} + +static void MpVideoAppCtrlExit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandleForErrorMsg) + { + ecore_pipe_del(pEcorePipeHandleForErrorMsg); + pEcorePipeHandleForErrorMsg = NULL; + } + + if(pEcorePipeHandleBOF) + { + ecore_pipe_del(pEcorePipeHandleBOF); + pEcorePipeHandleBOF = NULL; + } + + if(pEcorePipeHandleEOF) + { + ecore_pipe_del(pEcorePipeHandleEOF); + pEcorePipeHandleEOF = NULL; + } + + if(pEcorePipeHandleForBuffering) + { + ecore_pipe_del(pEcorePipeHandleForBuffering); + pEcorePipeHandleForBuffering = NULL; + } + + if(pEcorePipeHandleForResumed) + { + ecore_pipe_del(pEcorePipeHandleForResumed); + pEcorePipeHandleForResumed = NULL; + } + + if(pEcorePipeHandleForInterruped) + { + ecore_pipe_del(pEcorePipeHandleForInterruped); + pEcorePipeHandleForInterruped = NULL; + } + + if(pEcorePipeHandlerForSeekComplete) + { + ecore_pipe_del(pEcorePipeHandlerForSeekComplete); + pEcorePipeHandlerForSeekComplete = NULL; + } + + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + MpUtilDeletePopupHandle(); + MpVideoViewCtrlDestroy((void *)pAppData); + + if(MpVideoServiceCtrlGetPlayerType() == MP_STREAMING_PLAYER) + { + MpVideoStreamingCtrlDestroy((void *)pAppData); + } + + MpExternalUgDestroyAll(); + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + elm_exit(); +} + +static void MpVideoAppCtrlStartStreaming(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + char *szCookie = MpVideoServiceCtrlGetCookieForStreaming(); + if(szCookie) + { + strncpy(pAppData->szCookie, szCookie, STR_LEN_MAX - 1); + } + + MpVideoCtrlMgrMediaCreate(pAppData->szMediaUri, (void *)MpUtilGetMainWindowXID(), + NULL, NULL, (void *)pAppData); + + MpVideoCtrlMgrSetPlayerCallback(MpVideoAppCtrlPlayerCompletedCb, + MpVideoAppCtrlPlayerInterruptedCb, + MpVideoAppCtrlPlayerErrorCb, + MpVideoAppCtrlPlayerBufferingCb, + MpVideoAppCtrlPlayerUpdateSubtitleCb, + (void*)pAppData); + + MpVideoCtrlMgrMediaRealizeAsync(MpVideoAppCtrlPlayerPrepareCb, (void *)pAppData); + + MpVideoAppCtrlRotateScreen(pAppData, MpUtilGetRotationState()); +} + +static void MpVideoAppCtrlReLaunching(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + MpVideoAppCtrlStop(pAppData); + MpVideoCtrlMgrMediaDestroy(pAppData); + + MpVideoViewCtrlHideVolume(); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + pAppData->nSetPosition = 0; + MpVideoViewCtrlChangeTitle(pAppData); + } + + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoAppCtrlStartStreaming(pAppData); + } +} + +static void MpVideoAppCtrlPipeInit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return; + } + + VideoLogInfo(""); + + if(pEcorePipeHandlerForSeekComplete) + { + ecore_pipe_del(pEcorePipeHandlerForSeekComplete); + pEcorePipeHandlerForSeekComplete = NULL; + } + pEcorePipeHandlerForSeekComplete = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlSeekCompletePipeCb, (void *)pAppData); + + if(pEcorePipeHandleForErrorMsg) + { + ecore_pipe_del(pEcorePipeHandleForErrorMsg); + pEcorePipeHandleForErrorMsg = NULL; + } + + pEcorePipeHandleForErrorMsg = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlErrormsgCb, (void *)pAppData); + + if(pEcorePipeHandleBOF) + { + ecore_pipe_del(pEcorePipeHandleBOF); + pEcorePipeHandleBOF = NULL; + } + + pEcorePipeHandleBOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBeginOfPlayCb, (void *)pAppData); + + if(pEcorePipeHandleEOF) + { + ecore_pipe_del(pEcorePipeHandleEOF); + pEcorePipeHandleEOF = NULL; + } + + pEcorePipeHandleEOF = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlEndOfPlayCb, (void *)pAppData); + + if(pEcorePipeHandleForBuffering) + { + ecore_pipe_del(pEcorePipeHandleForBuffering); + pEcorePipeHandleForBuffering = NULL; + } + + pEcorePipeHandleForBuffering = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlBufferingCb, (void *)pAppData); + + if(pEcorePipeHandleForResumed) + { + ecore_pipe_del(pEcorePipeHandleForResumed); + pEcorePipeHandleForResumed = NULL; + } + + pEcorePipeHandleForResumed = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlResumeByRewCb, (void *)pAppData); + + if(pEcorePipeHandleForInterruped) + { + ecore_pipe_del(pEcorePipeHandleForInterruped); + pEcorePipeHandleForInterruped = NULL; + } + + pEcorePipeHandleForInterruped = ecore_pipe_add((Ecore_Pipe_Cb)MpVideoAppCtrlPauseByInterrupteCb, (void *)pAppData); +} + +static void MpVideoAppCtrlShowVolume(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + MpVideoViewCtrlShowVolume(); +} + +static void MpVideoAppCtrlHideVolume(VideoAppData *pAppData) +{ + VideoLogInfo(""); + + MpVideoViewCtrlHideVolume(); +} + + +/* + * External function + */ +bool MpVideoAppCtrlInit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("No exist appdata."); + return FALSE; + } + + VideoLogInfo(""); + + VideoLogInfo("Get rotation state from appcore. - %d", MpUtilGetRotationStateFromAppcore()); + + MpVideoAppCtrlFuncInit(pAppData); + MpVideoAppCtrlPipeInit(pAppData); + MpVideoViewCtrlInit(pAppData); + + evas_object_show(pAppData->pMainWindow); + elm_win_activate(pAppData->pMainWindow); + + if(!MpUtilIsCallOff()) + { + MpUtilNotifyPopUp(pAppData, _(MP_VPL_BODY_UNABLE_TO_PLAY_VIDEO_DURING_CALL), MpVideoAppCtrlExitCb); + return FALSE; + } + + MpVideoAppCtrlInitCheckCallStatus(); + + if(!MpUtilCheckBatteryStatus()) + { + MpUtilNotifyPopUp(pAppData, MP_COM_BODY_LOW_BATTERY, MpVideoAppCtrlExitCb); + return FALSE; + } + + MpVideoAppCtrlStart(pAppData); + + return TRUE; +} + +bool MpVideoAppCtrlResetForRelaunching(VideoAppData *pAppData) +{ + if (!pAppData) { + VideoLogInfo("No exist appdata."); + return FALSE; + } + + VideoLogInfo(""); + + MpVideoAppCtrlStop(pAppData); + + MpVideoCtrlMgrMediaDestroy(pAppData); + MpUtilDeletePopupHandle(); + MpVideoViewCtrlDestroy((void *)pAppData); + + MpUtilMediaSvcFinishSession(); + MpUtilBatteryStatusNotiIgnore(); + + nBufferingRate = 0; + nPlayerErrorType = 0; + nPlayerInterruptType = 0; + + pAppData->nDuration = 0; + pAppData->nSetPosition = 0; + pAppData->nCurPosition = 0; + pAppData->nBufferingPosition = 0; + pAppData->nVideoWidthResolution = 0; + pAppData->nVideoHeightResolution = 0; + + memset(pAppData->szVideoTitle, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szMediaUri, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX); + + pAppData->nPrePlayerState = MP_PLAYER_STATE_CLEAR; + pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR; + pAppData->nPlayingSpeed = 0; + + memset(pAppData->szProxyAddress, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szUserAgent, 0, sizeof(char) * STR_LEN_MAX); + memset(pAppData->szCookie, 0, sizeof(char) * STR_LEN_MAX); + + MpUtilResetForRelaunching(); + + MpVideoAppCtrlInitCheckCallStatus(); + + return TRUE; +} + +bool MpVideoAppCtrlIsTopView(void* pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + return MpVideoViewCtrlIsTopView(pUserData); +} + +bool MpVideoAppCtrlIsExistPlayerHandle(void) +{ + VideoLogInfo(""); + + return MpVideoCtrlMgrIsExistPlayerHandle(); +} + +void MpVideoAppCtrlSetForCheckingForegroundwindow(bool bForwgroundState) +{ + VideoLogInfo(""); + + bWindowForegroundState = bForwgroundState; +} + +void MpVideoAppCtrlSetRotation(int nRotateMode, void *pUserData) +{ + VideoLogInfo(""); + + MpVideoViewCtrlSetRotation(nRotateMode, TRUE, pUserData); +} + +bool MpVideoAppCtrlIsCheckCallStatus(void) +{ + VideoLogInfo(""); + + bool bCheckCallStatus = FALSE; + + if(g_nCurrentInterrupt == MP_PLAYER_INTERRUPTED_BY_CALL) + { + bCheckCallStatus = TRUE; + } + + return bCheckCallStatus; + +} +void MpVideoAppCtrlInitCheckCallStatus(void) +{ + VideoLogInfo(""); + + g_nCurrentInterrupt = MP_PLAYER_INTERRUPTED_COMPLETED; +} + diff --git a/src/mp-video-ctrl-mgr.c b/src/mp-video-ctrl-mgr.c new file mode 100644 index 0000000..c8e2099 --- /dev/null +++ b/src/mp-video-ctrl-mgr.c @@ -0,0 +1,572 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-ctrl-mgr.h" +#include "mp-video-player-mgr.h" +#include "mp-video-type-define.h" +#include "mp-video-service-ctrl.h" + +bool MpVideoCtrlMgrMediaCreate(char *szMediaURI, void *pOverlayXid, void *pEvasSinkID, char* szSubtitleUri, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if(!MpPlayerMgrCreate(szMediaURI)) + { + VideoLogInfo("[ERR] Fail to create player handle."); + return FALSE; + } + + MpUtilGetUserAgent(pAppData); + + if(!MpPlayerMgrSetUseragentForStreaming(pAppData->szUserAgent)) + { + VideoLogInfo("[ERR] Fail to set useragent."); + return FALSE; + } + + if(!MpPlayerMgrSetProxyAddressForStreaming(pAppData->szProxyAddress)) + { + VideoLogInfo("[ERR] Fail to set proxy address."); + return FALSE; + } + + if(!MpPlayerMgrSetCookieForStreaming(pAppData->szCookie)) + { + VideoLogInfo("[ERR] Fail to set Cookie."); + return FALSE; + } + + if(szSubtitleUri && strlen((char*)szSubtitleUri) > 0) + { + VideoLogInfo("Subtitle URI : %s", szSubtitleUri); + + if(!MpPlayerMgrSetSubtitle(szSubtitleUri)) + { + VideoLogInfo("Fail to set subtitle uri."); + } + } + else + { + VideoLogInfo("No exist subtitle uri."); + } + + if(!MpPlayerMgrSetOverlayXid(pOverlayXid)) + { + VideoLogInfo("[ERR] Fail to set overlay window."); + return FALSE; + } + + if(!MpVideoCtrlMgrSetScaling(FALSE)) + { + VideoLogInfo("[ERR] Fail to set scaling."); + return FALSE; + } + + if(!MpPlayerMgrSetSoundPriority()) + { + VideoLogInfo("[ERR] Fail to set sound priority."); + return FALSE; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR; + + return TRUE; +} + +bool MpVideoCtrlMgrMediaRealize(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrRealize()) + { + VideoLogInfo("[ERR] Fail relization."); + return FALSE; + } + return TRUE; +} + +bool MpVideoCtrlMgrMediaRealizeAsync(void *pReailzeCb, void *pUserData) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrRealizeAsync(pReailzeCb, pUserData)) + { + VideoLogInfo("[ERR] Fail relization."); + return FALSE; + } + return TRUE; +} + +void MpVideoCtrlMgrMediaDestroy(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrIsActive()) { + VideoLogInfo(" Already destroy player handle."); + return; + } + + if (!MpPlayerMgrUnrealize()) { + VideoLogInfo("[ERR] Fail to unrealize player handle."); + return; + } + + if (!MpPlayerMgrDestroy()) { + VideoLogInfo("[ERR] Fail to destroy player handle."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_CLEAR; +} + +bool MpVideoCtrlMgrMediaPlay(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrPlay()) { + VideoLogInfo("[ERR] Fail to play multimedia player."); + return FALSE; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_PLAY; + + return TRUE; +} + +void MpVideoCtrlMgrMediaStop(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrIsActive()) { + VideoLogInfo("[ERR] Player handle is destroyed."); + return; + } + + if (!MpPlayerMgrStop()) { + VideoLogInfo("[ERR] Fail to stop multimedia player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_STOP; +} + +void MpVideoCtrlMgrMediaPause(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) { + VideoLogInfo + ("It is not possible to pause when player state is stop."); + return; + } + + if (!MpPlayerMgrPause()) { + VideoLogInfo("[ERR] Fail to pause multimedia player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_PAUSE; +} + +void MpVideoCtrlMgrMediaResume(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_STOP) { + VideoLogInfo + ("It is not possible to resume when player state is stop."); + return; + } + + if (!MpPlayerMgrResume()) { + VideoLogInfo("[ERR] Fail to resume multimedia player."); + return; + } + + pAppData->nCurPlayerState = MP_PLAYER_STATE_RESUME; +} + +void MpVideoCtrlMgrSetPlayerCallback(void *PlayerCompletedCb, void *PlayerInterruptedCb, void *PlayerErrorCb, void *PlayerBufferingCb, void *PlayerSubtitleCb, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + if(!PlayerCompletedCb || !PlayerInterruptedCb || !PlayerErrorCb || !PlayerBufferingCb) + { + VideoLogInfo("[ERR] No exist player callback function pointer."); + return; + } + + VideoLogInfo(""); + + MpPlayerMgrRegistePlayerCallback(PlayerCompletedCb, PlayerInterruptedCb, PlayerErrorCb, PlayerBufferingCb, PlayerSubtitleCb, pUserData); +} + +void MpVideoCtrlMgrSetOverlayXid(void *pXid) +{ + VideoLogInfo(""); + + if (!MpPlayerMgrSetOverlayXid(pXid)) { + VideoLogInfo("[ERR] Fail to set overlay window."); + return; + } +} +void MpVideoCtrlMgrSetEvasSinkID(void *pEvasSinkID) +{ + VideoLogInfo(""); + + if (!MpPlayerMgrSetEvasSinkID(pEvasSinkID)) { + VideoLogInfo("[ERR] Fail to set overlay window."); + return; + } +} + +void MpVideoCtrlMgrSetPosition(int nSetPosition, void *pSeekCb, void *pUserData) +{ + VideoLogInfo(""); + + VideoLogInfo("Set position - %d", nSetPosition); + + if (nSetPosition > -1) { + MpPlayerMgrSetPosition(nSetPosition, pSeekCb, pUserData); + } +} +void MpVideoCtrlMgrSetSubtitlePosition(int nSetPosition) +{ + VideoLogInfo(""); + + if (nSetPosition > -1) { + MpPlayerMgrSetSubtitlePosition(nSetPosition); + } +} + +int MpVideoCtrlMgrGetPosition(void) +{ + /* VideoLogInfo(""); */ + + return MpPlayerMgrGetPosition(); +} + +int MpVideoCtrlMgrGetDuration(void) +{ + VideoLogInfo(""); + + int nDuration = 0; + + nDuration = MpPlayerMgrGetDuration(); + + VideoLogInfo(" content duration : %d ms", nDuration); + + return nDuration; +} + +void MpVideoCtrlMgrResetPlaySpeed(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (!MpPlayerMgrSetPlaySpeed(1.0)) { + VideoLogInfo("[ERR] Fail to reset play speed."); + return; + } + + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_NORMAL; +} + +void MpVideoCtrlMgrSetPlaySpeedUp(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) { + VideoLogInfo("Current speed is full.(5X)"); + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_5X; + } + + + float val = 0; + val = (float)pAppData->nPlayingSpeed; + + MpPlayerMgrSetPlaySpeed(val); + +} + +void MpVideoCtrlMgrSetPlaySpeedDown(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo(""); + + if (pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) { + VideoLogInfo("Current speed is full.(5X)"); + return; + } + + float val = 0; + val = -(float)pAppData->nPlayingSpeed; + MpPlayerMgrSetPlaySpeed(val); + +} + +int MpVideoCtrlMgrGetVideoWidthResolution(void) +{ + VideoLogInfo(""); + + int nVideoWidthResolution = MpPlayerMgrGetVideoWidthResolution(); + + VideoLogInfo("Video width resolution : %d", nVideoWidthResolution); + + return nVideoWidthResolution; +} + +int MpVideoCtrlMgrGetVideoHeightResolution(void) +{ + VideoLogInfo(""); + + int nVideoHeightResolution = MpPlayerMgrGetVideoHeightResolution(); + + VideoLogInfo("Video height resolution : %d", nVideoHeightResolution); + + return nVideoHeightResolution; +} + +void MpVideoCtrlMgrSetRatioVideoScreen(void *pUserData, int nRatioScreenSize) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoLogInfo(""); + + int nDisplayMode = PLAYER_DISPLAY_MODE_LETTER_BOX; + + MpPlayerMgrSetDisplayMode(nDisplayMode); +} + +void MpVideoCtrlMgrRotateVideoScreen(int nVideoRotateValue) +{ + VideoLogInfo(""); + + switch (nVideoRotateValue) { + case VIDEO_ROTATE_PORTRAIT_NORMAL: + VideoLogInfo("Set Portrait."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT); + break; + + case VIDEO_ROTATE_LANDSCAPE_NORMAL: + VideoLogInfo("Set Landscape."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE); + break; + + case VIDEO_ROTATE_PORTRAIT_REVERSE: + VideoLogInfo("Set Portrait reverse."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN); + break; + + case VIDEO_ROTATE_LANDSCAPE_REVERSE: + VideoLogInfo("Set Landscape reverse."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN); + break; + + default: + VideoLogInfo("Set Portrait."); + MpPlayerMgrSetRotate(VIDEO_SCREEN_PORTRAIT); + break; + } +} + +void MpVideoCtrlMgrSetMute(bool bMuteEnable) +{ + VideoLogInfo(""); + + MpPlayerMgrSetMute(bMuteEnable); +} + +bool MpVideoCtrlMgrGetMuteState(void) +{ + VideoLogInfo(""); + + return MpPlayerMgrGetMute(); +} + +bool MpVideoCtrlMgrStartCapture(void *pVideoCaptureCb, void *pUserData) +{ + VideoLogInfo(""); + + return MpPlayerMgrCaptureVideo(pVideoCaptureCb, pUserData); +} + +int MpVideoCtrlMgrGetBufferingPosition(void) +{ + return MpPlayerMgrGetBufferingPosition(); +} + +bool MpVideoCtrlMgrIsExistPlayerHandle(void) +{ + VideoLogInfo(""); + + return MpPlayerMgrIsActive(); +} + +bool MpVideoCtrlMgrIsOnlyAudio(void) +{ + VideoLogInfo(""); + + int nStreamFileType = MpPlayerMgrGetFileStreamType(); + + if(nStreamFileType == MP_FILE_STREAM_TYPE_AUDIO) + { + VideoLogInfo("A file stream type is only audio."); + return TRUE; + } + + return FALSE; +} + +bool MpVideoCtrlMgrSetScaling(bool bScale) +{ + VideoLogInfo(""); + + return MpPlayerMgrSetScaling(bScale); + +} + +int MpVideoCtrlMgrGetErrorType(int nErrorVal) +{ + VideoLogInfo(""); + + switch(nErrorVal) + { + case PLAYER_ERROR_NONE: + return MP_PLAYER_ERROR_NONE; + + case PLAYER_ERROR_OUT_OF_MEMORY: + return MP_PLAYER_ERROR_OUT_OF_MEMORY; + + case PLAYER_ERROR_INVALID_PARAMETER: + return MP_PLAYER_ERROR_INVALID_PARAMETER; + + case PLAYER_ERROR_NO_SUCH_FILE: + return MP_PLAYER_ERROR_NO_SUCH_FILE; + + case PLAYER_ERROR_INVALID_OPERATION: + return MP_PLAYER_ERROR_INVALID_OPERATION; + + case PLAYER_ERROR_SEEK_FAILED: + return MP_PLAYER_ERROR_SEEK_FAILED; + + case PLAYER_ERROR_INVALID_STATE: + return MP_PLAYER_ERROR_INVALID_STATE; + + case PLAYER_ERROR_NOT_SUPPORTED_FILE: + return MP_PLAYER_ERROR_NOT_SUPPORTED_FILE; + + case PLAYER_ERROR_INVALID_URI: + return MP_PLAYER_ERROR_INVALID_URI; + + case PLAYER_ERROR_SOUND_POLICY: + return MP_PLAYER_ERROR_SOUND_POLICY; + + case PLAYER_ERROR_CONNECTION_FAILED: + return MP_PLAYER_ERROR_CONNECTION_FAILED; + + case PLAYER_ERROR_VIDEO_CAPTURE_FAILED: + return MP_PLAYER_ERROR_VIDEO_CAPTURE_FAILED; + + default: + return MP_PLAYER_ERROR_UNKNOWN_ERROR; + } +} + +int MpVideoCtrlMgrGetClosedCaptionCount(void) +{ + VideoLogInfo(""); + + return MpPlayerMgrGetClosedCaptionCount(); + +} \ No newline at end of file diff --git a/src/mp-video-display-view.c b/src/mp-video-display-view.c new file mode 100755 index 0000000..1607e4c --- /dev/null +++ b/src/mp-video-display-view.c @@ -0,0 +1,1314 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-display-view.h" +#include "mp-video-progressbar.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-util-media-service.h" +#include "mp-video-string-define.h" +#include "mp-video-sound-path-ctrl.h" + +#include "mp-external-ug.h" +#include "mp-video-service-ctrl.h" + +#define CTRL_PANEL_SHOW_TIME 5.0 +#define MAX_SPEED_STEP 4 +#define REWIND_SPACE_TIME 3000 + +static Evas_Object *pNaviFrameHandle = NULL; +static Evas_Object *pDisplayViewLayout = NULL; +static Evas_Object *pDisplayViewPanelEdj = NULL; +static Evas_Object *pDisplayViewCtrlEdj = NULL; +static Evas_Object *pDisplayViewOptionEdj = NULL; +static Evas_Object *pDisplayViewProgressbarEdj = NULL; +static Evas_Object *pDisplaySoundpathButton = NULL; + +static Evas_Object *pDisplayViewSpeedboxEdj = NULL; + +static Ecore_Timer *pCtrlPanelHideTimer = NULL; +static Ecore_Timer *pSpeedPressTimer = NULL; +static Elm_Object_Item *pNaviFrameItemForDisplayerView = NULL; +static ChangeDisplayViewCbFunc pChangeViewUserCbFunc = NULL; + +static bool bSwitchDisplayViewUI = TRUE; +static bool bIsSpeedLongPress = FALSE; +static bool bIsDisplayViewOnlyAudio = FALSE; +static int nSpeedMode = 0; /* (-1:REW, 1: FF) */ +static int nControlMouseDownPos = 0; +static int nControlMouseMovePos = 0; +static bool bIsPauseByUser = FALSE; +static bool bIsBeginOfStream = FALSE; +static VideoDisplayViewState nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE; + + +static void MpVideoDisplayViewWarningPopupCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoLogInfo(""); + + MpUtilDeletePopupHandle(); +} + + +static void MpVideoDisplayViewSoundPathCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (MpVideoSoundpathIsConnectOtherSoundpath()) { + VideoLogInfo("Connect BT or earjack."); + MpVideoSoundpathShow(pUserData); + } else { + MpUtilNotifyPopUp(pAppData, "Soundpath is connected with speaker only.", MpVideoDisplayViewWarningPopupCb); + } +} + + +static void MpVideoDisplayViewPressOptionShareCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + if(pCtrlPanelHideTimer) + { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + MpExternalUgShow((void *)pAppData, pNaviFrameHandle); +} + +static void MpVideoDisplayViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) + { + VideoLogInfo("Press Pause button."); + + if(pAppData->bSeekComplete == FALSE) + { + bIsPauseByUser = TRUE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE; + return; + } + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) + { + bIsPauseByUser = TRUE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } +} + +static void MpVideoDisplayViewPressResumeButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) { + VideoLogInfo("Press Resume/Play button."); + + if(pAppData->bSeekComplete == FALSE) + { + bIsPauseByUser = FALSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + return; + } + + if (pAppData->nCurPlayerState != MP_PLAYER_STATE_RESUME && pAppData->nCurPlayerState != MP_PLAYER_STATE_PLAY) + { + bIsPauseByUser = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } +} + +static Eina_Bool MpVideoDisplayViewSpeedLongPressTimerCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + bIsSpeedLongPress = TRUE; + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X; + + char caption[CAPTION_TEXT_MAX_LEN] = { 0, }; + + if(nSpeedMode == 1) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + + edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_FF, pDisplayViewSpeedboxEdj); + evas_object_show(pDisplayViewSpeedboxEdj); + } + else if(nSpeedMode == -1) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + edje_object_part_swallow(pDisplayViewCtrlEdj, PART_CONTROL_SPEED_BOX_REW, pDisplayViewSpeedboxEdj); + evas_object_show(pDisplayViewSpeedboxEdj); + } + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SHOW, "*"); + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*"); + + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_SHOW, "*"); + + return EINA_FALSE; +} + + +static void MpVideoDisplayViewFFDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN)) { + VideoLogInfo("Press FF down button."); + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + nSpeedMode = 1; + pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData); + } +} + +static void MpVideoDisplayViewFFUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP)) { + VideoLogInfo("Press FF up button."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + bIsPauseByUser = FALSE; + } + else + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + evas_object_hide(pDisplayViewSpeedboxEdj); + + + bIsSpeedLongPress = FALSE; + } +} + +static void MpVideoDisplayViewFFClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + if(!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED)) + { + VideoLogInfo("Press FF clicked button."); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + bIsPauseByUser = FALSE; + } +} + +static void MpVideoDisplayViewRewDownButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN)) { + VideoLogInfo("Press Rewind donw button."); + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + nSpeedMode = -1; + pSpeedPressTimer = ecore_timer_add(LONG_PRESS_INTERVAL, MpVideoDisplayViewSpeedLongPressTimerCb, (void *)pAppData); + } +} + +static void MpVideoDisplayViewRewUpButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP)) { + VideoLogInfo("Press Rewind up button."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + bIsPauseByUser = FALSE; + } + else + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + evas_object_hide(pDisplayViewSpeedboxEdj); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + + + bIsSpeedLongPress = FALSE; + } +} + +static void MpVideoDisplayViewRewClickedButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if(!bIsBeginOfStream) + { + VideoLogInfo("Skip for BOF"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED)) { + VideoLogInfo("Press Rewind clicked button."); + + if(pAppData->nCurPosition > REWIND_SPACE_TIME) + { + pAppData->nSetPosition = 0; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + else + { + bIsPauseByUser = FALSE; + } + } +} + +static void MpVideoDisplayViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + edje_object_signal_callback_del(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->nCurPosition >= 0) + { + MpUtilMediaSvcSetVideoLastPlayedTimeByUri(pAppData->szMediaUri, pAppData->nCurPosition); + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData); + + MpVideoDisplayViewPop(pNaviFrameHandle, pUserData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData); +} + + +static void MpVideoDisplayViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); +} + +static void MpVideoDisplayViewVolumeButtonUpCb(void *pUserData, + Evas_Object *pObject, + const char *szEmission, + const char *szSource) +{ + VideoLogInfo(""); + if (!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData); +} + +static Eina_Bool MpVideoDisplayViewCtrlPanelHideCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + + return EINA_FALSE; +} + + +static void MpVideoDisplayViewSpeedChange(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int booster_step = 0; + + if (nSpeedMode == 1) { + booster_step = nControlMouseDownPos - nControlMouseMovePos; + booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get()); + } else if (nSpeedMode == -1) { + booster_step = nControlMouseDownPos - nControlMouseMovePos; + booster_step = booster_step / (BOOSTER_STEP_DISTANCE * elm_config_scale_get()); + } else { + VideoLogInfo("[ERR] Invalid SpeedMode."); + return; + } + + + if(booster_step == 0) + { + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X; + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_1, "*"); + } + else if(booster_step == 1) + { + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_3X; + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_2, "*"); + } + else if(booster_step > 2) + { + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_4X; + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_SET_MODE_3, "*"); + } + + VideoLogInfo("STEP:(%d, %d)", booster_step, pAppData->nPlayingSpeed); + + char caption[CAPTION_TEXT_MAX_LEN] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + if(nSpeedMode == 1) + { + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + } + else + { + snprintf(caption, CAPTION_TEXT_MAX_LEN, "x%d", pAppData->nPlayingSpeed); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + } + + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, caption); + + return; +} + +static void MpVideoDisplayViewControlMouseMoveCb(void *pUserData, Evas * e, Evas_Object *obj, void *event) +{ + if (!event) { + VideoLogInfo("[ERR]"); + return; + } + + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return; + } + + Evas_Event_Mouse_Move *pBtnEvent = (Evas_Event_Mouse_Move *) event; + + if (bIsSpeedLongPress) { + nControlMouseMovePos = pBtnEvent->cur.output.y; + MpVideoDisplayViewSpeedChange(pUserData); + } +} + +static void MpVideoDisplayViewControlMouseDownCb(void *pUserData, Evas * e, Evas_Object *obj, void *event) +{ + VideoLogInfo(""); + + if (!event) { + VideoLogInfo("[ERR]"); + return; + } + + Evas_Event_Mouse_Down *pBtnEvent = (Evas_Event_Mouse_Down *) event; + + nControlMouseDownPos = pBtnEvent->output.y; +} + +static void MpVideoDisplayViewChangedEarjackCb(void *pNode, void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + MpVideoSoundpathHide(); + MpUtilDeletePopupHandle(); + + if (MpUtilIsConnectEarjack() || MpVideoSoundpathIsConnectOtherSoundpath()) { + VideoLogInfo("Connect earjack."); + if (pDisplaySoundpathButton) { + elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton); + } else { + pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb); + elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton); + } + } else { + VideoLogInfo("Disconnect earjack."); + + if (pDisplaySoundpathButton) { + evas_object_del(pDisplaySoundpathButton); + pDisplaySoundpathButton = NULL; + } + + elm_object_item_part_content_unset(pNaviFrameItemForDisplayerView, "title_right_btn"); + } +} + +static void MpVideoDisplayViewChangedCameraStatusCb(void *pNode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!MpUtilIsCameraOff()) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } +} +static void MpVideoDisplayViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + + evas_object_hide(pDisplayViewLayout); +} + +static void MpVideoDisplayViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData); +} + +void MpVideoDisplayViewInitLayout(void *pUserData, int nPlayerType) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pDisplayViewLayout = elm_layout_add(pNaviFrameHandle); + if (pDisplayViewLayout) { + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + elm_layout_file_set(pDisplayViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP); + + pDisplayViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP); + elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pDisplayViewOptionEdj); + + edje_object_signal_emit(pDisplayViewOptionEdj, SIGNAL_OPTION_MODE_LOCAL, "*"); + + pDisplayViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP); + + evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_DOWN, (void *)MpVideoDisplayViewControlMouseDownCb, pAppData); + evas_object_event_callback_add(pDisplayViewCtrlEdj, EVAS_CALLBACK_MOUSE_MOVE, (void *)MpVideoDisplayViewControlMouseMoveCb, pAppData); + + if(nPlayerType == MP_VIDEO_PLAYER_GALLERY) + { + int width = 0; + int height = 0; + + int item_width = 120; + int item_height = 90; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + if(width > 0) { + item_width = 170 * width/DEFAULT_SCALE_WIDTH; + } + + if(height > 0) { + item_height = 145 * height/DEFAULT_SCALE_HEIGHT; + } + } + + pDisplayViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP); + + edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_CONTROL, pDisplayViewCtrlEdj); + + pDisplayViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData); + if (pDisplayViewProgressbarEdj) { + edje_object_part_swallow(pDisplayViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pDisplayViewProgressbarEdj); + } else { + VideoLogInfo("Progressbar edj handle is null."); + } + + elm_object_part_content_set(pDisplayViewLayout, SWALLOW_MAIN_CONTROL, pDisplayViewPanelEdj); + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_MODE_NORMAL, "*"); + + edje_object_signal_callback_add(pDisplayViewOptionEdj, + SIGNAL_OPTION_SHARE_DOWN, + PART_OPTION_SHARE, + (void *)MpVideoDisplayViewPressOptionShareCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_PLAY_PAUSE_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoDisplayViewPressPauseButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_PLAY_RESUME_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoDisplayViewPressResumeButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_FF_BUTTON_DOWN, + SIGNAL_CONTROL_PART_FF_BUTTON, + (void *)MpVideoDisplayViewFFDownButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_FF_BUTTON_UP, + SIGNAL_CONTROL_PART_FF_BUTTON, + (void *)MpVideoDisplayViewFFUpButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_FF_BUTTON_CLICKED, + SIGNAL_CONTROL_PART_FF_BUTTON, + (void *)MpVideoDisplayViewFFClickedButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_REW_BUTTON_DOWN, + SIGNAL_CONTROL_PART_REW_BUTTON, + (void *)MpVideoDisplayViewRewDownButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_REW_BUTTON_UP, + SIGNAL_CONTROL_PART_REW_BUTTON, + (void *)MpVideoDisplayViewRewUpButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_NORMAL_REW_BUTTON_CLICKED, + SIGNAL_CONTROL_PART_REW_BUTTON, + (void *)MpVideoDisplayViewRewClickedButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_BACK_BUTTON_DOWN, + SIGNAL_CONTROL_PART_BACK_BUTTON, + (void *)MpVideoDisplayViewBackButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_DOWN, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_UP, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_DOWN, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pDisplayViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_UP, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoDisplayViewVolumeButtonUpCb, (void *)pAppData); + + pDisplayViewSpeedboxEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_SPEEDBOX_VIEW_EDJ, SPEEDBOX_EDJ_GROUP); + evas_object_hide(pDisplayViewSpeedboxEdj); + + MpUtilRegisteEarjackCbFunc((void *)MpVideoDisplayViewChangedEarjackCb, pUserData); + MpUtilRegisteCameraStatusCbFunc((void *)MpVideoDisplayViewChangedCameraStatusCb, pUserData); + } +} + +void MpVideoDisplayViewInit(void *pUserData, int nPlayerType) +{ + VideoLogInfo(""); + + if (!pNaviFrameHandle|| !pUserData) { + VideoLogInfo("[ERR]"); + return; + } + bIsPauseByUser = FALSE; + + MpVideoDisplayViewInitLayout(pUserData, nPlayerType); +} + + +/* + * External function + */ +void MpVideoDisplayViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeDisplayViewCbFunc pChangeViewCb) +{ + if (!pNaviFrame || !pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pNaviFrameHandle = pNaviFrame; + pChangeViewUserCbFunc = pChangeViewCb; + + MpVideoDisplayViewInit(pUserData, nPlayerType); + pNaviFrameItemForDisplayerView = elm_naviframe_item_push(pNaviFrameHandle, NULL, NULL, NULL, pDisplayViewLayout, "video/1line"); + + elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoDisplayViewShowLayoutFinish, pUserData); + elm_object_signal_callback_add(pDisplayViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoDisplayViewHideLayoutFinish, pUserData); + + if(MpVideoSoundpathIsConnectOtherSoundpath()) + { + pDisplaySoundpathButton = MpUtilCreateButtonIcon(pNaviFrameHandle, VIDEO_HEAD_ICON_SOUNDPATH, FALSE, FALSE, 1, 1, pUserData, "video/naviframe/title/default", (void*)MpVideoDisplayViewSoundPathCb); + elm_object_item_part_content_set(pNaviFrameItemForDisplayerView, "title_right_btn", pDisplaySoundpathButton); + } + + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +void MpVideoDisplayViewPop(void *pNaviFrame, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); +} + +void MpVideoDisplayViewDestroy(void *pUserData) +{ + VideoLogInfo(""); + + MpVideoDisplayViewHideControlPanel(pUserData); + MpVideoProgressbarDestroy(); + + pNaviFrameHandle = NULL; + pDisplayViewProgressbarEdj = NULL; + + if (pDisplayViewPanelEdj) { + evas_object_del(pDisplayViewPanelEdj); + pDisplayViewPanelEdj = NULL; + } + + if (pDisplayViewCtrlEdj) { + evas_object_del(pDisplayViewCtrlEdj); + pDisplayViewCtrlEdj = NULL; + } + + if (pDisplayViewOptionEdj) { + evas_object_del(pDisplayViewOptionEdj); + pDisplayViewOptionEdj = NULL; + } + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + if (pDisplayViewLayout) { + evas_object_del(pDisplayViewLayout); + pDisplayViewLayout = NULL; + } + + if (pDisplaySoundpathButton) { + evas_object_del(pDisplaySoundpathButton); + pDisplaySoundpathButton = NULL; + } + + if (pDisplayViewSpeedboxEdj) { + evas_object_del(pDisplayViewSpeedboxEdj); + pDisplayViewSpeedboxEdj = NULL; + } + + bSwitchDisplayViewUI = TRUE; + nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE; + bIsDisplayViewOnlyAudio = FALSE; + bIsPauseByUser = FALSE; +} + +void MpVideoDisplayViewInitAfterBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsBeginOfStream = TRUE; + + pAppData->bSeekComplete = TRUE; + + MpVideoProgressbarBeginOfStream((void *)pAppData); + + if (pAppData->nDuration > 1) { + char szDurationTime[PLAY_TIME_LENGTH] = { 0 }; + + snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nDuration / 1000)); + + MpVideoProgressbarUpdateDurationTime(szDurationTime); + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + + if(MpVideoDisplayViewIsPauseByUser() == FALSE) + { + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); + } +} + +void MpVideoDisplayViewUpdatePauseKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*"); +} + +void MpVideoDisplayViewUpdateResumeKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); +} + + + + +void MpVideoDisplayViewShowControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!pDisplayViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) { + VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsBeginOfStream) + { + MpVideoProgressbarCreateTimer((void *)pAppData); + } + + bSwitchDisplayViewUI = TRUE; + evas_object_show(pDisplayViewLayout); + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm"); + int nRotate = MpUtilGetRotationState(); + if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL) + { + elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*"); + } + else + { + elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*"); + } + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + VideoLogInfo(""); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsDisplayViewOnlyAudio == TRUE) { + VideoLogInfo(""); + } else { + VideoLogInfo(""); + pCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoDisplayViewCtrlPanelHideCb, pUserData); + } + + MpVideoDisplayViewActivate(); +} + +void MpVideoDisplayViewHideControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (nDisplayViewState == MP_DISPLAY_VIEW_STATE_UNACTIVATE) { + VideoLogInfo("MP_DISPLAY_VIEW_STATE_UNACTIVATE"); + return; + } + + if (!pDisplayViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + if(bIsDisplayViewOnlyAudio) + { + VideoLogInfo("Not hide control panel and UI because of audio only."); + return; + } + + bSwitchDisplayViewUI = FALSE; + + MpVideoProgressbarDeleteTimer(); + MpExternalUgHide(); + + if (pCtrlPanelHideTimer) { + ecore_timer_del(pCtrlPanelHideTimer); + pCtrlPanelHideTimer = NULL; + } + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm"); + elm_object_signal_emit(pDisplayViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*"); +} + +void MpVideoDisplayViewActivate(void) +{ + VideoLogInfo(""); + + nDisplayViewState = MP_DISPLAY_VIEW_STATE_ACTIVATE; +} + +void MpVideoDisplayViewUnactivate(void) +{ + VideoLogInfo(""); + + nDisplayViewState = MP_DISPLAY_VIEW_STATE_UNACTIVATE; +} + +void MpVideoDisplayViewChangeNaviFrameTitle(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Elm_Object_Item *pNaviFrameItemForDisplayerView = elm_naviframe_top_item_get(pNaviFrameHandle); + + bIsBeginOfStream = FALSE; + MpVideoProgressbarDeleteTimer(); + + if (pSpeedPressTimer) { + ecore_timer_del(pSpeedPressTimer); + pSpeedPressTimer = NULL; + } + + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + if (pNaviFrameItemForDisplayerView != NULL) { + VideoLogInfo("%s", pAppData->szVideoTitle); + elm_object_item_text_set(pNaviFrameItemForDisplayerView, pAppData->szVideoTitle); + } +} + +bool MpVideoDisplayViewIsTopView(void) +{ + VideoLogInfo(""); + + Evas_Object *pTmpContents = NULL; + Elm_Object_Item *pTmpItem = NULL; + + if (!pNaviFrameHandle) { + VideoLogInfo("[ERR] No exist navigationbar handle."); + return FALSE; + } + + pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle); + pTmpContents = elm_object_item_content_get(pTmpItem); + if (pTmpContents) { + if (pTmpContents == pDisplayViewLayout) { + VideoLogInfo("Video display view is staing in top view."); + return TRUE; + } else { + VideoLogInfo("Video display view is not staied in top view."); + return FALSE; + } + } else { + VideoLogInfo("[ERR] No exist navigationbar top item."); + return FALSE; + } + + return FALSE; +} + +void MpVideoDisplayViewShowNocontentImage(void *pUserData) +{ + VideoLogInfo(""); + + if (pDisplayViewLayout) { + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*"); + } + + bIsDisplayViewOnlyAudio = TRUE; + + MpVideoDisplayViewShowControlPanel(pUserData); +} + +void MpVideoDisplayViewHideNocontentImage(void) +{ + VideoLogInfo(""); + + if (pDisplayViewLayout) { + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*"); + } + + bIsDisplayViewOnlyAudio = FALSE; +} + +void MpVideoDisplayViewPortrate(bool bLayoutHide, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsSpeedLongPress) + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + + evas_object_hide(pDisplayViewSpeedboxEdj); + bIsSpeedLongPress = FALSE; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*"); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*"); + edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*"); + edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*"); + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_PORTRATE_MODE, "*"); + if(bLayoutHide) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + } +} + +void MpVideoDisplayViewLandscape(bool bLayoutHide,void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsSpeedLongPress) + { + edje_object_part_text_set(_EDJ(pDisplayViewLayout), MAIN_SPEED_TEXT, ""); + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_SPEEDBOX_HIDE, "*"); + + edje_object_signal_emit(pDisplayViewSpeedboxEdj, SIGNAL_SPEEDBOX_HIDE, "*"); + edje_object_part_unswallow(pDisplayViewCtrlEdj, pDisplayViewSpeedboxEdj); + + evas_object_hide(pDisplayViewSpeedboxEdj); + bIsSpeedLongPress = FALSE; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + } + + elm_object_item_signal_emit(pNaviFrameItemForDisplayerView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*"); + + edje_object_signal_emit(_EDJ(pDisplayViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pDisplayViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pDisplayViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pDisplayViewCtrlEdj, SIGNAL_CONTROL_LANDSCAPE_MODE, "*"); + + if(bLayoutHide) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + } + +} + +void MpVideoDisplayViewResetProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + if (pDisplayViewLayout) { + MpVideoProgressbarReset(pUserData); + } +} + +bool MpVideoDisplayViewIsPauseByUser(void) +{ + VideoLogInfo("%d", bIsPauseByUser); + + return bIsPauseByUser; +} + +void MpVideoDisplayViewSetPauseByUser(bool bPauseByUser) +{ + VideoLogInfo(""); + + bIsPauseByUser = bPauseByUser; +} + + +void MpVideoDisplayViewUpdateProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + if(bIsBeginOfStream) + { + MpVideoProgressbarCreateTimer(pUserData); + } + +} diff --git a/src/mp-video-player-mgr.c b/src/mp-video-player-mgr.c new file mode 100644 index 0000000..12f85f4 --- /dev/null +++ b/src/mp-video-player-mgr.c @@ -0,0 +1,856 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include "mp-video-log.h" +#include "mp-video-player-mgr.h" + +#define MAX_PATH_LEN 2048 + + +static player_h pPlayerHandle; + + +bool MpPlayerMgrIsActive(void) +{ + return pPlayerHandle ? true : false; +} + +bool MpPlayerMgrRegistePlayerCallback(void *PlayerCompletedCbFunc, void *PlayerInterruptedCbFunc, void *PlayerErrorCbFunc, void *PlayerBufferingCbFunc, void *PlayerSubtitleCbFunc, void *pUserData) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_completed_cb(pPlayerHandle, PlayerCompletedCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_interrupted_cb(pPlayerHandle, PlayerInterruptedCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_error_cb(pPlayerHandle, PlayerErrorCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_buffering_cb(pPlayerHandle, PlayerBufferingCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(player_set_subtitle_updated_cb(pPlayerHandle, PlayerSubtitleCbFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR]"); + return false; +} + + return true; +} + +bool MpPlayerMgrCreate(const char *szPath) +{ + VideoLogInfo(""); + + if(!szPath) + { + VideoLogInfo("[ERR] Not correct Meida URI."); + return false; + } + + int nPathLength = strlen(szPath); + int nErr = PLAYER_ERROR_NONE; + + VideoLogInfo(" Media path (%s)", szPath); + + if(nPathLength > 0 && nPathLength < MAX_PATH_LEN) + { + nErr = player_create(&pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to create player handle. (MMF Error code : %x)", nErr); + return false; + } + + nErr = player_set_uri(pPlayerHandle, szPath); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] (%x) Fail to set attribute ", nErr); + return false; + } + } + else + { + VideoLogInfo("[ERR] File path is too long."); + return false; + } + + nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] (%x):: Fail to set attribute ", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrDestroy(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_destroy(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + pPlayerHandle = NULL; + + return true; +} + +bool MpPlayerMgrRealize(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_prepare(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrRealizeAsync(void *pPrepareCb, void *pUserData) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_prepare_async(pPlayerHandle, pPrepareCb, pUserData); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrUnrealize(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_unprepare (pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrPlay(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_start(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrStop(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_stop (pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrResume(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_start(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrPause(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_pause(pPlayerHandle); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x", nErr); + return false; + } + + return true; +} + +int MpPlayerMgrGetPosition(void) +{ + if(!MpPlayerMgrIsActive()) + { + return 0; + } + + int nPos = 0; + int nErr = 0; + + nErr = player_get_position(pPlayerHandle, &nPos); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x ", nErr); + return 0; + } + + return nPos; +} + +void MpPlayerMgrSetPosition(unsigned int nPos, void *pSeekCb, void *pUserData) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo("Set position - %d", nPos); + + int nErr = player_set_position(pPlayerHandle, (int)nPos, pSeekCb, pUserData); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x ", nErr); + } +} + +void MpPlayerMgrSetSubtitlePosition(unsigned int nPos) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + int nErr = player_set_subtitle_position(pPlayerHandle, nPos); + + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : 0x%x ", nErr); + } +} + + +void MpPlayerMgrSetMute(bool bMuteEnable) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + if(player_set_mute(pPlayerHandle, bMuteEnable) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to set mute."); + } +} + +bool MpPlayerMgrGetMute(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + bool bIsMute = false; + + if(player_is_muted(pPlayerHandle, &bIsMute) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get mute state."); + return false; + } + + return bIsMute; +} + +bool MpPlayerMgrSetSurroundFilters(int nSurround) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + audio_effect_preset_e ePresetValue = (audio_effect_preset_e)nSurround; + + bool available = false; + + player_audio_effect_preset_is_available (pPlayerHandle, ePresetValue, &available); + + if(available == false) + { + VideoLogInfo("[ERR] unavailable to set audio effect."); + return false; + } + + if(player_audio_effect_set_preset(pPlayerHandle,ePresetValue) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to set audio effect."); + return false; + } + + return true; +} + +int MpPlayerMgrGetDuration(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + + int nDuration = -1; + + int nErr = player_get_duration(pPlayerHandle, &nDuration); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return 0; + } + + return nDuration; +} + +bool MpPlayerMgrSetOverlayXid(void *pOverlayXid) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } +/* + if(!pOverlayXid) + { + VideoLogInfo("[ERR]"); + return false; + } +*/ + VideoLogInfo("XID : %x, %d", pOverlayXid, (int)pOverlayXid); + int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_X11, (void*)pOverlayXid); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + return true; +} + +bool MpPlayerMgrSetEvasSinkID(void *pEvasSinkID) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } +/* + if(!pEvasSinkID) + { + VideoLogInfo("[ERR]"); + return false; + } +*/ + VideoLogInfo("Evas Sink ID : %x", pEvasSinkID); + + int nErr = player_set_display(pPlayerHandle, PLAYER_DISPLAY_TYPE_EVAS, (void*)pEvasSinkID); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrSetSoundPriority(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nErr = player_set_sound_type(pPlayerHandle, SOUND_TYPE_MEDIA); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + + return true; +} + +int MpPlayerMgrSetPlaySpeed(float nSpeedValue) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return -1; + } + int nErr = player_set_playback_rate(pPlayerHandle, nSpeedValue); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return -1; + } + + return 0; +} + +int MpPlayerMgrGetVideoWidthResolution(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + + int nWidth = 0; + int nHeight = 0; + int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return 0; + } + + return nWidth; +} + +int MpPlayerMgrGetVideoHeightResolution(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + + int nWidth = 0; + int nHeight = 0; + int nErr = player_get_video_size(pPlayerHandle, &nWidth, &nHeight); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to get attribute ", nErr); + return 0; + } + + return nHeight; +} + +bool MpPlayerMgrSetSubtitle(char *szSubtitlePath) +{ + VideoLogInfo("%s", szSubtitlePath); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(!szSubtitlePath) + { + VideoLogInfo("[ERR] subtitle path is null."); + return false; + } + + int nErr = player_set_subtitle_path(pPlayerHandle, szSubtitlePath); + if(nErr != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nErr); + return false; + } + + return true; +} + +bool MpPlayerMgrSetDisplayMode(MpPlayerMgrDisplayMethod nMethodMode) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + int nRet = player_set_display_mode (pPlayerHandle , nMethodMode); + if(nRet != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet); + return false; + } + return true; +} + +bool MpPlayerMgrSetRotate(MpVideoRotation nRotation) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + int nRotVal = PLAYER_DISPLAY_ROTATION_NONE; + + if(nRotation == VIDEO_SCREEN_PORTRAIT) { + nRotVal = PLAYER_DISPLAY_ROTATION_NONE; + } + else if(nRotation == VIDEO_SCREEN_PORTRAIT_UPSIDEDOWN) { + nRotVal = PLAYER_DISPLAY_ROTATION_180; + } + else if(nRotation == VIDEO_SCREEN_LANDSCAPE) { + nRotVal = PLAYER_DISPLAY_ROTATION_270; + } + else if(nRotation == VIDEO_SCREEN_LANDSCAPE_UPSIDEDOWN) { + nRotVal = PLAYER_DISPLAY_ROTATION_90; + } + + int nRet = player_set_x11_display_rotation (pPlayerHandle , nRotVal); + if(nRet != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Error code : %x - Fail to set attribute ", nRet); + return false; + } + return true; +} + +bool MpPlayerMgrSetUseragentForStreaming(const char *szUserAgent) +{ + VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING USER AGENT. !!!!!!"); + + return true; +} + +bool MpPlayerMgrSetProxyAddressForStreaming(const char *szProxyAddress) +{ + VideoLogInfo("!!!!!! NO EXIST FUNCTION FOR SETTING PROXY ADDRESS. !!!!!!"); + return true; +} + +bool MpPlayerMgrSetCookieForStreaming(const char *szCookie) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + if(!szCookie) + { + VideoLogInfo("No exist cookie."); + return false; + } + + VideoLogInfo(""); + + int nRet = player_set_streaming_cookie(pPlayerHandle , szCookie, strlen(szCookie)); + if(nRet == PLAYER_ERROR_INVALID_PARAMETER) + { + VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER"); + return false; + } + + return true; +} + +bool MpPlayerMgrStartCapture() +{ + VideoLogInfo(""); + return true; +} + +bool MpPlayerMgrCaptureVideo(void *pCallbackFunc, void *pUserData) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo(""); + return false; + } + + VideoLogInfo(""); + + int nRet = player_capture_video(pPlayerHandle, pCallbackFunc, pUserData); + if(nRet == PLAYER_ERROR_INVALID_PARAMETER) + { + VideoLogInfo("PLAYER_ERROR_INVALID_PARAMETER"); + return false; + } + + if(nRet == PLAYER_ERROR_INVALID_OPERATION) + { + VideoLogInfo("PLAYER_ERROR_INVALID_OPERATION"); + return false; + } + + if(nRet == PLAYER_ERROR_INVALID_STATE) + { + VideoLogInfo("PLAYER_ERROR_INVALID_STATE"); + return false; + } + + return true; +} + +int MpPlayerMgrGetBufferingPosition(void) +{ + int nStartPos = 0; + int nCurrentPos = 0; + + if(player_get_streaming_download_progress(pPlayerHandle,&nStartPos, &nCurrentPos) != PLAYER_ERROR_NONE) + { + VideoLogError(""); + return 0; +} + + return nCurrentPos; +} + +bool MpPlayerMgrRegisteBufferingCallBack(void *pCallbackFunc, void *pUserData) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + // !!! CHECK player_buffering_cb !!! + if(player_set_buffering_cb(pPlayerHandle, pCallbackFunc, pUserData) != PLAYER_ERROR_NONE) + { + VideoLogInfo(""); + return false; + } + + return true; +} + +int MpPlayerMgrGetFileStreamType(void) +{ + VideoLogInfo(""); + +// jdlee + return FILE_STREAM_TYPE_VIDEO; +} + +bool MpPlayerMgrSetScaling(bool bScale) +{ + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return false; + } + + VideoLogInfo(""); + + if(player_enable_evas_display_scaling(pPlayerHandle, bScale) != PLAYER_ERROR_NONE) { + VideoLogInfo("[ERR]"); + return false; + } + return true; +} + +player_state_e MpPlayerMgrGetPlayerState(void) +{ + int ret = 0; + player_state_e player_state = PLAYER_STATE_NONE; + ret = player_get_state(pPlayerHandle, &player_state); + if (ret != PLAYER_ERROR_NONE) { + player_state = PLAYER_STATE_NONE; + } + return player_state; +} + +void MpPlayerMgrSetVolume(float volume) +{ + VideoLogInfo("volume = %f", volume); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return; + } + + if(player_set_volume(pPlayerHandle, volume, volume) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to set volume."); + } +} + +float MpPlayerMgrGetVolume(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0.0; + } + + float volume_left = 0.0; + float volume_right = 0.0; + + if(player_get_volume(pPlayerHandle, &volume_left, &volume_right) != PLAYER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get volume."); + return 0.0; + } + + return volume_left; +} + +int MpPlayerMgrGetClosedCaptionCount(void) +{ + VideoLogInfo(""); + + if(!MpPlayerMgrIsActive()) + { + VideoLogInfo("[ERR]"); + return 0; + } + int nCount = 0; + + if(player_get_track_count(pPlayerHandle, PLAYER_TRACK_TYPE_TEXT, &nCount) != PLAYER_ERROR_NONE) + { + VideoLogError("[ERR] player_get_track_count."); + return 0; + } + + VideoLogError("== %d ===========================================", nCount); + + return nCount; +} + diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c new file mode 100644 index 0000000..66f8c84 --- /dev/null +++ b/src/mp-video-progressbar.c @@ -0,0 +1,752 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-value-define.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-progressbar.h" + +#define PROGRESS_BAR_START_TERM 130 +#define PROGRESS_BAR_WIDTH_TERM 200 + +#define PROGRESS_ADJUSTMENT_TIME_INTERVAL 2.0 +#define PROGRESS_ADJUSTMENT_RUN_INTERVAL 0.3 + +#define PROGRESS_ADJUSTMENT_MOVE_LIMIT 20 +#define PROGRESS_ADJUSTMENT_MODE_LIMIT 20 + + +static Evas_Object *pProgressbarEdj = NULL; +static Ecore_Timer *pProgressbarTimer = NULL; + +static Ecore_Timer *pProgressAdjustCheckTimer = NULL; +static Ecore_Timer *pProgressAdjustRunTimer = NULL; + +static bool bIsEventSkip = FALSE; +static bool bIsDrag = FALSE; +static int nDragPosition = 0; + +static bool bIsAdjustmentMode = FALSE; +static int nDownPosX = 0; +static int nOldPosX = 0; +static bool bPrevAdjustment = FALSE; + + +static void MpVideoProgressbarSetAdjustmentMode(bool bShow) +{ + VideoLogInfo(""); + + if(bShow) { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_SHOW, "*"); + } + else { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_HIDE, "*"); + } +} + + +static void MpVideoProgressbarSetPointerVisible(bool bVisible) +{ + VideoLogInfo(""); + + if(bVisible) { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_SHOW, "*"); + } + else { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_HIDE, "*"); + } +} + +/* + * Internal function + */ +static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData) +{ + //VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration); + + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, + PLAY_TIME_ARGS(nDragPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", + nPlayedRatio, 0.0); + + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", + szPlayingTime); + + if(bIsAdjustmentMode) { + edje_object_part_text_set(pProgressbarEdj, "progress.adjustment.txt", + szPlayingTime); + } + + return EINA_TRUE; +} + +static void MpVideoProgressbarUpdateBufferingValue(void *pUserData) +{ + //VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + double buffering_ratio = 0.0; + pAppData-> + VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition(pAppData); + + buffering_ratio = ((double)pAppData->nBufferingPosition / (double)100); + + //VideoLogInfo("%d:%lf", pAppData->nBufferingPosition, buffering_ratio); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering", + buffering_ratio, 0.0); +} + +/* + * Callback function. + */ +static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData) +{ + /* VideoLogInfo(""); */ + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pAppData->nDuration < 1) { + VideoLogInfo("Try to update duration time."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData); + return EINA_TRUE; + } + + if (bIsEventSkip || bIsDrag) + return EINA_TRUE; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration); + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoProgressbarUpdateBufferingValue(pUserData); + } + + return EINA_TRUE; +} + +static Eina_Bool MpVideoProgressbarAdjustmentTimerCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR] No exist userdata."); + return EINA_FALSE; + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsAdjustmentMode = TRUE; + + VideoLogInfo("%d, %d",pAppData->nCurPosition , nDragPosition); + + pAppData->nSetPosition = nDragPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode); + MpVideoProgressbarUpdateValue(pUserData); + return EINA_FALSE; +} + +static Eina_Bool MpVideoProgressbarAdjustmentRunTimerCb(void *pUserData) +{ +// VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + + if(bPrevAdjustment) { + pAppData->nSetPosition = nDragPosition - 1000; + } + else { + pAppData->nSetPosition = nDragPosition + 1000; + } + + if (pAppData->nSetPosition < 0) { + pAppData->nSetPosition = 0; + } + + if (pAppData->nSetPosition > pAppData->nDuration) { + pAppData->nSetPosition = pAppData->nDuration; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + nDragPosition = pAppData->nSetPosition; + + MpVideoProgressbarUpdateValue((void *)pAppData); + + + + return EINA_TRUE; +} + + + +static void MpVideoProgressbarDownCb(void *pUserData, Evas * e, + Evas_Object *obj, void *event_info) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip) + return; + + MpVideoProgressbarDeleteTimer(); + MpVideoProgressbarSetPointerVisible(TRUE); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + pProgressAdjustCheckTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_TIME_INTERVAL, + MpVideoProgressbarAdjustmentTimerCb, (void *)pUserData); + + } + bIsDrag = TRUE; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + nDownPosX = ev->canvas.x; + nOldPosX = ev->canvas.x;; + current = ev->canvas.x - term; + w = w - w_term; + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + + nDragPosition = ratio * pAppData->nDuration; + pAppData->nSetPosition = nDragPosition; + + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE; + } + pAppData->bSeekComplete = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + else { + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME; + } + } + + MpVideoProgressbarUpdateValue(pUserData); + +} + +static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj, + void *event_info) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip) + return; + + bIsDrag = FALSE; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + MpVideoProgressbarSetPointerVisible(FALSE); + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(bIsAdjustmentMode) { + bIsAdjustmentMode = FALSE; + MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + } + nOldPosX = 0; + return; + } + } + + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + current = ev->canvas.x - term; + w = w - w_term; + + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + + pAppData->nSetPosition = (int)pAppData->nDuration * ratio; + + if (pAppData->nSetPosition > pAppData->nDuration) + pAppData->nSetPosition = pAppData->nDuration; + + if (pAppData->nSetPosition < 0) + pAppData->nSetPosition = 0; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + MpVideoProgressbarCreateTimer((void *)pAppData); + + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + } + + if(!pAppData->bSeekComplete) + { + pAppData->nSeekPosition = pAppData->nSetPosition; + if((pAppData->nCurPosition < pAppData->nSeekPosition + 5000) && + (pAppData->nCurPosition > pAppData->nSeekPosition - 5000)) + { + VideoLogError("Skip for same position"); + pAppData->nSeekPosition = 0; + } + } + else + { + if((pAppData->nCurPosition < pAppData->nSetPosition + 5000) && + (pAppData->nCurPosition > pAppData->nSetPosition - 5000)) + { + VideoLogError("Skip for same position"); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + } + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + MpVideoProgressbarCreateTimer((void *)pAppData); + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + } + + } +} +static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e, + Evas_Object *obj, void *event_info) +{ +// VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip || bIsDrag == FALSE) + return; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + if(bIsAdjustmentMode) { + if((nOldPosX + PROGRESS_ADJUSTMENT_MODE_LIMIT) < ev->canvas.x) { + if(bPrevAdjustment == TRUE) { + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + bPrevAdjustment = FALSE; + nOldPosX = ev->canvas.x; + } + else if((nOldPosX - PROGRESS_ADJUSTMENT_MODE_LIMIT) > ev->canvas.x) { + if(bPrevAdjustment == FALSE) { + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + bPrevAdjustment = TRUE; + nOldPosX = ev->canvas.x; + } + + if(pProgressAdjustRunTimer == NULL) { + pProgressAdjustRunTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_RUN_INTERVAL, + MpVideoProgressbarAdjustmentRunTimerCb, (void *)pAppData); + + } + + } + else { + if(((nDownPosX + PROGRESS_ADJUSTMENT_MOVE_LIMIT) < ev->canvas.x ) || + ((nDownPosX - PROGRESS_ADJUSTMENT_MOVE_LIMIT) > ev->canvas.x)) { + VideoLogInfo("Adjustment Off"); + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + current = ev->canvas.x - term; + w = w - w_term; + + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + nDragPosition = ratio * pAppData->nDuration; + pAppData->nSetPosition = nDragPosition; + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(pAppData->bSeekComplete) { + pAppData->bSeekComplete = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + } + MpVideoProgressbarUpdateValue(pUserData); + } +} + +/* + * External function + */ +void MpVideoProgressbarSetSkipEvent(bool bSkip) +{ +// VideoLogInfo(""); + + bIsEventSkip = bSkip; +} + +void *MpVideoProgressbarGetEdjHandle(void) +{ + VideoLogInfo(""); + + if (pProgressbarEdj) { + return (void *)pProgressbarEdj; + } else { + VideoLogInfo("Progressbar edj handle is null."); + return NULL; + } +} + +void *MpVideoProgressbarInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + pProgressbarEdj = (Evas_Object *)MpUtilLoadEdjFile(pMainWindowEvas, + VIDEO_PLAYER_PROGRESS_EDJ, + PROGRESS_EDJ_GROUP); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_DOWN, + MpVideoProgressbarDownCb, pAppData); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_UP, + MpVideoProgressbarUpCb, pAppData); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_MOVE, + MpVideoProgressbarMoveCb, pAppData); + + MpVideoProgressbarUpdateDurationTime("--:--:--"); + + return (void *)pProgressbarEdj; +} + +void MpVideoProgressbarDestroy(void) +{ + VideoLogInfo(""); + + if (pProgressbarEdj) { + evas_object_del(pProgressbarEdj); + pProgressbarEdj = NULL; + } + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + bIsEventSkip = FALSE; + nDragPosition = 0; +} + +void MpVideoProgressbarCreateTimer(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if (bIsEventSkip) + return; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration); + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime); + + pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData); +} + +void MpVideoProgressbarDeleteTimer(void) +{ + VideoLogInfo(""); + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } +} + +void MpVideoProgressbarUpdateDurationTime(char *szDurationTime) +{ + VideoLogInfo(""); + + if (!szDurationTime) { + VideoLogInfo("Fail to ser duration time"); + return; + } + + edje_object_part_text_set(pProgressbarEdj, "progress.txt.total", + szDurationTime); +} + +void MpVideoProgressbarBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoProgressbarDeleteTimer(); + + pAppData->nCurPosition = 0; + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00"); + + MpVideoProgressbarCreateTimer(pUserData); +} + +void MpVideoProgressbarReset(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoProgressbarDeleteTimer(); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00"); +} + diff --git a/src/mp-video-service-ctrl.c b/src/mp-video-service-ctrl.c new file mode 100755 index 0000000..ec2a320 --- /dev/null +++ b/src/mp-video-service-ctrl.c @@ -0,0 +1,629 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-video-service-ctrl.h" + + +#define MP_VIDEO_LAUNCHED_BY_APP_KEY "launching_application" +#define MP_VIDEO_SORT_TYPE_KEY "order_type" +#define MP_VIDEO_LIST_TYPE_KEY "video_list_type" +#define MP_VIDEO_TAG_NAME_KEY "tag_name" +#define MP_VIDEO_EDIT_MODE_KEY "edit_mode" +#define MP_VIDEO_START_POS_TIME_KEY "start_pos_time" +#define MP_VIDEO_URI_PATH "path" +#define MP_VIDEO_COOKIE "cookie" +#define MP_VIDEO_MULTI_WIN_TYPE_KEY "is_multi_win_type" +#define MP_VIDEO_LAUNCH_TYPE "launch-type" +#define MP_VIDEO_SHORTCUT_VIDEO "shortcut-videoplayer" + +static service_h pAppSvcHandle = NULL; +static int nPlayerType = MP_NONE_VIEW_TYPE; +static int nPrevPlayerType = MP_NONE_VIEW_TYPE; +static int nGalleryLatestTime = 0; +static char *g_szStreamingCookie = NULL; +static bool bIsShortcutType = FALSE; + + +///////////////////////////////////////////////////////////////////////////// +// Internal Function + +bool MpVideoServiceCtrlCheckMime(service_h pVideoServiceHandle, char **szMediaUri) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No Exist Service handle."); + return FALSE; + } + + bool bRet = TRUE; + char *szMimeContent = NULL; + + if(service_get_extra_data(pVideoServiceHandle, AUL_K_MIME_CONTENT, &szMimeContent) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist mime type."); + bRet = FALSE; + } + + if(szMimeContent) + { + *szMediaUri = (char*)malloc(strlen(szMimeContent) + 1); + memset(*szMediaUri, 0, strlen(szMimeContent) + 1); + strncpy(*szMediaUri, szMimeContent, strlen(szMimeContent)); + VideoLogInfo("Mime content : %s", *szMediaUri); + free(szMimeContent); + bRet = TRUE; + } + else + { + VideoLogInfo("No exist MIME type."); + bRet = FALSE; + } + + return bRet; +} + +bool MpVideoServiceCtrlCheckBundle(service_h pVideoServiceHandle, char **szMediaUri) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value."); + return FALSE; + } + + bool bRet = TRUE; + char *szStrVideoURI = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_URI_PATH, &szStrVideoURI) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist KEY of video/streaming URI."); + bRet = FALSE; + return bRet; + } + + if(szStrVideoURI) + { + *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1); + memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1); + strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI)); + VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri); + free(szStrVideoURI); + szStrVideoURI = NULL; + bRet = TRUE; + } + else + { + VideoLogInfo("No exist video/streaming URI."); + bRet = FALSE; + } + + return bRet; +} + +bool MpVideoServiceCtrlCheckAUL(service_h pVideoServiceHandle, char **szMediaUri) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value."); + return FALSE; + } + + + char *pGetOperation = NULL; + + service_get_operation(pVideoServiceHandle, &pGetOperation); + + if(pGetOperation == NULL) + { + return FALSE; + } + + if(!strcmp(SERVICE_OPERATION_VIEW , pGetOperation)) + { + char *szStrVideoURI = NULL; + + service_get_uri(pVideoServiceHandle, &szStrVideoURI); + + if(szStrVideoURI) + { + *szMediaUri = (char*)malloc(strlen(szStrVideoURI) + 1); + memset(*szMediaUri, 0, strlen(szStrVideoURI) + 1); + strncpy(*szMediaUri, szStrVideoURI, strlen(szStrVideoURI)); + VideoLogInfo("Video/Streaming URI path : %s", *szMediaUri); + free(szStrVideoURI); + szStrVideoURI = NULL; + } + else + { + VideoLogInfo("[ERR] No exist video/streaming URI."); + + if(pGetOperation) + { + free(pGetOperation); + pGetOperation = NULL; + } + + return FALSE; + } + } + else + { + VideoLogInfo("No exist Operation."); + + if(pGetOperation) + { + free(pGetOperation); + pGetOperation = NULL; + } + + return FALSE; + } + + VideoLogInfo("Video/Streaming URI path pAppData->szMediaUri : %s", *szMediaUri); + + if(pGetOperation) + { + free(pGetOperation); + pGetOperation = NULL; + } + + return TRUE; +} + + +bool MpVideoServiceCtrlParseUri(service_h pVideoServiceHandle, char** szMediaUri) +{ + VideoLogInfo(""); + + if(!MpVideoServiceCtrlCheckMime(pVideoServiceHandle, szMediaUri)) + { + if(!MpVideoServiceCtrlCheckBundle(pVideoServiceHandle, szMediaUri)) + { + if(!MpVideoServiceCtrlCheckAUL(pVideoServiceHandle, szMediaUri)) + { + VideoLogInfo("No exist URI path."); + return FALSE; + } + } + } + + VideoLogInfo("szMediaUri : %s", *szMediaUri); + + return TRUE; +} + +int MpVideoServiceCtrlCheckUriType(char* szMediaUri) +{ + if(!szMediaUri) + { + VideoLogInfo("[ERR] No exist media uri."); + return MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo(""); + + int nRet = 0; + + if(MpUtilCheckUriType(szMediaUri)) + { + VideoLogInfo("MP_STREAMING_PLAYER"); + nRet = MP_STREAMING_PLAYER; + } + else + { + VideoLogInfo("MP_VIDEO_PLAYER"); + nRet = MP_VIDEO_PLAYER; + } + + return nRet; +} + +bool MpVideoServiceCtrlCheckCookieForStreaming(service_h pVideoServiceHandle) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("[ERR] No exist pBundleData pointer or Service handle count value."); + return FALSE; + } + + bool bRet = TRUE; + char *pStrVideoCookie = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_COOKIE, &pStrVideoCookie) != SERVICE_ERROR_NONE) + { + VideoLogInfo("[ERR] No exist KEY of streaming COOKIE."); + bRet = FALSE; + } + + if(pStrVideoCookie) + { + g_szStreamingCookie = (char*)malloc(strlen(pStrVideoCookie) + 1); + memset(g_szStreamingCookie, 0, strlen(pStrVideoCookie) + 1); + strncpy(g_szStreamingCookie, pStrVideoCookie, strlen(pStrVideoCookie)); + VideoLogInfo("Video/Streaming URI path Cookie : %s", g_szStreamingCookie); + free(pStrVideoCookie); + } + else + { + VideoLogInfo("[ERR] No exist video/streaming URI."); + bRet = FALSE; + } + + return TRUE; +} + +int MpVideoServiceCtrlCheckStartPositionTime(service_h pVideoServiceHandle, char *szBundleKey) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle data."); + return 0; + } + + int nStartPositionTime = 0; + char *szStartPosTime = NULL; + + if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szStartPosTime) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist mime type."); + return 0; + } + + if(!szStartPosTime) + { + VideoLogInfo("No exist pointer of position time."); + return 0; + } + + nStartPositionTime = atoi(szStartPosTime); + + VideoLogInfo("Start position time : %d", nStartPositionTime); + + free(szStartPosTime); + + if(nStartPositionTime < 0) + { + nStartPositionTime = 0; + } + + return nStartPositionTime; +} + +bool MpVideoServiceCtrlGetTagNameOfGallery(service_h pVideoServiceHandle, char *szBundleKey, char *szTagName) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle."); + return FALSE; + } + + if(!szBundleKey) + { + VideoLogInfo("No exist Service handle kay."); + return FALSE; + } + + if(!szTagName) + { + VideoLogInfo("No exist pAppData."); + return FALSE; + } + + bool nRet = TRUE; + char *szVideoTagName = NULL; + + if(service_get_extra_data(pVideoServiceHandle, szBundleKey, &szVideoTagName) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist mime type."); + nRet = FALSE; + } + + if(szVideoTagName) + { + strncpy(szTagName, szVideoTagName, STR_LEN_MAX - 1); + VideoLogInfo("szTagName : %s", szTagName); + free(szVideoTagName); + nRet = TRUE; + } + else + { + VideoLogInfo("No exist pointer of szVideoTagName."); + nRet = FALSE; + } + + return nRet; +} + +int MpVideoServiceCtrlCheckLauncher(service_h pVideoServiceHandle) +{ + VideoLogInfo(""); + + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle data."); + return MP_VIDEO_PLAYER_SIMPLE; + } + + char *szLaunchingByOtherApp = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCHED_BY_APP_KEY, &szLaunchingByOtherApp) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY"); + return MP_VIDEO_PLAYER_SIMPLE; + } + + if(!szLaunchingByOtherApp) + { + VideoLogInfo("No exist pointer of szLaunchingByOtherApp"); + return MP_VIDEO_PLAYER_SIMPLE; + } + + MpPlayerViewType nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE; + + if(!strcmp(szLaunchingByOtherApp, "gallery")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY; + + nGalleryLatestTime = MpVideoServiceCtrlCheckStartPositionTime(pVideoServiceHandle, MP_VIDEO_START_POS_TIME_KEY); + } + else if(!strcmp(szLaunchingByOtherApp, "image_viewer")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_GALLERY; + } + else if(!strcmp(szLaunchingByOtherApp, "email")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_EMAIL; + } + else if(!strcmp(szLaunchingByOtherApp, "message")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_MMS; + } + else if(!strcmp(szLaunchingByOtherApp, "light_play_view")) + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE; + } + else + { + nTmpLaunchingAppType = MP_VIDEO_PLAYER_SIMPLE; + } + + VideoLogInfo("Start position time : %d", nTmpLaunchingAppType); + + free(szLaunchingByOtherApp); + + return (int)nTmpLaunchingAppType; +} + +bool MpVideoServiceCtrlCheckShortcut(service_h pVideoServiceHandle) +{ + if(!pVideoServiceHandle) + { + VideoLogInfo("No exist Service handle."); + return FALSE; + } + + VideoLogInfo(""); + + char *pGetOperation = NULL; + + service_get_operation(pVideoServiceHandle, &pGetOperation); + + if(pGetOperation == NULL) + { + bIsShortcutType = FALSE; + return bIsShortcutType; + } + + if(!strcmp(pGetOperation, SERVICE_OPERATION_DEFAULT)) + { + char *szOperationType = NULL; + + if(service_get_extra_data(pVideoServiceHandle, MP_VIDEO_LAUNCH_TYPE, &szOperationType) != SERVICE_ERROR_NONE) + { + VideoLogInfo("No exist Service handle key of MP_VIDEO_LAUNCHED_BY_APP_KEY"); + bIsShortcutType = FALSE; + } + + if(!szOperationType) + { + VideoLogInfo("No exist pointer of szOperationType"); + bIsShortcutType = FALSE; + } + else + { + if(!strcmp(szOperationType, MP_VIDEO_SHORTCUT_VIDEO)) + { + bIsShortcutType = TRUE; + } + else + { + bIsShortcutType = FALSE; + } + + if(szOperationType) + { + free(szOperationType); + szOperationType = NULL; + } + } + } + + return bIsShortcutType; +} + + + +///////////////////////////////////////////////////////////////////////////// +// External Function + +void MpVideoServiceCtrlReset(void) +{ + VideoLogInfo(""); + + pAppSvcHandle = NULL; + + nGalleryLatestTime = 0; + + if(g_szStreamingCookie) + { + free(g_szStreamingCookie); + g_szStreamingCookie = NULL; + } +} + +int MpVideoServiceCtrlInitServiceParser(void* pAppServiceHandle, char** szMediaUri) +{ + if(!pAppServiceHandle) + { + VideoLogInfo(""); + return MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo(""); + + MpVideoServiceCtrlReset(); + + pAppSvcHandle = (service_h)pAppServiceHandle; + nPlayerType = MP_NONE_VIEW_TYPE; + + if(!MpVideoServiceCtrlParseUri(pAppSvcHandle, szMediaUri)) + { + VideoLogInfo("MP_VIDEO_PLAYER_LIST"); + nPlayerType = MP_VIDEO_PLAYER; + } + + if(!*szMediaUri) + { + return nPlayerType; + } + else + { + VideoLogInfo("szMediaUri : %s", *szMediaUri); + } + + int nUriType = 0; + + nUriType = MpVideoServiceCtrlCheckUriType(*szMediaUri); + + if(nUriType == MP_VIDEO_PLAYER) + { + nPlayerType = MpVideoServiceCtrlCheckLauncher(pAppSvcHandle); + } + + if(nUriType == MP_STREAMING_PLAYER) + { + nPlayerType = MP_STREAMING_PLAYER; + MpVideoServiceCtrlCheckCookieForStreaming(pAppSvcHandle); + } + + return nPlayerType; + } + +int MpVideoServiceCtrlGetLatestTime(void) +{ + VideoLogInfo(""); + + if(nGalleryLatestTime < 0) + { + nGalleryLatestTime = 0; + } + + return nGalleryLatestTime; +} + +int MpVideoServiceCtrlGetPlayerTypeWithoutLog(void) +{ + if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType) + { + nPlayerType = MP_ERROR_PLAYER_TYPE; + } + + return nPlayerType; +} + +int MpVideoServiceCtrlGetPlayerType(void) +{ + VideoLogInfo(""); + + if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType) + { + nPlayerType = MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo("nPlayerType : %d", nPlayerType); + + return nPlayerType; +} + +void MpVideoServiceCtrlSetPlayerType(int nSetPlayerType) +{ + VideoLogInfo("nSetPlayerType : %d", nSetPlayerType); + + if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType) + { + MpVideoServiceCtrlSetPrevPlayerType(nPlayerType); + nPlayerType = nSetPlayerType; + } +} + +int MpVideoServiceCtrlGetPrevPlayerType(void) +{ + VideoLogInfo(""); + + if(MP_ERROR_PLAYER_TYPE > nPlayerType || MP_MAX_PLAYER_TYPE < nPlayerType) + { + nPrevPlayerType = MP_ERROR_PLAYER_TYPE; + } + + VideoLogInfo("nPrevPlayerType : %d", nPrevPlayerType); + + return nPrevPlayerType; +} + +void MpVideoServiceCtrlSetPrevPlayerType(int nSetPlayerType) +{ + VideoLogInfo("nSetPlayerType : %d", nSetPlayerType); + + if(MP_ERROR_PLAYER_TYPE < nSetPlayerType || MP_MAX_PLAYER_TYPE > nSetPlayerType) + { + nPrevPlayerType = nSetPlayerType; + } +} + +char* MpVideoServiceCtrlGetCookieForStreaming(void) +{ + VideoLogInfo(""); + + if(!g_szStreamingCookie) + { + VideoLogInfo("No exist streaming cookie."); + return NULL; + } + + return g_szStreamingCookie; +} \ No newline at end of file diff --git a/src/mp-video-sound-path-ctrl.c b/src/mp-video-sound-path-ctrl.c new file mode 100755 index 0000000..72666e8 --- /dev/null +++ b/src/mp-video-sound-path-ctrl.c @@ -0,0 +1,605 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-sound-path-ctrl.h" + +#define MP_VIDEO_SOUND_PATH_NUM 10 +#define MP_VIDEO_SOUND_PATH_SPEAKER "Speaker" +#define MP_VIDEO_SOUND_PATH_EARJACK "Headphones" + +static Evas_Object *pVideoSoundPathPopUpHandle = NULL; +//static Evas_Object *pVideoSoundPathpPopupWindow = NULL; +static Evas_Object *pGroupRadio = NULL; +static Evas_Object *pGenList = NULL; + +static char **szSoundPathItems = NULL; +static bool bIsConnectBluetooth = FALSE; +static bool bIsConnectEarjack = FALSE; + +void MpVideoSoundpathDeleteRadioButton(void) +{ + VideoLogInfo(""); + + if (pGroupRadio) { + evas_object_del(pGroupRadio); + pGroupRadio = NULL; + } +} + +void MpVideoSoundpathDeletePopupHandle(void) +{ + VideoLogInfo(""); + + int nCount = 0; + + if(szSoundPathItems) + { + for(nCount = 0; nCount < MP_VIDEO_SOUND_PATH_NUM; nCount++) + { + if(szSoundPathItems[nCount]) + { + free(szSoundPathItems[nCount]); + szSoundPathItems[nCount] = NULL; + } + } + free(szSoundPathItems); + szSoundPathItems = NULL; + } + + MpVideoSoundpathDeleteRadioButton(); + + if (pGenList) { + evas_object_del(pGenList); + pGenList = NULL; + } + + if (pVideoSoundPathPopUpHandle) { + evas_object_del(pVideoSoundPathPopUpHandle); + pVideoSoundPathPopUpHandle = NULL; + } + + MpUtilSetAlphaOfMainWindow(TRUE); + + /* + if (pVideoSoundPathpPopupWindow) { + evas_object_del(pVideoSoundPathpPopupWindow); + pVideoSoundPathpPopupWindow = NULL; + } + */ +} + +static char *MpVideoSoundpathGetLabelOfGenlistItemCb(const void *pUserData, + Evas_Object *pObject, + const char *pPart) +{ + VideoLogInfo(""); + + int nIndex = (int)pUserData; + + if (!strcmp(pPart, "elm.text")) { + VideoLogInfo("Index : %d", nIndex); + return strdup(szSoundPathItems[nIndex]); + } + + return NULL; +} + +static Evas_Object *MpVideoSoundpathGetIconOfGenlistItemCb(const void + *pUserData, + Evas_Object *pObject, + const char *pPart) +{ + VideoLogInfo(""); + + int nIndex = (int)pUserData; + Evas_Object *pTmpRadio = NULL; + + if (!strcmp(pPart, "elm.icon")) { + VideoLogInfo("Index : %d", nIndex); + pTmpRadio = elm_radio_add(pObject); + elm_radio_state_value_set(pTmpRadio, nIndex); + evas_object_show(pTmpRadio); + elm_radio_group_add(pTmpRadio, pGroupRadio); + } + + return pTmpRadio; +} + +static void MpVideoSoundpathSelectSoundPathItemCb(void *pUserData, Evas_Object *pObject, void *pEventInfo) +{ + if(pUserData == NULL) + { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nIndex = 0; + Elm_Object_Item *pItem = (Elm_Object_Item *) pEventInfo; + + if(pItem) + { + nIndex = (int)elm_object_item_data_get(pItem); + VideoLogInfo("Select sound path : %s", szSoundPathItems[nIndex]); + + if(!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_SPEAKER)) + { + int nRet = 0; + nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_SPEAKER); + + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } + else if (!strcmp(szSoundPathItems[nIndex], MP_VIDEO_SOUND_PATH_EARJACK)) + { + int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_WIRED_ACCESSORY); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + } + } + else + { + //int nRet = sound_manager_set_route_policy(SOUND_ROUTE_DEFAULT); + int nRet = sound_manager_set_active_route(SOUND_ROUTE_OUT_BLUETOOTH); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] set_system_policy(0x%x)", nRet); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH); + } + } + } + + MpVideoSoundpathDeletePopupHandle(); +} + +static void MpVideoSoundpathPopupCb(void *pUserData, Evas_Object *pObject, + void *pEventInfo) +{ + VideoLogInfo(""); + + if (pUserData == NULL) { + VideoLogInfo("[ERR]No have pUserData"); + return; + } + + MpVideoSoundpathDeletePopupHandle(); +} + +static void MpVideoSoundpathCurrentState() +{ + VideoLogInfo(""); + + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + bIsConnectEarjack = FALSE; + bIsConnectBluetooth = FALSE; + + /* Speaker */ + strncpy(szSoundPathItems[MP_SOUND_PATH_SPEAKER], MP_VIDEO_SOUND_PATH_SPEAKER, STR_LEN_MAX - 1); + + /* Check and Add earjack sound path. */ + if(MpUtilIsConnectEarjack()) + { + VideoLogInfo("Connect earjack."); + bIsConnectEarjack = TRUE; + strncpy(szSoundPathItems[MP_SOUND_PATH_EARJACK], MP_VIDEO_SOUND_PATH_EARJACK, STR_LEN_MAX - 1); + } + else + { + VideoLogInfo("No connect earjack."); + } + + /* Add bluetooth stereo sound path. */ + if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) + { + VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path."); + } + else + { + if(bBluetoothConnect) + { + if(szBluetoothName) + { + VideoLogInfo("Connect szBluetoothName : %s", szBluetoothName); + bIsConnectBluetooth = TRUE; + strncpy(szSoundPathItems[MP_SOUND_PATH_BLUETOOTH], szBluetoothName, STR_LEN_MAX - 1); + free(szBluetoothName); + szBluetoothName = NULL; + } + } + else + { + if(szBluetoothName) + { + free(szBluetoothName); + szBluetoothName = NULL; + } + VideoLogInfo("Unactivate Bluetooth stereo A2DP."); + } + } + +} + +void MpVideoSoundpathSetRadioButton(void) +{ + VideoLogInfo(""); + + sound_device_in_e in; + sound_device_out_e out; + + sound_manager_get_active_device(&in, &out); + + switch(out) + { + case SOUND_DEVICE_OUT_SPEAKER: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + break; + + case SOUND_DEVICE_OUT_WIRED_ACCESSORY: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + break; + + case SOUND_DEVICE_OUT_BT_A2DP: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH); + break; + + default: + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + break; + } + +/* + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + sound_route_policy_e nPolicy = 0; + + if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get sound path route policy."); + return; + } + + if(nPolicy == SOUND_ROUTE_DEFAULT) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT"); + + if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) + { + VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path."); + } + + if(bBluetoothConnect) + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_BLUETOOTH); + } + else if(MpUtilIsConnectEarjack()) + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } + } + else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP"); + + if(MpUtilIsConnectEarjack()) + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_EARJACK); + } + else + { + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } + } + else + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY"); + + elm_radio_value_set(pGroupRadio, MP_SOUND_PATH_SPEAKER); + } +*/ +} + +/* + * External function + */ +bool MpVideoSoundpathShow(void *pUserData) +{ + if (pUserData == NULL) { + VideoLogInfo("No have popup message or pAppData is null."); + return FALSE; + } + + VideoLogInfo(""); + + MpVideoSoundpathIsConnectOtherSoundpath(); + + if (!bIsConnectBluetooth && !bIsConnectEarjack) { + VideoLogInfo("Soundpath is only speaker."); + return FALSE; + } + + Evas_Object *pBox = NULL; + Evas_Object *pButton = NULL; + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoSoundpathDeletePopupHandle(); + + MpUtilSetAlphaOfMainWindow(FALSE); + + /* Popup handle */ + //pVideoSoundPathpPopupWindow = (Evas_Object *)MpUtilCreateWindow("soundpath_popup_window"); + //pVideoSoundPathPopUpHandle = elm_popup_add(pVideoSoundPathpPopupWindow); + pVideoSoundPathPopUpHandle = elm_popup_add(pAppData->pMainWindow); + + + szSoundPathItems = (char **)calloc(1, sizeof(char *) * MP_VIDEO_SOUND_PATH_NUM); + int idx = 0; + for(idx = 0; idx < MP_VIDEO_SOUND_PATH_NUM; idx++) + { + szSoundPathItems[idx] = (char *)calloc(1, STR_LEN_MAX * sizeof(char)); + } + + MpVideoSoundpathCurrentState(); + + elm_object_style_set(pVideoSoundPathPopUpHandle, "menustyle"); + elm_object_part_text_set(pVideoSoundPathPopUpHandle, "title,text", MP_VIDEO_SOUND_PATH); + evas_object_size_hint_weight_set(pVideoSoundPathPopUpHandle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + pButton = elm_button_add(pVideoSoundPathPopUpHandle); + elm_object_style_set (pButton, "popup_button/default"); + elm_object_text_set(pButton, dgettext(MP_SYS_STRING, MP_COM_BUTTON_CANCEL)); + elm_object_part_content_set(pVideoSoundPathPopUpHandle, "button1", pButton); + evas_object_smart_callback_add(pButton, "clicked", MpVideoSoundpathPopupCb, (void*)pAppData); + + /* Set item of Genlist. */ + Elm_Genlist_Item_Class *st_Itc = NULL; + st_Itc = elm_genlist_item_class_new(); + st_Itc->item_style = "1text.1icon.3"; + st_Itc->func.text_get = (void *)MpVideoSoundpathGetLabelOfGenlistItemCb; + st_Itc->func.content_get = (void *)MpVideoSoundpathGetIconOfGenlistItemCb; + st_Itc->func.state_get = NULL; + st_Itc->func.del = NULL; + + /* Create genlist handle */ + pGenList = elm_genlist_add(pVideoSoundPathPopUpHandle); + evas_object_size_hint_weight_set(pGenList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(pGenList, EVAS_HINT_FILL, EVAS_HINT_FILL); + + //MpUtilRotateWindow(MpUtilGetRotationState(), pVideoSoundPathpPopupWindow); + + pGroupRadio = elm_radio_add(pGenList); + + if (bIsConnectBluetooth) { + elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_BLUETOOTH, NULL, + ELM_GENLIST_ITEM_NONE, + MpVideoSoundpathSelectSoundPathItemCb, + pAppData); + } + + if (bIsConnectEarjack) { + elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_EARJACK, NULL, + ELM_GENLIST_ITEM_NONE, + MpVideoSoundpathSelectSoundPathItemCb, + pAppData); + } + + elm_genlist_item_append(pGenList, st_Itc, (void *)MP_SOUND_PATH_SPEAKER, NULL, + ELM_GENLIST_ITEM_NONE, + MpVideoSoundpathSelectSoundPathItemCb, + pAppData); + + elm_genlist_item_class_free(st_Itc); + + MpVideoSoundpathSetRadioButton(); + + pBox = elm_box_add(pVideoSoundPathPopUpHandle); + if(bIsConnectBluetooth && bIsConnectEarjack) + { + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 338 * elm_config_scale_get()); + } + else if(bIsConnectBluetooth || bIsConnectEarjack) + { + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 225 * elm_config_scale_get()); + } + else + { + evas_object_size_hint_min_set(pBox, 614 * elm_config_scale_get(), 451 * elm_config_scale_get()); + } + + elm_box_pack_end(pBox, pGenList); + elm_object_content_set(pVideoSoundPathPopUpHandle, pBox); + + evas_object_show(pGenList); + evas_object_show(pVideoSoundPathPopUpHandle); + + return TRUE; +} + +void MpVideoSoundpathHide(void) +{ + VideoLogInfo(""); + + MpVideoSoundpathDeletePopupHandle(); +} + +void MpVideoSoundpathRotatePopupWindow(int nRotateMode) +{ + /* + if (!pVideoSoundPathpPopupWindow) { + VideoLogInfo("No exist genlist popup window handle."); + return; + } + + VideoLogInfo(""); + + MpUtilRotateWindow(nRotateMode, pVideoSoundPathpPopupWindow); + */ + + return; +} + +bool MpVideoSoundpathIsConnectOtherSoundpath(void) +{ + VideoLogInfo(""); + + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + + bIsConnectEarjack = FALSE; + bIsConnectBluetooth = FALSE; + + if(MpUtilIsConnectEarjack()) + { + VideoLogInfo("Connect earjack."); + bIsConnectEarjack= TRUE; + return TRUE; + } + sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName); + + if(bBluetoothConnect) + { + if(szBluetoothName) { + free(szBluetoothName); + szBluetoothName = NULL; + } + + VideoLogInfo("Connect bluetooth."); + bIsConnectBluetooth = TRUE; + return TRUE; + } + + if(szBluetoothName) { + free(szBluetoothName); + szBluetoothName = NULL; + } + + VideoLogInfo("Only spaker."); + return FALSE; +} + +int MpVideoSoundpathGetCurrConnectedSoundpath(void) +{ + VideoLogInfo(""); + + sound_device_in_e in; + sound_device_out_e out; + MpSoundPathType nType = MP_SOUND_PATH_SPEAKER; + + sound_manager_get_active_device(&in, &out); + + switch(out) + { + case SOUND_DEVICE_OUT_SPEAKER: + nType = MP_SOUND_PATH_SPEAKER; + break; + + case SOUND_DEVICE_OUT_WIRED_ACCESSORY: + nType = MP_SOUND_PATH_EARJACK; + break; + + case SOUND_DEVICE_OUT_BT_A2DP: + nType = MP_SOUND_PATH_BLUETOOTH; + break; + + default: + nType = MP_SOUND_PATH_SPEAKER; + break; + } + + return nType; + +/* + bool bBluetoothConnect = 0; + char *szBluetoothName = NULL; + sound_route_policy_e nPolicy = 0; + + if(sound_manager_get_route_policy(&nPolicy) != SOUND_MANAGER_ERROR_NONE) + { + VideoLogInfo("[ERR] Fail to get sound path route policy."); + return MP_SOUND_PATH_SPEAKER; + } + + if(nPolicy == SOUND_ROUTE_DEFAULT) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT"); + + if(SOUND_MANAGER_ERROR_NONE != sound_manager_get_a2dp_status(&bBluetoothConnect, &szBluetoothName)) + { + VideoLogInfo("[ERR] Fail to check bluetooth stereo sound path."); + } + + if(bBluetoothConnect) + { + return MP_SOUND_PATH_BLUETOOTH; + } + else if(MpUtilIsConnectEarjack()) + { + return MP_SOUND_PATH_EARJACK; + } + else + { + return MP_SOUND_PATH_SPEAKER; + } + } + else if(nPolicy == SOUND_ROUTE_IGNORE_A2DP) + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP"); + + if(MpUtilIsConnectEarjack()) + { + return MP_SOUND_PATH_EARJACK; + } + else + { + return MP_SOUND_PATH_SPEAKER; + } + } + else + { + VideoLogInfo("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY"); + + return MP_SOUND_PATH_SPEAKER; + } + + return MP_SOUND_PATH_SPEAKER; +*/ +} diff --git a/src/mp-video-streaming-ctrl.c b/src/mp-video-streaming-ctrl.c new file mode 100644 index 0000000..dbb2a36 --- /dev/null +++ b/src/mp-video-streaming-ctrl.c @@ -0,0 +1,818 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-type-define.h" +#include "mp-video-string-define.h" +#include "mp-video-streaming-ctrl.h" + + +#define NETWORK_TIMEOUT 30.0 + +static MpNetworkType nNetworkStatus = MP_NETWORK_TYPE_OFF; +static MpNetworkWifiState nWifiState = MP_NETWORK_WIFI_OFF; +static MpNetworkCellularState nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + +static Ecore_Pipe *pEcorePipeHandleForPause = NULL; +static Ecore_Pipe *pEcorePipeHandleForResume = NULL; + +static Eina_Bool bIsInitCallbackFunc = FALSE; + +static Ecore_Timer *pNetworkTimeoutTimer = NULL; + + + +/* + * Callback function. + */ + +static void MpVideoStreamingCtrlExitCb(void *pUserData, Evas_Object *pObject, + void *pEventInfo) +{ + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); +} + +static int MpVideoStreamingCtrlResumeCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData); + + return 0; +} + +static Eina_Bool MpVideoStreamingCtrlPopupCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return EINA_FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + MpUtilNotifyPopUp(pAppData, MP_COM_CONNECTION_FAIL, MpVideoStreamingCtrlExitCb); + + return EINA_FALSE; +} + +static int MpVideoStreamingCtrlPauseCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return 0; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStopByAppPause(pAppData); + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT, + MpVideoStreamingCtrlPopupCb, + pAppData); + + return 0; +} + + +static void MpVideoStreamingCtrlNetworkOnOffCb(keynode_t *pKeyNode,void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case MP_NETWORK_CLOSE: + VideoLogInfo("MP_NETWORK_CLOSE"); + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + break; + + case MP_NETWORK_ON: + VideoLogInfo("MP_NETWORK_ON"); + if(pEcorePipeHandleForResume) { + if(!ecore_pipe_write(pEcorePipeHandleForResume, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + break; + + default: + VideoLogInfo("UNKNOWN NETWORK CONFIG"); + break; + } + } else { + } +} + +static void MpVideoStreamingCtrlNetworkStatusCb(keynode_t *pKeyNode,void *pUserData) +{ + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + VideoLogInfo(""); + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_STATUS)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case VCONFKEY_NETWORK_OFF: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF"); + /* + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + */ + break; + + case VCONFKEY_NETWORK_CELLULAR: + VideoLogInfo("MP_NETWORK_TYPE_CELLULAR"); + /* + if(pEcorePipeHandleForResume) { + if(!ecore_pipe_write(pEcorePipeHandleForResume, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + nNetworkStatus = MP_NETWORK_TYPE_CELLULAR; + */ + break; + + case VCONFKEY_NETWORK_WIFI: + VideoLogInfo("MP_NETWORK_TYPE_WIFI"); + /* + if(pEcorePipeHandleForResume) { + if(!ecore_pipe_write(pEcorePipeHandleForResume, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + nNetworkStatus = MP_NETWORK_TYPE_WIFI; + */ + break; + + default: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("UNKNOWN NETWORK STATE"); + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + break; + } + } + else { + if(pEcorePipeHandleForPause) { + if(!ecore_pipe_write(pEcorePipeHandleForPause, + pUserData, sizeof(VideoAppData))) { + VideoLogDebug("FAIL PIPE WRITE"); + } + } + } +} + +static void MpVideoStreamingCtrlChangeIpCb(keynode_t *pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + char *szTmp = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if(szkeyname == NULL) { + VideoLogInfo("key name value is NULL"); + return; + } + + if (!strcmp(szkeyname, VCONFKEY_NETWORK_IP)) { + szTmp = vconf_keynode_get_str(pKeyNode); + + if(szTmp == NULL) { + VideoLogInfo("node string value is NULL"); + return; + } + + VideoLogInfo("Network ip address : %s", szTmp); + } + else { + VideoLogInfo("Invalid ip address."); + } +} + +static void MpVideoStreamingCtrlWiFiStateCb(keynode_t *pKeyNode, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_WIFI_STATE)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case VCONFKEY_NETWORK_WIFI_OFF: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF"); + break; + + case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED: + nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED"); + break; + + case VCONFKEY_NETWORK_WIFI_CONNECTED: + nWifiState = MP_NETWORK_WIFI_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_CONNECTED"); + break; + + default: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - default"); + break; + } + } else { + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value"); + } +} + +static void MpVideoStreamingCtrlCellularStateCb(keynode_t *pKeyNode,void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData || !pKeyNode) { + VideoLogInfo("User data is NULL."); + return; + } + + char *szkeyname = NULL; + + szkeyname = vconf_keynode_get_name(pKeyNode); + if (!strcmp(szkeyname, VCONFKEY_NETWORK_CELLULAR_STATE)) { + switch(vconf_keynode_get_int(pKeyNode)) + { + case VCONFKEY_NETWORK_CELLULAR_ON: + nCellularState = MP_NETWORK_CELLULAR_ON; + VideoLogInfo("MP_NETWORK_CELLULAR_ON"); + break; + + case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF: + nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF: + nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE: + nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE; + VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE"); + break; + + case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE : + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE"); + break; + + default: + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default"); + break; + } + } else { + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value"); + } +} + +static void MpVideoStreamingCtrlPipeInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("No exist pUserData"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pEcorePipeHandleForPause) { + ecore_pipe_del(pEcorePipeHandleForPause); + pEcorePipeHandleForPause = NULL; + } + + pEcorePipeHandleForPause = ecore_pipe_add( + (Ecore_Pipe_Cb)MpVideoStreamingCtrlPauseCb, + (void *)pAppData); + + if(pEcorePipeHandleForResume) { + ecore_pipe_del(pEcorePipeHandleForResume); + pEcorePipeHandleForResume = NULL; + } + + pEcorePipeHandleForResume = ecore_pipe_add( + (Ecore_Pipe_Cb)MpVideoStreamingCtrlResumeCb, + (void *)pAppData); + +} + +/* + * Internal function. + */ + +bool MpVideoStreamingCtrlSetNotifyNetworkOnOff(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, + MpVideoStreamingCtrlNetworkOnOffCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set network on/off notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyNetworkStatus(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS, + MpVideoStreamingCtrlNetworkStatusCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set network status notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyChangingIp(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_IP, + MpVideoStreamingCtrlChangeIpCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set ip address changing notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyWiFiState(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_WIFI_STATE, + MpVideoStreamingCtrlWiFiStateCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set wifi state notification."); + return FALSE; + } + + return TRUE; +} + +bool MpVideoStreamingCtrlSetNotifyCellularState(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nRet = 0; + + nRet = vconf_notify_key_changed(VCONFKEY_NETWORK_CELLULAR_STATE, + MpVideoStreamingCtrlCellularStateCb, + (void*)pAppData); + + if (nRet < 0) { + VideoLogInfo("[ERR] Fail to set cellular notification."); + return FALSE; + } + + return TRUE; +} + + +/* + * External function. + */ +bool MpVideoStreamingCtrlGetIpAddress(char* szRetIpAddress) +{ + VideoLogInfo(""); + + char *szTmp = NULL; + + szTmp = vconf_get_str(VCONFKEY_NETWORK_IP); + if (szTmp) { + memset(szRetIpAddress, 0, sizeof(char) * STR_LEN_MAX); + strncpy(szRetIpAddress, szTmp, STR_LEN_MAX - 1); + + VideoLogInfo("Current network ip address : %s", szRetIpAddress); + + if(szTmp) + free(szTmp); + + return TRUE; + } + + return FALSE; +} + +bool MpVideoStreamingCtrlGetProxy(char* szRetProxy) +{ + VideoLogInfo(""); + + char *szTmp = NULL; + + szTmp = vconf_get_str(VCONFKEY_NETWORK_PROXY); + if (szTmp) { + memset(szRetProxy, 0, sizeof(char) * STR_LEN_MAX); + strncpy(szRetProxy, szTmp, STR_LEN_MAX - 1); + + VideoLogInfo("Current network ip address : %s", szRetProxy); + + if(szTmp) + free(szTmp); + + return TRUE; + } + + return FALSE; +} + +bool MpVideoStreamingCtrlIsNetworkOn(void) +{ + VideoLogInfo(""); + + int ntmpCheckNetworkON = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, &ntmpCheckNetworkON)) { + switch(ntmpCheckNetworkON) + { + case MP_NETWORK_CLOSE: + VideoLogInfo("Network close."); + return FALSE; + + case MP_NETWORK_ON: + VideoLogInfo("Network on."); + return TRUE; + } + } else { + VideoLogInfo("Network close."); + } + + return FALSE; +} + +int MpVideoStreamingCtrlGetNetworkStatus(void) +{ + VideoLogInfo(""); + + int ntmpGetNetworkStatus = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_STATUS, &ntmpGetNetworkStatus)) { + switch(ntmpGetNetworkStatus) + { + case VCONFKEY_NETWORK_OFF: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR: + nNetworkStatus = MP_NETWORK_TYPE_CELLULAR; + VideoLogInfo("MP_NETWORK_TYPE_CELLULAR"); + break; + + case VCONFKEY_NETWORK_WIFI: + nNetworkStatus = MP_NETWORK_TYPE_WIFI; + VideoLogInfo("MP_NETWORK_TYPE_WIFI"); + break; + + default: + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF - default"); + break; + } + } else { + nNetworkStatus = MP_NETWORK_TYPE_OFF; + VideoLogInfo("MP_NETWORK_TYPE_OFF - invalid value"); + } + + return nNetworkStatus; +} + +int MpVideoStreamingCtrlGetWifiState() +{ + VideoLogInfo(""); + + int ntmpGetWifiState = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &ntmpGetWifiState)) { + switch(ntmpGetWifiState) + { + case VCONFKEY_NETWORK_WIFI_OFF: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF"); + break; + + case VCONFKEY_NETWORK_WIFI_NOT_CONNECTED: + nWifiState = MP_NETWORK_WIFI_NOT_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_NOT_CONNECTED"); + break; + + case VCONFKEY_NETWORK_WIFI_CONNECTED: + nWifiState = MP_NETWORK_WIFI_CONNECTED; + VideoLogInfo("MP_NETWORK_WIFI_CONNECTED"); + break; + + default: + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - default"); + break; + } + } else { + nWifiState = MP_NETWORK_WIFI_OFF; + VideoLogInfo("MP_NETWORK_WIFI_OFF - invalid value"); + } + + return nWifiState; + +} + +int MpVideoStreamingCtrlGetCellularState() +{ + VideoLogInfo(""); + + int ntmpGetCellularState = 0; + + if (!vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &ntmpGetCellularState)) { + switch(ntmpGetCellularState) + { + case VCONFKEY_NETWORK_CELLULAR_ON: + nCellularState = MP_NETWORK_CELLULAR_ON; + VideoLogInfo("MP_NETWORK_CELLULAR_ON"); + break; + + case VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF: + nCellularState = MP_NETWORK_CELLULAR_3G_OPTION_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_3G_OPTION_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF: + nCellularState = MP_NETWORK_CELLULAR_ROAMING_OFF; + VideoLogInfo("MP_NETWORK_CELLULAR_ROAMING_OFF"); + break; + + case VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE: + nCellularState = MP_NETWORK_CELLULAR_FLIGHT_MODE; + VideoLogInfo("MP_NETWORK_CELLULAR_FLIGHT_MODE"); + break; + + case VCONFKEY_NETWORK_CELLULAR_NO_SERVICE : + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE"); + break; + + default: + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - default"); + break; + } + } else { + nCellularState = MP_NETWORK_CELLULAR_NO_SERVICE; + VideoLogInfo("MP_NETWORK_CELLULAR_NO_SERVICE - invalid value"); + } + + return nCellularState; +} + +void MpVideoStreamingCtrlDestroy(void *pUserData) +{ + VideoLogInfo(""); + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + if(pEcorePipeHandleForPause) { + ecore_pipe_del(pEcorePipeHandleForPause); + pEcorePipeHandleForPause = NULL; + } + + if(pEcorePipeHandleForResume) { + ecore_pipe_del(pEcorePipeHandleForResume); + pEcorePipeHandleForResume = NULL; + } +} + + + +bool MpVideoStreamingCtrlInit(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + char szTmp[STR_LEN_MAX] = {0}; + bool bNetworkState = FALSE; + + if(bIsInitCallbackFunc == EINA_FALSE) { + MpVideoStreamingCtrlPipeInit(pUserData); + + MpVideoStreamingCtrlSetNotifyNetworkStatus(pUserData); + MpVideoStreamingCtrlSetNotifyChangingIp(pUserData); + MpVideoStreamingCtrlSetNotifyWiFiState(pUserData); + MpVideoStreamingCtrlSetNotifyCellularState(pUserData); + + bIsInitCallbackFunc = EINA_TRUE; + } + + if (pNetworkTimeoutTimer) { + ecore_timer_del(pNetworkTimeoutTimer); + pNetworkTimeoutTimer = NULL; + } + + switch(MpVideoStreamingCtrlGetNetworkStatus()) + { + case MP_NETWORK_TYPE_OFF: + VideoLogInfo("MP_NETWORK_TYPE_OFF"); + pNetworkTimeoutTimer = ecore_timer_add(NETWORK_TIMEOUT, + MpVideoStreamingCtrlPopupCb, + pAppData); + bNetworkState = FALSE; + break; + + case MP_NETWORK_TYPE_CELLULAR: + VideoLogInfo("MP_NETWORK_TYPE_CELLULAR"); + if(MpVideoStreamingCtrlGetCellularState() == MP_NETWORK_CELLULAR_ON) + bNetworkState = TRUE; + break; + + case MP_NETWORK_TYPE_WIFI: + VideoLogInfo("MP_NETWORK_TYPE_WIFI"); + if(MpVideoStreamingCtrlGetWifiState() == MP_NETWORK_WIFI_CONNECTED) + bNetworkState = TRUE; + break; + } + + if(bNetworkState) { + MpVideoStreamingCtrlGetIpAddress(szTmp); + VideoLogInfo("Current IP Address : %s", szTmp); + + memset(szTmp, 0, STR_LEN_MAX); + MpVideoStreamingCtrlGetProxy(szTmp); + VideoLogInfo("Current Proxy Address : %s", szTmp); + + memset(pAppData->szProxyAddress, 0, STR_LEN_MAX); + strncpy(pAppData->szProxyAddress, szTmp, STR_LEN_MAX - 1); + } + + return bNetworkState; +} diff --git a/src/mp-video-streaming-view.c b/src/mp-video-streaming-view.c new file mode 100644 index 0000000..b084677 --- /dev/null +++ b/src/mp-video-streaming-view.c @@ -0,0 +1,718 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-progressbar.h" +#include "mp-video-animation-ctrl.h" +#include "mp-video-streaming-view.h" +#include "mp-video-service-ctrl.h" + +#define CTRL_PANEL_SHOW_TIME 5.0 + +static Evas_Object *pNaviFrameHandle = NULL; +static Evas_Object *pStreamingViewNaviControlBar = NULL; +static Evas_Object *pBufferingAnimationHandle = NULL; + +static Evas_Object *pStreamingViewLayout = NULL; +static Evas_Object *pStreamingViewPanelEdj = NULL; +static Evas_Object *pStreamingViewCtrlEdj = NULL; +static Evas_Object *pStreamingViewOptionEdj = NULL; +static Evas_Object *pStreamingViewProgressbarEdj = NULL; + +static Ecore_Timer *pStreamingViewCtrlPanelHideTimer = NULL; +static Elm_Object_Item *pNaviFrameItemStreamingView = NULL; + +static ChangeStreamingViewCbFunc pChangeViewUserCbFunc = NULL; + +static bool bIsStreamingViewScreenLock = FALSE; +static bool bSwitchStreamingViewUI = TRUE; +static bool bIsStreamingHightQuality = TRUE; +static bool bIsChangeResolution = FALSE; +static bool bIsStreamingViewOnlyAudio = FALSE; +static VideoStreamingViewState nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE; + +/* + * Callback function. + */ + +static void MpVideoStreamingViewPressPauseButtonCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_PAUSE_PRESS)) { + VideoLogInfo("Press Pause button."); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME || pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } +} + +static void MpVideoStreamingViewPressResumeButtonCb(void *pUserData, + Evas_Object *pObject, + const char *szEmission, + const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (!strcmp(szEmission, SIGNAL_CONTROL_PLAY_RESUME_PRESS)) { + VideoLogInfo("Press Resume/Play button."); + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } +} + +static void MpVideoStreamingViewBackButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + edje_object_signal_callback_del(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb); + + MpVideoStreamingViewPop(pNaviFrameHandle, pUserData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, SIGNAL_CONTROL_BACK_BUTTON_DOWN, SIGNAL_CONTROL_PART_BACK_BUTTON, (void *)MpVideoStreamingViewBackButtonDownCb, pUserData); +} + +static void MpVideoStreamingViewVolumeButtonDownCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR] No Exist pUserData."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowVolume(pAppData); +} + +static void MpVideoStreamingViewVolumeButtonUpCb(void *pUserData, Evas_Object *pObject, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + //syspopup_launch("volume", NULL); +} + +static Eina_Bool MpVideoStreamingViewCtrlPanelHideCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No Exist pUserData."); + return EINA_FALSE; + } + + if(bIsStreamingViewOnlyAudio) + { + VideoLogInfo("Not hide control panel and UI because of audio only."); + return EINA_FALSE; + } + + if (MpVideoStreamingViewGetBufferingState()) { + VideoLogInfo("skip for Buffering"); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + + return EINA_FALSE; + +} + +static void MpVideoStreamingViewChangedCameraStatusCb(void *pNode, void *pUserData) +{ + if(!pUserData) +{ + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(!MpUtilIsCameraOff()) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + } + +static void MpVideoStreamingViewHideLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + + evas_object_hide(pStreamingViewLayout); + } + +static void MpVideoStreamingViewShowLayoutFinish(void *pUserData, Evas_Object *pObj, const char *emission, const char *source) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowFinish(pAppData); +} + + +/* + * Internal function + */ + +void MpVideoStreamingViewInitLayout(void *pParent, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pStreamingViewLayout = elm_layout_add(pParent); + if (pStreamingViewLayout) { + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + elm_layout_file_set(pStreamingViewLayout, VIDEO_PLAYER_MAIN_EDJ, MAIN_EDJ_GROUP); + + // Option Button (Screen size, Share, Info, 5.1 Surround) + pStreamingViewOptionEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_OPTION_BUTTON_EDJ, OPTION_EDJ_GROUP); + elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_OPTION_BUTTON, pStreamingViewOptionEdj); + edje_object_signal_emit(pStreamingViewOptionEdj, SIGNAL_OPTION_MODE_WEB, "*"); + + pStreamingViewCtrlEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_CONTROL_EDJ, CONTROL_EDJ_GROUP); + pStreamingViewPanelEdj = MpUtilLoadEdjFile(pMainWindowEvas, VIDEO_PLAYER_PANEL_EDJ, PANEL_EDJ_GROUP); + pBufferingAnimationHandle = MpVideoAnimationCtrlInit(pMainWindowEvas); + + edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_CONTROL, pStreamingViewCtrlEdj); + elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_ANIMATION, pBufferingAnimationHandle); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*"); + + MpVideoAnimationCtrlShow(); + + pStreamingViewProgressbarEdj = (Evas_Object *)MpVideoProgressbarInit(pAppData); + MpVideoProgressbarSetSkipEvent(TRUE); + if (pStreamingViewProgressbarEdj) { + edje_object_part_swallow(pStreamingViewPanelEdj, SWALLOW_PANEL_PROGRESS_BAR, pStreamingViewProgressbarEdj); + } else { + VideoLogInfo("Progressbar edj handle is null."); + } + + elm_object_part_content_set(pStreamingViewLayout, SWALLOW_MAIN_CONTROL, pStreamingViewPanelEdj); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_MODE_STREAMING, "*"); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_PLAY_PAUSE_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoStreamingViewPressPauseButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_PLAY_RESUME_PRESS, + SIGNAL_CONTROL_PART_PLAY_BUTTON, + (void *)MpVideoStreamingViewPressResumeButtonCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_BACK_BUTTON_DOWN, + SIGNAL_CONTROL_PART_BACK_BUTTON, + (void *)MpVideoStreamingViewBackButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_DOWN, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_VOL_BUTTON_UP, + SIGNAL_CONTROL_PART_VOL_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_DOWN, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonDownCb, (void *)pAppData); + + edje_object_signal_callback_add(pStreamingViewCtrlEdj, + SIGNAL_CONTROL_MUTE_BUTTON_UP, + SIGNAL_CONTROL_PART_MUTE_BUTTON, + (void *)MpVideoStreamingViewVolumeButtonUpCb, (void *)pAppData); + + MpUtilRegisteCameraStatusCbFunc((void *)MpVideoStreamingViewChangedCameraStatusCb, pUserData); + } +} + +void MpVideoStreamingViewInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pNaviFrameHandle|| !pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoStreamingViewInitLayout(pNaviFrameHandle, pUserData); +} + + + +/* + * External function + */ +void MpVideoStreamingViewPush(void *pNaviFrame, int nPlayerType, void *pUserData, ChangeStreamingViewCbFunc pChangeViewCb) +{ + VideoLogInfo(""); + + pNaviFrameHandle = pNaviFrame; + pChangeViewUserCbFunc = pChangeViewCb; + + MpVideoStreamingViewInit(pUserData); + + pNaviFrameItemStreamingView = elm_naviframe_item_push(pNaviFrameHandle,MP_STREAMING_PLAYER_STR, NULL, NULL, pStreamingViewLayout, "video/1line"); + + elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_SHOW_FINISH, "*", MpVideoStreamingViewShowLayoutFinish, pUserData); + elm_object_signal_callback_add(pStreamingViewLayout, SIGNAL_CONTORL_HIDE_FINISH, "*", MpVideoStreamingViewHideLayoutFinish, pUserData); + + int nRotate = MpUtilGetRotationState(); + if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL) + { + MpVideoStreamingViewPortrate(); + } + else + { + MpVideoStreamingViewLandscape(); + } + + +} + +void MpVideoStreamingViewPop(void *pNaviFrame, void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pAppData); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } +} + +void MpVideoStreamingViewDestroy(void *pUserData) +{ + VideoLogInfo(""); + + MpVideoStreamingViewHideControlPanel(pUserData); + MpVideoProgressbarDestroy(); + MpVideoAnimationCtrlDestroy(); + + pNaviFrameHandle = NULL; + pBufferingAnimationHandle = NULL; + pNaviFrameItemStreamingView = NULL; + pStreamingViewProgressbarEdj = NULL; + + if (pStreamingViewNaviControlBar) { + evas_object_del(pStreamingViewNaviControlBar); + pStreamingViewNaviControlBar = NULL; + } + + if (pStreamingViewLayout) { + evas_object_del(pStreamingViewLayout); + pStreamingViewLayout = NULL; + } + + if (pStreamingViewPanelEdj) { + evas_object_del(pStreamingViewPanelEdj); + pStreamingViewPanelEdj = NULL; + } + + if (pStreamingViewCtrlEdj) { + evas_object_del(pStreamingViewCtrlEdj); + pStreamingViewCtrlEdj = NULL; + } + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } + + if (pStreamingViewOptionEdj) { + evas_object_del(pStreamingViewOptionEdj); + pStreamingViewOptionEdj = NULL; + } + + bIsStreamingViewScreenLock = FALSE; + bIsStreamingViewOnlyAudio = FALSE; + + bSwitchStreamingViewUI = TRUE; + nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE; + + bIsStreamingHightQuality = TRUE; + bIsChangeResolution = FALSE; +} + +void MpVideoStreamingViewInitAfterBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + MpVideoProgressbarSetSkipEvent(FALSE); + MpVideoProgressbarBeginOfStream((void *)pAppData); + + if (pAppData->nDuration > 1) { + char szDurationTime[PLAY_TIME_LENGTH] = { 0 }; + snprintf(szDurationTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, + PLAY_TIME_ARGS(pAppData->nDuration / 1000)); + MpVideoProgressbarUpdateDurationTime(szDurationTime); + } + + MpVideoAnimationCtrlHide(); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), + SIGNAL_MAIN_ANIMATION_HIDE, "*"); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData); + + if(pAppData->nDuration < 1) + pAppData->nDuration = 1; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); +} + +void MpVideoStreamingViewUpdatePauseKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_PAUSE, "*"); +} + +void MpVideoStreamingViewUpdateResumeKey(void) +{ + VideoLogInfo(""); + + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_PLAY_RESUME, "*"); +} + +void MpVideoStreamingViewShowControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!pStreamingViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) { + VideoLogInfo(""); + return; + } + + bSwitchStreamingViewUI = TRUE; + MpVideoProgressbarCreateTimer((void *)pAppData); + + evas_object_show(pStreamingViewLayout); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_SHOW, "elm"); + + int nRotate = MpUtilGetRotationState(); + if( nRotate == VIDEO_ROTATE_PORTRAIT_REVERSE || nRotate == VIDEO_ROTATE_PORTRAIT_NORMAL) + { + elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_PORTRAIT_SHOW, "*"); + } + else + { + elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_LANDSCAPE_SHOW, "*"); + } + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } + + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE || bIsStreamingViewOnlyAudio == TRUE) { + } else { + pStreamingViewCtrlPanelHideTimer = ecore_timer_add(CTRL_PANEL_SHOW_TIME, MpVideoStreamingViewCtrlPanelHideCb, pUserData); + } + + MpVideoStreamingViewActivate(); +} + +void MpVideoStreamingViewHideControlPanel(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (nStreamingViewState == MP_STREAMING_VIEW_STATE_UNACTIVATE) { + VideoLogInfo(""); + return; + } + + if (!pStreamingViewPanelEdj) { + VideoLogInfo("No exist play control panel edc."); + return; + } + + if(bIsStreamingViewOnlyAudio) + { + VideoLogInfo("Not hide control panel and UI because of audio only."); + return; + } + + bSwitchStreamingViewUI = FALSE; + MpVideoProgressbarDeleteTimer(); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_TITLE_HIDE, "elm"); + elm_object_signal_emit(pStreamingViewLayout, SIGNAL_MAIN_CONTROL_NORMAL_HIDE, "*"); + + if (pStreamingViewCtrlPanelHideTimer) { + ecore_timer_del(pStreamingViewCtrlPanelHideTimer); + pStreamingViewCtrlPanelHideTimer = NULL; + } +} + +void MpVideoStreamingViewActivate(void) +{ + VideoLogInfo(""); + + nStreamingViewState = MP_STREAMING_VIEW_STATE_ACTIVATE; +} + +void MpVideoStreamingViewUnactivate(void) +{ + VideoLogInfo(""); + + nStreamingViewState = MP_STREAMING_VIEW_STATE_UNACTIVATE; +} + +void MpVideoStreamingViewRotation(void *pUserData, int nRotateMode, bool bLayoutHide) +{ + VideoLogInfo(""); + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (MpVideoStreamingViewGetBufferingState()) + { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*"); + } + else + { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*"); + if(bLayoutHide) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideFinish(pAppData); + } + } +} + +void MpVideoStreamingViewSetBufferingRate(int nSetBufferingRate) +{ + if (nSetBufferingRate > 95) { + MpVideoAnimationCtrlHide(); + MpVideoProgressbarSetSkipEvent(FALSE); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_HIDE, "*"); + } else { + MpVideoProgressbarSetSkipEvent(TRUE); + MpVideoAnimationCtrlShow(); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_ANIMATION_SHOW, "*"); + + if(nSetBufferingRate >= 0) + MpVideoAnimationCtrlSetPercent(nSetBufferingRate); + } +} + +bool MpVideoStreamingViewGetBufferingState(void) +{ + VideoLogInfo(""); + + return MpVideoAnimationCtrlGetActiveState(); +} + +bool MpVideoStreamingViewIsTopView(void) +{ + VideoLogInfo(""); + + Evas_Object *pTmpContents = NULL; + Elm_Object_Item *pTmpItem = NULL; + + if (!pNaviFrameHandle) { + VideoLogInfo("[ERR] No exist navigationbar handle."); + return FALSE; + } + + pTmpItem = elm_naviframe_top_item_get(pNaviFrameHandle); + pTmpContents = elm_object_item_content_get(pTmpItem); + if (pTmpContents) { + if (pTmpContents == pStreamingViewLayout) { + VideoLogInfo("Streaming display view is staing in top view."); + return TRUE; + } else { + VideoLogInfo("Streaming display view is not staied in top view."); + return FALSE; + } + } else { + VideoLogInfo("[ERR] No exist naviFrame top item."); + return FALSE; + } + + return FALSE; +} + +void MpVideoStreamingViewShowNocontentImage(void *pUserData) +{ + VideoLogInfo(""); + + if (pStreamingViewLayout) { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_SHOW, "*"); + } + + bIsStreamingViewOnlyAudio = TRUE; + + MpVideoStreamingViewShowControlPanel(pUserData); +} + +void MpVideoStreamingViewHideNocontentImage(void) +{ + VideoLogInfo(""); + + if (pStreamingViewLayout) { + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_NOCONTENTS_HIDE, "*"); + } + + bIsStreamingViewOnlyAudio = FALSE; +} + +void MpVideoStreamingViewPortrate(void) +{ + VideoLogInfo(""); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_PORTRATE_MODE, "*"); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_PORTRATE_MODE, "*"); + edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_PORTRATE_MODE, "*"); + edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_PORTRATE_MODE, "*"); + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_PORTRATE_MODE, "*"); +} + +void MpVideoStreamingViewLandscape(void) +{ + VideoLogInfo(""); + + elm_object_item_signal_emit(pNaviFrameItemStreamingView, SIGNAL_NAVIFRAME_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(_EDJ(pStreamingViewLayout), SIGNAL_MAIN_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pStreamingViewPanelEdj, SIGNAL_PANEL_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pStreamingViewProgressbarEdj, SIGNAL_PROGRESS_LANDSCAPE_MODE, "*"); + edje_object_signal_emit(pStreamingViewCtrlEdj, SIGNAL_CONTROL_STREAMING_LANDSCAPE_MODE, "*"); +} + +void MpVideoStreamingViewUpdateProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoProgressbarCreateTimer(pUserData); + +} diff --git a/src/mp-video-subtitle-ctrl.c b/src/mp-video-subtitle-ctrl.c new file mode 100755 index 0000000..b497c4f --- /dev/null +++ b/src/mp-video-subtitle-ctrl.c @@ -0,0 +1,352 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-subtitle-ctrl.h" + +#define MP_VIDEO_SUBTITLE_MENU_NUM 2 + +#define MP_SUBTITLE_FONT_SMALL 22 +#define MP_SUBTITLE_FONT_MEDIUM 35 +#define MP_SUBTITLE_FONT_LARGE 48 +#define MP_SUBTITLE_MIN_VALUE 3 + + +/* subtitle edc layout */ +static Evas_Object *pSubTitleEdj = NULL; + +static bool bExistSubtitleFile = FALSE; +static char *szSubtitleFileUri = NULL; +static char szSubTitleExtWildkey[MP_SUBTITLE_TYPE_MAX][5] = { ".srt", ".sub", ".smi" }; + +static MpSubTitleSizeType nSubtitleSize = MP_SUBTITLE_SIZE_SMALL; + +static bool bShowStatus = TRUE; + + +/* + * Internal function + */ + +static void MpVideoSubtitleCtrlClear(void) +{ + VideoLogInfo(""); + + bExistSubtitleFile = FALSE; + + if(szSubtitleFileUri) + { + free(szSubtitleFileUri); + szSubtitleFileUri = NULL; + } + + if(pSubTitleEdj) { + evas_object_del(pSubTitleEdj); + pSubTitleEdj = NULL; + } + +} + +/* + * External function + */ + +bool MpVideoSubtitleCtrlCheckSubtitleFile(char *szMediaUriPath) +{ + if (!szMediaUriPath) { + VideoLogInfo("No Exist szMediaUri."); + return FALSE; + } + + if (strlen(szMediaUriPath) < 1) { + VideoLogInfo("No Exist szMediaUri."); + return FALSE; + } + + VideoLogInfo(""); + + struct stat buf; + int nCount = 0; + int nStrLength = 0; + + bExistSubtitleFile = FALSE; + + if(szSubtitleFileUri == NULL) + { + szSubtitleFileUri = calloc(1, sizeof(char) * STR_LEN_MAX); + } + + char *szExt; + + szExt = strrchr(szMediaUriPath, '.'); + + if (szExt) { + nStrLength = strlen(szMediaUriPath) - strlen(szExt); + } + else { + nStrLength = strlen(szMediaUriPath); + } + + for (nCount = 0; nCount < MP_SUBTITLE_TYPE_MAX; nCount++) + { + memset(szSubtitleFileUri, 0, STR_LEN_MAX); + strncpy(szSubtitleFileUri, szMediaUriPath, nStrLength); + strcat(szSubtitleFileUri, szSubTitleExtWildkey[nCount]); + VideoLogInfo("%s",szSubtitleFileUri); + + if (!stat(szSubtitleFileUri, &buf)) { + VideoLogInfo("Success finding subtitle file. - %d", nCount); + bExistSubtitleFile = TRUE; + break; + } else { + memset(szSubtitleFileUri, 0, STR_LEN_MAX); + } + } + + if (!bExistSubtitleFile) { + VideoLogInfo("Fail finding subtitle file."); + } + + return bExistSubtitleFile; +} + +void *MpVideoSubtitleCtrlInit(void *pUserData, void *pParent) +{ + if (pUserData == NULL) { + VideoLogInfo("[ERR]No have pUserData"); + return NULL; + } + + if (pParent == NULL) { + VideoLogInfo("[ERR]No have pParent"); + return NULL; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoSubtitleCtrlClear(); + + if(!MpVideoSubtitleCtrlCheckSubtitleFile(pAppData->szMediaUri)) { + VideoLogInfo("Sub tiltle file is not exist."); + } + + pSubTitleEdj = elm_layout_add(pParent); + elm_layout_file_set(pSubTitleEdj, VIDEO_PLAYER_SUBTITLE_EDJ, SUBTITLE_EDJ_GROUP); + + return (void *)pSubTitleEdj; +} + +void MpVideoSubtitleCtrlDestroy(void) +{ + VideoLogInfo(""); + + MpVideoSubtitleCtrlClear(); +} + +void MpVideoSubtitleCtrlUpdate(char *szTxt) +{ + VideoLogInfo("%d",strlen(szTxt)); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + edje_object_part_text_set(_EDJ(pSubTitleEdj), "subtitle.label.txt",szTxt); +} + + +bool MpVideoSubtitleCtrlIsExistSubtitle(void) +{ + VideoLogInfo(""); + + return bExistSubtitleFile; +} + +bool MpVideoSubtitleCtrlGetSubtitleUri(char *szSubtitleUri) +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return FALSE; + } + + if (strlen(szSubtitleFileUri) < 1) { + VideoLogInfo("[ERR]No have szSubtitleFileUri"); + return FALSE; + } + + strncpy(szSubtitleUri, szSubtitleFileUri, STR_LEN_MAX -1); + + return TRUE; +} + +void MpVideoSubtitleCtrlSetLayoutShow(bool bShow) +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + if(bShow) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_SHOW, "*"); + } + else { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LAYOUT_HIDE, "*"); + } + +} + +void MpVideoSubtitleCtrlSetSizeMode(int nSizeMode) +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + MpSubTitleSizeType type = nSizeMode; + + if(type == MP_SUBTITLE_SIZE_LARGE) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_LARGE, "*"); + } + else if(type == MP_SUBTITLE_SIZE_MEDIUM) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_MEDIUM, "*"); + } + else if(type == MP_SUBTITLE_SIZE_SMALL) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_SIZE_SMALL, "*"); + } + + nSubtitleSize = type; + +} + +int MpVideoSubtitleCtrlGetSizeMode() +{ + VideoLogInfo(""); + + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return -1; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return -1; + } + + return nSubtitleSize; +} + + + +void MpVideoSubtitleCtrlSetRotate(int nRotateStatus) +{ + VideoLogInfo(""); + if (!MpVideoSubtitleCtrlIsExistSubtitle()) { + return; + } + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + if(nRotateStatus == VIDEO_ROTATE_PORTRAIT_NORMAL || + nRotateStatus == VIDEO_ROTATE_PORTRAIT_REVERSE) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_PORTRATE_MODE, "*"); + + } + else if(nRotateStatus == VIDEO_ROTATE_LANDSCAPE_NORMAL || + nRotateStatus == VIDEO_ROTATE_LANDSCAPE_REVERSE) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_LANDSCAPE_MODE, "*"); + } +} + +void MpVideoSubtitleCtrlSetShowStatus(bool bShow) +{ + VideoLogInfo(""); + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + if(bShowStatus != bShow) { + bShowStatus = bShow; + if(bShow) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_SHOW, "*"); + + } + else { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_SUBTITLE_TXT_HIDE, "*"); + } + } +} + +bool MpVideoSubtitleCtrlGetShowStatus() +{ + VideoLogInfo(""); + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return FALSE; + } + + return bShowStatus; +} + +void MpVideoSubtitleCtrlSetLockScreen(bool bShow) +{ + VideoLogInfo(""); + + if(pSubTitleEdj == NULL) { + VideoLogInfo("Subtitle handle is NULL"); + return; + } + + if(bShow) { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_SHOW, "*"); + } + else { + edje_object_signal_emit(_EDJ(pSubTitleEdj), SIGNAL_LOCKSCREEN_HIDE, "*"); + } + +} + diff --git a/src/mp-video-view-mgr.c b/src/mp-video-view-mgr.c new file mode 100644 index 0000000..f06ce87 --- /dev/null +++ b/src/mp-video-view-mgr.c @@ -0,0 +1,1370 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +#include +#include +#include + +#include +#include + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-external-ug.h" +#include "mp-video-view-mgr.h" +#include "mp-video-type-define.h" +#include "mp-util-media-service.h" +#include "mp-video-display-view.h" +#include "mp-video-string-define.h" +#include "mp-video-streaming-view.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-volume-ctrl.h" + +#define MULTIMEDIA_KEY_LONG_PRESS_INTERVAL 4.0 +#define DETAIL_POPUP_STR_LEN_MAX 20 +#define LAYOUT_VISIBLE_OFF_TIMER_INTERVAL 1.0 + + +static Evas_Object *pMainLayout = NULL; +static Evas_Object *pBackGround = NULL; +static Evas_Object *pNaviFrame = NULL; +static Evas_Object *pConformant = NULL; +static Evas_Object *pGesture = NULL; +static Evas_Object *pEventRect = NULL; +static Evas_Object *pDisplayViewVolume = NULL; + +static MpVideoRotateType nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL; + +static Ecore_Event_Handler *pHWKeyEventDownHandler = NULL; +static Ecore_Event_Handler *pHWKeyEventUpHandler = NULL; + +static bool bIsLongPressForward = FALSE; +static bool bIsKeyCancle = FALSE; +static bool bShowLayout = FALSE; + +static Ecore_Timer *pLongPressSpeedPlayingTimer = NULL; +static Ecore_Timer *pLongPressVolumeKeyTimer = NULL; +static Ecore_Timer *pLayoutVisibleOffTimer = NULL; + +static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData); +static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData); +static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData); + +/* + * Callback function. + */ +static Eina_Bool MpVideoViewCtrlLayoutVisibleOffTimerCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpUtilLayoutVisibleOff(pAppData->pMainWindow); + + return EINA_FALSE; +} + +static Eina_Bool MpVideoViewCtrlVolumeKeyDownTimerCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() - 1; + MpVideoVolumeCtrlSetVolume(nVol); + + return EINA_TRUE; +} + +static Eina_Bool MpVideoViewCtrlVolumeKeyUpTimerCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() + 1; + MpVideoVolumeCtrlSetVolume(nVol); + + return EINA_TRUE; +} + + +static Eina_Bool MpVideoViewCtrlHardkeyDownCb(void *pUserData, int nType, void *pEvent) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent; + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo("Key down : %s", pKeyEvent->keyname); + + if(!strcmp(pKeyEvent->keyname, END_KEY)) + { + VideoLogInfo("Back(End) key"); + } + else if(!strcmp(pKeyEvent->keyname, HOME_KEY)) + { + VideoLogInfo("Home key"); + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY)) + { + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() - 1; + MpVideoVolumeCtrlSetVolume(nVol); + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyDownTimerCb, (void *)pAppData); + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY)) + { + MpVideoViewCtrlShowVolume(); + int nVol; + nVol = MpVideoVolumeCtrlGetVolume() + 1; + MpVideoVolumeCtrlSetVolume(nVol); + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + + pLongPressVolumeKeyTimer = ecore_timer_add(0.3, MpVideoViewCtrlVolumeKeyUpTimerCb, (void *)pAppData); + } + else if(!strcmp(pKeyEvent->keyname, POWER_KEY)) + { + VideoLogInfo("Power key"); + + MpUtilLcdOffForPowerButton(); + } + else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY)) + { + VideoLogInfo("Pause key down"); + } + else if(!strcmp(pKeyEvent->keyname, PLAY_KEY)) + { + VideoLogInfo("Play key down"); + } + else if(!strcmp(pKeyEvent->keyname, STOP_KEY)) + { + VideoLogInfo("Stop key down"); + } + else if(!strcmp(pKeyEvent->keyname, NEXT_KEY)) + { + VideoLogInfo("Next key down"); + } + else if(!strcmp(pKeyEvent->keyname, PREV_KEY)) + { + VideoLogInfo("Prev key down"); + } + else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY)) + { + VideoLogInfo("Forward key down"); + bIsLongPressForward = TRUE; + MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData); + } + else if(!strcmp(pKeyEvent->keyname, REWIND_KEY)) + { + VideoLogInfo("Rewind key down"); + bIsLongPressForward = FALSE; + MpVideoVideoViewCtrlLongpressSpeedKeyDown(pUserData); + } + else if(!strcmp(pKeyEvent->keyname, KEY_CANCLE)) + { + VideoLogInfo("Cancel key down"); + bIsKeyCancle = TRUE; + } + + return EINA_FALSE; +} + +static Eina_Bool MpVideoViewCtrlHardkeyUpCb(void *pUserData, int nType, void *pEvent) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) pEvent; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + VideoLogInfo("Key Up : %s", pKeyEvent->keyname); + + if(bIsKeyCancle) + { + VideoLogInfo("KEY CANCLE."); + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + bIsKeyCancle = FALSE; + return EINA_FALSE; + } + + if(!strcmp(pKeyEvent->keyname, END_KEY)) + { + VideoLogInfo("End key up"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_DOWN_KEY)) + { + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + } + else if(!strcmp(pKeyEvent->keyname, VOLUME_UP_KEY)) + { + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + } + else if(!strcmp(pKeyEvent->keyname, HOME_KEY)) + { + VideoLogInfo("Home key up"); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + + MpVideoServiceCtrlSetPrevPlayerType(MpVideoServiceCtrlGetPlayerType()); + } + else if(!strcmp(pKeyEvent->keyname, POWER_KEY)) + { + VideoLogInfo("Power key up"); + } + else if(!strcmp(pKeyEvent->keyname, PAUSE_KEY)) + { + VideoLogInfo("Pause key up"); + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + else if(!strcmp(pKeyEvent->keyname, PLAY_KEY)) + { + VideoLogInfo("Play key up"); + if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + else if(pAppData->nCurPlayerState == MP_PLAYER_STATE_PAUSE) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + else if(!strcmp(pKeyEvent->keyname, STOP_KEY)) + { + VideoLogInfo("Stop key up"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + else if(!strcmp(pKeyEvent->keyname, NEXT_KEY)) + { + VideoLogInfo("Next key up"); + } + else if(!strcmp(pKeyEvent->keyname, PREV_KEY)) + { + VideoLogInfo("Prev key up"); + } + else if(!strcmp(pKeyEvent->keyname, FORWARD_KEY)) + { + VideoLogInfo("Forward key up"); + MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData); + } + else if(!strcmp(pKeyEvent->keyname, REWIND_KEY)) + { + VideoLogInfo("Rewind key up"); + MpVideoVideoViewCtrlLongpressSpeedKeyUp(pUserData); + } + else + { + } + + return EINA_FALSE; +} + +static Evas_Event_Flags MpVideoViewCtrlGestureNTabStartCb(void *pUserData , void *pEventInfo) +{ + VideoLogInfo(""); + + return EVAS_EVENT_FLAG_NONE; +} + + +static Evas_Event_Flags MpVideoViewCtrlGestureNTabEndCb(void *pUserData , void *pEventInfo) +{ + VideoLogInfo(""); + + Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) pEventInfo; + if(p->n == 1) { + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bShowLayout) { + int nWidth = 0; + int nHeight = 0; + int nMinY = 0; + int nMaxY = 0; + + evas_object_geometry_get(pMainLayout, NULL, NULL, &nWidth, &nHeight); + + if(MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_NORMAL || + MpUtilGetRotationState() == VIDEO_ROTATE_PORTRAIT_REVERSE) + { + nMinY = (elm_config_scale_get() * 223); + nMaxY = nHeight - ( elm_config_scale_get() * 215); + } + else + { + nMinY = (elm_config_scale_get() * 223); + nMaxY = nHeight - ( elm_config_scale_get() * 204); + } + + if(p->y > nMinY && p->y < nMaxY) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + } + } else { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlShowLayout(pAppData); + } + } + + return EVAS_EVENT_FLAG_NONE; +} + + +static Evas_Event_Flags MpVideoViewCtrlGestureNTabAbortCb(void *pUserData , void *pEventInfo) +{ + VideoLogInfo(""); + + return EVAS_EVENT_FLAG_NONE; +} + +/* + * Internal function. + */ +static void MpVideoViewCtrlScreenRotationInit(int nRotateMode, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpUtilRotateWindow(nRotateMode, pAppData->pMainWindow); + nVideoRotateType = nRotateMode; + MpVideoViewCtrlSetRotation(nVideoRotateType, FALSE, pUserData); +} + +static Evas_Object *MpVideoViewCtrlCreateBg(Evas_Object *pWindow) +{ + if(!pWindow) + { + VideoLogError("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + return NULL; +} + +void* MpVideoViewCtrlCreateConformant(void *pParent) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + Evas_Object *pTmpConform = NULL; + + pTmpConform = elm_conformant_add(pParent); + evas_object_size_hint_weight_set(pTmpConform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_conformant_set(pParent, EINA_TRUE); + elm_win_resize_object_add(pParent, pTmpConform); + evas_object_show(pTmpConform); + + pConformant = pTmpConform; + + return pTmpConform; +} + +static Evas_Object *MpVideoViewCtrlCreateMainLayout(Evas_Object *pParent) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + if(pMainLayout) + { + evas_object_del(pMainLayout); + pMainLayout = NULL; + } + + pMainLayout = elm_layout_add(pParent); + + elm_layout_theme_set(pMainLayout, "layout", "application", "video_no_indicator"); + evas_object_size_hint_weight_set(pMainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_content_set(pParent, pMainLayout); + pBackGround = MpVideoViewCtrlCreateBg(pParent); + evas_object_show(pMainLayout); + + return pMainLayout; +} + +static void MpVideoViewCtrlCreateEventRect(void *pUserData, Evas_Object *pParent) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + if(!pParent) + { + VideoLogInfo("[ERR]"); + return; +} + + VideoLogInfo(""); + + pEventRect = evas_object_rectangle_add(evas_object_evas_get(pParent)); + evas_object_color_set(pEventRect, 0, 0, 0, 0); + + elm_object_part_content_set(pParent, "elm.swallow.event", pEventRect); + + pGesture = elm_gesture_layer_add(pEventRect); + + elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_START, MpVideoViewCtrlGestureNTabStartCb, pUserData); + elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_END, MpVideoViewCtrlGestureNTabEndCb, pUserData); + elm_gesture_layer_cb_set(pGesture, ELM_GESTURE_N_TAPS, ELM_GESTURE_STATE_ABORT, MpVideoViewCtrlGestureNTabAbortCb, pUserData); + + evas_object_repeat_events_set(pEventRect, EINA_TRUE); + + elm_gesture_layer_attach(pGesture, pEventRect); + + evas_object_show(pEventRect); + + +} +static Evas_Object *MpVideoViewCtrlCreateVolume(void *pUserData, Evas_Object *pParent) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + if(pDisplayViewVolume) + { + evas_object_del(pDisplayViewVolume); + pDisplayViewVolume = NULL; + } + + pDisplayViewVolume = MpVideoVolumeCtrlInit(pParent, pUserData); + + return pDisplayViewVolume; +} + +static void MpVideoViewCtrlShowNaviFrame(void) +{ + VideoLogInfo(""); + + if(pNaviFrame) + { + elm_object_part_content_set(pMainLayout, "elm.swallow.content", pNaviFrame); + evas_object_show(pNaviFrame); + } + } + +static Evas_Object *MpVideoViewCtrlCreateNaviFrame(Evas_Object *pParent, void* pUserData) +{ + if(!pParent) + { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoLogInfo(""); + + if(pNaviFrame) + { + evas_object_del(pNaviFrame); + pNaviFrame = NULL; + } + + pNaviFrame = elm_naviframe_add(pParent); + + elm_object_part_content_set(pParent, "elm.swallow.content", pNaviFrame); + + elm_naviframe_prev_btn_auto_pushed_set(pNaviFrame, EINA_FALSE); + + evas_object_show(pNaviFrame); + + return pNaviFrame; +} + +static void MpVideoViewCtrlSetVideoViews(VideoAppData *pAppData, int nPlayerType) +{ + VideoLogInfo("%p",pAppData); + + MpVideoServiceCtrlSetPlayerType(nPlayerType); + + switch(nPlayerType) + { + case MP_VIDEO_PLAYER: + VideoLogInfo("MP_VIDEO_PLAYER"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_SIMPLE: + VideoLogInfo("MP_VIDEO_PLAYER_SIMPLE"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_EMAIL: + VideoLogInfo("MP_VIDEO_PLAYER_EMAIL"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_MMS: + VideoLogInfo("MP_VIDEO_PLAYER_MMS"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_VIDEO_PLAYER_GALLERY: + VideoLogInfo("MP_VIDEO_PLAYER_GALLERY"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoDisplayViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + case MP_STREAMING_PLAYER: + VideoLogInfo("MP_STREAMING_PLAYER"); + MpUtilMultimediaVolumeKeyGrab(); + MpVideoStreamingViewPush((void *)pNaviFrame, nPlayerType, (void *)pAppData, MpVideoViewCtrlChangeViewCb); + break; + + default: + VideoLogInfo("[ERR] No exist player tpye."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } +} + +static Eina_Bool MpVideoVideoViewCtrlSpeedKeyLongPressCb(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return EINA_FALSE; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->nPlayingSpeed > MP_PLAYING_SPEED_MAX) + { + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } + + return EINA_FALSE; + } + + ++pAppData->nPlayingSpeed; + + if(bIsLongPressForward) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + } + + return EINA_TRUE; +} + +static void MpVideoVideoViewCtrlLongpressSpeedKeyDown(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->nPlayingSpeed = MP_PLAYING_SPEED_2X; + + if(bIsLongPressForward) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedFF(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedRew(pAppData); + } + + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } + + pLongPressSpeedPlayingTimer = ecore_timer_add(MULTIMEDIA_KEY_LONG_PRESS_INTERVAL, MpVideoVideoViewCtrlSpeedKeyLongPressCb, (void *)pAppData); +} + +static void MpVideoVideoViewCtrlLongpressSpeedKeyUp(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsLongPressForward = FALSE; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSpeedReset(pAppData); + + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } +} + +static void MpVideoViewCtrlChangeViewCb(int nChangePlayerView, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoViewCtrlHideVolume(); + + MpVideoViewCtrlSetVideoViews((VideoAppData*)pUserData, nChangePlayerView); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReLaunching(pAppData); + } + +/* + * External function. + */ +bool MpVideoViewCtrlInit(VideoAppData *pAppData) +{ + if(!pAppData) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + if(pHWKeyEventDownHandler) + { + ecore_event_handler_del(pHWKeyEventDownHandler); + pHWKeyEventDownHandler = NULL; + } + + if(pHWKeyEventUpHandler) + { + ecore_event_handler_del(pHWKeyEventUpHandler); + pHWKeyEventUpHandler = NULL; + } + + pHWKeyEventDownHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, (void *)MpVideoViewCtrlHardkeyDownCb, (void *)pAppData); + pHWKeyEventUpHandler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (void *)MpVideoViewCtrlHardkeyUpCb, (void *)pAppData); + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + MpVideoViewCtrlCreateConformant(pAppData->pMainWindow); + MpVideoViewCtrlCreateMainLayout(pConformant); + MpVideoViewCtrlCreateEventRect((void *)pAppData, pMainLayout); + MpVideoViewCtrlCreateVolume(pAppData, pMainLayout); + MpVideoViewCtrlCreateNaviFrame(pMainLayout, (void*)pAppData); + MpVideoViewCtrlSetVideoViews(pAppData, MpVideoServiceCtrlGetPlayerType()); + MpVideoViewCtrlScreenRotationInit(MpUtilGetRotationState(), (void *)pAppData); + + return TRUE; +} + +void MpVideoViewCtrlDestroy(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + MpExternalUgUnload(); + + MpVideoVolumeCtrlDestroy(); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewDestroy(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewDestroy(pUserData); + } + + if(pGesture) + { + evas_object_del(pGesture); + pGesture = NULL; + } + + if(pEventRect) + { + evas_object_del(pEventRect); + pEventRect = NULL; + } + + if(pHWKeyEventDownHandler) + { + ecore_event_handler_del(pHWKeyEventDownHandler); + pHWKeyEventDownHandler = NULL; + } + + if(pHWKeyEventUpHandler) + { + ecore_event_handler_del(pHWKeyEventUpHandler); + pHWKeyEventUpHandler = NULL; + } + + if(pMainLayout) + { + evas_object_del(pMainLayout); + pMainLayout = NULL; + } + + if(pLongPressSpeedPlayingTimer) + { + ecore_timer_del(pLongPressSpeedPlayingTimer); + pLongPressSpeedPlayingTimer = NULL; + } + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + if(pDisplayViewVolume) + { + evas_object_del(pDisplayViewVolume); + pDisplayViewVolume = NULL; + } + + if(pBackGround) + { + evas_object_del(pBackGround); + pBackGround = NULL; + } + + bIsLongPressForward = FALSE; + bIsKeyCancle = FALSE; + + nVideoRotateType = VIDEO_ROTATE_PORTRAIT_NORMAL; +} + +void MpVideoViewCtrlSetRotation(int nRotateMode, bool bLayoutHide, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(nRotateMode == VIDEO_ROTATE_UNKNOWN) + { + nRotateMode = MpUtilGetRotationState(); + } + + nVideoRotateType = nRotateMode; + + MpUtilSetRotationState(nVideoRotateType); + + if(MpVideoVolumeCtrlGetShowStatus()) + { + MpVideoViewCtrlHideVolume(); + } + + if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_PORTRAIT_MODE, "*"); + } + else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_VOLUME_LANDSCAPE_MODE, "*"); + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + if(nVideoRotateType == VIDEO_ROTATE_PORTRAIT_NORMAL || nVideoRotateType == VIDEO_ROTATE_PORTRAIT_REVERSE) + { + MpVideoDisplayViewPortrate(bLayoutHide, pUserData); + } + else if(nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_NORMAL || nVideoRotateType == VIDEO_ROTATE_LANDSCAPE_REVERSE) + { + MpVideoDisplayViewLandscape(bLayoutHide, pUserData); + } + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewRotation((void *)pAppData, nVideoRotateType, bLayoutHide); + } + + MpUtilRotateWindow(nVideoRotateType, pAppData->pMainWindow); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlRotateScreen(pAppData, nVideoRotateType); +} + +void MpVideoViewCtrlInitAfterBeginOfStream(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewInitAfterBeginOfStream(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewInitAfterBeginOfStream(pUserData); + } +} + +void MpVideoViewCtrlPause(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewUpdatePauseKey(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewUpdatePauseKey(); + } +} + +void MpVideoViewCtrlResume(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewUpdateResumeKey(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewUpdateResumeKey(); + } +} + +void MpVideoViewShowLayout(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*"); + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + MpVideoViewCtrlShowNaviFrame(); + bShowLayout = TRUE; + + MpVideoDisplayViewActivate(); + MpVideoDisplayViewShowControlPanel(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_SHOW, "*"); + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + MpVideoViewCtrlShowNaviFrame(); + bShowLayout = TRUE; + + MpVideoStreamingViewActivate(); + MpVideoStreamingViewShowControlPanel(pUserData); + } +} + +void MpVideoViewHideLayout(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + if(MpVideoStreamingViewGetBufferingState()) + { + VideoLogInfo("skip for Buffering"); + return; + } + } + + edje_object_signal_emit(_EDJ(pMainLayout), SIGNAL_LAYOUT_INDICATOR_HIDE, "*"); + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_HIDE); + + bShowLayout = FALSE; + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewHideControlPanel(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewHideControlPanel(pUserData); + } +} +void MpVideoViewCtrlShowFinish(void *pUserData) +{ + VideoLogInfo(""); + +} + +void MpVideoViewCtrlHideFinish(void *pUserData, bool bLayoutOff) +{ + if(!pUserData) + { + VideoLogError("[ERR]"); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pNaviFrame) + { + elm_object_part_content_unset(pMainLayout, "elm.swallow.content"); + evas_object_hide(pNaviFrame); + } + + if(pLayoutVisibleOffTimer) + { + ecore_timer_del(pLayoutVisibleOffTimer); + pLayoutVisibleOffTimer = NULL; + } + + if(bLayoutOff) + { + pLayoutVisibleOffTimer = ecore_timer_add(LAYOUT_VISIBLE_OFF_TIMER_INTERVAL, MpVideoViewCtrlLayoutVisibleOffTimerCb, (void *)pAppData); + } + + +} + +void MpVideoViewSetBufferingRateForStreamingView(int nSetBufferingRate, void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + +// VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + if(MpUtilCheckRTSPType(pAppData->szMediaUri)) + { + if(nSetBufferingRate == 0) + { + MpVideoStreamingViewSetBufferingRate(-1); + } + else + { + MpVideoStreamingViewSetBufferingRate(nSetBufferingRate); + } + } + else + { + if(nSetBufferingRate >= 0) + { + MpVideoStreamingViewSetBufferingRate(nSetBufferingRate); + } + } + } +} + +void MpVideoViewCtrlChangeTitle(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoAppData *pAppData = (VideoAppData *)pUserData; + + memset(pAppData->szSubtitle, 0, sizeof(char) * STR_LEN_MAX); + + MpVideoDisplayViewChangeNaviFrameTitle(pUserData); + } +} + +bool MpVideoViewCtrlIsTopView(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + bool bIstopView = FALSE; + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("VIDEO PLAYER"); + bIstopView = MpVideoDisplayViewIsTopView(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + VideoLogInfo("STREAMING PLAYER"); + bIstopView = MpVideoStreamingViewIsTopView(); + } + + return bIstopView; +} + +void MpVideoViewCtrlShowNocontentImage(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewShowNocontentImage(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewShowNocontentImage(pUserData); + } +} + +void MpVideoViewCtrlHideNocontentImage(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("[ERR]"); + return; + } + + VideoLogInfo(""); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + MpVideoDisplayViewHideNocontentImage(); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoStreamingViewHideNocontentImage(); + } +} + +void MpVideoViewCtrlResetProgressBar(void *pUserData) +{ + VideoLogInfo(""); + + MpVideoDisplayViewResetProgressBar(pUserData); +} + +void MpVideoViewCtrlUpdateProgressbar(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserData."); + return; + } + VideoLogInfo(""); + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("VIDEO PLAYER"); + MpVideoDisplayViewUpdateProgressBar(pUserData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + VideoLogInfo("STREAMING PLAYER"); + MpVideoStreamingViewUpdateProgressBar(pUserData); + } +} + + +bool MpVideoViewCtrlIsPauseByUser(void *pUserData) +{ + if(!pUserData) +{ + VideoLogInfo("[ERR]"); + return FALSE; + } + + VideoLogInfo(""); + + return MpVideoDisplayViewIsPauseByUser(); +} + +void MpVideoViewCtrlShowVolume() +{ + VideoLogInfo(""); + + if(MpVideoVolumeCtrlGetShowStatus()) + { + return; + } + + elm_object_part_content_set(pMainLayout, "elm.swallow.volume", pDisplayViewVolume); + + MpVideoVolumeCtrlShow(); + +} +void MpVideoViewCtrlHideVolume() +{ + VideoLogInfo(""); + + if(pLongPressVolumeKeyTimer) + { + ecore_timer_del(pLongPressVolumeKeyTimer); + pLongPressVolumeKeyTimer = NULL; + } + + elm_object_part_content_unset(pMainLayout, "elm.swallow.volume"); + + MpVideoVolumeCtrlHide(); + +} diff --git a/src/mp-video-volume-ctrl.c b/src/mp-video-volume-ctrl.c new file mode 100644 index 0000000..ce0b246 --- /dev/null +++ b/src/mp-video-volume-ctrl.c @@ -0,0 +1,450 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "video-player.h" + +#include "mp-util.h" +#include "mp-video-log.h" +#include "mp-video-type-define.h" +#include "mp-video-value-define.h" +#include "mp-video-string-define.h" +#include "mp-video-volume-ctrl.h" + +//#include "mp-video-statistics.h" + +#define VOLUME_CTRL_HIDE_TIMER_INTERVAL 3.0 +#define VOLUME_CTRL_DRAG_TIMER_INTERVAL 0.3 + + +typedef struct __MpVolumeCtrlData MpVolumeCtrlData; + +struct __MpVolumeCtrlData{ + VideoAppData *pAppData; + + Evas_Object *pLayout; + + Ecore_Timer *pHideTimer; + Ecore_Timer *pDragTimer; + + int nMaxVol; + int nMinVol; + + int nCurVol; + +}; + +static MpVolumeCtrlData *pVolumeData = NULL; + +static void MpVideoVolumeCtrlUpdateTextValue(void *pUserData) +{ + + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("Volume ctrl data is null."); + return; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + char szVol[3] = {0,}; + snprintf(szVol, 3, "%d", pCtrlData->nCurVol); + + VideoLogError("%d , %s", pCtrlData->nCurVol, szVol); + + edje_object_part_text_set(_EDJ(pCtrlData->pLayout), "volume.progress.circle.txt", szVol); + +} + +static void MpVideoVolumeCtrlUpdateDragValue(void *pUserData) +{ + + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("Volume ctrl data is null."); + return; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + + double fVolPos = 0.0; + fVolPos = ((double)pCtrlData->nCurVol/(double)pCtrlData->nMaxVol); + edje_object_part_drag_value_set(_EDJ(pCtrlData->pLayout), "volume.progress.drag", fVolPos, 0.0); + +} + +static int MpVideoVolumeCtrlGetMaxVolume() +{ + VideoLogInfo(""); + + int nRet = SOUND_MANAGER_ERROR_NONE; + int nMax = 0; + nRet = sound_manager_get_max_volume (SOUND_TYPE_MEDIA, &nMax); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogError("Sound manage get max volue fail : %d", nRet); + return -1; + } + + return nMax; +} +static int MpVideoVolumeCtrlGetCurVolume() +{ + VideoLogInfo(""); + + int nRet = SOUND_MANAGER_ERROR_NONE; + int nVol = 0; + nRet = sound_manager_get_volume (SOUND_TYPE_MEDIA, &nVol); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogError("Sound manage get current volue fail : %d", nRet); + return -1; + } + + return nVol; +} + +static void MpVideoVolumeCtrlSetCurVolume(int nVol) +{ + VideoLogInfo(""); + + int nRet = SOUND_MANAGER_ERROR_NONE; + nRet = sound_manager_set_volume (SOUND_TYPE_MEDIA, nVol); + if(nRet != SOUND_MANAGER_ERROR_NONE) + { + VideoLogError("Sound manage get current volue fail : %d", nRet); + return; + } + + return; +} + +static Eina_Bool MpVideoVolumeCtrlHideTimerCb(void *pUserData) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return EINA_FALSE; + } + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideVolume(pCtrlData->pAppData); + + return EINA_FALSE; +} + + +static Eina_Bool MpVideoVolumeCtrlDragTimerCb(void *pUserData) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return EINA_FALSE; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + double fVolPos = 0.0; + + edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL); + + pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos); + + MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol); + + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + + return EINA_TRUE; +} + + + +static void MpVideoVolumeCtrlDragStartcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return; + } + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pDragTimer = ecore_timer_add(VOLUME_CTRL_DRAG_TIMER_INTERVAL, MpVideoVolumeCtrlDragTimerCb, (void *)pCtrlData); +} + +static void MpVideoVolumeCtrlDragStopcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return; + } + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData); + + if(pCtrlData->pDragTimer) + { + ecore_timer_del(pCtrlData->pDragTimer); + pCtrlData->pDragTimer = NULL; + } + + double fVolPos = 0.0; + edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL); + pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos); + + MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol); + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); +} + +static void MpVideoVolumeCtrlDragcb(void *pUserData, Evas_Object *obj, const char *szEmission, const char *szSource) +{ + VideoLogInfo(""); + + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = (MpVolumeCtrlData *)pUserData; + double fVolPos = 0.0; + edje_object_part_drag_value_get(_EDJ(pCtrlData->pLayout), "volume.progress.drag", &fVolPos, NULL); + pCtrlData->nCurVol = (int)(pCtrlData->nMaxVol * fVolPos); + + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + +} + + +void *MpVideoVolumeCtrlInit(void *pParent, void* pUserData) +{ + if(pUserData == NULL) + { + VideoLogError("pAppData is null."); + return NULL; + } + + if(pParent == NULL) + { + VideoLogError("pParent is null."); + return NULL; + } + + VideoLogInfo(""); + + MpVolumeCtrlData *pCtrlData = NULL; + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pCtrlData = calloc(1, sizeof(MpVolumeCtrlData)); + + pCtrlData->nMinVol = 0; + pCtrlData->nMaxVol = MpVideoVolumeCtrlGetMaxVolume(); + pCtrlData->nCurVol = MpVideoVolumeCtrlGetCurVolume(); + + Evas_Object *layout = elm_layout_add(pParent); + elm_layout_file_set(layout, VIDEO_PLAYER_VOLUME_POPUP_EDJ, VOLUME_EDJ_GROUP); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_hide(layout); + + edje_object_signal_callback_add(_EDJ(layout), "drag,start", "volume.progress.drag", MpVideoVolumeCtrlDragStartcb, (void *)pCtrlData); + edje_object_signal_callback_add(_EDJ(layout), "drag,stop", "volume.progress.drag", MpVideoVolumeCtrlDragStopcb, (void *)pCtrlData); + edje_object_signal_callback_add(_EDJ(layout), "drag", "volume.progress.drag", MpVideoVolumeCtrlDragcb, (void *)pCtrlData); + + pCtrlData->pAppData = pAppData; + pCtrlData->pLayout = layout; + + MpVideoVolumeCtrlSetCurVolume(pCtrlData->nCurVol); + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData); + + pVolumeData = pCtrlData; + + return layout; + +} + +void MpVideoVolumeCtrlDestroy(void) +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + + if(pVolumeData->pLayout) + { + evas_object_del(pVolumeData->pLayout); + pVolumeData->pLayout = NULL; + + } + + if(pVolumeData->pHideTimer) + { + ecore_timer_del(pVolumeData->pHideTimer); + pVolumeData->pHideTimer = NULL; + } + + if(pVolumeData->pDragTimer) + { + ecore_timer_del(pVolumeData->pDragTimer); + pVolumeData->pDragTimer = NULL; + } + + free(pVolumeData); + pVolumeData = NULL; + +} + + +void MpVideoVolumeCtrlShow() +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + MpVolumeCtrlData *pCtrlData = pVolumeData; + + evas_object_show(pCtrlData->pLayout); + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + pCtrlData->pHideTimer = ecore_timer_add(VOLUME_CTRL_HIDE_TIMER_INTERVAL, MpVideoVolumeCtrlHideTimerCb, (void *)pCtrlData); + +} + +void MpVideoVolumeCtrlHide() +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + + MpVolumeCtrlData *pCtrlData = pVolumeData; + + if(pCtrlData->pHideTimer) + { + ecore_timer_del(pCtrlData->pHideTimer); + pCtrlData->pHideTimer = NULL; + } + + evas_object_hide(pCtrlData->pLayout); +} + + +void MpVideoVolumeCtrlSetVolume(int nVol) +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return; + } + MpVolumeCtrlData *pCtrlData = pVolumeData; + + if(nVol > pCtrlData->nMaxVol) + { + nVol = pCtrlData->nMaxVol; + } + + if(nVol < 0) + { + nVol = 0; + } + + MpVideoVolumeCtrlShow(); + + pCtrlData->nCurVol = nVol; + MpVideoVolumeCtrlSetCurVolume(nVol); + MpVideoVolumeCtrlUpdateTextValue((void *)pCtrlData); + MpVideoVolumeCtrlUpdateDragValue((void *)pCtrlData); + +} + +int MpVideoVolumeCtrlGetVolume() +{ + VideoLogInfo(""); + + return MpVideoVolumeCtrlGetCurVolume(); +} + +bool MpVideoVolumeCtrlGetShowStatus() +{ + VideoLogInfo(""); + + if(pVolumeData == NULL) + { + VideoLogError("Volume Ctrl data is NULL"); + return FALSE; + } + MpVolumeCtrlData *pCtrlData = pVolumeData; + + if(pCtrlData->pHideTimer) + { + return TRUE; + } + + return FALSE; +} + diff --git a/src/video-player.c b/src/video-player.c new file mode 100755 index 0000000..e1e0941 --- /dev/null +++ b/src/video-player.c @@ -0,0 +1,530 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include +#include +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-app-ctrl.h" +#include "mp-util-media-service.h" +#include "mp-video-string-define.h" +#include "mp-external-ug.h" +#include "mp-video-service-ctrl.h" + +static void appResume(void *pUserData); + +static bool bIsForeground = FALSE; + +static Ecore_Idler *pInitIdlerHandle = NULL; + +static Eina_Bool _mp_focus_in_cb(void *pUserData, int nType, void *pEvent) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_PASS_ON; + } + + if (!pEvent) { + VideoLogInfo("[ERR] No exist pEvent."); + return ECORE_CALLBACK_PASS_ON; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)pEvent; + + if (ev->win == MpUtilGetMainWindowXID()) + { + if(bIsForeground && MpVideoAppCtrlIsTopView(pUserData)) + { + VideoLogInfo("resume for focus in"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool _mp_focus_out_cb(void *pUserData, int nType, void *pEvent) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_PASS_ON; + } + + if (!pEvent) { + VideoLogInfo("[ERR] No exist pEvent."); + return ECORE_CALLBACK_PASS_ON; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)pEvent; + + if (ev->win == MpUtilGetMainWindowXID()) + { + if(bIsForeground && MpVideoAppCtrlIsTopView(pUserData)) + { + VideoLogInfo("pause for focus in"); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } + + return ECORE_CALLBACK_PASS_ON; + +} + + +static Eina_Bool _mp_client_message_cb(void *pUserData, int nType, void *pEvent) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_PASS_ON; + } + + if (!pEvent) { + VideoLogInfo("[ERR] No exist pEvent."); + return ECORE_CALLBACK_PASS_ON; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) pEvent; + + if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) + { + if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) + { + VideoLogInfo("quickpanel show"); + if(MpVideoAppCtrlIsTopView(pUserData) && bIsForeground) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + } + } + else + { + VideoLogInfo("quickpanel hide"); + if(MpVideoAppCtrlIsTopView(pUserData) && bIsForeground) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + } + } + + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool _mp_app_init_idler_cb(void *pUserData) +{ + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return ECORE_CALLBACK_CANCEL; + } + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _mp_client_message_cb, (void *)pAppData); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_focus_in_cb, (void *)pAppData); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_focus_out_cb, (void *)pAppData); + + pInitIdlerHandle = NULL; + + return ECORE_CALLBACK_CANCEL; + +} + +static void _mp_alloc_service_value(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->szSubtitle = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szVideoTitle = calloc(1, sizeof(char) * STR_LEN_MAX); + + pAppData->szMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szPreMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szNextMediaUri = calloc(1, sizeof(char) * STR_LEN_MAX); + + pAppData->szProxyAddress = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szUserAgent = calloc(1, sizeof(char) * STR_LEN_MAX); + pAppData->szCookie = calloc(1, sizeof(char) * STR_LEN_MAX); +} + + +static void _mp_free_service_value(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(pAppData->szSubtitle) + { + free(pAppData->szSubtitle); + pAppData->szSubtitle = NULL; + } + + if(pAppData->szVideoTitle) + { + free(pAppData->szVideoTitle); + pAppData->szVideoTitle = NULL; + } + + if(pAppData->szMediaUri) + { + free(pAppData->szMediaUri); + pAppData->szMediaUri = NULL; + } + if(pAppData->szPreMediaUri) + { + free(pAppData->szPreMediaUri); + pAppData->szPreMediaUri = NULL; + } + + if(pAppData->szNextMediaUri) + { + free(pAppData->szNextMediaUri); + pAppData->szNextMediaUri = NULL; + } + + if(pAppData->szProxyAddress) + { + free(pAppData->szProxyAddress); + pAppData->szProxyAddress = NULL; + } + + if(pAppData->szUserAgent) + { + free(pAppData->szUserAgent); + pAppData->szUserAgent = NULL; + } + + if(pAppData->szCookie) + { + free(pAppData->szCookie); + pAppData->szCookie = NULL; + } +} + +static bool appCreate(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return FALSE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + _mp_alloc_service_value((void *)pAppData); + + pInitIdlerHandle = ecore_idler_add(_mp_app_init_idler_cb, (void *)pAppData); + +#ifdef TARGET + elm_config_preferred_engine_set("opengl_x11"); +#else + elm_config_preferred_engine_set("software_x11"); +#endif + + elm_theme_extension_add(NULL, VIDEO_CUSTOM_THEME); + + + MpUtilInitSession(); + + if(!MpUtilMMCstatusNoti(pAppData)) + { + VideoLogError("[ERR] Fail to set MMC notification."); + } + + bIsForeground = FALSE; + + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + + return TRUE; +} + +static void appService(service_h pAppSvcHandle, void *pUserData) +{ + VideoLogInfo(""); + + if(!pUserData) + { + VideoLogInfo("[ERR] No exist pUserData."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + char* szGetMediaUri = NULL; + + if(!pAppSvcHandle) + { + VideoLogInfo("[ERR] No exist pBundle."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + + if(pAppData->pMainWindow == NULL) + { + VideoLogInfo("Create main window."); + pAppData->pMainWindow = (Evas_Object *)MpUtilCreateMainWindow(PACKAGE); + } + else + { + if(strlen(pAppData->szMediaUri) > 0) + { + MpVideoAppCtrlResetForRelaunching(pAppData); + } + } + + if(MpVideoServiceCtrlInitServiceParser((void*)pAppSvcHandle, &szGetMediaUri) == MP_ERROR_PLAYER_TYPE) + { + VideoLogInfo("[ERR] Fail to init service parser."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + + if(szGetMediaUri) + { + strncpy(pAppData->szMediaUri, szGetMediaUri, STR_LEN_MAX); + VideoLogInfo("szGetMediaUri : %s", pAppData->szMediaUri); + free(szGetMediaUri); + } + else + { + VideoLogInfo("No exist szGetMediaUri"); + } + + if(!MpUtilBatteryStatusNoti(pAppData)) + { + VideoLogInfo("[ERR] Fail to set Battery notification."); + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + return; + } + bIsForeground = TRUE; + + MpUtilMediaSvcInitSession(); + MpUtilSetKeyGrab(HOME_KEY, KEY_GRAB_SHARED); + MpVideoAppCtrlInit(pAppData); +} + +static void appExit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist pUserData."); + return; + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + + MpUtilMultimediaVolumeKeyUngrab(); + MpUtilLcdOffForPowerButton(); + MpUtilSetKeyUngrab(HOME_KEY); + MpUtilMultimediaKeyUngrab(); + MpUtilMMCstatusNotiIgnore(); + MpUtilBatteryStatusNotiIgnore(); + MpUtilFinishSession(); + MpUtilDeletePopupHandle(); + MpUtilMediaSvcDestoryVideoList(); + MpUtilMediaSvcFinishSession(); + + _mp_free_service_value(pUserData); + + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + +#ifdef TA_SVAE_PERF_FILE + VP_PERF_DEINIT(); +#endif +} + +static void appPause(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserdata handle."); + return; + } + + VideoLogInfo(""); + + MpUtilMultimediaVolumeKeyUngrab(); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(MpVideoAppCtrlIsCheckCallStatus()) + { + VideoLogInfo("Skip for Call Pause."); + MpVideoAppCtrlInitCheckCallStatus(); + } + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerType(); + + if(nTmpPlayerType == MP_VIDEO_PLAYER || + nTmpPlayerType == MP_VIDEO_PLAYER_SIMPLE || + nTmpPlayerType == MP_VIDEO_PLAYER_GALLERY || + nTmpPlayerType == MP_VIDEO_PLAYER_EMAIL || + nTmpPlayerType == MP_VIDEO_PLAYER_MMS) + { + VideoLogInfo("Pause application at video player."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + else if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + VideoLogInfo("Pause application at streaming player."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlExit(pAppData); + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlHideLayout(pAppData); + + MpUtilDeletePopupHandle(); + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + bIsForeground = FALSE; + MpVideoAppCtrlSetForCheckingForegroundwindow(FALSE); + + evas_object_hide(pAppData->pMainWindow); +} + +static void appResume(void *pUserData) +{ + if(!pUserData) + { + VideoLogInfo("No exist pUserdata handle."); + return; + } + + VideoLogInfo(""); + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if(bIsForeground) + { + VideoLogInfo("Defence overlap launching."); + return; + } + + MpUtilMultimediaVolumeKeyGrab(); + + if(!MpVideoAppCtrlIsTopView(pUserData)) + { + VideoLogError("Overlay is not staied in top."); + return; + } + + if(MpVideoAppCtrlIsExistPlayerHandle()) + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlStartByAppResume(pAppData); + } + + elm_win_indicator_mode_set(pAppData->pMainWindow, ELM_WIN_INDICATOR_SHOW); + + bIsForeground = TRUE; + MpVideoAppCtrlSetForCheckingForegroundwindow(TRUE); + + evas_object_show(pAppData->pMainWindow); +} + +static void appRotate(app_device_orientation_e rotateState, void *pUserData) +{ + VideoLogInfo(""); + + int nCurRotate = 0; + + switch(rotateState) + { + case APP_DEVICE_ORIENTATION_0: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_NORMAL"); + nCurRotate = VIDEO_ROTATE_PORTRAIT_NORMAL; + break; + + case APP_DEVICE_ORIENTATION_90: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_REVERSE"); + nCurRotate = VIDEO_ROTATE_LANDSCAPE_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_180: + VideoLogInfo("VIDEO_ROTATE_PORTRAIT_REVERSE"); + nCurRotate = VIDEO_ROTATE_PORTRAIT_REVERSE; + break; + + case APP_DEVICE_ORIENTATION_270: + VideoLogInfo("VIDEO_ROTATE_LANDSCAPE_NORMAL"); + nCurRotate = VIDEO_ROTATE_LANDSCAPE_NORMAL; + break; + } + + MpVideoAppCtrlSetRotation(nCurRotate, pUserData); +} + +int main(int argc, char *argv[]) +{ + VideoAppData pAppData; + memset(&pAppData, 0, sizeof(VideoAppData)); + + app_event_callback_s st_appEventService; + + st_appEventService.create = appCreate; + st_appEventService.terminate = appExit; + st_appEventService.pause = appPause; + st_appEventService.resume = appResume; + st_appEventService.service = appService; + st_appEventService.low_memory = NULL; + st_appEventService.low_battery = NULL; + st_appEventService.device_orientation = appRotate; + st_appEventService.language_changed = NULL; + st_appEventService.region_format_changed = NULL; + + if(app_efl_main(&argc, &argv, &st_appEventService, &pAppData) != APP_ERROR_NONE) + { + VideoLogInfo("[ERR] app_efl_main()."); + return -1; + } + + VideoLogInfo("escape app_efl_main() loop."); + + return 0; +}